CMAKE_MINIMUM_REQUIRED(VERSION 3.10) PROJECT(ElmerTests Fortran C) #ADD_EXECUTABLE(findnorm findnorm_cmake.c) SET(ELMERGRID_BIN "${CMAKE_BINARY_DIR}/elmergrid/src/ElmerGrid") SET(VIEWFACTORS_BIN "${CMAKE_BINARY_DIR}/fem/src/ViewFactors") SET(RADIATORS_BIN "${CMAKE_BINARY_DIR}/fem/src/Radiators") IF(WITH_MPI) SET(ELMERSOLVER_BIN "${CMAKE_BINARY_DIR}/fem/src/ElmerSolver_mpi") ELSE() SET(ELMERSOLVER_BIN "${CMAKE_BINARY_DIR}/fem/src/ElmerSolver") ENDIF() SET(FINDNORM_BIN "${CMAKE_CURRENT_BINARY_DIR}/findnorm") SET(MESH2D_BIN "${CMAKE_BINARY_DIR}/meshgen2d/src/Mesh2D") MACRO(SUBDIRLIST result curdir depth) set(glob_pattern "*") FOREACH(D RANGE 1 ${depth}) FILE(GLOB children RELATIVE ${curdir} ${glob_pattern}) FOREACH(child ${children}) IF(IS_DIRECTORY ${curdir}/${child}) LIST(APPEND dirlist ${child}) ENDIF() ENDFOREACH() set(glob_pattern "${glob_pattern}/*") ENDFOREACH() SET(${result} ${dirlist}) ENDMACRO() SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR} 2) SET(_test_counter 0) FOREACH(subdir ${SUBDIRS}) IF(NOT ${subdir} MATCHES "^contrib/" OR WITH_CONTRIB) IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/CMakeLists.txt") MATH(EXPR _test_counter "${_test_counter}+1") ADD_SUBDIRECTORY(${subdir}) LIST(APPEND TEST_SUBDIRS ${subdir}) ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/CMakeLists.txt") ENDIF() ENDFOREACH() MESSAGE(STATUS "Found ${_test_counter} tests") SET(INSTALL_OLD_TESTS FALSE CACHE BOOL "(deprecated) Install old test system under build directory.") FOREACH(_subdir ${TEST_SUBDIRS}) FILE(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/${_subdir}/*") FOREACH(_file ${files}) IF(NOT(${_file} MATCHES "CMakeLists.txt$")) IF(NOT(${_file} MATCHES "runtest.cmake$")) LIST(APPEND ELMER_TEST_FILES ${_file}) ENDIF() ENDIF() ENDFOREACH() ENDFOREACH() IF(INSTALL_OLD_TESTS) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/. DESTINATION ${CMAKE_BINARY_DIR}/elmertests FILES_MATCHING REGEX ".+\\.(f90|F90|sif|mif|grd|eg|msh|good|dat|pos|result|in2d|best0)|HB|Makefile|TEST\\.RESULT|ELMERSOLVER_STARTINFO|mesh\\.*") # Misc. directories for meshes etc. INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/diffuser_sa/diffuser/. DESTINATION ${CMAKE_BINARY_DIR}/elmertests/diffuser_sa/diffuser) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/diffuser_sst/diffuser/. DESTINATION ${CMAKE_BINARY_DIR}/elmertests/diffuser_sst/diffuser) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/diffuser_v2f/diffuser/. DESTINATION ${CMAKE_BINARY_DIR}/elmertests/diffuser_v2f/diffuser) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/findnorm.c ${CMAKE_CURRENT_SOURCE_DIR}/ElmerSolver_test_how-to.txt DESTINATION ${CMAKE_BINARY_DIR}/elmertests) INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/runtests DESTINATION ${CMAKE_BINARY_DIR}/elmertests) ENDIF(INSTALL_OLD_TESTS) # ElmerTests_package target SET(ELMER_TESTS_PACKAGE_FILENAME "elmerfem-tests-${ELMER_FEM_REVISION}.tar.gz" CACHE STRING "Filename of test package") MARK_AS_ADVANCED(ELMER_TESTS_PACKAGE_FILENAME) ADD_CUSTOM_TARGET(ElmerTests "${CMAKE_COMMAND}" "-E" "make_directory" "${CMAKE_BINARY_DIR}/elmerfem-tests") ADD_CUSTOM_TARGET(ElmerTests_package DEPENDS ElmerTests COMMAND "${CMAKE_COMMAND}" "-E" "tar" "cvfz" "${ELMER_TESTS_PACKAGE_FILENAME}" "elmerfem-tests" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) # Copy the tests in a cross platform compliant manner FOREACH(_file ${ELMER_TEST_FILES}) IF(NOT(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_file})) ADD_CUSTOM_COMMAND(TARGET ElmerTests POST_BUILD COMMAND "${CMAKE_COMMAND}" "-E" "copy" "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" "${CMAKE_BINARY_DIR}/elmerfem-tests/${_file}") ELSE() ADD_CUSTOM_COMMAND(TARGET ElmerTests POST_BUILD COMMAND "${CMAKE_COMMAND}" "-E" "copy_directory" "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" "${CMAKE_BINARY_DIR}/elmerfem-tests/${_file}") ENDIF() ENDFOREACH()