Add PREFER_SYSTEM_GTEST cmake option (fixes github #42)

This commit is contained in:
Marcus Holland-Moritz 2021-04-09 18:53:02 +02:00
parent 4f8c470c59
commit eb1fd9ecd7

View File

@ -33,6 +33,7 @@ option(ENABLE_COVERAGE "enable code coverage" OFF)
option(USE_JEMALLOC "build with jemalloc" ON) option(USE_JEMALLOC "build with jemalloc" ON)
option(PREFER_SYSTEM_ZSTD "use system zstd if available" OFF) option(PREFER_SYSTEM_ZSTD "use system zstd if available" OFF)
option(PREFER_SYSTEM_XXHASH "use system xxHash if available" OFF) option(PREFER_SYSTEM_XXHASH "use system xxHash if available" OFF)
option(PREFER_SYSTEM_GTEST "use system gtest if available" OFF)
option(STATIC_BUILD_DO_NOT_USE "try static build (experimental)" OFF) option(STATIC_BUILD_DO_NOT_USE "try static build (experimental)" OFF)
set(default_build_type "Release") set(default_build_type "Release")
@ -155,33 +156,36 @@ set(ZSTD_LIBRARY_DEBUG
CACHE FILEPATH "don't build folly with zstd" FORCE) CACHE FILEPATH "don't build folly with zstd" FORCE)
if(WITH_TESTS) if(WITH_TESTS)
# Download and unpack googletest at configure time if(NOT PREFER_SYSTEM_GTEST)
configure_file(CMakeLists.txt.gtest googletest-download/CMakeLists.txt) # Download and unpack googletest at configure time
execute_process( configure_file(CMakeLists.txt.gtest googletest-download/CMakeLists.txt)
COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . execute_process(
RESULT_VARIABLE result COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download) RESULT_VARIABLE result
if(result) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
message(FATAL_ERROR "CMake step for googletest failed: ${result}") if(result)
endif() message(FATAL_ERROR "CMake step for googletest failed: ${result}")
execute_process( endif()
COMMAND ${CMAKE_COMMAND} --build . execute_process(
RESULT_VARIABLE result COMMAND ${CMAKE_COMMAND} --build .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download) RESULT_VARIABLE result
if(result) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
message(FATAL_ERROR "Build step for googletest failed: ${result}") if(result)
endif() message(FATAL_ERROR "Build step for googletest failed: ${result}")
endif()
# Prevent overriding the parent project's compiler/linker settings on Windows # Prevent overriding the parent project's compiler/linker settings on
set(gtest_force_shared_crt # Windows
ON set(gtest_force_shared_crt
CACHE BOOL "" FORCE) ON
CACHE BOOL "" FORCE)
# Add googletest directly to our build. This defines the gtest and gtest_main # Add googletest directly to our build. This defines the gtest and
# targets. # gtest_main targets.
add_subdirectory( add_subdirectory(
${CMAKE_CURRENT_BINARY_DIR}/googletest-src ${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL) ${CMAKE_CURRENT_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL)
endif()
enable_testing() enable_testing()
include(GoogleTest) include(GoogleTest)
@ -303,9 +307,9 @@ if(WITH_TESTS)
add_executable(dwarfs_compat_test test/dwarfs_compat.cpp) add_executable(dwarfs_compat_test test/dwarfs_compat.cpp)
add_executable(dwarfs_badfs_test test/dwarfs_badfs.cpp) add_executable(dwarfs_badfs_test test/dwarfs_badfs.cpp)
target_link_libraries(dwarfs_test test_helpers gtest_main) target_link_libraries(dwarfs_test test_helpers gtest gtest_main)
target_link_libraries(dwarfs_compat_test gtest_main) target_link_libraries(dwarfs_compat_test gtest gtest_main)
target_link_libraries(dwarfs_badfs_test gtest_main) target_link_libraries(dwarfs_badfs_test gtest gtest_main)
list(APPEND BINARY_TARGETS dwarfs_test dwarfs_compat_test dwarfs_badfs_test) list(APPEND BINARY_TARGETS dwarfs_test dwarfs_compat_test dwarfs_badfs_test)