1- # - Internal Use file for Geant4
2- # This file is designed for inclusion by the UseGeant4.cmake file, but
3- # only in the build tree. It contains functions and macros that are only
4- # intended to help in building the Geant4 tests.
5- #
6- # IT SHOULD NOT BE INSTALLED!
7-
81#-----------------------------------------------------------------------
92# Special internal functions for building tests.
103#-----------------------------------------------------------------------
2316# [LABELS label1 label2 ...])
2417#
2518function (geant4_add_test test )
26- if (NOT CMAKE_PROJECT_NAME STREQUAL Geant4)
27- message (WARNING "geant4_add_test is only for internal Geant4 usage, test '${test} ' is disabled" )
28- return ()
29- endif ()
30-
3119 cmake_parse_arguments (ARG
3220 "DEBUG"
3321 "TIMEOUT;BUILD;OUTPUT;ERROR;SOURCE_DIR;BINARY_DIR;PROJECT;PASSREGEX;FAILREGEX;WORKING_DIRECTORY"
@@ -38,19 +26,31 @@ function(geant4_add_test test)
3826 set (_cfg $<CONFIGURATION >/)
3927 endif ()
4028
29+ # ARG_BUILD is treated as "zero or one"
30+ # zero arg: build everything
31+ # one arg: just that target
32+ if (ARG_BUILD OR "BUILD" IN_LIST ARG_KEYWORDS_MISSING_VALUES)
33+ set (_is_build_test TRUE )
34+ endif ()
35+
4136 # COMMAND AND BUILD: split test
4237 # - In this case, we have to create a -build and a -run test with the latter depending on the former
4338 # NOT COMMAND AND BUILD: pure build
4439 # COMMAND AND NOT BUILD: pure test
45- if (ARG_COMMAND AND ARG_BUILD )
40+ if (ARG_COMMAND AND _is_build_test )
4641 set (_is_split_test TRUE )
4742 endif ()
4843
44+ # Supplying a PROJECT argument is now a deprecation warning and will be removed
45+ if (ARG_PROJECT)
46+ message (WARNING "Test '${test} ' uses the deprecated 'PROJECT' argument to 'geant4_add_test'. This argument is obsolete" )
47+ endif ()
48+
4949 #- Handle COMMAND argument
5050 list (LENGTH ARG_COMMAND _len)
5151 if (_len LESS 1)
52- if (NOT ARG_BUILD )
53- message (FATAL_ERROR "GEANT4_ADD_TEST: command is mandatory (without build) " )
52+ if (NOT _is_build_test )
53+ message (FATAL_ERROR "geant4_add_test: COMMAND argument is mandatory when BUILD argument is not supplied " )
5454 endif ()
5555 else ()
5656 list (GET ARG_COMMAND 0 _prg)
@@ -125,20 +125,13 @@ function(geant4_add_test test)
125125 set (_command ${_command} -P ${_driver} )
126126
127127 #- Now we can actually add the test
128- if (ARG_BUILD )
128+ if (_is_build_test )
129129 if (NOT ARG_SOURCE_DIR)
130130 set (ARG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
131131 endif ()
132132 if (NOT ARG_BINARY_DIR )
133133 set (ARG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} )
134134 endif ()
135- if (NOT ARG_PROJECT)
136- if (NOT PROJECT_NAME STREQUAL "Geant4" )
137- set (ARG_PROJECT ${PROJECT_NAME} )
138- else ()
139- set (ARG_PROJECT ${ARG_BUILD} )
140- endif ()
141- endif ()
142135
143136 set (__build_test_name "${test} " )
144137 set (__run_test_name "" )
@@ -148,15 +141,18 @@ function(geant4_add_test test)
148141 set (__run_test_name "${test} " )
149142 endif ()
150143
144+ if (ARG_BUILD)
145+ set (__build_argument --build -target ${ARG_BUILD} )
146+ endif ()
147+
151148 # Build part of the test
152149 # Again, note that we scope Geant4_DIR to Geant4_BINARY_DIR so we don't accidentally pickup
153150 # local or higher scopes
154151 add_test (NAME ${__build_test_name} COMMAND ${CMAKE_CTEST_COMMAND}
155152 --build -and -test ${ARG_SOURCE_DIR} ${ARG_BINARY_DIR}
156153 --build -generator ${CMAKE_GENERATOR}
157154 --build -makeprogram ${CMAKE_MAKE_PROGRAM}
158- --build -target ${ARG_BUILD}
159- --build -project ${ARG_PROJECT}
155+ ${__build_argument}
160156 --build -config $<CONFIGURATION >
161157 --build -noclean
162158 --build -options
@@ -175,9 +171,11 @@ function(geant4_add_test test)
175171 -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
176172 -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
177173 -DCMAKE_CXX_FLAGS_FULLRELWITHDEBINFO=${CMAKE_CXX_FLAGS_FULLRELWITHDEBINFO}
174+ -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
175+ -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
176+ -DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_STATIC_LINKER_FLAGS}
178177 -DCMAKE_DISABLE_FIND_PACKAGE_ROOT=$<BOOL :${CMAKE_DISABLE_FIND_PACKAGE_ROOT} >
179178 )
180- set_property (TEST ${__build_test_name} PROPERTY ENVIRONMENT Geant4_DIR=${Geant4_BINARY_DIR} )
181179
182180 # Build part of the test should have additional regex, and *must* have same labels
183181 if (ARG_FAILREGEX)
0 commit comments