diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/lmdb/cmake | |
Diffstat (limited to 'vcpkg/ports/lmdb/cmake')
| -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 |
4 files changed, 140 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 |