vcpkg/ports/lmdb/cmake/CMakeLists.txt
Kai Pastor 72c4037ca7
[lmdb] Update, refresh (#33967)
* [lmdb] Update, refresh

* Use getopt-win32
2023-09-27 01:22:44 -07:00

73 lines
2.5 KiB
CMake

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()