82 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 
								 | 
							
								cmake_minimum_required(VERSION 2.8)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								file(READ "${CMAKE_CURRENT_SOURCE_DIR}/lmdb.h" VERSION_HEADER)
							 | 
						||
| 
								 | 
							
								string(REGEX MATCH ".*MDB_VERSION_MAJOR[ \t]+([0-9])" MAJOR_VERSION_MATCH "${VERSION_HEADER}")
							 | 
						||
| 
								 | 
							
								set(LMDB_MAJOR_VERSION ${CMAKE_MATCH_1})
							 | 
						||
| 
								 | 
							
								string(REGEX MATCH ".*MDB_VERSION_MINOR[ \t]+([0-9])" MINOR_VERSION_MATCH "${VERSION_HEADER}")
							 | 
						||
| 
								 | 
							
								set(LMDB_MINOR_VERSION ${CMAKE_MATCH_1})
							 | 
						||
| 
								 | 
							
								string(REGEX MATCH ".*MDB_VERSION_PATCH[ \t]+([0-9]+)" PATCH_VERSION_MATCH "${VERSION_HEADER}")
							 | 
						||
| 
								 | 
							
								set(LMDB_PATCH_VERSION ${CMAKE_MATCH_1})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(LMDB_VERSION "${LMDB_MAJOR_VERSION}.${LMDB_MINOR_VERSION}.${LMDB_PATCH_VERSION}")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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)
							 | 
						||
| 
								 | 
							
								set(LMDB_INCLUDE_INSTALL_DIR include CACHE PATH "Install directory for headers")
							 | 
						||
| 
								 | 
							
								set(LMDB_LIBRARY_INSTALL_DIR lib CACHE PATH "Install directory for library")
							 | 
						||
| 
								 | 
							
								set(LMDB_RUNTIME_INSTALL_DIR bin CACHE PATH "Install directory for binaries/dlls")
							 | 
						||
| 
								 | 
							
								set(LMDB_CONFIG_INSTALL_DIR share/lmdb CACHE PATH "Install directory for cmake config files")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(MSVC AND BUILD_SHARED_LIBS)
							 | 
						||
| 
								 | 
							
								set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /DEF:\"${CMAKE_CURRENT_SOURCE_DIR}/lmdbd.def\"")
							 | 
						||
| 
								 | 
							
								set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /DEF:\"${CMAKE_CURRENT_SOURCE_DIR}/lmdb.def\"")
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(SRCS lmdb mdb.c lmdb.h midl.c midl.h )
							 | 
						||
| 
								 | 
							
								add_library(lmdb ${SRCS})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (WIN32)
							 | 
						||
| 
								 | 
							
								  target_link_libraries(lmdb PRIVATE ntdll.lib)
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								install(TARGETS lmdb DESTINATION lib
							 | 
						||
| 
								 | 
							
								        EXPORT lmdb-targets
							 | 
						||
| 
								 | 
							
								        RUNTIME DESTINATION ${LMDB_RUNTIME_INSTALL_DIR}
							 | 
						||
| 
								 | 
							
								        LIBRARY DESTINATION ${LMDB_LIBRARY_INSTALL_DIR}
							 | 
						||
| 
								 | 
							
								        ARCHIVE DESTINATION ${LMDB_LIBRARY_INSTALL_DIR}
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(LMDB_INSTALL_HEADERS)
							 | 
						||
| 
								 | 
							
								  install(FILES lmdb.h midl.h DESTINATION ${LMDB_INCLUDE_INSTALL_DIR})
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include(CMakePackageConfigHelpers)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(INSTALL_INCLUDE_DIR ${LMDB_INCLUDE_INSTALL_DIR})
							 | 
						||
| 
								 | 
							
								configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/package-config.cmakein ${CMAKE_CURRENT_BINARY_DIR}/lmdb-config.cmake
							 | 
						||
| 
								 | 
							
								                              INSTALL_DESTINATION ${LMDB_CONFIG_INSTALL_DIR}
							 | 
						||
| 
								 | 
							
								                              PATH_VARS INSTALL_INCLUDE_DIR
							 | 
						||
| 
								 | 
							
								                              )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/lmdb-config-version.cmake VERSION ${LMDB_VERSION} COMPATIBILITY SameMajorVersion )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								install(FILES ${CMAKE_CURRENT_BINARY_DIR}/lmdb-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/lmdb-config-version.cmake
							 | 
						||
| 
								 | 
							
								        DESTINATION ${LMDB_CONFIG_INSTALL_DIR} )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								install(EXPORT lmdb-targets DESTINATION ${LMDB_CONFIG_INSTALL_DIR})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(LMDB_BUILD_TOOLS)
							 | 
						||
| 
								 | 
							
								  # don't build mdb_dump/load/stat since they will
							 | 
						||
| 
								 | 
							
								  # not build on windows
							 | 
						||
| 
								 | 
							
								  foreach(_tool mdb_copy)
							 | 
						||
| 
								 | 
							
								    add_executable(${_tool} ${_tool}.c)
							 | 
						||
| 
								 | 
							
								    target_link_libraries(${_tool} lmdb)
							 | 
						||
| 
								 | 
							
								  endforeach()
							 | 
						||
| 
								 | 
							
								endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if(LMDB_BUILD_TESTS)
							 | 
						||
| 
								 | 
							
								  enable_testing()
							 | 
						||
| 
								 | 
							
								  # don't use mtest6 since it will only build in static
							 | 
						||
| 
								 | 
							
								  # build
							 | 
						||
| 
								 | 
							
								  foreach(_test 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()
							 |