1- cmake_minimum_required (VERSION 3.20 FATAL_ERROR)
2-
3- project (roottest)
4-
5- # If no explicit ROOTSYS is set, use ${ROOTSYS} environment variable to search
6- # for ROOT. This may be set by sourcing thisroot.sh from an installation.
7- if (NOT DEFINED ROOTSYS AND DEFINED ENV{ROOTSYS})
8- cmake_path(CONVERT "$ENV{ROOTSYS} " TO_CMAKE_PATH_LIST ROOTSYS)
9- list (INSERT CMAKE_PREFIX_PATH 0 ${ROOTSYS} )
10- endif ()
11-
121# Use ${ROOTSYS} CMake variable to search for ROOT. This is set when roottest is
132# built as part of ROOT, i.e., when ROOT is configured with -Droottest=ON. It
143# may also be set by passing -DROOTSYS=<PATH> to CMake when configuring a
@@ -20,12 +9,6 @@ if(DEFINED ROOTSYS)
209 list (INSERT CMAKE_PREFIX_PATH 0 ${ROOTSYS} )
2110endif ()
2211
23- find_package (ROOT REQUIRED CONFIG)
24-
25- if (NOT DEFINED Python3_EXECUTABLE)
26- find_package (Python3 ${ROOT_PYTHON_VERSION} REQUIRED QUIET COMPONENTS Interpreter)
27- endif ()
28-
2912if (MSVC )
3013 set (CMAKE_SKIP_TEST_ALL_DEPENDENCY TRUE )
3114 set (CMAKE_SUPPRESS_REGENERATION TRUE )
@@ -49,72 +32,24 @@ if(MSVC)
4932 if (NOT win_broken_tests)
5033 set (WILLFAIL_ON_WIN32 WILLFAIL)
5134 endif ()
52- if (NOT Python3_EXECUTABLE)
53- find_package (PythonInterp)
54- endif ()
5535
56- if (DEFINED ROOT_SOURCE_DIR)
57- set (CMAKE_CXX_FLAGS ${ROOT_CXX_FLAGS} )
58- # ROOT_BINDIR is set by ROOTConfig.cmake
59- set (ROOT_CONFIG_EXECUTABLE ${ROOT_BINDIR} /root-config.bat)
60- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--prefix" OUTPUT_VARIABLE ROOTSYS RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
61- cmake_path(CONVERT "${ROOTSYS} " TO_CMAKE_PATH_LIST ROOTSYS)
62- set (ROOTSYS ${ROOTSYS} CACHE INTERNAL "" )
63- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--tutdir" OUTPUT_VARIABLE ROOT_TUTORIALS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
64- cmake_path(CONVERT "${ROOT_TUTORIALS_DIR} " TO_CMAKE_PATH_LIST ROOT_TUTORIALS_DIR)
65- set (ROOT_root_CMD ${ROOTSYS} /bin/root.exe)
66- set (ROOT_hadd_CMD ${ROOTSYS} /bin/hadd.exe)
67- set (ROOT_genreflex_CMD ${ROOTSYS} /bin/genreflex.exe)
68- set (ROOT_rootcint_CMD ${ROOTSYS} /bin/rootcint.exe)
69- set (ROOT_rootcling_CMD ${ROOTSYS} /bin/rootcling.exe)
70- if (CMAKE_GENERATOR MATCHES Ninja)
71- set (ROOT_LIBRARIES Core RIO Net Hist Gpad Graf Tree Rint Matrix MathCore)
72- else ()
73- set (ROOT_LIBRARIES libCore libRIO libNet libHist libGpad libGraf libTree libRint libMatrix libMathCore)
74- endif ()
36+ set (CMAKE_CXX_FLAGS ${ROOT_CXX_FLAGS} )
37+ # ROOT_BINDIR is set by ROOTConfig.cmake
38+ set (ROOT_CONFIG_EXECUTABLE ${ROOT_BINDIR} /root-config.bat)
39+ execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--prefix" OUTPUT_VARIABLE ROOTSYS RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
40+ cmake_path(CONVERT "${ROOTSYS} " TO_CMAKE_PATH_LIST ROOTSYS)
41+ set (ROOTSYS ${ROOTSYS} CACHE INTERNAL "" )
42+ execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--tutdir" OUTPUT_VARIABLE ROOT_TUTORIALS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
43+ cmake_path(CONVERT "${ROOT_TUTORIALS_DIR} " TO_CMAKE_PATH_LIST ROOT_TUTORIALS_DIR)
44+ set (ROOT_root_CMD ${ROOTSYS} /bin/root.exe)
45+ set (ROOT_hadd_CMD ${ROOTSYS} /bin/hadd.exe)
46+ set (ROOT_genreflex_CMD ${ROOTSYS} /bin/genreflex.exe)
47+ set (ROOT_rootcint_CMD ${ROOTSYS} /bin/rootcint.exe)
48+ set (ROOT_rootcling_CMD ${ROOTSYS} /bin/rootcling.exe)
49+ if (CMAKE_GENERATOR MATCHES Ninja)
50+ set (ROOT_LIBRARIES Core RIO Net Hist Gpad Graf Tree Rint Matrix MathCore)
7551 else ()
76- include (${ROOT_USE_FILE} )
77- set (ROOT_CONFIG_EXECUTABLE root-config.bat)
78- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--prefix" OUTPUT_VARIABLE ROOTSYS RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
79- cmake_path(CONVERT "${ROOTSYS} " TO_CMAKE_PATH_LIST ROOTSYS)
80- set (ROOTSYS ${ROOTSYS} CACHE INTERNAL "" )
81- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--srcdir" OUTPUT_VARIABLE ROOT_SOURCE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
82- cmake_path(CONVERT "${ROOT_SOURCE_DIR} " TO_CMAKE_PATH_LIST ROOT_SOURCE_DIR)
83- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--tutdir" OUTPUT_VARIABLE ROOT_TUTORIALS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
84- cmake_path(CONVERT "${ROOT_TUTORIALS_DIR} " TO_CMAKE_PATH_LIST ROOT_TUTORIALS_DIR)
85- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--features" OUTPUT_VARIABLE ROOT_FEATURES RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
86- separate_arguments (ROOT_FEATURES)
87- foreach (item ${ROOT_FEATURES} )
88- if ("${item} " MATCHES "^cxx(.*)" )
89- string (REGEX REPLACE "^cxx(.*)" "\\ 1" CXX_VERSION ${item} )
90- set (CMAKE_CXX_STANDARD ${CXX_VERSION} CACHE INTERNAL "" )
91- endif ()
92- endforeach ()
93- # Some roottest.git tests are checking LZ4 and ZSTD, which has different references depends on its version.
94- # We recover LZ4/ZSTD version used in ROOT, stored in root-config --config output.
95- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--config" OUTPUT_VARIABLE ROOT_CONFIG_VARIABLES RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
96- separate_arguments (ROOT_CONFIG_VARIABLES)
97- foreach (item ${ROOT_CONFIG_VARIABLES} )
98- if ("${item} " MATCHES "LZ4_VERSION=(.*)" )
99- string (REGEX REPLACE "LZ4_VERSION=(.*)" "\\ 1" LZ4 ${item} )
100- set (LZ4_VERSION ${LZ4} CACHE INTERNAL "" )
101- elseif ("${item} " MATCHES "ZSTD_VERSION=(.*)" )
102- string (REGEX REPLACE "ZSTD_VERSION=(.*)" "\\ 1" ZSTD ${item} )
103- set (ZSTD_VERSION ${ZSTD} CACHE INTERNAL "" )
104- endif ()
105- endforeach ()
106- if (NOT LZ4_VERSION)
107- message (FATAL_ERROR "LZ4_VERSION not found in ${ROOTSYS} /bin/root-config.bat" )
108- endif ()
109- if (NOT ZSTD_VERSION)
110- message (FATAL_ERROR "ZSTD_VERSION not found in ${ROOTSYS} /bin/root-config.bat" )
111- endif ()
112- find_program (ROOT_root_CMD root.exe PATHS ${ROOTSYS} /bin)
113- find_program (ROOT_hadd_CMD hadd.exe PATHS ${ROOTSYS} /bin)
114- find_program (ROOT_genreflex_CMD genreflex.exe PATHS ${ROOTSYS} /bin)
115- find_program (ROOT_rootcint_CMD rootcint.exe PATHS ${ROOTSYS} /bin)
116- find_program (ROOT_rootcling_CMD rootcling.exe PATHS ${ROOTSYS} /bin)
117- enable_testing ()
52+ set (ROOT_LIBRARIES libCore libRIO libNet libHist libGpad libGraf libTree libRint libMatrix libMathCore)
11853 endif ()
11954else ()
12055
@@ -125,83 +60,23 @@ else()
12560 # only for non-Windows platforms
12661 set (OptionalMultiProc MultiProc)
12762
128- # If ROOT_SOURCE_DIR is set, roottest is built as part of the root build.
129- # If ROOT_SOURCE_DIR is not set, search for an installation.
130- if (DEFINED ROOT_SOURCE_DIR)
131- # root-config --prefix helps to retrieve ROOTSYS env variable.
132- # ROOT_BINDIR is set by ROOTConfig.cmake
133- find_program (ROOT_CONFIG_EXECUTABLE root-config PATHS ${ROOT_BINDIR} )
134- if (NOT ROOT_CONFIG_EXECUTABLE)
135- message (ERROR "root-config is not found, please rerun configuration step." )
136- endif ()
137- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--prefix" OUTPUT_VARIABLE ROOTSYS RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
138- set (ROOTSYS ${ROOTSYS} CACHE INTERNAL "" )
139- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--tutdir" OUTPUT_VARIABLE ROOT_TUTORIALS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
140- set (ROOT_LIBRARIES Core RIO Net Hist Gpad Tree Rint Matrix MathCore)
141- set (ROOT_root_CMD ${ROOTSYS} /bin/root.exe)
142- set (ROOT_hadd_CMD ${ROOTSYS} /bin/hadd)
143- set (ROOT_genreflex_CMD ${ROOTSYS} /bin/genreflex)
144- set (ROOT_rootcint_CMD ${ROOTSYS} /bin/rootcint)
145- set (ROOT_rootcling_CMD rootcling)
146- else () # standalone roottest.git
147- include (${ROOT_USE_FILE} )
148- # root-config --prefix helps to retrieve ROOTSYS env variable.
149- find_program (ROOT_CONFIG_EXECUTABLE root-config)
150- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--prefix" OUTPUT_VARIABLE ROOTSYS RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
151- set (ROOTSYS ${ROOTSYS} CACHE INTERNAL "" )
152- # Some roottest.git tests are checking LZ4 and ZSTD, which has different references depends on its version.
153- # We recover LZ4/ZSTD version used in ROOT, stored in root-config --config output.
154- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--srcdir" OUTPUT_VARIABLE ROOT_SOURCE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
155- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--tutdir" OUTPUT_VARIABLE ROOT_TUTORIALS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
156- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--config" OUTPUT_VARIABLE ROOT_CONFIG_VARIABLES RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
157- separate_arguments (ROOT_CONFIG_VARIABLES)
158- foreach (item ${ROOT_CONFIG_VARIABLES} )
159- if ("${item} " MATCHES "LZ4_VERSION=(.*)" )
160- string (REGEX REPLACE "LZ4_VERSION=(.*)" "\\ 1" LZ4 ${item} )
161- set (LZ4_VERSION ${LZ4} CACHE INTERNAL "" )
162- elseif ("${item} " MATCHES "ZSTD_VERSION=(.*)" )
163- string (REGEX REPLACE "ZSTD_VERSION=(.*)" "\\ 1" ZSTD ${item} )
164- set (ZSTD_VERSION ${ZSTD} CACHE INTERNAL "" )
165- endif ()
166- endforeach ()
167- # If we didn't manage to find LZ4_VERSION/ZSTD_VERSION in "root-config --config" output,
168- # we consider that ROOT had used system LZ4/ZSTD and we can find it via find_package().
169- set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR} /cmake/modules ${ROOTSYS} /cmake/modules ${ROOT_SOURCE_DIR} /cmake/modules)
170- if (NOT LZ4_VERSION)
171- find_package (LZ4)
172- if (NOT LZ4_FOUND)
173- message (FATAL_ERROR "lz4 is required to be installed before running roottest.git" )
174- endif ()
175- endif ()
176- if (NOT ZSTD_VERSION)
177- find_package (ZSTD)
178- if (NOT ZSTD_FOUND)
179- message (FATAL_ERROR "zstd is required to be installed before running roottest.git" )
180- endif ()
181- endif ()
182- # To be able to use the same C++ standard as used in ROOT, we can try to retrieve it from root-config --features
183- execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--features" OUTPUT_VARIABLE ROOT_FEATURES RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
184- separate_arguments (ROOT_FEATURES)
185- foreach (item ${ROOT_FEATURES} )
186- if ("${item} " MATCHES "^cxx(.*)" )
187- string (REGEX REPLACE "^cxx(.*)" "\\ 1" CXX_VERSION ${item} )
188- set (CMAKE_CXX_STANDARD ${CXX_VERSION} CACHE INTERNAL "" )
189- endif ()
190- endforeach ()
191- find_program (ROOT_root_CMD root.exe PATHS ${ROOTSYS} /bin)
192- find_program (ROOT_hadd_CMD hadd PATHS ${ROOTSYS} /bin)
193- find_program (ROOT_genreflex_CMD genreflex PATHS ${ROOTSYS} /bin)
194- find_program (ROOT_rootcint_CMD rootcint PATHS ${ROOTSYS} /bin)
195- find_program (ROOT_rootcling_CMD rootcling PATHS ${ROOTSYS} /bin)
196- enable_testing ()
63+ # root-config --prefix helps to retrieve ROOTSYS env variable.
64+ # ROOT_BINDIR is set by ROOTConfig.cmake
65+ find_program (ROOT_CONFIG_EXECUTABLE root-config PATHS ${ROOT_BINDIR} )
66+ if (NOT ROOT_CONFIG_EXECUTABLE)
67+ message (ERROR "root-config is not found, please rerun configuration step." )
19768 endif ()
69+ execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--prefix" OUTPUT_VARIABLE ROOTSYS RESULT_VARIABLE RETVAR OUTPUT_STRIP_TRAILING_WHITESPACE)
70+ set (ROOTSYS ${ROOTSYS} CACHE INTERNAL "" )
71+ execute_process (COMMAND ${ROOT_CONFIG_EXECUTABLE} "--tutdir" OUTPUT_VARIABLE ROOT_TUTORIALS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
72+ set (ROOT_LIBRARIES Core RIO Net Hist Gpad Tree Rint Matrix MathCore)
73+ set (ROOT_root_CMD ${ROOTSYS} /bin/root.exe)
74+ set (ROOT_hadd_CMD ${ROOTSYS} /bin/hadd)
75+ set (ROOT_genreflex_CMD ${ROOTSYS} /bin/genreflex)
76+ set (ROOT_rootcint_CMD ${ROOTSYS} /bin/rootcint)
77+ set (ROOT_rootcling_CMD rootcling)
19878endif ()
19979
200- # Synchronizing default compression algorithm used for ROOT.
201- # We need to have it for CMake settings for switching tests references.
202- # FIXME: it should be exported from ROOT build.
203- set (compression_default "zlib" CACHE STRING "" FORCE)
204-
20580get_filename_component (ROOT_LIBRARY_DIR "${ROOTSYS} /lib" ABSOLUTE )
20681
20782set (ref_suffix ".ref" )
@@ -252,21 +127,6 @@ set(CMAKE_ROOTTEST_DICT ON)
252127# Set the CMake module path. Here are all the custom CMake modules.
253128set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH} ;${ROOT_SOURCE_DIR} /roottest/cmake/modules" )
254129
255- # Find python.
256- if (ROOT_pyroot_FOUND)
257- if (NOT Python3_EXECUTABLE)
258- find_package (PythonInterp)
259- if (PYTHONINTERP_FOUND)
260- execute_process (COMMAND ${Python3_EXECUTABLE} -c "import sys;sys.stdout.write(sys.prefix)"
261- OUTPUT_VARIABLE PYTHON_PREFIX)
262- set (CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${PYTHON_PREFIX} )
263- endif ()
264- if (NOT Python3_LIBRARIES)
265- find_package (PythonLibs)
266- endif ()
267- endif ()
268- endif ()
269-
270130#---Set flag for PyROOT tests that are expected to fail
271131if (ROOT_pyroot_FOUND)
272132 set (PYTESTS_WILLFAIL WILLFAIL)
0 commit comments