aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/lmdb
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/lmdb
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/lmdb')
-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
-rw-r--r--vcpkg/ports/lmdb/getopt-win32.diff50
-rw-r--r--vcpkg/ports/lmdb/lmdb-config.cmake14
-rw-r--r--vcpkg/ports/lmdb/portfile.cmake44
-rw-r--r--vcpkg/ports/lmdb/usage4
-rw-r--r--vcpkg/ports/lmdb/vcpkg.json26
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"
+ ]
+ }
+ }
+}