aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/lmdb/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/lmdb/cmake')
-rw-r--r--vcpkg/ports/lmdb/cmake/CMakeLists.txt72
-rw-r--r--vcpkg/ports/lmdb/cmake/cmake/package-config.cmakein7
-rw-r--r--vcpkg/ports/lmdb/cmake/cmake/runtest.cmake3
-rw-r--r--vcpkg/ports/lmdb/cmake/lmdb.def58
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