Geant4 Cross Reference |
1 # Copied from Geant4 installation, need patch 1 # Copied from Geant4 installation, need patch 2 # - Find StatTest 2 # - Find StatTest 3 # This module tries to find the StatTest appli 3 # This module tries to find the StatTest application 4 # Once done this will define 4 # Once done this will define 5 # << 5 # 6 # STATTEST_FOUND - Application found 6 # STATTEST_FOUND - Application found 7 # STATTEST_APP - Application 7 # STATTEST_APP - Application 8 # STATTEST_CMD - Command line to run th << 8 # STATTEST_CMD - Command line to run the application 9 # STATTEST_ADD_TEST - Helper function to def << 9 # STATTEST_ADD_TEST - Helper function to define a ctest using 10 # StatTest (Only if we are 10 # StatTest (Only if we are using for G4 testing) 11 # 11 # 12 # Variables used by this module, which can cha << 12 # Variables used by this module, which can change the default behaviour 13 # and need to be set before calling find_packa 13 # and need to be set before calling find_package 14 # 14 # 15 # STATTEST_ROOT_DIR Root directory to StatTest 15 # STATTEST_ROOT_DIR Root directory to StatTest package 16 # 16 # 17 << 18 if(NOT GEANT4_ENABLE_TESTING) << 19 #No meaning for this if not testing << 20 SET(STATTEST_FOUND FALSE) << 21 return() << 22 endif() << 23 << 24 #Search application 17 #Search application 25 #Note that the second suggested path is G4 spe << 18 #Note that the second suggested path is G4 specific... 26 find_path(STATTEST_APP_DIR 19 find_path(STATTEST_APP_DIR 27 NAMES StatTestVersion.py 20 NAMES StatTestVersion.py 28 PATHS ${STATTEST_ROOT_DIR} ${PROJECT_SOURC << 21 PATHS ${STATTEST_ROOT_DIR} ${CMAKE_SOURCE_DIR}/verification/StatTest 29 NO_DEFAULT_PATH 22 NO_DEFAULT_PATH 30 ) 23 ) 31 24 32 #If we didn't find it there, fall back to some 25 #If we didn't find it there, fall back to some standard search paths 33 find_path(STATTEST_APP_DIR NAMES StatTestVersi << 26 find_path(STATTEST_APP_DIR NAMES StatTest/StatTestVersion.py) 34 27 35 #### 28 #### 36 #### Run-time dependencies... 29 #### Run-time dependencies... 37 #### 30 #### 38 # - Check if ROOT is available 31 # - Check if ROOT is available 39 find_package(ROOT QUIET) 32 find_package(ROOT QUIET) 40 if(NOT ROOT_FOUND) 33 if(NOT ROOT_FOUND) 41 MESSAGE(STATUS "StatTest: ROOT package not f 34 MESSAGE(STATUS "StatTest: ROOT package not found --> StatTest package disabled") 42 set(STATTEST_FOUND FALSE) << 43 set(_root_isok FALSE) 35 set(_root_isok FALSE) 44 else() 36 else() 45 set(_root_isok TRUE) 37 set(_root_isok TRUE) 46 # - Check if python interpreter is correct v << 47 # (the one compatible with root) << 48 find_package(Python ${ROOT_PYTHONVER} QUIET << 49 if(NOT Python_Interpreter_FOUND) << 50 MESSAGE(STATUS "StatTest: Python interpre << 51 set(STATTEST_FOUND FALSE) << 52 set(_python_isok FALSE) << 53 else() << 54 set(STATTEST_FOUND TRUE) << 55 set(_python_isok TRUE) << 56 endif() << 57 endif() 38 endif() 58 39 >> 40 # - Check if python interpreter is correct version >> 41 # (the one compatible with root) >> 42 find_package(PythonInterp ${ROOT_PYTHONVER} QUIET) >> 43 if(NOT PYTHONINTERP_FOUND) >> 44 MESSAGE(STATUS "StatTest: Python interpreter of version ${ROOT_PYTHONVER} not found --> StatTest package disabled") >> 45 set(_python_isok FALSE) >> 46 else() >> 47 set(_python_isok TRUE) >> 48 endif() >> 49 >> 50 59 include(FindPackageHandleStandardArgs) 51 include(FindPackageHandleStandardArgs) 60 find_package_handle_standard_args( 52 find_package_handle_standard_args( 61 StatTest << 53 StatTest 62 DEFAULT_MSG << 54 DEFAULT_MSG 63 STATTEST_APP_DIR << 55 STATTEST_APP_DIR 64 _root_isok << 56 _root_isok 65 _python_isok << 57 _python_isok 66 ) 58 ) 67 59 68 << 69 if(STATTEST_FOUND) 60 if(STATTEST_FOUND) 70 set(STATTEST_APP ${STATTEST_APP_DIR}/runtest 61 set(STATTEST_APP ${STATTEST_APP_DIR}/runtests.py) 71 set(STATTEST_CMD ${PYTHON_EXECUTABLE} ${STAT 62 set(STATTEST_CMD ${PYTHON_EXECUTABLE} ${STATTEST_APP}) 72 63 73 # Let's create a function that helps in buil << 64 if(GEANT4_ENABLE_TESTING) 74 # regression testing << 65 # Let's create a function that helps in building tests for 75 # function STATTEST_ADD_TEST(<name> << 66 # regression testing 76 # G4TEST testname << 67 # function STATTEST_ADD_TEST(<name> 77 # CONFIG conffile << 68 # G4TEST testname 78 # INPUT inputfile << 69 # CONFIG conffile 79 # [DEBUG] << 70 # INPUT inputfile 80 # [TEXT] #Input is text file inste << 71 # [DEBUG] 81 # [REFERENCE refe << 72 # [TEXT] #Input is text file instead of root 82 # [LABELS label1 << 73 # [REFERENCE reference] 83 # [IMG filename]) << 74 # [LABELS label1 label2 ...] 84 function(STATTEST_ADD_TEST stattest) << 75 # [IMG filename]) 85 CMAKE_PARSE_ARGUMENTS(ARG "DEBUG;TEXT" << 76 function(STATTEST_ADD_TEST stattest) >> 77 CMAKE_PARSE_ARGUMENTS(ARG "DEBUG;TEXT" 86 "CONFIG;INPUT;REFERENCE;G4TEST;IMG" 78 "CONFIG;INPUT;REFERENCE;G4TEST;IMG" 87 "LABELS" ${ARGN} 79 "LABELS" ${ARGN} 88 ) << 80 ) 89 #check mandatory arguments << 90 list(LENGTH ARG_CONFIG _len) << 91 if(_len LESS 1) << 92 message(FATAL_ERROR "STATTEST_ADD_TEST << 93 endif() << 94 81 95 list(LENGTH ARG_INPUT _len) << 82 #check mandatory arguments 96 if(_len LESS 1) << 83 list(LENGTH ARG_CONFIG _len) >> 84 if(_len LESS 1) >> 85 message(FATAL_ERROR "STATTEST_ADD_TEST: conffile is mandatory") >> 86 endif() >> 87 >> 88 list(LENGTH ARG_INPUT _len) >> 89 if(_len LESS 1) 97 message(FATAL_ERROR "STATTEST_ADD_TEST 90 message(FATAL_ERROR "STATTEST_ADD_TEST: inputfile is mandatory") 98 endif() << 91 endif() 99 << 92 100 list(LENGTH ARG_G4TEST _len) << 93 list(LENGTH ARG_G4TEST _len) 101 if(_len LESS 1) << 94 if(_len LESS 1) 102 message(FATAL_ERROR "STATTEST_ADD_TEST 95 message(FATAL_ERROR "STATTEST_ADD_TEST: testname is mandatory") 103 endif() << 96 endif() 104 97 105 #Set basic command line << 98 #Set basic command line 106 if(ARG_IMG) << 99 if(ARG_IMG) 107 set(_command ${STATTEST_CMD} -g ${ARG_ 100 set(_command ${STATTEST_CMD} -g ${ARG_IMG}) 108 else() << 101 else() 109 set(_command ${STATTEST_CMD}) 102 set(_command ${STATTEST_CMD}) 110 endif() << 103 endif() 111 << 104 112 if(ARG_TEXT) << 105 if(ARG_TEXT) 113 set(_command ${_command} "-T") << 106 set(_command ${_command} "-T") 114 endif() << 107 endif() 115 << 108 116 #Mandatory parameters << 109 #Mandatory parameters 117 set(_command ${_command} ${ARG_CONFIG} ${A << 110 set(_command ${_command} ${ARG_CONFIG} ${ARG_INPUT}) 118 if(ARG_REFERENCE) << 111 if(ARG_REFERENCE) 119 set(_command ${_command} ${ARG_REFEREN 112 set(_command ${_command} ${ARG_REFERENCE}) 120 endif() << 113 endif() 121 114 122 if(ARG_LABELS) << 115 if(ARG_LABELS) 123 set(_labels ${ARG_LABELS}) 116 set(_labels ${ARG_LABELS}) 124 else() << 117 else() 125 set(_labels "") 118 set(_labels "") 126 endif() << 119 endif() 127 << 128 include(G4CTest) << 129 120 130 #Now build G4 test << 121 include(Geant4CTest) 131 GEANT4_ADD_TEST(${stattest} << 122 >> 123 #Now build G4 test >> 124 GEANT4_ADD_TEST(${stattest} 132 COMMAND ${_command} 125 COMMAND ${_command} 133 DEPENDS ${ARG_G4TEST} 126 DEPENDS ${ARG_G4TEST} 134 LABELS ${_labels} 127 LABELS ${_labels} 135 ) 128 ) 136 endfunction() << 129 endfunction() >> 130 endif(GEANT4_ENABLE_TESTING) 137 endif(STATTEST_FOUND) 131 endif(STATTEST_FOUND) 138 132 139 mark_as_advanced(STATTEST_APP_DIR) 133 mark_as_advanced(STATTEST_APP_DIR)