diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e169b692132ba29a7f0bc2085124f1a4719a7c1..b288b6ab7c189ae5e48d622059059f92d998040f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,14 @@ option (TEQP_NO_PYTHON "Enable to NOT build the Python interface" OFF) +option (TEQP_NO_TESTS + "Enable to NOT include the test targets at all" + OFF) + +option (TEQP_NO_TEQPCPP + "Enable to NOT include the teqp C++ wrapper" + OFF) + option (TEQP_TESTTEQPCPP "Enable to add a target with a test of the C++ interface" OFF) @@ -75,19 +83,21 @@ option (TEQP_MULTIPRECISION_ENABLED "Enable the use of boost::multiprecision" OFF) -# Add a static library with the C++ interface that uses only STL -# types so that recompilation of a library that uses teqp -# doesn't require a full compile for a single LOC change -add_library(teqpcpp STATIC "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP/teqpcpp.cpp") -target_link_libraries(teqpcpp PUBLIC teqpinterface PUBLIC autodiff) -target_include_directories(teqpcpp PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP") -set_property(TARGET teqpcpp PROPERTY POSITION_INDEPENDENT_CODE ON) - -if (TEQP_TESTTEQPCPP) - add_executable(test_teqpcpp "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP/test_teqpcpp.cpp") - target_link_libraries(test_teqpcpp PUBLIC teqpcpp) - add_executable(bench_teqpcpp "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP/bench_teqpcpp.cpp") - target_link_libraries(bench_teqpcpp PUBLIC teqpcpp PRIVATE Catch2WithMain) +if (not TEQP_NO_TEQPCPP) + # Add a static library with the C++ interface that uses only STL + # types so that recompilation of a library that uses teqp + # doesn't require a full compile for a single LOC change + add_library(teqpcpp STATIC "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP/teqpcpp.cpp") + target_link_libraries(teqpcpp PUBLIC teqpinterface PUBLIC autodiff) + target_include_directories(teqpcpp PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP") + set_property(TARGET teqpcpp PROPERTY POSITION_INDEPENDENT_CODE ON) + + if (TEQP_TESTTEQPCPP) + add_executable(test_teqpcpp "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP/test_teqpcpp.cpp") + target_link_libraries(test_teqpcpp PUBLIC teqpcpp) + add_executable(bench_teqpcpp "${CMAKE_CURRENT_SOURCE_DIR}/interface/CPP/bench_teqpcpp.cpp") + target_link_libraries(bench_teqpcpp PUBLIC teqpcpp PRIVATE Catch2WithMain) + endif() endif() if (TEQP_JAVASCRIPT_MODULE) @@ -118,16 +128,18 @@ if (NOT TEQP_NO_PYTHON) endif() endif() -file(GLOB catch_tests_files "${CMAKE_CURRENT_SOURCE_DIR}/src/tests/*.cxx") +if (NOT TEQP_NO_TESTS) + file(GLOB catch_tests_files "${CMAKE_CURRENT_SOURCE_DIR}/src/tests/*.cxx") -# Make all the catch and benchmarking tests -add_executable(catch_tests "${catch_tests_files}" "${CMAKE_CURRENT_SOURCE_DIR}/interface/C/teqpc.cpp") -if (MSVC) - target_sources(catch_tests PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/externals/Eigen/debug/msvc/eigen.natvis") + # Make all the catch and benchmarking tests + add_executable(catch_tests "${catch_tests_files}" "${CMAKE_CURRENT_SOURCE_DIR}/interface/C/teqpc.cpp") + if (MSVC) + target_sources(catch_tests PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/externals/Eigen/debug/msvc/eigen.natvis") + endif() + target_compile_definitions(catch_tests PRIVATE -DTEQPC_CATCH) + target_link_libraries(catch_tests PRIVATE autodiff PRIVATE teqpinterface PRIVATE Catch2WithMain PUBLIC teqpcpp) + add_test(normal_tests catch_tests) endif() -target_compile_definitions(catch_tests PRIVATE -DTEQPC_CATCH) -target_link_libraries(catch_tests PRIVATE autodiff PRIVATE teqpinterface PRIVATE Catch2WithMain PUBLIC teqpcpp) -add_test(normal_tests catch_tests) if (TEQP_TEQPC) # Make a shared extern "C" library