Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions .github/workflows/test-library.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ jobs:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
outputs:
hassecrets: ${{ steps.checksecrets.outputs.hassecrets }}
env:
CCACHE: ccache
CCACHE_DIR: ~/.ccache

steps:
- name: Checkout Colvars
Expand Down Expand Up @@ -49,8 +52,6 @@ jobs:
fi

- name: Build and test library (GCC)
env:
CCACHE: ccache
run: cmake -P devel-tools/build_test_library.cmake

- name: Check documentation of command-line scripting interface
Expand All @@ -66,16 +67,16 @@ jobs:
- name: Build and test library (Clang)
env:
CMAKE_BUILD_DIR: build-clang
CCACHE: ccache
CXX: clang++
CC: clang
run: cmake -P devel-tools/build_test_library.cmake

- name: Build library with debug flags enabled
env:
CCACHE: ccache
run: cmake -D COLVARS_DEBUG=ON -P devel-tools/build_test_library.cmake

- name: Print ccache statistics
run: ${CCACHE} -s

- name: Check whether secrets are available
id: checksecrets
env:
Expand Down
12 changes: 5 additions & 7 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ get_filename_component(COLVARS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})

option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# Avoid having to export all the relevant symbols
set(BUILD_SHARED_LIBS OFF)
endif()

set(CMAKE_CXX_EXTENSIONS OFF)

Expand Down Expand Up @@ -120,13 +124,7 @@ endif()

option(BUILD_TOOLS "Build standalone tools" ON)

option(BUILD_TESTS "Build tests" ON)

if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# TODO fix linkage errors with Visual Studio...
set(BUILD_TOOLS OFF)
set(BUILD_TESTS OFF)
endif()
option(BUILD_TESTS "Build functional tests" ON)

option(BUILD_UNITTESTS "Build unit tests" ${BUILD_TESTS})

Expand Down
68 changes: 33 additions & 35 deletions cmake/buildColvarsTests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,40 @@ if(BUILD_TESTS)
# Build functional tests' executables
add_subdirectory(${COLVARS_SOURCE_DIR}/tests/functional tests/functional)

if(DEFINED CMAKE_SYSTEM_NAME)
# # TODO automate this step and make it OS-portable
# if(DEFINED CMAKE_SYSTEM_NAME)
# if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
# add_custom_command(TARGET colvars POST_BUILD
# COMMAND bash build_tests.sh
# ${CMAKE_BINARY_DIR}/tests/functional
# WORKING_DIRECTORY ${COLVARS_SOURCE_DIR}/tests)
# endif()
# endif()

# Copy the Colvars configuration files
file(GLOB TEST_CONFIG_FILES ${COLVARS_SOURCE_DIR}/tests/input_files/*/test.in)
foreach(TEST_CONFIG_FILE ${TEST_CONFIG_FILES})
get_filename_component(TEST_NAME ${TEST_CONFIG_FILE} DIRECTORY)
get_filename_component(TEST_NAME ${TEST_NAME} NAME)
add_custom_command(TARGET colvars POST_BUILD
COMMAND ${CMAKE_COMMAND}
-E copy ${TEST_CONFIG_FILE}
${CMAKE_BINARY_DIR}/tests/functional/${TEST_NAME}/test.in)
add_test(NAME ${TEST_NAME}
COMMAND run_colvars_test ${TEST_NAME}/test.in
WORKING_DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}/tests/functional)
endforeach()

# Copy other input files (coordinates, index files, etc)
file(GLOB TEST_INPUT_FILES ${COLVARS_SOURCE_DIR}/tests/input_files/*)
foreach(TEST_INPUT_FILE ${TEST_INPUT_FILES})
add_custom_command(TARGET colvars POST_BUILD
COMMAND ${CMAKE_COMMAND}
-E copy ${TEST_INPUT_FILE}
${CMAKE_BINARY_DIR}/tests/functional)
endforeach(TEST_INPUT_FILE)

if(CMAKE_SYSTEM_NAME STREQUAL "Linux")

# TODO automate this step and make it OS-portable
# add_custom_command(TARGET colvars POST_BUILD
# COMMAND bash build_tests.sh
# ${CMAKE_BINARY_DIR}/tests/functional
# WORKING_DIRECTORY ${COLVARS_SOURCE_DIR}/tests)

# Copy the Colvars configuration files
file(GLOB TEST_CONFIG_FILES ${COLVARS_SOURCE_DIR}/tests/input_files/*/test.in)
foreach(TEST_CONFIG_FILE ${TEST_CONFIG_FILES})
get_filename_component(TEST_NAME ${TEST_CONFIG_FILE} DIRECTORY)
get_filename_component(TEST_NAME ${TEST_NAME} NAME)
add_custom_command(TARGET colvars POST_BUILD
COMMAND ${CMAKE_COMMAND}
-E copy ${TEST_CONFIG_FILE}
${CMAKE_BINARY_DIR}/tests/functional/${TEST_NAME}/test.in)
add_test(NAME ${TEST_NAME}
COMMAND run_colvars_test ${TEST_NAME}/test.in
WORKING_DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}/tests/functional)
endforeach()

# Copy other input files (coordinates, index files, etc)
file(GLOB TEST_INPUT_FILES ${COLVARS_SOURCE_DIR}/tests/input_files/*)
foreach(TEST_INPUT_FILE ${TEST_INPUT_FILES})
add_custom_command(TARGET colvars POST_BUILD
COMMAND ${CMAKE_COMMAND}
-E copy ${TEST_INPUT_FILE}
${CMAKE_BINARY_DIR}/tests/functional)
endforeach(TEST_INPUT_FILE)

endif()
endif()
enable_testing()
endif()

Expand Down
15 changes: 12 additions & 3 deletions devel-tools/build_test_library.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ else()
get_filename_component(COLVARS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
endif()

if(NOT DEFINED CMAKE_SYSTEM_NAME)
set(CMAKE_SYSTEM_NAME ${CMAKE_HOST_SYSTEM_NAME})
endif()

set(COLVARS_LEPTON ON)
if(NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11)
Expand All @@ -25,7 +29,7 @@ if(NOT DEFINED COLVARS_TCL)
set(COLVARS_TCL ON)
endif()

if(DEFINED CMAKE_SYSTEM_NAME AND COLVARS_TCL)
if(DEFINED COLVARS_TCL)

# If available, use pre-downloaded OS-specific TCL libraries

Expand Down Expand Up @@ -76,12 +80,17 @@ if(DEFINED ENV{CCACHE})
set(DEFINE_CXX_CCACHE "-DCMAKE_CXX_COMPILER_LAUNCHER=$ENV{CCACHE}")
endif()

set(CMAKE_BUILD_TYPE "RelWithDebinfo")
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(CMAKE_BUILD_TYPE "Debug")
endif()

execute_process(
COMMAND ${CMAKE_COMMAND}
-S cmake
-B ${BUILD_DIR}
-D COLVARS_DEBUG=${COLVARS_DEBUG}
-D CMAKE_BUILD_TYPE=RelWithDebinfo
-D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-D BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
-D WARNINGS_ARE_ERRORS=ON
-D CMAKE_VERBOSE_MAKEFILE=ON
Expand Down Expand Up @@ -112,7 +121,7 @@ if(NOT result EQUAL 0)
message(FATAL_ERROR "Error building library.")
else()
execute_process(
COMMAND ${CMAKE_CTEST_COMMAND}
COMMAND ${CMAKE_CTEST_COMMAND} -C ${CMAKE_BUILD_TYPE}
WORKING_DIRECTORY ${BUILD_DIR}
RESULT_VARIABLE result
)
Expand Down