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