mdbx-build: start using CMake (incomplete; no properly installation for now).

This commit is contained in:
Leonid Yuriev
2019-08-31 17:13:02 +03:00
parent f81374a9ce
commit 5a87faf9af
25 changed files with 1541 additions and 104 deletions

View File

@@ -1,10 +1,29 @@
set(TARGET mdbx_test)
project(${TARGET})
list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_std_17 HAS_CXX17)
list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_std_14 HAS_CXX14)
list(FIND CMAKE_CXX_COMPILE_FEATURES cxx_relaxed_constexpr HAS_RELAXED_CONSTEXPR)
if(NOT DEFINED MDBX_CXX_STANDARD)
if(DEFINED CMAKE_CXX_STANDARD)
set(MDBX_CXX_STANDARD ${CMAKE_CXX_STANDARD})
elseif(NOT HAS_CXX17 LESS 0)
set(MDBX_CXX_STANDARD 17)
elseif(NOT HAS_CXX14 LESS 0)
set(MDBX_CXX_STANDARD 14)
else()
set(MDBX_CXX_STANDARD 11)
endif()
endif()
message(STATUS "Use C++${MDBX_CXX_STANDARD} for libmdbx's test")
if(NOT SUBPROJECT OR NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD ${MDBX_CXX_STANDARD})
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-declarations")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-cast-qual")
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(TEST_OSAL windows)
else()
set(TEST_OSAL unix)
endif()
add_executable(${TARGET}
add_executable(mdbx_test
base.h
cases.cc
chrono.cc
@@ -21,7 +40,7 @@ add_executable(${TARGET}
log.h
main.cc
osal.h
osal-unix.cc
osal-${TEST_OSAL}.cc
test.cc
test.h
try.cc
@@ -31,7 +50,25 @@ add_executable(${TARGET}
ttl.cc
)
target_link_libraries(${TARGET}
mdbx
set_target_properties(mdbx_test PROPERTIES
INTERPROCEDURAL_OPTIMIZATION $<BOOL:${INTERPROCEDURAL_OPTIMIZATION}>
POSITION_INDEPENDENT_CODE ON
CXX_STANDARD ${MDBX_CXX_STANDARD}
CXX_STANDARD_REQUIRED ON
)
if(CC_HAS_FASTMATH)
target_compile_options(mdbx_test PRIVATE "-ffast-math")
endif()
if(CC_HAS_VISIBILITY AND (LTO_ENABLED OR INTERPROCEDURAL_OPTIMIZATION))
set_target_properties(mdbx_test PROPERTIES LINK_FLAGS "-fvisibility=hidden")
endif()
target_link_libraries(mdbx_test mdbx ${LIB_MATH})
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(mdbx_test winmm.lib)
endif()
if(UNIX AND NOT SUBPROJECT)
add_subdirectory(pcrf)
endif()