Skip to content
Snippets Groups Projects
Verified Commit 715ee8f1 authored by Lars Bilke's avatar Lars Bilke
Browse files

[cmake-format] Remaining cmake files.

parent a155fe83
No related branches found
No related tags found
No related merge requests found
Showing
with 485 additions and 297 deletions
...@@ -22,21 +22,25 @@ set(_processes_list ...@@ -22,21 +22,25 @@ set(_processes_list
ThermoMechanicalPhaseField ThermoMechanicalPhaseField
ThermoMechanics ThermoMechanics
TwoPhaseFlowWithPP TwoPhaseFlowWithPP
TwoPhaseFlowWithPrho) TwoPhaseFlowWithPrho
)
# Add a cmake option for each process. # Add a cmake option for each process.
foreach(process ${_processes_list}) foreach(process ${_processes_list})
option(OGS_BUILD_PROCESS_${process} "Build the ${process} process." ON) option(OGS_BUILD_PROCESS_${process} "Build the ${process} process." ON)
endforeach() endforeach()
set(OGS_BUILD_PROCESSES set(OGS_BUILD_PROCESSES ""
"" CACHE STRING "Semicolon-separated list of processes to build"
CACHE STRING "Semicolon-separated list of processes to build") )
if(NOT OGS_BUILD_CLI) if(NOT OGS_BUILD_CLI)
set(OGS_BUILD_PROCESSES OFF "" CACHE STRING "" FORCE) set(OGS_BUILD_PROCESSES OFF "" CACHE STRING "" FORCE)
message(STATUS "ATTENTION: OGS_BUILD_CLI=OFF -> OGS_BUILD_PROCESSES is set to OFF too.\n" message(
" If cli is switched on again, remember to switch processes back to on \n" STATUS
" too with -DOGS_BUILD_PROCESSES=\"\"!") "ATTENTION: OGS_BUILD_CLI=OFF -> OGS_BUILD_PROCESSES is set to OFF too.\n"
" If cli is switched on again, remember to switch processes back to on \n"
" too with -DOGS_BUILD_PROCESSES=\"\"!"
)
endif() endif()
if(NOT "${OGS_BUILD_PROCESSES}" STREQUAL "") if(NOT "${OGS_BUILD_PROCESSES}" STREQUAL "")
if(${OGS_BUILD_PROCESSES}) if(${OGS_BUILD_PROCESSES})
......
# Set build directories # Set build directories
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) )
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
)
if(OGS_USE_CONAN AND MSVC) if(OGS_USE_CONAN AND MSVC)
foreach(outputconfig ${CMAKE_CONFIGURATION_TYPES}) foreach(outputconfig ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${outputconfig} outputconfig) string(TOUPPER ${outputconfig} outputconfig)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${outputconfig} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${outputconfig}
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${outputconfig} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${outputconfig} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) )
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${outputconfig}
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${outputconfig}
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
)
endforeach() endforeach()
endif() endif()
...@@ -26,9 +38,8 @@ if(APPLE) ...@@ -26,9 +38,8 @@ if(APPLE)
else() else()
set(BASEPOINT $ORIGIN) set(BASEPOINT $ORIGIN)
endif() endif()
file(RELATIVE_PATH relDir file(RELATIVE_PATH relDir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
) )
set(CMAKE_INSTALL_RPATH ${BASEPOINT} ${BASEPOINT}/${relDir}) set(CMAKE_INSTALL_RPATH ${BASEPOINT} ${BASEPOINT}/${relDir})
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
...@@ -2,15 +2,21 @@ ...@@ -2,15 +2,21 @@
if(OGS_USE_POETRY) if(OGS_USE_POETRY)
find_program(POETRY poetry) find_program(POETRY poetry)
if(POETRY) if(POETRY)
configure_file(${PROJECT_SOURCE_DIR}/scripts/python/poetry.in.toml configure_file(
${PROJECT_BINARY_DIR}/poetry.toml COPYONLY) ${PROJECT_SOURCE_DIR}/scripts/python/poetry.in.toml
${PROJECT_BINARY_DIR}/poetry.toml COPYONLY
)
if(NOT EXISTS ${PROJECT_BINARY_DIR}/pyproject.toml) if(NOT EXISTS ${PROJECT_BINARY_DIR}/pyproject.toml)
configure_file(${PROJECT_SOURCE_DIR}/scripts/python/pyproject.in.toml configure_file(
${PROJECT_BINARY_DIR}/pyproject.toml) ${PROJECT_SOURCE_DIR}/scripts/python/pyproject.in.toml
${PROJECT_BINARY_DIR}/pyproject.toml
)
endif() endif()
if(NOT EXISTS ${PROJECT_BINARY_DIR}/.venv) if(NOT EXISTS ${PROJECT_BINARY_DIR}/.venv)
execute_process(COMMAND ${_CMD_COMMAND} poetry install execute_process(
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) COMMAND ${_CMD_COMMAND} poetry install
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
endif() endif()
set(Python3_ROOT_DIR ${PROJECT_BINARY_DIR}/.venv) set(Python3_ROOT_DIR ${PROJECT_BINARY_DIR}/.venv)
set(Python3_EXECUTABLE ${Python3_ROOT_DIR}/bin/python) set(Python3_EXECUTABLE ${Python3_ROOT_DIR}/bin/python)
...@@ -21,32 +27,39 @@ if(OGS_USE_POETRY) ...@@ -21,32 +27,39 @@ if(OGS_USE_POETRY)
endif() endif()
if(OGS_USE_PYTHON) if(OGS_USE_PYTHON)
find_package(Python3 ${ogs.minimum_version.python} COMPONENTS Interpreter Development REQUIRED) find_package(
Python3 ${ogs.minimum_version.python} COMPONENTS Interpreter Development
REQUIRED
)
else() else()
find_package(Python3 ${ogs.minimum_version.python} COMPONENTS Interpreter) find_package(Python3 ${ogs.minimum_version.python} COMPONENTS Interpreter)
endif() endif()
if(POETRY) if(POETRY)
if(MSVC) if(MSVC)
file(TO_NATIVE_PATH "${Python3_ROOT_DIR}/Lib/site-packages" file(TO_NATIVE_PATH "${Python3_ROOT_DIR}/Lib/site-packages"
Python3_VIRTUALENV_SITEPACKAGES) Python3_VIRTUALENV_SITEPACKAGES
)
string(REPLACE "\\" "\\\\" Python3_VIRTUALENV_SITEPACKAGES string(REPLACE "\\" "\\\\" Python3_VIRTUALENV_SITEPACKAGES
${Python3_VIRTUALENV_SITEPACKAGES}) ${Python3_VIRTUALENV_SITEPACKAGES}
)
else() else()
set(Python3_VIRTUALENV_SITEPACKAGES set(Python3_VIRTUALENV_SITEPACKAGES
${Python3_ROOT_DIR}/lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) ${Python3_ROOT_DIR}/lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages
)
endif() endif()
endif() endif()
set(LOCAL_VIRTUALENV_BIN_DIRS set(LOCAL_VIRTUALENV_BIN_DIRS ${PROJECT_BINARY_DIR}/.venv/bin
${PROJECT_BINARY_DIR}/.venv/bin ${PROJECT_BINARY_DIR}/.venv/Scripts CACHE INTERNAL
${PROJECT_BINARY_DIR}/.venv/Scripts ""
CACHE INTERNAL ""
) )
if(POETRY) if(POETRY)
if(OGS_BUILD_TESTING) if(OGS_BUILD_TESTING)
list(APPEND PYTHON_PACKAGES snakemake=${ogs.minimum_version.snakemake}) list(APPEND PYTHON_PACKAGES snakemake=${ogs.minimum_version.snakemake})
endif() endif()
execute_process(COMMAND ${_CMD_COMMAND} poetry add ${PYTHON_PACKAGES} execute_process(
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) COMMAND ${_CMD_COMMAND} poetry add ${PYTHON_PACKAGES}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
endif() endif()
...@@ -7,7 +7,8 @@ set_target_properties(GeoLib PROPERTIES UNITY_BUILD_BATCH_SIZE 40) ...@@ -7,7 +7,8 @@ set_target_properties(GeoLib PROPERTIES UNITY_BUILD_BATCH_SIZE 40)
set_target_properties(MaterialLib PROPERTIES UNITY_BUILD_BATCH_SIZE 20) set_target_properties(MaterialLib PROPERTIES UNITY_BUILD_BATCH_SIZE 20)
set_target_properties(MathLib PROPERTIES UNITY_BUILD_BATCH_SIZE 10) set_target_properties(MathLib PROPERTIES UNITY_BUILD_BATCH_SIZE 10)
set_target_properties(MeshLib PROPERTIES UNITY_BUILD_BATCH_SIZE 20) set_target_properties(MeshLib PROPERTIES UNITY_BUILD_BATCH_SIZE 20)
# set_target_properties(ProcessLib PROPERTIES UNITY_BUILD_BATCH_SIZE 80) # breaks! # set_target_properties(ProcessLib PROPERTIES UNITY_BUILD_BATCH_SIZE 80) #
# breaks!
if(TARGET testrunner) if(TARGET testrunner)
set_target_properties(testrunner PROPERTIES UNITY_BUILD ON) set_target_properties(testrunner PROPERTIES UNITY_BUILD ON)
......
...@@ -7,8 +7,7 @@ CPMAddPackage( ...@@ -7,8 +7,7 @@ CPMAddPackage(
include("${json-cmake_SOURCE_DIR}/JSONParser.cmake") include("${json-cmake_SOURCE_DIR}/JSONParser.cmake")
file(READ ${PROJECT_SOURCE_DIR}/web/data/versions.json jsonFileString) file(READ ${PROJECT_SOURCE_DIR}/web/data/versions.json jsonFileString)
sbeParseJson(ogs jsonFileString) sbeParseJson(ogs jsonFileString)
# Provides variables, e.g. ogs.minimum_version.gcc # Provides variables, e.g. ogs.minimum_version.gcc. Output all variables with
# Output all variables with
# ~~~ # ~~~
# foreach(var ${ogs}) # foreach(var ${ogs})
# message("${var} = ${${var}}") # message("${var} = ${${var}}")
......
...@@ -85,19 +85,18 @@ set(SOURCES ...@@ -85,19 +85,18 @@ set(SOURCES
) )
# compile Var.c as c++ # compile Var.c as c++
SET_SOURCE_FILES_PROPERTIES(${iphreeqc_SOURCE_DIR}/src/Var.c PROPERTIES LANGUAGE CXX) SET_SOURCE_FILES_PROPERTIES(
${iphreeqc_SOURCE_DIR}/src/Var.c PROPERTIES LANGUAGE CXX
)
add_library(iphreeqc STATIC ${SOURCES}) add_library(iphreeqc STATIC ${SOURCES})
target_include_directories(iphreeqc target_include_directories(
PUBLIC iphreeqc
${iphreeqc_SOURCE_DIR}/src/phreeqcpp/common PUBLIC ${iphreeqc_SOURCE_DIR}/src/phreeqcpp/common
${iphreeqc_SOURCE_DIR}/src/phreeqcpp/PhreeqcKeywords ${iphreeqc_SOURCE_DIR}/src/phreeqcpp/PhreeqcKeywords
${iphreeqc_SOURCE_DIR}/src/phreeqcpp ${iphreeqc_SOURCE_DIR}/src/phreeqcpp ${iphreeqc_SOURCE_DIR}/src
${iphreeqc_SOURCE_DIR}/src
)
target_compile_definitions(iphreeqc
PUBLIC LDBLE=double
) )
target_compile_definitions(iphreeqc PUBLIC LDBLE=double)
# Exclude iphreeqc target from clang-tidy tests because it handles the above # Exclude iphreeqc target from clang-tidy tests because it handles the above
# mentioned 'src/src/Var.c' file as c, not c++. # mentioned 'src/src/Var.c' file as c, not c++.
set_target_properties(iphreeqc PROPERTIES CXX_CLANG_TIDY "") set_target_properties(iphreeqc PROPERTIES CXX_CLANG_TIDY "")
...@@ -10,9 +10,11 @@ if(NOT REALPATH_TOOL_PATH OR NOT ZIP_TOOL_PATH) ...@@ -10,9 +10,11 @@ if(NOT REALPATH_TOOL_PATH OR NOT ZIP_TOOL_PATH)
return() return()
endif() endif()
add_custom_target(archive-data add_custom_target(
archive-data
bash ${PROJECT_SOURCE_DIR}/scripts/packaging/archive-testdata.sh bash ${PROJECT_SOURCE_DIR}/scripts/packaging/archive-testdata.sh
DEPENDS data DEPENDS data
WORKING_DIRECTORY ${PROJECT_BINARY_DIR} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Packaging testdata to ogs6-data.tar.gz and ogs6-data.zip" VERBATIM COMMENT "Packaging testdata to ogs6-data.tar.gz and ogs6-data.zip"
VERBATIM
) )
if(_IS_SUBPROJECT) if(_IS_SUBPROJECT)
include (CPack) include(CPack)
return() return()
endif() endif()
# Put ogs installs into its own component and then only install # Put ogs installs into its own component and then only install this component
# this component (avoids third-party installs from CPM). # (avoids third-party installs from CPM).
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME ogs) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME ogs)
set(CPACK_INSTALL_CMAKE_PROJECTS set(CPACK_INSTALL_CMAKE_PROJECTS
"${PROJECT_BINARY_DIR};${PROJECT_NAME};${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME};/" "${PROJECT_BINARY_DIR};${PROJECT_NAME};${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME};/"
...@@ -14,7 +14,7 @@ option(OGS_INSTALL_DEPENDENCIES "Package dependencies.") ...@@ -14,7 +14,7 @@ option(OGS_INSTALL_DEPENDENCIES "Package dependencies.")
include(packaging/PackagingMacros) include(packaging/PackagingMacros)
include(packaging/ArchiveTestdata) include(packaging/ArchiveTestdata)
#### Packaging setup #### # Packaging setup
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OGS-6 THM/C Simulator") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OGS-6 THM/C Simulator")
set(CPACK_PACKAGE_VENDOR "OpenGeoSys Community (http://www.opengeosys.org)") set(CPACK_PACKAGE_VENDOR "OpenGeoSys Community (http://www.opengeosys.org)")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "OGS-${OGS_VERSION}") set(CPACK_PACKAGE_INSTALL_DIRECTORY "OGS-${OGS_VERSION}")
...@@ -42,28 +42,31 @@ if(APPLE) ...@@ -42,28 +42,31 @@ if(APPLE)
string(REGEX MATCH "(^[0-9]*)" TMP ${CMAKE_SYSTEM_VERSION}) string(REGEX MATCH "(^[0-9]*)" TMP ${CMAKE_SYSTEM_VERSION})
math(EXPR OSX_VERSION_MINOR "${CMAKE_MATCH_1} - 4") math(EXPR OSX_VERSION_MINOR "${CMAKE_MATCH_1} - 4")
set(CPACK_PACKAGE_FILE_NAME set(CPACK_PACKAGE_FILE_NAME
"ogs-${OGS_VERSION}-OSX-10.${OSX_VERSION_MINOR}-${SUFFIX}") "ogs-${OGS_VERSION}-OSX-10.${OSX_VERSION_MINOR}-${SUFFIX}"
)
set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME})
else() else()
set(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-${CMAKE_SYSTEM}-${SUFFIX}") set(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-${CMAKE_SYSTEM}-${SUFFIX}")
endif() endif()
if (WIN32) if(WIN32)
include (packaging/PackagingWin) include(packaging/PackagingWin)
endif() endif()
if(UNIX) if(UNIX)
if(APPLE) if(APPLE)
include (packaging/PackagingMac) include(packaging/PackagingMac)
else() else()
include (packaging/PackagingLinux) include(packaging/PackagingLinux)
endif() endif()
endif() endif()
include (CPack) include(CPack)
if(OGS_USE_CONAN) if(OGS_USE_CONAN)
# Install Qt platform shared libraries # Install Qt platform shared libraries
install(DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/platforms DESTINATION bin OPTIONAL) install(DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/platforms
DESTINATION bin OPTIONAL
)
endif() endif()
if(OGS_USE_PYTHON) if(OGS_USE_PYTHON)
...@@ -79,16 +82,21 @@ endif() ...@@ -79,16 +82,21 @@ endif()
configure_file(Documentation/README.txt.in ${PROJECT_BINARY_DIR}/README.txt) configure_file(Documentation/README.txt.in ${PROJECT_BINARY_DIR}/README.txt)
install(FILES ${PROJECT_BINARY_DIR}/README.txt DESTINATION .) install(FILES ${PROJECT_BINARY_DIR}/README.txt DESTINATION .)
install(FILES ${PROJECT_BINARY_DIR}/CMakeCache.txt DESTINATION ${CMAKE_INSTALL_INFODIR}) install(FILES ${PROJECT_BINARY_DIR}/CMakeCache.txt
DESTINATION ${CMAKE_INSTALL_INFODIR}
)
if(EXISTS ${PROJECT_BINARY_DIR}/cmake-args) if(EXISTS ${PROJECT_BINARY_DIR}/cmake-args)
install(FILES ${PROJECT_BINARY_DIR}/cmake-args DESTINATION ${CMAKE_INSTALL_INFODIR}) install(FILES ${PROJECT_BINARY_DIR}/cmake-args
DESTINATION ${CMAKE_INSTALL_INFODIR}
)
endif() endif()
# Install dependencies via GET_RUNTIME_DEPENDENCIES. Available since CMake 3.16. # Install dependencies via GET_RUNTIME_DEPENDENCIES. Available since CMake 3.16.
if(${CMAKE_VERSION} VERSION_LESS 3.16 OR NOT OGS_INSTALL_DEPENDENCIES) if(${CMAKE_VERSION} VERSION_LESS 3.16 OR NOT OGS_INSTALL_DEPENDENCIES)
return() return()
endif() endif()
install(CODE [[ install(
CODE [[
include(GNUInstallDirs) include(GNUInstallDirs)
if(WIN32) if(WIN32)
set(INSTALL_DIR ${CMAKE_INSTALL_FULL_BINDIR}) set(INSTALL_DIR ${CMAKE_INSTALL_FULL_BINDIR})
...@@ -109,4 +117,5 @@ install(CODE [[ ...@@ -109,4 +117,5 @@ install(CODE [[
if("${_u_length}" GREATER 0) if("${_u_length}" GREATER 0)
message(WARNING "Unresolved dependencies detected!\n${_u_deps}") message(WARNING "Unresolved dependencies detected!\n${_u_deps}")
endif() endif()
]]) ]]
)
...@@ -2,7 +2,8 @@ set(CPACK_GENERATOR TGZ) ...@@ -2,7 +2,8 @@ set(CPACK_GENERATOR TGZ)
if(MODULE_CMD) if(MODULE_CMD)
message(STATUS "Found module cmd -> writing module file.") message(STATUS "Found module cmd -> writing module file.")
execute_process(COMMAND ${MODULE_CMD} bash --terse list execute_process(
COMMAND ${MODULE_CMD} bash --terse list
ERROR_VARIABLE MODULE_LIST_OUTPUT ERROR_VARIABLE MODULE_LIST_OUTPUT
) )
string(REPLACE "\n" ";" MODULE_LIST_OUTPUT ${MODULE_LIST_OUTPUT}) string(REPLACE "\n" ";" MODULE_LIST_OUTPUT ${MODULE_LIST_OUTPUT})
...@@ -11,18 +12,22 @@ if(MODULE_CMD) ...@@ -11,18 +12,22 @@ if(MODULE_CMD)
set(MODULE_LOAD_STRING "${MODULE_LOAD_STRING}load(\"${line}\")\n") set(MODULE_LOAD_STRING "${MODULE_LOAD_STRING}load(\"${line}\")\n")
endif() endif()
endforeach() endforeach()
configure_file(${PROJECT_SOURCE_DIR}/scripts/cmake/packaging/module.in configure_file(
${PROJECT_SOURCE_DIR}/scripts/cmake/packaging/module.in
${PROJECT_BINARY_DIR}/module.lua ${PROJECT_BINARY_DIR}/module.lua
) )
if(OGS_MODULEFILE) if(OGS_MODULEFILE)
get_filename_component(MODULE_DIR ${OGS_MODULEFILE} DIRECTORY) get_filename_component(MODULE_DIR ${OGS_MODULEFILE} DIRECTORY)
get_filename_component(MODULE_NAME ${OGS_MODULEFILE} NAME) get_filename_component(MODULE_NAME ${OGS_MODULEFILE} NAME)
install(FILES ${PROJECT_BINARY_DIR}/module.lua DESTINATION ${MODULE_DIR} install(FILES ${PROJECT_BINARY_DIR}/module.lua DESTINATION ${MODULE_DIR}
RENAME ${MODULE_NAME}.lua) RENAME ${MODULE_NAME}.lua
)
endif() endif()
else() else()
if("${HOSTNAME}" MATCHES "frontend.*") if("${HOSTNAME}" MATCHES "frontend.*")
message(FATAL_ERROR "MODULE_CMD not found but required on eve frontends!") message(
FATAL_ERROR "MODULE_CMD not found but required on eve frontends!"
)
endif() endif()
endif() endif()
......
set(CPACK_GENERATOR TGZ) set(CPACK_GENERATOR TGZ)
option(OGS_PACK_DMG "package targets creates a .dmg disk image instead of .tar.gz" FALSE) option(OGS_PACK_DMG
"package targets creates a .dmg disk image instead of .tar.gz" FALSE
)
if(OGS_PACK_DMG) if(OGS_PACK_DMG)
if(NOT OGS_BUILD_GUI) if(NOT OGS_BUILD_GUI)
message(WARNING "OGS_PACK_DMG requires OGS_BUILD_GUI=ON!") message(WARNING "OGS_PACK_DMG requires OGS_BUILD_GUI=ON!")
...@@ -10,23 +12,30 @@ endif() ...@@ -10,23 +12,30 @@ endif()
set(CPACK_DMG_FORMAT "UDBZ") set(CPACK_DMG_FORMAT "UDBZ")
# See http://stackoverflow.com/a/16662169/80480 how to create the DS_Store file. # See http://stackoverflow.com/a/16662169/80480 how to create the DS_Store file.
set(CPACK_DMG_BACKGROUND_IMAGE ${PROJECT_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png) set(CPACK_DMG_BACKGROUND_IMAGE
${PROJECT_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png
)
set(CPACK_DMG_DS_STORE ${PROJECT_SOURCE_DIR}/scripts/packaging/.DS_Store) set(CPACK_DMG_DS_STORE ${PROJECT_SOURCE_DIR}/scripts/packaging/.DS_Store)
if(OGS_USE_CONAN) if(OGS_USE_CONAN)
file(GLOB MATCHED_FILES LIST_DIRECTORIES false "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.dylib*") file(GLOB MATCHED_FILES LIST_DIRECTORIES false
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/*.dylib*"
)
install(FILES ${MATCHED_FILES} DESTINATION lib) install(FILES ${MATCHED_FILES} DESTINATION lib)
# macOS frameworks are directories, exclude header files # macOS frameworks are directories, exclude header files
file(GLOB MATCHED_DIRECTORIES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/*.framework") file(GLOB MATCHED_DIRECTORIES
install(DIRECTORY ${MATCHED_DIRECTORIES} DESTINATION bin "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/*.framework"
PATTERN "Headers" EXCLUDE) )
install(DIRECTORY ${MATCHED_DIRECTORIES} DESTINATION bin PATTERN "Headers"
EXCLUDE
)
endif() endif()
if(OGS_BUILD_GUI) if(OGS_BUILD_GUI)
install_qt5_plugin("Qt5::QCocoaIntegrationPlugin" QT_PLUGINS) install_qt5_plugin("Qt5::QCocoaIntegrationPlugin" QT_PLUGINS)
file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf"
"[Paths]\nPlugins = ../${_qt_plugin_dir}\n") "[Paths]\nPlugins = ../${_qt_plugin_dir}\n"
install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" )
DESTINATION bin) install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" DESTINATION bin)
endif() endif()
...@@ -11,10 +11,11 @@ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}") ...@@ -11,10 +11,11 @@ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
set(CPACK_NSIS_CONTACT "info@opengeosys.org") set(CPACK_NSIS_CONTACT "info@opengeosys.org")
set(CPACK_NSIS_MODIFY_PATH OFF) set(CPACK_NSIS_MODIFY_PATH OFF)
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_HELP_LINK "http://docs.opengeosys.org/assets/files/Documentation/User_Manual.pdf") set(CPACK_NSIS_HELP_LINK
"http://docs.opengeosys.org/assets/files/Documentation/User_Manual.pdf"
)
set(CPACK_NSIS_MENU_LINKS set(CPACK_NSIS_MENU_LINKS
"bin" "Executables folder" "bin" "Executables folder" "http://www.opengeosys.org" "Website"
"http://www.opengeosys.org" "Website"
"https://github.com/ufz/ogs" "Source code on GitHub" "https://github.com/ufz/ogs" "Source code on GitHub"
) )
...@@ -26,7 +27,7 @@ endif() ...@@ -26,7 +27,7 @@ endif()
if(OGS_BUILD_GUI) if(OGS_BUILD_GUI)
install_qt5_plugin("Qt5::QWindowsIntegrationPlugin" QT_PLUGINS) install_qt5_plugin("Qt5::QWindowsIntegrationPlugin" QT_PLUGINS)
file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" file(WRITE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf"
"[Paths]\nPlugins = ../${_qt_plugin_dir}\n") "[Paths]\nPlugins = ../${_qt_plugin_dir}\n"
install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" )
DESTINATION bin) install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" DESTINATION bin)
endif() endif()
...@@ -51,28 +51,51 @@ ...@@ -51,28 +51,51 @@
# compared using the given absolute and relative tolerances. # compared using the given absolute and relative tolerances.
# ~~~ # ~~~
# cmake-lint: disable=C0103,R0911,R0912,R0915 # cmake-lint: disable=C0103,R0911,R0912,R0915
function (AddTest) function(AddTest)
# parse arguments # parse arguments
set(options DISABLED) set(options DISABLED)
set(oneValueArgs EXECUTABLE PATH NAME WRAPPER TESTER ABSTOL RELTOL RUNTIME DEPENDS WORKING_DIRECTORY) set(oneValueArgs
set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS REQUIREMENTS PYTHON_PACKAGES VIS) EXECUTABLE
cmake_parse_arguments(AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) PATH
NAME
WRAPPER
TESTER
ABSTOL
RELTOL
RUNTIME
DEPENDS
WORKING_DIRECTORY
)
set(multiValueArgs
EXECUTABLE_ARGS
DATA
DIFF_DATA
WRAPPER_ARGS
REQUIREMENTS
PYTHON_PACKAGES
VIS
)
cmake_parse_arguments(
AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}
)
set(AddTest_SOURCE_PATH "${Data_SOURCE_DIR}/${AddTest_PATH}") set(AddTest_SOURCE_PATH "${Data_SOURCE_DIR}/${AddTest_PATH}")
set(AddTest_BINARY_PATH "${Data_BINARY_DIR}/${AddTest_PATH}") set(AddTest_BINARY_PATH "${Data_BINARY_DIR}/${AddTest_PATH}")
file(MAKE_DIRECTORY ${AddTest_BINARY_PATH}) file(MAKE_DIRECTORY ${AddTest_BINARY_PATH})
file(TO_NATIVE_PATH "${AddTest_BINARY_PATH}" AddTest_BINARY_PATH_NATIVE) file(TO_NATIVE_PATH "${AddTest_BINARY_PATH}" AddTest_BINARY_PATH_NATIVE)
set(AddTest_STDOUT_FILE_PATH "${AddTest_BINARY_PATH}/${AddTest_NAME}_stdout.log") set(AddTest_STDOUT_FILE_PATH
"${AddTest_BINARY_PATH}/${AddTest_NAME}_stdout.log"
)
# set defaults # set defaults
if(NOT DEFINED AddTest_EXECUTABLE) if(NOT DEFINED AddTest_EXECUTABLE)
message(FATAL_ERROR "Test ${AddTest_NAME}: No EXECUTABLE set!") message(FATAL_ERROR "Test ${AddTest_NAME}: No EXECUTABLE set!")
endif() endif()
if (NOT DEFINED AddTest_REQUIREMENTS) if(NOT DEFINED AddTest_REQUIREMENTS)
set(AddTest_REQUIREMENTS TRUE) set(AddTest_REQUIREMENTS TRUE)
endif() endif()
if (NOT DEFINED AddTest_RUNTIME) if(NOT DEFINED AddTest_RUNTIME)
set(AddTest_RUNTIME 1) set(AddTest_RUNTIME 1)
endif() endif()
if(NOT DEFINED AddTest_WORKING_DIRECTORY) if(NOT DEFINED AddTest_WORKING_DIRECTORY)
...@@ -80,8 +103,10 @@ function (AddTest) ...@@ -80,8 +103,10 @@ function (AddTest)
endif() endif()
if("${AddTest_EXECUTABLE}" STREQUAL "ogs") if("${AddTest_EXECUTABLE}" STREQUAL "ogs")
set(AddTest_EXECUTABLE_ARGS -o ${AddTest_BINARY_PATH_NATIVE} set(AddTest_EXECUTABLE_ARGS
${AddTest_SOURCE_PATH}/${AddTest_EXECUTABLE_ARGS}) -o ${AddTest_BINARY_PATH_NATIVE}
${AddTest_SOURCE_PATH}/${AddTest_EXECUTABLE_ARGS}
)
endif() endif()
if(DEFINED OGS_CTEST_MAX_RUNTIME) if(DEFINED OGS_CTEST_MAX_RUNTIME)
...@@ -96,14 +121,20 @@ function (AddTest) ...@@ -96,14 +121,20 @@ function (AddTest)
# --- Implement wrappers --- # --- Implement wrappers ---
# check if exe is part of build # check if exe is part of build
if(NOT TARGET ${AddTest_EXECUTABLE}) if(NOT TARGET ${AddTest_EXECUTABLE})
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nTest exe ${AddTest_EXECUTABLE} not built! Disabling test ${AddTest_NAME}." CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nTest exe ${AddTest_EXECUTABLE} not built! Disabling test ${AddTest_NAME}."
CACHE INTERNAL ""
)
return() return()
endif() endif()
# check requirements, disable if not met # check requirements, disable if not met
if(${AddTest_REQUIREMENTS}) if(${AddTest_REQUIREMENTS})
message(DEBUG "Enabling test ${AddTest_NAME}.") message(DEBUG "Enabling test ${AddTest_NAME}.")
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nRequirement ${AddTest_REQUIREMENTS} not met! Disabling test ${AddTest_NAME}." CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nRequirement ${AddTest_REQUIREMENTS} not met! Disabling test ${AddTest_NAME}."
CACHE INTERNAL ""
)
return() return()
endif() endif()
...@@ -111,36 +142,54 @@ function (AddTest) ...@@ -111,36 +142,54 @@ function (AddTest)
if(TIME_TOOL_PATH) if(TIME_TOOL_PATH)
set(WRAPPER_COMMAND time) set(WRAPPER_COMMAND time)
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${AddTest_NAME} as time exe was not found!" CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${AddTest_NAME} as time exe was not found!"
CACHE INTERNAL ""
)
set(AddTest_WRAPPER_ARGS "") set(AddTest_WRAPPER_ARGS "")
endif() endif()
elseif(AddTest_WRAPPER STREQUAL "memcheck") elseif(AddTest_WRAPPER STREQUAL "memcheck")
if(VALGRIND_TOOL_PATH) if(VALGRIND_TOOL_PATH)
set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff") set(WRAPPER_COMMAND
"${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff"
)
set(tester memcheck) set(tester memcheck)
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${AddTest_NAME} as memcheck exe was not found!" CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${AddTest_NAME} as memcheck exe was not found!"
CACHE INTERNAL ""
)
set(AddTest_WRAPPER_ARGS "") set(AddTest_WRAPPER_ARGS "")
endif() endif()
elseif(AddTest_WRAPPER STREQUAL "callgrind") elseif(AddTest_WRAPPER STREQUAL "callgrind")
if(VALGRIND_TOOL_PATH) if(VALGRIND_TOOL_PATH)
set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes") set(WRAPPER_COMMAND
"${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes"
)
unset(tester) unset(tester)
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${AddTest_NAME} as callgrind exe was not found!" CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${AddTest_NAME} as callgrind exe was not found!"
CACHE INTERNAL ""
)
set(AddTest_WRAPPER_ARGS "") set(AddTest_WRAPPER_ARGS "")
endif() endif()
elseif(AddTest_WRAPPER STREQUAL "mpirun") elseif(AddTest_WRAPPER STREQUAL "mpirun")
if(MPIRUN_TOOL_PATH) if(MPIRUN_TOOL_PATH)
if("${HOSTNAME}" MATCHES "frontend.*") if("${HOSTNAME}" MATCHES "frontend.*")
set(AddTest_WRAPPER_ARGS ${AddTest_WRAPPER_ARGS} --mca btl_openib_allow_ib 1) set(AddTest_WRAPPER_ARGS ${AddTest_WRAPPER_ARGS} --mca
btl_openib_allow_ib 1
)
endif() endif()
set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH}) set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH})
if("${AddTest_WRAPPER_ARGS}" MATCHES "-np;([0-9]*)") if("${AddTest_WRAPPER_ARGS}" MATCHES "-np;([0-9]*)")
set(MPI_PROCESSORS ${CMAKE_MATCH_1}) set(MPI_PROCESSORS ${CMAKE_MATCH_1})
endif() endif()
else() else()
message(STATUS "ERROR: mpirun was not found but is required for ${AddTest_NAME}!") message(
STATUS
"ERROR: mpirun was not found but is required for ${AddTest_NAME}!"
)
return() return()
endif() endif()
endif() endif()
...@@ -166,11 +215,16 @@ function (AddTest) ...@@ -166,11 +215,16 @@ function (AddTest)
if(AddTest_DIFF_DATA) if(AddTest_DIFF_DATA)
string(LENGTH "${AddTest_DIFF_DATA}" DIFF_DATA_LENGTH) string(LENGTH "${AddTest_DIFF_DATA}" DIFF_DATA_LENGTH)
if(${DIFF_DATA_LENGTH} GREATER 7500) if(${DIFF_DATA_LENGTH} GREATER 7500)
message(FATAL_ERROR "${AddTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO") message(
FATAL_ERROR
"${AddTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO"
)
endif() endif()
endif() endif()
if((AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "vtkdiff" OR AddTest_TESTER STREQUAL "xdmfdiff") AND NOT AddTest_DIFF_DATA) if((AddTest_TESTER STREQUAL "diff" OR AddTest_TESTER STREQUAL "vtkdiff"
OR AddTest_TESTER STREQUAL "xdmfdiff") AND NOT AddTest_DIFF_DATA
)
message(FATAL_ERROR "AddTest(): ${AddTest_NAME} - no DIFF_DATA given!") message(FATAL_ERROR "AddTest(): ${AddTest_NAME} - no DIFF_DATA given!")
endif() endif()
...@@ -188,25 +242,31 @@ function (AddTest) ...@@ -188,25 +242,31 @@ function (AddTest)
get_filename_component(FILE_EXPECTED ${FILE} NAME) get_filename_component(FILE_EXPECTED ${FILE} NAME)
list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} \ list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} \
${TESTER_ARGS} ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \ ${TESTER_ARGS} ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \
${AddTest_BINARY_PATH}/${FILE}") ${AddTest_BINARY_PATH}/${FILE}"
)
endforeach() endforeach()
elseif(AddTest_TESTER STREQUAL "vtkdiff" OR AddTest_TESTER STREQUAL "xdmfdiff") elseif(AddTest_TESTER STREQUAL "vtkdiff" OR AddTest_TESTER STREQUAL
"xdmfdiff"
)
list(LENGTH AddTest_DIFF_DATA DiffDataLength) list(LENGTH AddTest_DIFF_DATA DiffDataLength)
math(EXPR DiffDataLengthMod4 "${DiffDataLength} % 4") math(EXPR DiffDataLengthMod4 "${DiffDataLength} % 4")
math(EXPR DiffDataLengthMod6 "${DiffDataLength} % 6") math(EXPR DiffDataLengthMod6 "${DiffDataLength} % 6")
if (${DiffDataLengthMod4} EQUAL 0 AND NOT ${DiffDataLengthMod6} EQUAL 0) if(${DiffDataLengthMod4} EQUAL 0 AND NOT ${DiffDataLengthMod6} EQUAL 0)
message(WARNING "DEPRECATED AddTest call with four arguments.\ message(WARNING "DEPRECATED AddTest call with four arguments.\
Use six arguments version of AddTest with absolute and relative tolerances") Use six arguments version of AddTest with absolute and relative tolerances"
if (NOT AddTest_ABSTOL) )
set (AddTest_ABSTOL 1e-16) if(NOT AddTest_ABSTOL)
set(AddTest_ABSTOL 1e-16)
endif() endif()
if (NOT AddTest_RELTOL) if(NOT AddTest_RELTOL)
set (AddTest_RELTOL 1e-16) set(AddTest_RELTOL 1e-16)
endif() endif()
set(TESTER_ARGS "--abs ${AddTest_ABSTOL} --rel ${AddTest_RELTOL}") set(TESTER_ARGS "--abs ${AddTest_ABSTOL} --rel ${AddTest_RELTOL}")
math(EXPR DiffDataLastIndex "${DiffDataLength}-1") math(EXPR DiffDataLastIndex "${DiffDataLength}-1")
foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 4) foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 4)
list(GET AddTest_DIFF_DATA "${DiffDataIndex}" REFERENCE_VTK_FILE) list(GET AddTest_DIFF_DATA "${DiffDataIndex}"
REFERENCE_VTK_FILE
)
math(EXPR DiffDataAuxIndex "${DiffDataIndex}+1") math(EXPR DiffDataAuxIndex "${DiffDataIndex}+1")
list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" VTK_FILE) list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" VTK_FILE)
math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2") math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2")
...@@ -214,19 +274,28 @@ Use six arguments version of AddTest with absolute and relative tolerances") ...@@ -214,19 +274,28 @@ Use six arguments version of AddTest with absolute and relative tolerances")
math(EXPR DiffDataAuxIndex "${DiffDataIndex}+3") math(EXPR DiffDataAuxIndex "${DiffDataIndex}+3")
list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" NAME_B) list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" NAME_B)
list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} \ list(
APPEND
TESTER_COMMAND
"${SELECTED_DIFF_TOOL_PATH} \
${AddTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \ ${AddTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \
${AddTest_BINARY_PATH}/${VTK_FILE} \ ${AddTest_BINARY_PATH}/${VTK_FILE} \
-a ${NAME_A} -b ${NAME_B} \ -a ${NAME_A} -b ${NAME_B} \
${TESTER_ARGS}") ${TESTER_ARGS}"
)
endforeach() endforeach()
elseif (${DiffDataLengthMod6} EQUAL 0) elseif(${DiffDataLengthMod6} EQUAL 0)
if (${AddTest_ABSTOL} OR ${AddTest_RELTOL}) if(${AddTest_ABSTOL} OR ${AddTest_RELTOL})
message(FATAL_ERROR "ABSTOL or RELTOL arguments must not be present.") message(
FATAL_ERROR
"ABSTOL or RELTOL arguments must not be present."
)
endif() endif()
math(EXPR DiffDataLastIndex "${DiffDataLength}-1") math(EXPR DiffDataLastIndex "${DiffDataLength}-1")
foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 6) foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 6)
list(GET AddTest_DIFF_DATA "${DiffDataIndex}" REFERENCE_VTK_FILE) list(GET AddTest_DIFF_DATA "${DiffDataIndex}"
REFERENCE_VTK_FILE
)
math(EXPR DiffDataAuxIndex "${DiffDataIndex}+1") math(EXPR DiffDataAuxIndex "${DiffDataIndex}+1")
list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" VTK_FILE) list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" VTK_FILE)
math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2") math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2")
...@@ -239,19 +308,28 @@ Use six arguments version of AddTest with absolute and relative tolerances") ...@@ -239,19 +308,28 @@ Use six arguments version of AddTest with absolute and relative tolerances")
list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" REL_TOL) list(GET AddTest_DIFF_DATA "${DiffDataAuxIndex}" REL_TOL)
if("${REFERENCE_VTK_FILE}" STREQUAL "GLOB") if("${REFERENCE_VTK_FILE}" STREQUAL "GLOB")
list(APPEND TESTER_COMMAND "${VTK_FILE} ${NAME_A} ${NAME_B} ${ABS_TOL} ${REL_TOL}") list(APPEND TESTER_COMMAND
"${VTK_FILE} ${NAME_A} ${NAME_B} ${ABS_TOL} ${REL_TOL}"
)
set(GLOB_MODE TRUE) set(GLOB_MODE TRUE)
else() else()
list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} \ list(
APPEND
TESTER_COMMAND
"${SELECTED_DIFF_TOOL_PATH} \
${AddTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \ ${AddTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \
${AddTest_BINARY_PATH}/${VTK_FILE} \ ${AddTest_BINARY_PATH}/${VTK_FILE} \
-a ${NAME_A} -b ${NAME_B} \ -a ${NAME_A} -b ${NAME_B} \
--abs ${ABS_TOL} --rel ${REL_TOL} \ --abs ${ABS_TOL} --rel ${REL_TOL} \
${TESTER_ARGS}") ${TESTER_ARGS}"
)
endif() endif()
endforeach() endforeach()
else () else()
message(FATAL_ERROR "For vtkdiff tester the number of diff data arguments must be a multiple of six.") message(
FATAL_ERROR
"For vtkdiff tester the number of diff data arguments must be a multiple of six."
)
endif() endif()
elseif(AddTest_TESTER STREQUAL "gmldiff") elseif(AddTest_TESTER STREQUAL "gmldiff")
list(LENGTH AddTest_DIFF_DATA DiffDataLength) list(LENGTH AddTest_DIFF_DATA DiffDataLength)
...@@ -269,18 +347,23 @@ Use six arguments version of AddTest with absolute and relative tolerances") ...@@ -269,18 +347,23 @@ Use six arguments version of AddTest with absolute and relative tolerances")
else() else()
set(PY_EXE ${Python3_EXECUTABLE}) set(PY_EXE ${Python3_EXECUTABLE})
endif() endif()
list(APPEND TESTER_COMMAND list(
APPEND
TESTER_COMMAND
"${PY_EXE} ${PROJECT_SOURCE_DIR}/scripts/test/gmldiff.py \ "${PY_EXE} ${PROJECT_SOURCE_DIR}/scripts/test/gmldiff.py \
--abs ${ABS_TOL} --rel ${REL_TOL} \ --abs ${ABS_TOL} --rel ${REL_TOL} \
${TESTER_ARGS} \ ${TESTER_ARGS} \
${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \ ${AddTest_SOURCE_PATH}/${FILE_EXPECTED} \
${AddTest_BINARY_PATH}/${GML_FILE}") ${AddTest_BINARY_PATH}/${GML_FILE}"
)
endforeach() endforeach()
elseif(AddTest_TESTER STREQUAL "memcheck") elseif(AddTest_TESTER STREQUAL "memcheck")
set(TESTER_COMMAND "! ${GREP_TOOL_PATH} definitely ${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log") set(TESTER_COMMAND
"! ${GREP_TOOL_PATH} definitely ${AddTest_SOURCE_PATH}/${AddTest_NAME}_memcheck.log"
)
endif() endif()
## ----------- # -----------
if(TARGET ${AddTest_EXECUTABLE}) if(TARGET ${AddTest_EXECUTABLE})
set(AddTest_EXECUTABLE_PARSED $<TARGET_FILE:${AddTest_EXECUTABLE}>) set(AddTest_EXECUTABLE_PARSED $<TARGET_FILE:${AddTest_EXECUTABLE}>)
else() else()
...@@ -299,32 +382,36 @@ Use six arguments version of AddTest with absolute and relative tolerances") ...@@ -299,32 +382,36 @@ Use six arguments version of AddTest with absolute and relative tolerances")
if(DEFINED AddTest_WRAPPER) if(DEFINED AddTest_WRAPPER)
set(AddTest_WRAPPER_STRING "-${AddTest_WRAPPER}") set(AddTest_WRAPPER_STRING "-${AddTest_WRAPPER}")
endif() endif()
set(TEST_NAME "${AddTest_EXECUTABLE}-${AddTest_NAME}${AddTest_WRAPPER_STRING}") set(TEST_NAME
"${AddTest_EXECUTABLE}-${AddTest_NAME}${AddTest_WRAPPER_STRING}"
)
add_test( add_test(
NAME ${TEST_NAME} NAME ${TEST_NAME}
COMMAND ${CMAKE_COMMAND} COMMAND
-DEXECUTABLE=${AddTest_EXECUTABLE_PARSED} ${CMAKE_COMMAND} -DEXECUTABLE=${AddTest_EXECUTABLE_PARSED}
"-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" # Quoted because passed as list "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" # Quoted because
# see https://stackoverflow.com/a/33248574/80480 # passed as list see
-DBINARY_PATH=${AddTest_BINARY_PATH} # https://stackoverflow.com/a/33248574/80480
-DWRAPPER_COMMAND=${WRAPPER_COMMAND} -DBINARY_PATH=${AddTest_BINARY_PATH}
"-DWRAPPER_ARGS=${AddTest_WRAPPER_ARGS}" -DWRAPPER_COMMAND=${WRAPPER_COMMAND}
"-DFILES_TO_DELETE=${FILES_TO_DELETE}" "-DWRAPPER_ARGS=${AddTest_WRAPPER_ARGS}"
-DWORKING_DIRECTORY=${AddTest_WORKING_DIRECTORY} "-DFILES_TO_DELETE=${FILES_TO_DELETE}"
-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake -DWORKING_DIRECTORY=${AddTest_WORKING_DIRECTORY} -P
${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake
) )
if(DEFINED AddTest_DEPENDS) if(DEFINED AddTest_DEPENDS)
set_tests_properties(${TEST_NAME} PROPERTIES DEPENDS ${AddTest_DEPENDS}) set_tests_properties(${TEST_NAME} PROPERTIES DEPENDS ${AddTest_DEPENDS})
endif() endif()
if(DEFINED MPI_PROCESSORS) if(DEFINED MPI_PROCESSORS)
set_tests_properties(${TEST_NAME} PROPERTIES PROCESSORS ${MPI_PROCESSORS}) set_tests_properties(
${TEST_NAME} PROPERTIES PROCESSORS ${MPI_PROCESSORS}
)
endif() endif()
current_dir_as_list(ProcessLib DIR_LABELS) current_dir_as_list(ProcessLib DIR_LABELS)
set_tests_properties(${TEST_NAME} PROPERTIES set_tests_properties(
COST ${AddTest_RUNTIME} ${TEST_NAME} PROPERTIES COST ${AddTest_RUNTIME} DISABLED
DISABLED ${AddTest_DISABLED} ${AddTest_DISABLED} LABELS "${DIR_LABELS}"
LABELS "${DIR_LABELS}"
) )
add_dependencies(ctest ${AddTest_EXECUTABLE}) add_dependencies(ctest ${AddTest_EXECUTABLE})
...@@ -332,20 +419,25 @@ Use six arguments version of AddTest with absolute and relative tolerances") ...@@ -332,20 +419,25 @@ Use six arguments version of AddTest with absolute and relative tolerances")
if(AddTest_PYTHON_PACKAGES) if(AddTest_PYTHON_PACKAGES)
if(POETRY) if(POETRY)
file(WRITE ${PROJECT_BINARY_DIR}/tmp_poetry_add.bat "poetry add ${AddTest_PYTHON_PACKAGES}") file(WRITE ${PROJECT_BINARY_DIR}/tmp_poetry_add.bat
"poetry add ${AddTest_PYTHON_PACKAGES}"
)
if(WIN32) if(WIN32)
set(EXEC_CMD tmp_poetry_add.bat) set(EXEC_CMD tmp_poetry_add.bat)
else() else()
set(EXEC_CMD ${BASH_TOOL_PATH} tmp_poetry_add.bat) set(EXEC_CMD ${BASH_TOOL_PATH} tmp_poetry_add.bat)
endif() endif()
execute_process( execute_process(
COMMAND ${EXEC_CMD} COMMAND ${EXEC_CMD} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) )
else() else()
message(STATUS "Warning: Benchmark ${AddTest_NAME} requires these " message(
"Python packages: ${AddTest_PYTHON_PACKAGES}!\n Make sure to " STATUS
"have them installed in your current Python environment OR " "Warning: Benchmark ${AddTest_NAME} requires these "
"install the Poetry package manager for Python!") "Python packages: ${AddTest_PYTHON_PACKAGES}!\n Make sure to "
"have them installed in your current Python environment OR "
"install the Poetry package manager for Python!"
)
endif() endif()
endif() endif()
...@@ -357,23 +449,22 @@ Use six arguments version of AddTest with absolute and relative tolerances") ...@@ -357,23 +449,22 @@ Use six arguments version of AddTest with absolute and relative tolerances")
set(TESTER_NAME "${TEST_NAME}-${AddTest_TESTER}") set(TESTER_NAME "${TEST_NAME}-${AddTest_TESTER}")
add_test( add_test(
NAME ${TESTER_NAME} NAME ${TESTER_NAME}
COMMAND ${CMAKE_COMMAND} COMMAND
-DSOURCE_PATH=${AddTest_SOURCE_PATH} ${CMAKE_COMMAND} -DSOURCE_PATH=${AddTest_SOURCE_PATH}
-DBINARY_PATH=${${AddTest_BINARY_PATH}} -DBINARY_PATH=${${AddTest_BINARY_PATH}}
-DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH} -DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH}
"-DTESTER_COMMAND=${TESTER_COMMAND}" "-DTESTER_COMMAND=${TESTER_COMMAND}"
-DVTKJS_CONVERTER=${VTKJS_CONVERTER} -DVTKJS_CONVERTER=${VTKJS_CONVERTER}
-DBINARY_PATH=${AddTest_BINARY_PATH} -DBINARY_PATH=${AddTest_BINARY_PATH}
-DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${AddTest_PATH} -DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${AddTest_PATH}
"-DVIS_FILES=${AddTest_VIS}" "-DVIS_FILES=${AddTest_VIS}" -DGLOB_MODE=${GLOB_MODE} -P
-DGLOB_MODE=${GLOB_MODE} ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake
-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake --debug-output
--debug-output
WORKING_DIRECTORY ${AddTest_SOURCE_PATH} WORKING_DIRECTORY ${AddTest_SOURCE_PATH}
) )
set_tests_properties(${TESTER_NAME} PROPERTIES set_tests_properties(
DEPENDS ${TEST_NAME} ${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME} DISABLED
DISABLED ${AddTest_DISABLED} ${AddTest_DISABLED}
) )
endfunction() endfunction()
...@@ -3,7 +3,8 @@ if(VIS_FILES AND VTKJS_CONVERTER) ...@@ -3,7 +3,8 @@ if(VIS_FILES AND VTKJS_CONVERTER)
execute_process(COMMAND cmake -E make_directory ${VTKJS_OUTPUT_PATH}) execute_process(COMMAND cmake -E make_directory ${VTKJS_OUTPUT_PATH})
foreach(file ${VIS_FILES}) foreach(file ${VIS_FILES})
execute_process( execute_process(
COMMAND ${VTKJS_CONVERTER} -e -i ${BINARY_PATH}/${file} -o ${VTKJS_OUTPUT_PATH} COMMAND ${VTKJS_CONVERTER} -e -i ${BINARY_PATH}/${file} -o
${VTKJS_OUTPUT_PATH}
) )
endforeach() endforeach()
endif() endif()
...@@ -27,10 +28,14 @@ foreach(cmd ${TESTER_COMMAND}) ...@@ -27,10 +28,14 @@ foreach(cmd ${TESTER_COMMAND})
list(GET cmd 4 REL_TOL) list(GET cmd 4 REL_TOL)
file(GLOB FILES RELATIVE ${SOURCE_PATH} ${GLOB}) file(GLOB FILES RELATIVE ${SOURCE_PATH} ${GLOB})
list(LENGTH FILES LENGTH) list(LENGTH FILES LENGTH)
message(STATUS "Glob expression '${GLOB}' (${NAME_A}) found ${LENGTH} files.") message(
STATUS
"Glob expression '${GLOB}' (${NAME_A}) found ${LENGTH} files."
)
if(${LENGTH} EQUAL 0) if(${LENGTH} EQUAL 0)
message(FATAL_ERROR "DIFF_DATA glob expression '${GLOB}' " message(FATAL_ERROR "DIFF_DATA glob expression '${GLOB}' "
"did not match any files!") "did not match any files!"
)
endif() endif()
foreach(file ${FILES}) foreach(file ${FILES})
if("$ENV{HOSTNAME}" MATCHES "frontend.*") if("$ENV{HOSTNAME}" MATCHES "frontend.*")
...@@ -40,7 +45,10 @@ foreach(cmd ${TESTER_COMMAND}) ...@@ -40,7 +45,10 @@ foreach(cmd ${TESTER_COMMAND})
string(REPLACE "gpfs0" "../.." file ${file}) string(REPLACE "gpfs0" "../.." file ${file})
endif() endif()
execute_process( execute_process(
COMMAND ${SELECTED_DIFF_TOOL_PATH} ${SOURCE_PATH}/${file} ${BINARY_PATH}/${file} -a ${NAME_A} -b ${NAME_B} --abs ${ABS_TOL} --rel ${REL_TOL} COMMAND
${SELECTED_DIFF_TOOL_PATH} ${SOURCE_PATH}/${file}
${BINARY_PATH}/${file} -a ${NAME_A} -b ${NAME_B} --abs
${ABS_TOL} --rel ${REL_TOL}
WORKING_DIRECTORY ${SOURCE_PATH} WORKING_DIRECTORY ${SOURCE_PATH}
RESULT_VARIABLE EXIT_CODE RESULT_VARIABLE EXIT_CODE
OUTPUT_VARIABLE OUTPUT OUTPUT_VARIABLE OUTPUT
...@@ -66,8 +74,6 @@ foreach(cmd ${TESTER_COMMAND}) ...@@ -66,8 +74,6 @@ foreach(cmd ${TESTER_COMMAND})
endif() endif()
endif() endif()
endforeach() endforeach()
if (TEST_FAILED) if(TEST_FAILED)
message(FATAL_ERROR "One of the tests failed.") message(FATAL_ERROR "One of the tests failed.")
endif() endif()
# IMPORTANT: multiple arguments in one variables have to be in list notation (;) # IMPORTANT: multiple arguments in one variables have to be in list notation (;)
# and have to be quoted when passed "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}" # and have to be quoted when passed
# "-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}"
foreach(file ${FILES_TO_DELETE}) foreach(file ${FILES_TO_DELETE})
file(REMOVE ${BINARY_PATH}/${file}) file(REMOVE ${BINARY_PATH}/${file})
endforeach() endforeach()
string(REPLACE ";" " " CMD_STRING "cd ${WORKING_DIRECTORY} && ${WRAPPER_COMMAND} " string(REPLACE ";" " " CMD_STRING
"${WRAPPER_ARGS} ${EXECUTABLE} ${EXECUTABLE_ARGS}") "cd ${WORKING_DIRECTORY} && ${WRAPPER_COMMAND} "
"${WRAPPER_ARGS} ${EXECUTABLE} ${EXECUTABLE_ARGS}"
)
message(STATUS "Test command cleaned:\n${CMD_STRING}") message(STATUS "Test command cleaned:\n${CMD_STRING}")
execute_process( execute_process(
...@@ -17,5 +20,7 @@ execute_process( ...@@ -17,5 +20,7 @@ execute_process(
) )
if(NOT EXIT_CODE STREQUAL "0") if(NOT EXIT_CODE STREQUAL "0")
message(FATAL_ERROR "Test wrapper exited with code: ${EXIT_CODE}\n${OUTPUT}") message(
FATAL_ERROR "Test wrapper exited with code: ${EXIT_CODE}\n${OUTPUT}"
)
endif() endif()
file (STRINGS "@PROJECT_BINARY_DIR@/CTestTestfile.cmake" LINES) file(STRINGS "@PROJECT_BINARY_DIR@/CTestTestfile.cmake" LINES)
# overwrite the file.... # overwrite the file....
file(WRITE "@PROJECT_BINARY_DIR@/CTestTestfile.cmake" "") file(WRITE "@PROJECT_BINARY_DIR@/CTestTestfile.cmake" "")
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
# ) # )
# ~~~ # ~~~
# cmake-lint: disable=C0103,R0912,R0915 # cmake-lint: disable=C0103,R0912,R0915
function (MeshTest) function(MeshTest)
if(NOT OGS_BUILD_TESTING) if(NOT OGS_BUILD_TESTING)
return() return()
endif() endif()
...@@ -26,19 +26,23 @@ function (MeshTest) ...@@ -26,19 +26,23 @@ function (MeshTest)
set(options NONE) set(options NONE)
set(oneValueArgs EXECUTABLE PATH NAME WRAPPER RUNTIME WORKING_DIRECTORY) set(oneValueArgs EXECUTABLE PATH NAME WRAPPER RUNTIME WORKING_DIRECTORY)
set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS REQUIREMENTS) set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS REQUIREMENTS)
cmake_parse_arguments(MeshTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) cmake_parse_arguments(
MeshTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}
)
set(MeshTest_SOURCE_PATH "${Data_SOURCE_DIR}/${MeshTest_PATH}") set(MeshTest_SOURCE_PATH "${Data_SOURCE_DIR}/${MeshTest_PATH}")
set(MeshTest_BINARY_PATH "${Data_BINARY_DIR}/${MeshTest_PATH}") set(MeshTest_BINARY_PATH "${Data_BINARY_DIR}/${MeshTest_PATH}")
file(MAKE_DIRECTORY ${MeshTest_BINARY_PATH}) file(MAKE_DIRECTORY ${MeshTest_BINARY_PATH})
file(TO_NATIVE_PATH "${MeshTest_BINARY_PATH}" MeshTest_BINARY_PATH_NATIVE) file(TO_NATIVE_PATH "${MeshTest_BINARY_PATH}" MeshTest_BINARY_PATH_NATIVE)
set(MeshTest_STDOUT_FILE_PATH "${MeshTest_BINARY_PATH}/${MeshTest_NAME}_stdout.log") set(MeshTest_STDOUT_FILE_PATH
"${MeshTest_BINARY_PATH}/${MeshTest_NAME}_stdout.log"
)
# set defaults # set defaults
if (NOT DEFINED MeshTest_REQUIREMENTS) if(NOT DEFINED MeshTest_REQUIREMENTS)
set(MeshTest_REQUIREMENTS TRUE) set(MeshTest_REQUIREMENTS TRUE)
endif() endif()
if (NOT DEFINED MeshTest_RUNTIME) if(NOT DEFINED MeshTest_RUNTIME)
set(MeshTest_RUNTIME 1) set(MeshTest_RUNTIME 1)
endif() endif()
if(NOT DEFINED MeshTest_WORKING_DIRECTORY) if(NOT DEFINED MeshTest_WORKING_DIRECTORY)
...@@ -50,7 +54,10 @@ function (MeshTest) ...@@ -50,7 +54,10 @@ function (MeshTest)
if(${MeshTest_REQUIREMENTS}) if(${MeshTest_REQUIREMENTS})
# message(STATUS "Enabling test ${MeshTest_NAME}.") # message(STATUS "Enabling test ${MeshTest_NAME}.")
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nRequirement ${MeshTest_REQUIREMENTS} not met! Disabling test ${MeshTest_NAME}." CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nRequirement ${MeshTest_REQUIREMENTS} not met! Disabling test ${MeshTest_NAME}."
CACHE INTERNAL ""
)
return() return()
endif() endif()
...@@ -58,49 +65,70 @@ function (MeshTest) ...@@ -58,49 +65,70 @@ function (MeshTest)
if(TIME_TOOL_PATH) if(TIME_TOOL_PATH)
set(WRAPPER_COMMAND time) set(WRAPPER_COMMAND time)
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${MeshTest_NAME} as time exe was not found!" CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nDisabling time wrapper for ${MeshTest_NAME} as time exe was not found!"
CACHE INTERNAL ""
)
set(MeshTest_WRAPPER_ARGS "") set(MeshTest_WRAPPER_ARGS "")
endif() endif()
elseif(MeshTest_WRAPPER STREQUAL "memcheck") elseif(MeshTest_WRAPPER STREQUAL "memcheck")
if(VALGRIND_TOOL_PATH) if(VALGRIND_TOOL_PATH)
set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${MeshTest_SOURCE_PATH}/${MeshTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff") set(WRAPPER_COMMAND
"${VALGRIND_TOOL_PATH} --tool=memcheck --log-file=${MeshTest_SOURCE_PATH}/${MeshTest_NAME}_memcheck.log -v --leak-check=full --show-reachable=yes --track-origins=yes --malloc-fill=0xff --free-fill=0xff"
)
set(tester memcheck) set(tester memcheck)
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${MeshTest_NAME} as memcheck exe was not found!" CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nDisabling memcheck wrapper for ${MeshTest_NAME} as memcheck exe was not found!"
CACHE INTERNAL ""
)
set(MeshTest_WRAPPER_ARGS "") set(MeshTest_WRAPPER_ARGS "")
endif() endif()
elseif(MeshTest_WRAPPER STREQUAL "callgrind") elseif(MeshTest_WRAPPER STREQUAL "callgrind")
if(VALGRIND_TOOL_PATH) if(VALGRIND_TOOL_PATH)
set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes") set(WRAPPER_COMMAND
"${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes"
)
unset(tester) unset(tester)
else() else()
set(DISABLED_TESTS_LOG "${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${MeshTest_NAME} as callgrind exe was not found!" CACHE INTERNAL "") set(DISABLED_TESTS_LOG
"${DISABLED_TESTS_LOG}\nDisabling callgrind wrapper for ${MeshTest_NAME} as callgrind exe was not found!"
CACHE INTERNAL ""
)
set(MeshTest_WRAPPER_ARGS "") set(MeshTest_WRAPPER_ARGS "")
endif() endif()
elseif(MeshTest_WRAPPER STREQUAL "mpirun") elseif(MeshTest_WRAPPER STREQUAL "mpirun")
if(MPIRUN_TOOL_PATH) if(MPIRUN_TOOL_PATH)
set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH}) set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH})
else() else()
message(STATUS "ERROR: mpirun was not found but is required for ${MeshTest_NAME}!") message(
STATUS
"ERROR: mpirun was not found but is required for ${MeshTest_NAME}!"
)
return() return()
endif() endif()
endif() endif()
# --- Implement testers --- # --- Implement testers ---
if(NOT MeshTest_DIFF_DATA) if(NOT MeshTest_DIFF_DATA)
message(FATAL_ERROR "MeshTest(): ${MeshTest_NAME} - no DIFF_DATA given!") message(
FATAL_ERROR "MeshTest(): ${MeshTest_NAME} - no DIFF_DATA given!"
)
endif() endif()
string(LENGTH "${MeshTest_DIFF_DATA}" DIFF_DATA_LENGTH) string(LENGTH "${MeshTest_DIFF_DATA}" DIFF_DATA_LENGTH)
if(${DIFF_DATA_LENGTH} GREATER 7500) if(${DIFF_DATA_LENGTH} GREATER 7500)
message(FATAL_ERROR "${MeshTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO") message(
FATAL_ERROR
"${MeshTest_NAME}: DIFF_DATA to long! Consider using regex-syntax: TODO"
)
endif() endif()
set(SELECTED_DIFF_TOOL_PATH $<TARGET_FILE:vtkdiff>) set(SELECTED_DIFF_TOOL_PATH $<TARGET_FILE:vtkdiff>)
list(LENGTH MeshTest_DIFF_DATA DiffDataLength) list(LENGTH MeshTest_DIFF_DATA DiffDataLength)
math(EXPR DiffDataLengthMod3 "${DiffDataLength} % 3") math(EXPR DiffDataLengthMod3 "${DiffDataLength} % 3")
if (${DiffDataLengthMod3} EQUAL 0) if(${DiffDataLengthMod3} EQUAL 0)
math(EXPR DiffDataLastIndex "${DiffDataLength}-1") math(EXPR DiffDataLastIndex "${DiffDataLength}-1")
foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 4) foreach(DiffDataIndex RANGE 0 ${DiffDataLastIndex} 4)
list(GET MeshTest_DIFF_DATA "${DiffDataIndex}" REFERENCE_VTK_FILE) list(GET MeshTest_DIFF_DATA "${DiffDataIndex}" REFERENCE_VTK_FILE)
...@@ -109,17 +137,22 @@ function (MeshTest) ...@@ -109,17 +137,22 @@ function (MeshTest)
math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2") math(EXPR DiffDataAuxIndex "${DiffDataIndex}+2")
list(GET MeshTest_DIFF_DATA "${DiffDataAuxIndex}" ABS_TOLERANCE) list(GET MeshTest_DIFF_DATA "${DiffDataAuxIndex}" ABS_TOLERANCE)
list(APPEND TESTER_COMMAND "${SELECTED_DIFF_TOOL_PATH} -m \ list(
APPEND
TESTER_COMMAND
"${SELECTED_DIFF_TOOL_PATH} -m \
${MeshTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \ ${MeshTest_SOURCE_PATH}/${REFERENCE_VTK_FILE} \
${MeshTest_BINARY_PATH}/${VTK_FILE} \ ${MeshTest_BINARY_PATH}/${VTK_FILE} \
--abs ${ABS_TOLERANCE}") --abs ${ABS_TOLERANCE}"
)
endforeach() endforeach()
else () else()
message(FATAL_ERROR "The number of diff data arguments must be a message(FATAL_ERROR "The number of diff data arguments must be a
multiple of three: expected.vtu output.vtu absolute_tolerance.") multiple of three: expected.vtu output.vtu absolute_tolerance."
)
endif() endif()
## ----------- # -----------
if(TARGET ${MeshTest_EXECUTABLE}) if(TARGET ${MeshTest_EXECUTABLE})
set(MeshTest_EXECUTABLE_PARSED $<TARGET_FILE:${MeshTest_EXECUTABLE}>) set(MeshTest_EXECUTABLE_PARSED $<TARGET_FILE:${MeshTest_EXECUTABLE}>)
else() else()
...@@ -138,20 +171,23 @@ function (MeshTest) ...@@ -138,20 +171,23 @@ function (MeshTest)
if(DEFINED MeshTest_WRAPPER) if(DEFINED MeshTest_WRAPPER)
set(MeshTest_WRAPPER_STRING "-${MeshTest_WRAPPER}") set(MeshTest_WRAPPER_STRING "-${MeshTest_WRAPPER}")
endif() endif()
set(TEST_NAME "${MeshTest_EXECUTABLE}-${MeshTest_NAME}${MeshTest_WRAPPER_STRING}") set(TEST_NAME
"${MeshTest_EXECUTABLE}-${MeshTest_NAME}${MeshTest_WRAPPER_STRING}"
)
add_test( add_test(
NAME ${TEST_NAME} NAME ${TEST_NAME}
COMMAND ${CMAKE_COMMAND} COMMAND
-DEXECUTABLE=${MeshTest_EXECUTABLE_PARSED} ${CMAKE_COMMAND} -DEXECUTABLE=${MeshTest_EXECUTABLE_PARSED}
"-DEXECUTABLE_ARGS=${MeshTest_EXECUTABLE_ARGS}" # Quoted because passed as list "-DEXECUTABLE_ARGS=${MeshTest_EXECUTABLE_ARGS}" # Quoted because
# see https://stackoverflow.com/a/33248574/80480 # passed as list see
-DBINARY_PATH=${MeshTest_BINARY_PATH} # https://stackoverflow.com/a/33248574/80480
-DWRAPPER_COMMAND=${WRAPPER_COMMAND} -DBINARY_PATH=${MeshTest_BINARY_PATH}
"-DWRAPPER_ARGS=${MeshTest_WRAPPER_ARGS}" -DWRAPPER_COMMAND=${WRAPPER_COMMAND}
"-DFILES_TO_DELETE=${FILES_TO_DELETE}" "-DWRAPPER_ARGS=${MeshTest_WRAPPER_ARGS}"
-DSTDOUT_FILE_PATH=${MeshTest_STDOUT_FILE_PATH} "-DFILES_TO_DELETE=${FILES_TO_DELETE}"
-DWORKING_DIRECTORY=${MeshTest_WORKING_DIRECTORY} -DSTDOUT_FILE_PATH=${MeshTest_STDOUT_FILE_PATH}
-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake -DWORKING_DIRECTORY=${MeshTest_WORKING_DIRECTORY} -P
${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake
) )
set_tests_properties(${TEST_NAME} PROPERTIES COST ${MeshTest_RUNTIME}) set_tests_properties(${TEST_NAME} PROPERTIES COST ${MeshTest_RUNTIME})
...@@ -165,18 +201,17 @@ function (MeshTest) ...@@ -165,18 +201,17 @@ function (MeshTest)
set(TESTER_NAME "${TEST_NAME}-${MeshTest_TESTER}") set(TESTER_NAME "${TEST_NAME}-${MeshTest_TESTER}")
add_test( add_test(
NAME ${TESTER_NAME} NAME ${TESTER_NAME}
COMMAND ${CMAKE_COMMAND} COMMAND
-DSOURCE_PATH=${MeshTest_SOURCE_PATH} ${CMAKE_COMMAND} -DSOURCE_PATH=${MeshTest_SOURCE_PATH}
-DBINARY_PATH=${${MeshTest_BINARY_PATH}} -DBINARY_PATH=${${MeshTest_BINARY_PATH}}
-DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH} -DSELECTED_DIFF_TOOL_PATH=${SELECTED_DIFF_TOOL_PATH}
"-DTESTER_COMMAND=${TESTER_COMMAND}" "-DTESTER_COMMAND=${TESTER_COMMAND}"
-DVTKJS_CONVERTER=${VTKJS_CONVERTER} -DVTKJS_CONVERTER=${VTKJS_CONVERTER}
-DBINARY_PATH=${MeshTest_BINARY_PATH} -DBINARY_PATH=${MeshTest_BINARY_PATH}
-DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${MeshTest_PATH} -DVTKJS_OUTPUT_PATH=${PROJECT_SOURCE_DIR}/web/static/vis/${MeshTest_PATH}
"-DVIS_FILES=${MeshTest_VIS}" "-DVIS_FILES=${MeshTest_VIS}" -DGLOB_MODE=${GLOB_MODE} -P
-DGLOB_MODE=${GLOB_MODE} ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake
-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestTester.cmake --debug-output
--debug-output
WORKING_DIRECTORY ${MeshTest_SOURCE_PATH} WORKING_DIRECTORY ${MeshTest_SOURCE_PATH}
) )
set_tests_properties(${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME}) set_tests_properties(${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME})
......
# cmake-lint: disable=C0103 # cmake-lint: disable=C0103
function (OgsTest) function(OgsTest)
if(NOT OGS_BUILD_CLI OR NOT OGS_BUILD_TESTING) if(NOT OGS_BUILD_CLI OR NOT OGS_BUILD_TESTING)
return() return()
...@@ -7,18 +7,22 @@ function (OgsTest) ...@@ -7,18 +7,22 @@ function (OgsTest)
set(options DISABLED) set(options DISABLED)
set(oneValueArgs PROJECTFILE RUNTIME) set(oneValueArgs PROJECTFILE RUNTIME)
set(multiValueArgs WRAPPER) set(multiValueArgs WRAPPER)
cmake_parse_arguments(OgsTest "${options}" "${oneValueArgs}" cmake_parse_arguments(
"${multiValueArgs}" ${ARGN}) OgsTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}
)
get_filename_component(OgsTest_DIR "${OgsTest_PROJECTFILE}" DIRECTORY) get_filename_component(OgsTest_DIR "${OgsTest_PROJECTFILE}" DIRECTORY)
get_filename_component(OgsTest_NAME "${OgsTest_PROJECTFILE}" NAME) get_filename_component(OgsTest_NAME "${OgsTest_PROJECTFILE}" NAME)
get_filename_component(OgsTest_NAME_WE "${OgsTest_PROJECTFILE}" NAME_WE) get_filename_component(OgsTest_NAME_WE "${OgsTest_PROJECTFILE}" NAME_WE)
if (OgsTest_UNPARSED_ARGUMENTS) if(OgsTest_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unparsed argument(s) '${OgsTest_UNPARSED_ARGUMENTS}' to OgsTest call.") message(
FATAL_ERROR
"Unparsed argument(s) '${OgsTest_UNPARSED_ARGUMENTS}' to OgsTest call."
)
endif() endif()
if (NOT DEFINED OgsTest_RUNTIME) if(NOT DEFINED OgsTest_RUNTIME)
set(OgsTest_RUNTIME 1) set(OgsTest_RUNTIME 1)
endif() endif()
...@@ -38,28 +42,33 @@ function (OgsTest) ...@@ -38,28 +42,33 @@ function (OgsTest)
set(TEST_NAME "ogs-${OgsTest_DIR}/${OgsTest_NAME_WE}") set(TEST_NAME "ogs-${OgsTest_DIR}/${OgsTest_NAME_WE}")
# Add wrapper postfix (-mpi for mpirun). # Add wrapper postfix (-mpi for mpirun).
if (OgsTest_WRAPPER) if(OgsTest_WRAPPER)
string(REGEX MATCH "^[^ ]+" WRAPPER ${OgsTest_WRAPPER}) string(REGEX MATCH "^[^ ]+" WRAPPER ${OgsTest_WRAPPER})
if (WRAPPER STREQUAL "mpirun") if(WRAPPER STREQUAL "mpirun")
set(TEST_NAME "${TEST_NAME}-mpi") set(TEST_NAME "${TEST_NAME}-mpi")
endif() endif()
endif() endif()
add_test( add_test(
NAME ${TEST_NAME} NAME ${TEST_NAME} WORKING_DIRECTORY "${OgsTest_BINARY_DIR}"
WORKING_DIRECTORY "${OgsTest_BINARY_DIR}" COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR}
COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} ${OgsTest_SOURCE_DIR}/${OgsTest_NAME}) ${OgsTest_SOURCE_DIR}/${OgsTest_NAME}
# For debugging: )
#message("Adding test with # For debugging: message("Adding test with NAME ${TEST_NAME}
# NAME ${TEST_NAME} # WORKING_DIRECTORY ${OgsTest_BINARY_DIR} COMMAND ${OgsTest_WRAPPER}
# WORKING_DIRECTORY ${OgsTest_BINARY_DIR} # $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR}
# COMMAND ${OgsTest_WRAPPER} $<TARGET_FILE:ogs> -r ${OgsTest_SOURCE_DIR} ${OgsTest_SOURCE_DIR}/${OgsTest_NAME}) # ${OgsTest_SOURCE_DIR}/${OgsTest_NAME})
current_dir_as_list(ProcessLib DIR_LABELS) current_dir_as_list(ProcessLib DIR_LABELS)
set_tests_properties(${TEST_NAME} PROPERTIES set_tests_properties(
ENVIRONMENT VTKDIFF_EXE=$<TARGET_FILE:vtkdiff> ${TEST_NAME}
COST ${OgsTest_RUNTIME} PROPERTIES ENVIRONMENT
DISABLED ${OgsTest_DISABLED} VTKDIFF_EXE=$<TARGET_FILE:vtkdiff>
LABELS "${DIR_LABELS}" COST
${OgsTest_RUNTIME}
DISABLED
${OgsTest_DISABLED}
LABELS
"${DIR_LABELS}"
) )
endfunction() endfunction()
...@@ -7,22 +7,40 @@ find_program(VALGRIND_TOOL_PATH valgrind) ...@@ -7,22 +7,40 @@ find_program(VALGRIND_TOOL_PATH valgrind)
find_program(MPIRUN_TOOL_PATH mpirun) find_program(MPIRUN_TOOL_PATH mpirun)
if(NOT TIME_TOOL_PATH) if(NOT TIME_TOOL_PATH)
message(STATUS "time-command is required for time wrapper but was not found! All corresponding tests are disabled.") message(
STATUS
"time-command is required for time wrapper but was not found! All corresponding tests are disabled."
)
endif() endif()
if(NOT VALGRIND_TOOL_PATH) if(NOT VALGRIND_TOOL_PATH)
message(STATUS "Valgrind is required for memcheck wrapper but was not found! All corresponding tests are disabled.") message(
STATUS
"Valgrind is required for memcheck wrapper but was not found! All corresponding tests are disabled."
)
endif() endif()
if(NOT VALGRIND_TOOL_PATH) if(NOT VALGRIND_TOOL_PATH)
message(STATUS "Valgrind is required for callgrind wrapper but was not found! All corresponding tests are disabled.") message(
STATUS
"Valgrind is required for callgrind wrapper but was not found! All corresponding tests are disabled."
)
endif() endif()
if(NOT MPIRUN_TOOL_PATH) if(NOT MPIRUN_TOOL_PATH)
message(STATUS "mpirun is required for mpirun wrapper but was not found! All corresponding tests are disabled.") message(
STATUS
"mpirun is required for mpirun wrapper but was not found! All corresponding tests are disabled."
)
endif() endif()
if(NOT DIFF_TOOL_PATH) if(NOT DIFF_TOOL_PATH)
message(STATUS "diff-command is required for diff tester but was not found! All corresponding tests are disabled.") message(
STATUS
"diff-command is required for diff tester but was not found! All corresponding tests are disabled."
)
endif() endif()
if(NOT GREP_TOOL_PATH) if(NOT GREP_TOOL_PATH)
message(STATUS "grep-command is required for memcheck tester but was not found! All corresponding tests are disabled.") message(
STATUS
"grep-command is required for memcheck tester but was not found! All corresponding tests are disabled."
)
endif() endif()
enable_testing() # Enable CTest enable_testing() # Enable CTest
...@@ -37,42 +55,43 @@ endif() ...@@ -37,42 +55,43 @@ endif()
add_custom_target(ctest-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest.log) add_custom_target(ctest-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest.log)
if(OGS_BUILD_UTILS) if(OGS_BUILD_UTILS)
list(APPEND test_dependencies list(APPEND test_dependencies generateStructuredMesh)
generateStructuredMesh
)
endif() endif()
add_custom_target( add_custom_target(
ctest ctest
COMMAND ${CMAKE_CTEST_COMMAND} -T Test COMMAND
--force-new-ctest-process ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process
--output-on-failure --output-log Tests/ctest.log --output-on-failure --output-log Tests/ctest.log --exclude-regex LARGE
--exclude-regex LARGE ${CONFIG_PARAMETER} --timeout 900 # 15 minutes
${CONFIG_PARAMETER}
--timeout 900 # 15 minutes
DEPENDS ${test_dependencies} ctest-cleanup DEPENDS ${test_dependencies} ctest-cleanup
USES_TERMINAL USES_TERMINAL
) )
add_custom_target(ctest-large-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest-large.log) add_custom_target(
ctest-large-cleanup ${CMAKE_COMMAND} -E remove -f Tests/ctest-large.log
)
add_custom_target( add_custom_target(
ctest-large ctest-large
COMMAND ${CMAKE_CTEST_COMMAND} -T Test COMMAND
--force-new-ctest-process ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process
--output-on-failure --output-log Tests/ctest-large.log --output-on-failure --output-log Tests/ctest-large.log --tests-regex
--tests-regex LARGE LARGE ${CONFIG_PARAMETER} --timeout 5400 # 90 minutes
${CONFIG_PARAMETER}
--timeout 5400 # 90 minutes
DEPENDS ${test_dependencies} ctest-large-cleanup DEPENDS ${test_dependencies} ctest-large-cleanup
USES_TERMINAL USES_TERMINAL
) )
set_directory_properties(PROPERTIES set_directory_properties(
ADDITIONAL_MAKE_CLEAN_FILES ${PROJECT_BINARY_DIR}/Tests/Data PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${PROJECT_BINARY_DIR}/Tests/Data
) )
set_target_properties(ctest ctest-large ctest-cleanup ctest-large-cleanup set_target_properties(
PROPERTIES FOLDER Testing) ctest ctest-large ctest-cleanup ctest-large-cleanup PROPERTIES FOLDER
Testing
)
configure_file(${PROJECT_SOURCE_DIR}/scripts/test/buildinfo.in.yaml ${PROJECT_BINARY_DIR}/buildinfo.yaml) configure_file(
${PROJECT_SOURCE_DIR}/scripts/test/buildinfo.in.yaml
${PROJECT_BINARY_DIR}/buildinfo.yaml
)
#!/usr/bin/env bash
EXE=$(command -v cmake-format)
if [ -z "$EXE" ]; then
echo "cmake-format not found; skipping check."
exit 0
fi
MOD_FILES=""
MOD_FILES=()
for FILE in "$@"
do
cmake-format -i "$FILE"
MODIFIED=$(git status --porcelain "$FILE" | head -c 2 | tail -c 1)
# echo $FILE: $MODIFIED
if [ "$MODIFIED" = "M" ]; then
MOD_FILES+=("$FILE")
echo "Fixed $FILE"
fi
done
if [ -z "$MOD_FILES" ]; then
exit 0
fi
echo "CMake files have been modified."
echo "Add them to the commit!"
exit 1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment