Skip to content

Commit

Permalink
Allow using local GTest (#337)
Browse files Browse the repository at this point in the history
  • Loading branch information
CyanoKobalamyne committed Jun 16, 2024
1 parent 226f49b commit b099b2d
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 26 deletions.
8 changes: 8 additions & 0 deletions configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ Configures the CMAKE build environment.
--debug build debug with debug symbols (default: off)
--static create static libaries (default: off)
--without-tests build without the smt-switch test suite (default: off)
--no-system-gtest do not use system GTest sources; forces download (default: off)
--python compile with python bindings (default: off)
--smtlib-reader include the smt-lib reader - requires bison/flex (default:off)
--bison-dir=STR custom bison installation directory
Expand Down Expand Up @@ -60,6 +61,7 @@ yices2_home=default
z3_home=default
static=default
build_tests=default
system_gtest=default
python=default
smtlib_reader=default
bison_dir=default
Expand Down Expand Up @@ -180,6 +182,9 @@ do
--without-tests)
build_tests=no
;;
--no-system-gtest)
system_gtest=no
;;
--python)
python=yes
;;
Expand Down Expand Up @@ -282,6 +287,9 @@ cmake_opts="$cmake_opts -DCMAKE_BUILD_TYPE=$build_type"
[ $build_tests != default ] \
&& cmake_opts="$cmake_opts -DBUILD_TESTS=$build_tests"

[ $system_gtest != default ] \
&& cmake_opts="$cmake_opts -DSYSTEM_GTEST=$system_gtest"

[ $python != default ] \
&& cmake_opts="$cmake_opts -DBUILD_PYTHON_BINDINGS=ON"

Expand Down
49 changes: 30 additions & 19 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,37 @@
# build testing infrastructure
enable_testing()

# Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "Build step for googletest failed: ${result}")
option (SYSTEM_GTEST "Should we try to use the system GTest" ON)

if (SYSTEM_GTEST)
# try finding a system installation of googletest
find_package(GTest 1.12 CONFIG)
else()
set(GTest_FOUND FALSE)
endif()

# Add googletest directly to our build. This defines
# the gtest and gtest_main targets.
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL)
if(NOT GTest_FOUND)
# Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "Build step for googletest failed: ${result}")
endif()

# Add googletest directly to our build. This defines
# the gtest and gtest_main targets.
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL)
endif()

add_library(test-deps "${SMT_SWITCH_LIB_TYPE}"
"${PROJECT_SOURCE_DIR}/tests/available_solvers.cpp"
Expand Down Expand Up @@ -62,7 +73,7 @@ endif()

macro(switch_add_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion tests/btor/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
macro(switch_add_btor_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/btor/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion tests/cvc5/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
macro(switch_add_cvc5_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/cvc5/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion tests/msat/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
macro(switch_add_msat_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/msat/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion tests/portfolio/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
macro(switch_add_portfolio_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/portfolio/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
macro(switch_add_unit_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/unit/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion tests/yices2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
macro(switch_add_yices2_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/yices2/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion tests/z3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
macro(switch_add_z3_test name)
add_executable(${name} "${PROJECT_SOURCE_DIR}/tests/z3/${name}.cpp")
target_link_libraries(${name} gtest_main)
target_link_libraries(${name} gtest gtest_main)
target_link_libraries(${name} test-deps)
add_test(NAME ${name}_test COMMAND ${name})
endmacro()
Expand Down

0 comments on commit b099b2d

Please sign in to comment.