#-----------------------------------------------------------------------------#
# Enable the ctest testing framework
+# This needs to be enabled here rather than in subdirectory test in order to
+# allow calling ctest from the root build directory.
enable_testing()
#-----------------------------------------------------------------------------#
+# Check options, find packages and configure build.
if(USE_PYTHON2)
find_package(PythonInterp 2.7 REQUIRED)
add_subdirectory(doc)
add_subdirectory(src)
+add_subdirectory(test)
if(BUILD_BINDINGS_JAVA OR BUILD_BINDINGS_PYTHON)
add_subdirectory(src/bindings)
endif()
-if(BUILD_BINDINGS_JAVA)
- add_subdirectory(test/java)
-endif()
-
-add_subdirectory(test/regress)
-add_subdirectory(test/system)
-
-if(ENABLE_UNIT_TESTING)
- add_subdirectory(test/unit)
-endif()
-
#-----------------------------------------------------------------------------#
# Print build configuration
+
if(CVC4_BUILD_PROFILE_PRODUCTION)
set(CVC4_BUILD_PROFILE_STRING "production")
elseif(CVC4_BUILD_PROFILE_DEBUG)
get_directory_property(CVC4_DEFINITIONS COMPILE_DEFINITIONS)
string(REPLACE ";" " " CVC4_DEFINITIONS "${CVC4_DEFINITIONS}")
-# Print configuration of 2/3-valued option 'var' with prefix 'str'
+# Print configuration of 2-valued or 3-valued option 'var' with prefix 'str'
macro(print_config str var)
if(${var} STREQUAL "ON")
set(OPT_VAL_STR "on")
--- /dev/null
+# Determine number of threads available, used to configure (default) parallel
+# execution of custom test targets (can be overriden with ARGS=-jN).
+include(ProcessorCount)
+ProcessorCount(NTHREADS)
+if(NTHREADS EQUAL 0)
+ set(NTHREADS 1)
+endif()
+
+#-----------------------------------------------------------------------------#
+# Add subdirectories
+
+add_subdirectory(regress)
+add_subdirectory(system)
+
+if(BUILD_BINDINGS_JAVA)
+ add_subdirectory(java)
+endif()
+
+if(ENABLE_UNIT_TESTING)
+ add_subdirectory(unit)
+endif()
+
+#-----------------------------------------------------------------------------#
+# Add target 'check', builds and runs
+# > unit tests
+# > regression tests of levels 0 and 1
+# > system tests
+
+add_custom_target(check
+ COMMAND ctest --output-on-failure -LE "regress[2-4]" -j${NTHREADS} $(ARGS))
regress2/xs-11-20-5-2-5-3.smt2
)
+#-----------------------------------------------------------------------------#
+# Add target 'regress', builds and runs
+# > regression tests of levels 0 and 1
+
get_target_property(path_to_cvc4 cvc4-bin RUNTIME_OUTPUT_DIRECTORY)
set(run_regress_script ${CMAKE_CURRENT_LIST_DIR}/run_regression.py)
add_custom_target(regress
- COMMAND ctest --output-on-failure -L "regress[0-1]" $(ARGS)
+ COMMAND ctest --output-on-failure -L "regress[0-1]" -j${NTHREADS} $(ARGS)
DEPENDS cvc4-bin)
macro(cvc4_add_regression_test level file)
include_directories(${PROJECT_SOURCE_DIR}/src/include)
include_directories(${CMAKE_BINARY_DIR}/src)
-add_custom_target(systemtests COMMAND ctest --output-on-failure -L "system" $(ARGS))
+#-----------------------------------------------------------------------------#
+# Add target 'systemtests', builds and runs
+# > system tests
+
+add_custom_target(systemtests
+ COMMAND ctest --output-on-failure -L "system" -j${NTHREADS} $(ARGS))
set(CVC4_SYSTEM_TEST_FLAGS
-D__BUILDING_CVC4_SYSTEM_TEST -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS)
include_directories(${PROJECT_SOURCE_DIR}/src/include)
include_directories(${CMAKE_BINARY_DIR}/src)
-add_custom_target(units COMMAND ctest -L "unit" $(ARGS))
+#-----------------------------------------------------------------------------#
+# Add target 'units', builds and runs
+# > unit tests
+
+add_custom_target(units
+ COMMAND ctest --output-on-failure -L "unit" -j${NTHREADS} $(ARGS))
set(CVC4_CXXTEST_FLAGS_BLACK
-D__BUILDING_CVC4LIB_UNIT_TEST -D__BUILDING_CVC4PARSERLIB_UNIT_TEST