diff options
Diffstat (limited to 'vcpkg/ports/lmdb')
| -rw-r--r-- | vcpkg/ports/lmdb/cmake/CMakeLists.txt | 72 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/cmake/cmake/package-config.cmakein | 7 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/cmake/cmake/runtest.cmake | 3 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/cmake/lmdb.def | 58 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/getopt-win32.diff | 50 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/lmdb-config.cmake | 14 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/portfile.cmake | 44 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/lmdb/vcpkg.json | 26 |
9 files changed, 278 insertions, 0 deletions
diff --git a/vcpkg/ports/lmdb/cmake/CMakeLists.txt b/vcpkg/ports/lmdb/cmake/CMakeLists.txt new file mode 100644 index 0000000..1388328 --- /dev/null +++ b/vcpkg/ports/lmdb/cmake/CMakeLists.txt @@ -0,0 +1,72 @@ +cmake_minimum_required(VERSION 3.27) + +project(lmdb) + +option(LMDB_BUILD_TOOLS "Build lmdb tools" OFF) +option(LMDB_BUILD_TESTS "Build lmdb tests" OFF) +option(LMDB_INSTALL_HEADERS "Install LMDB header files" ON) + +include(GNUInstallDirs) + +add_library(lmdb mdb.c lmdb.h midl.c midl.h) +if(WIN32 AND BUILD_SHARED_LIBS) + target_sources(lmdb PRIVATE lmdb.def) +endif() + +set(THREADS_PREFER_PTHREAD_FLAG 1) +find_package(Threads REQUIRED) +target_link_libraries(lmdb PRIVATE Threads::Threads) + +install(TARGETS lmdb + EXPORT unofficial-lmdb-targets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" +) + +if(LMDB_INSTALL_HEADERS) + install(FILES lmdb.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +endif() +target_include_directories(lmdb INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>") + +include(CMakePackageConfigHelpers) +configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/package-config.cmakein" "${CMAKE_CURRENT_BINARY_DIR}/unofficial-lmdb-config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_DATADIR}/lmdb" +) +write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/unofficial-lmdb-config-version.cmake" + VERSION "${LMDB_VERSION}" + COMPATIBILITY SameMajorVersion +) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-lmdb-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/unofficial-lmdb-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_DATADIR}/unofficial-lmdb" +) +install(EXPORT unofficial-lmdb-targets + NAMESPACE unofficial::lmdb:: + DESTINATION "${CMAKE_INSTALL_DATADIR}/unofficial-lmdb" +) + +if(LMDB_BUILD_TOOLS) + set(getopt_libs "") + if(WIN32 AND NOT MINGW) + find_package(unofficial-getopt-win32 REQUIRED) + set(getopt_libs "unofficial::getopt-win32::getopt") + endif() + foreach(tool IN ITEMS mdb_copy mdb_dump mdb_load mdb_stat) + add_executable(${tool} ${tool}.c) + target_link_libraries(${tool} lmdb ${getopt_libs}) + install(TARGETS ${tool} + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + endforeach() +endif() + +if(LMDB_BUILD_TESTS) + enable_testing() + # mtest6 needs more symbols than provided by some builds of lmdb + foreach(test IN ITEMS mtest mtest2 mtest3 mtest4 mtest5) + add_executable(${test} ${test}.c) + target_link_libraries(${test} lmdb) + add_test(NAME ${test} + COMMAND "${CMAKE_COMMAND}" "-DTEST=$<TARGET_FILE:${test}" -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/runtest.cmake") + endforeach() +endif() diff --git a/vcpkg/ports/lmdb/cmake/cmake/package-config.cmakein b/vcpkg/ports/lmdb/cmake/cmake/package-config.cmakein new file mode 100644 index 0000000..c73f071 --- /dev/null +++ b/vcpkg/ports/lmdb/cmake/cmake/package-config.cmakein @@ -0,0 +1,7 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +set(THREADS_PREFER_PTHREAD_FLAG 1) +find_dependency(Threads) + +include("${CMAKE_CURRENT_LIST_DIR}/unofficial-lmdb-targets.cmake") diff --git a/vcpkg/ports/lmdb/cmake/cmake/runtest.cmake b/vcpkg/ports/lmdb/cmake/cmake/runtest.cmake new file mode 100644 index 0000000..4d94162 --- /dev/null +++ b/vcpkg/ports/lmdb/cmake/cmake/runtest.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE testdb) +file(MAKE_DIRECTORY testdb) +execute_process(COMMAND "${TEST}") diff --git a/vcpkg/ports/lmdb/cmake/lmdb.def b/vcpkg/ports/lmdb/cmake/lmdb.def new file mode 100644 index 0000000..ef9d5e3 --- /dev/null +++ b/vcpkg/ports/lmdb/cmake/lmdb.def @@ -0,0 +1,58 @@ +LIBRARY lmdb +EXPORTS + mdb_version + mdb_strerror + mdb_env_create + mdb_env_open + mdb_env_copy + mdb_env_copyfd + mdb_env_copy2 + mdb_env_copyfd2 + mdb_env_stat + mdb_env_info + mdb_env_sync + mdb_env_close + mdb_env_set_flags + mdb_env_get_flags + mdb_env_get_path + mdb_env_get_fd + mdb_env_set_mapsize + mdb_env_set_maxreaders + mdb_env_get_maxreaders + mdb_env_set_maxdbs + mdb_env_get_maxkeysize + mdb_env_set_userctx + mdb_env_get_userctx + mdb_env_set_assert + mdb_txn_begin + mdb_txn_env + mdb_txn_id + mdb_txn_commit + mdb_txn_abort + mdb_txn_reset + mdb_txn_renew + mdb_dbi_open + mdb_stat + mdb_dbi_flags + mdb_dbi_close + mdb_drop + mdb_set_compare + mdb_set_dupsort + mdb_set_relfunc + mdb_set_relctx + mdb_get + mdb_put + mdb_del + mdb_cursor_open + mdb_cursor_close + mdb_cursor_renew + mdb_cursor_txn + mdb_cursor_dbi + mdb_cursor_get + mdb_cursor_put + mdb_cursor_del + mdb_cursor_count + mdb_cmp + mdb_dcmp + mdb_reader_list + mdb_reader_check diff --git a/vcpkg/ports/lmdb/getopt-win32.diff b/vcpkg/ports/lmdb/getopt-win32.diff new file mode 100644 index 0000000..1f86f8b --- /dev/null +++ b/vcpkg/ports/lmdb/getopt-win32.diff @@ -0,0 +1,50 @@ +diff --git a/libraries/liblmdb/mdb_dump.c b/libraries/liblmdb/mdb_dump.c +index 7ea72e8..198230c 100644 +--- a/libraries/liblmdb/mdb_dump.c ++++ b/libraries/liblmdb/mdb_dump.c +@@ -16,7 +16,11 @@ + #include <stdlib.h> + #include <string.h> + #include <ctype.h> ++#ifdef _MSC_VER ++#include <getopt.h> ++#else + #include <unistd.h> ++#endif + #include <signal.h> + #include "lmdb.h" + +diff --git a/libraries/liblmdb/mdb_load.c b/libraries/liblmdb/mdb_load.c +index d2a3cec..f050286 100644 +--- a/libraries/liblmdb/mdb_load.c ++++ b/libraries/liblmdb/mdb_load.c +@@ -16,7 +16,11 @@ + #include <errno.h> + #include <string.h> + #include <ctype.h> ++#ifdef _MSC_VER ++#include <getopt.h> ++#else + #include <unistd.h> ++#endif + #include "lmdb.h" + + #define PRINT 1 +diff --git a/libraries/liblmdb/mdb_stat.c b/libraries/liblmdb/mdb_stat.c +index 3a81175..f1f4a75 100644 +--- a/libraries/liblmdb/mdb_stat.c ++++ b/libraries/liblmdb/mdb_stat.c +@@ -14,7 +14,13 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> ++#ifdef _MSC_VER ++#include <getopt.h> ++#include <BaseTsd.h> ++typedef SSIZE_T ssize_t; ++#else + #include <unistd.h> ++#endif + #include "lmdb.h" + + #ifdef _WIN32 diff --git a/vcpkg/ports/lmdb/lmdb-config.cmake b/vcpkg/ports/lmdb/lmdb-config.cmake new file mode 100644 index 0000000..50b9270 --- /dev/null +++ b/vcpkg/ports/lmdb/lmdb-config.cmake @@ -0,0 +1,14 @@ +file(READ "${CMAKE_CURRENT_LIST_DIR}/../lmdb/usage" usage) +message(WARNING "find_package(lmdb) is deprecated.\n${usage}") + +include(CMakeFindDependencyMacro) +find_dependency(unofficial-lmdb ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION}) + +set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include") +set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}") +set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES lmdb) + +string(TOUPPER "${CMAKE_FIND_PACKAGE_NAME}" UPPER_PACKAGE_NAME) +set(${UPPER_PACKAGE_NAME}_INCLUDE_DIR "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}") +set(${UPPER_PACKAGE_NAME}_INCLUDE_DIRS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}") +set(${UPPER_PACKAGE_NAME}_LIBRARIES lmdb) diff --git a/vcpkg/ports/lmdb/portfile.cmake b/vcpkg/ports/lmdb/portfile.cmake new file mode 100644 index 0000000..af5591d --- /dev/null +++ b/vcpkg/ports/lmdb/portfile.cmake @@ -0,0 +1,44 @@ +vcpkg_from_gitlab( + OUT_SOURCE_PATH SOURCE_PATH + GITLAB_URL https://git.openldap.org + REPO openldap/openldap + REF "LMDB_${VERSION}" + SHA512 57404b35adb5136fcdf60552c2dd2626b9753868f2707d3279725e08145cee3be0d311189b2c6ef6879f25cf09962e6b423c70c8a2e09ef1b368948e873d92b5 + HEAD_REF master + PATCHES + getopt-win32.diff +) +file(COPY "${CMAKE_CURRENT_LIST_DIR}/cmake/" DESTINATION "${SOURCE_PATH}/libraries/liblmdb") + +vcpkg_check_features(OUT_FEATURE_OPTIONS options_release + FEATURES + tools LMDB_BUILD_TOOLS +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/libraries/liblmdb" + OPTIONS + "-DLMDB_VERSION=${VERSION}" + OPTIONS_RELEASE + ${options_release} + OPTIONS_DEBUG + -DLMDB_INSTALL_HEADERS=OFF +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-lmdb) + +if(LMDB_BUILD_TOOLS) + vcpkg_copy_tools(TOOL_NAMES mdb_copy mdb_dump mdb_load mdb_stat AUTO_CLEAN) +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") + +file(COPY "${CURRENT_PORT_DIR}/lmdb-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(COPY "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright( + FILE_LIST + "${SOURCE_PATH}/libraries/liblmdb/COPYRIGHT" + "${SOURCE_PATH}/libraries/liblmdb/LICENSE" +) diff --git a/vcpkg/ports/lmdb/usage b/vcpkg/ports/lmdb/usage new file mode 100644 index 0000000..ef273ae --- /dev/null +++ b/vcpkg/ports/lmdb/usage @@ -0,0 +1,4 @@ +lmdb provides CMake targets: + + find_package(unofficial-lmdb CONFIG REQUIRED) + target_link_libraries(main PRIVATE unofficial::lmdb::lmdb) diff --git a/vcpkg/ports/lmdb/vcpkg.json b/vcpkg/ports/lmdb/vcpkg.json new file mode 100644 index 0000000..0cd1768 --- /dev/null +++ b/vcpkg/ports/lmdb/vcpkg.json @@ -0,0 +1,26 @@ +{ + "name": "lmdb", + "version": "0.9.33", + "description": "LMDB is an extraordinarily fast, memory-efficient database", + "homepage": "https://github.com/LMDB/lmdb", + "license": "OLDAP-2.8", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "tools": { + "description": "Build tools", + "supports": "!uwp", + "dependencies": [ + "getopt" + ] + } + } +} |