Skip to content

Commit 0ab856e

Browse files
wdconincpre-commit-ci[bot]veprbl
authored
fix: collect min versions in CMakeLists.txt (#1128)
### Briefly, what does this PR introduce? This defines all minimum dependency versions in one place, and uses them in all find_package calls (or, in the case of Acts, immediately after the find_package call). ### What kind of change does this PR introduce? - [x] Bug fix (issue: duplication of version limits, absence of version limits) - [ ] New feature (issue #__) - [ ] Documentation update - [ ] Other: __ ### Please check if this PR fulfills the following: - [ ] Tests for the changes have been added - [ ] Documentation has been added / updated - [ ] Changes have been communicated to collaborators ### Does this PR introduce breaking changes? What changes might users need to make to their code? No. ### Does this PR change default behavior? No. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Dmitry Kalinkin <[email protected]>
1 parent 0df79a0 commit 0ab856e

File tree

3 files changed

+53
-30
lines changed

3 files changed

+53
-30
lines changed

.github/workflows/linux-eic-shell.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ jobs:
133133
platform-release: "${{ env.platform }}:${{ matrix.release }}"
134134
run: |
135135
# install this repo
136-
CXX="${{ matrix.CXX }}" CXXFLAGS="${{ matrix.CXXFLAGS }}" cmake -B build -S . -DCMAKE_INSTALL_PREFIX=install -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} -DUSE_ASAN=ON -DUSE_TSAN=OFF -DUSE_UBSAN=ON
136+
CXX="${{ matrix.CXX }}" CXXFLAGS="${{ matrix.CXXFLAGS }}" cmake --warn-uninitialized -B build -S . -DCMAKE_INSTALL_PREFIX=install -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} -DUSE_ASAN=ON -DUSE_TSAN=OFF -DUSE_UBSAN=ON
137137
cmake --build build -j $(getconf _NPROCESSORS_ONLN) --target install
138138
ccache --show-stats --verbose
139139
ccache --evict-older-than 7d

CMakeLists.txt

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,23 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
5454
"MinSizeRel" "RelWithDebInfo")
5555
endif()
5656

57+
# Minimal dependency versions
58+
set(Acts_VERSION_MIN 33.0.0)
59+
set(algorithms_VERSION_MIN 1.0.0)
60+
set(DD4hep_VERSION_MIN 1.21)
61+
set(EDM4EIC_VERSION_MIN 5.0)
62+
set(EDM4HEP_VERSION_MIN 0.7.1)
63+
set(Eigen3_VERSION_MIN 3.3)
64+
set(FastJet_VERSION_MIN 3)
65+
set(FastJetContrib_VERSION_MIN 1.46)
66+
set(fmt_VERSION_MIN 9.0.0)
67+
set(IRT_VERSION_MIN 1.0.5)
68+
set(JANA_VERSION_MIN 2.2.0)
69+
set(onnxruntime_MIN_VERSION 1.17)
70+
set(podio_VERSION_MIN 0.16)
71+
set(ROOT_VERSION_MIN 6.28)
72+
set(spdlog_VERSION_MIN 1.11.0)
73+
5774
# Set default standard to C++20
5875
set(CMAKE_CXX_STANDARD_MIN 20)
5976
set(CMAKE_CXX_STANDARD
@@ -150,25 +167,28 @@ set(CMAKE_INSTALL_RPATH
150167
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
151168

152169
# Check and print what JANA2 is used
153-
find_package(JANA 2.2.0 REQUIRED)
170+
find_package(JANA ${JANA_VERSION_MIN} REQUIRED)
154171
message(STATUS "${CMAKE_PROJECT_NAME}: JANA2 CMake : ${JANA_DIR}")
155172
message(STATUS "${CMAKE_PROJECT_NAME}: JANA2 includes: ${JANA_INCLUDE_DIR}")
156173
message(STATUS "${CMAKE_PROJECT_NAME}: JANA2 library : ${JANA_LIBRARY}")
157174

158175
# Algorithms
159-
find_package(algorithms 1.0.0 REQUIRED Core)
176+
find_package(algorithms ${algorithms_VERSION_MIN} REQUIRED Core)
160177

161178
# PODIO, EDM4HEP, EDM4EIC event models
162-
find_package(Eigen3 REQUIRED)
163-
find_package(podio REQUIRED)
164-
find_package(EDM4HEP 0.7.1 REQUIRED)
165-
find_package(EDM4EIC 5.0 REQUIRED)
166-
167-
# spdlog
168-
find_package(spdlog REQUIRED)
179+
find_package(Eigen3 ${Eigen3_VERSION_MIN} REQUIRED)
180+
find_package(podio ${podio_VERSION_MIN} QUIET)
181+
if(NOT podio_FOUND)
182+
find_package(podio 1.0 REQUIRED)
183+
endif()
184+
find_package(EDM4HEP ${EDM4HEP_VERSION_MIN} REQUIRED)
185+
find_package(EDM4EIC ${EDM4EIC_VERSION_MIN} REQUIRED)
169186

170187
# fmt
171-
find_package(fmt 9.0.0 REQUIRED)
188+
find_package(fmt ${fmt_VERSION_MIN} REQUIRED)
189+
190+
# spdlog
191+
find_package(spdlog ${spdlog_VERSION_MIN} REQUIRED)
172192

173193
# Guidelines Support Library
174194
find_package(Microsoft.GSL CONFIG)
@@ -194,11 +214,10 @@ if(EDM4EIC_INTERFACE_COMPILE_DEFINITIONS)
194214
endif()
195215

196216
# DD4Hep is required for the most of the part
197-
find_package(DD4hep REQUIRED)
217+
find_package(DD4hep ${DD4hep_VERSION_MIN} REQUIRED)
198218

199219
# ACTS cmake-lint: disable=C0103
200220
find_package(Acts REQUIRED COMPONENTS Core PluginDD4hep PluginJson)
201-
set(Acts_VERSION_MIN "33.0.0")
202221
set(Acts_VERSION
203222
"${Acts_VERSION_MAJOR}.${Acts_VERSION_MINOR}.${Acts_VERSION_PATCH}")
204223
if(${Acts_VERSION} VERSION_LESS ${Acts_VERSION_MIN} AND NOT "${Acts_VERSION}"
@@ -218,7 +237,7 @@ if(NOT "cxx_std_${CMAKE_CXX_STANDARD}" IN_LIST ACTS_COMPILE_FEATURES)
218237
endif()
219238

220239
# ROOT
221-
find_package(ROOT REQUIRED)
240+
find_package(ROOT ${ROOT_VERSION_MIN} REQUIRED)
222241
# Check that ROOT is compiled with a modern enough c++ standard
223242
get_target_property(ROOT_COMPILE_FEATURES ROOT::Core INTERFACE_COMPILE_FEATURES)
224243
if(NOT "cxx_std_${CMAKE_CXX_STANDARD}" IN_LIST ROOT_COMPILE_FEATURES)
@@ -231,7 +250,7 @@ endif()
231250
# ONNX Runtime
232251
option(USE_ONNX "Compile with ONNX support" ON)
233252
if(${USE_ONNX})
234-
find_package(onnxruntime CONFIG)
253+
find_package(onnxruntime ${onnxruntime_MIN_VERSION} CONFIG)
235254
add_compile_definitions(USE_ONNX)
236255
endif()
237256

cmake/jana_plugin.cmake

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,13 @@ macro(plugin_glob_all _name)
219219

220220
# Finally add sources to library
221221
target_sources(${_name}_library PRIVATE ${LIB_SRC_FILES})
222+
223+
# Debug output if needed
224+
message(VERBOSE
225+
"plugin_glob_all:${_name}: PLUGIN_CC_FILE ${PLUGIN_CC_FILE}")
222226
endif(${_name}_WITH_LIBRARY)
223227

224228
# Debug output if needed
225-
message(VERBOSE
226-
"plugin_glob_all:${_name}: PLUGIN_CC_FILE ${PLUGIN_CC_FILE}")
227229
message(VERBOSE "plugin_glob_all:${_name}: LIB_SRC_FILES ${LIB_SRC_FILES}")
228230
message(VERBOSE
229231
"plugin_glob_all:${_name}: PLUGIN_SRC_FILES ${PLUGIN_SRC_FILES}")
@@ -237,7 +239,7 @@ endmacro()
237239
macro(plugin_add_algorithms _name)
238240

239241
if(NOT algorithms_FOUND)
240-
find_package(algorithms REQUIRED)
242+
find_package(algorithms ${algorithms_VERSION_MIN} REQUIRED)
241243
endif()
242244

243245
if(${_name}_WITH_LIBRARY)
@@ -261,7 +263,7 @@ endmacro()
261263
macro(plugin_add_dd4hep _name)
262264

263265
if(NOT DD4hep_FOUND)
264-
find_package(DD4hep REQUIRED)
266+
find_package(DD4hep ${DD4hep_VERSION_MIN} REQUIRED)
265267
endif()
266268

267269
plugin_link_libraries(${_name} DD4hep::DDCore DD4hep::DDRec)
@@ -272,7 +274,7 @@ endmacro()
272274
macro(plugin_add_eigen3 _name)
273275

274276
if(NOT Eigen3_FOUND)
275-
find_package(Eigen3 REQUIRED)
277+
find_package(Eigen3 ${Eigen3_VERSION_MIN} REQUIRED)
276278
endif()
277279

278280
plugin_link_libraries(${_name} Eigen3::Eigen)
@@ -284,7 +286,6 @@ macro(plugin_add_acts _name)
284286

285287
if(NOT Acts_FOUND)
286288
find_package(Acts REQUIRED COMPONENTS Core PluginDD4hep PluginJson)
287-
set(Acts_VERSION_MIN "33.0.0")
288289
set(Acts_VERSION
289290
"${Acts_VERSION_MAJOR}.${Acts_VERSION_MINOR}.${Acts_VERSION_PATCH}")
290291
if(${Acts_VERSION} VERSION_LESS ${Acts_VERSION_MIN}
@@ -325,7 +326,7 @@ endmacro()
325326
macro(plugin_add_irt _name)
326327

327328
if(NOT IRT_FOUND)
328-
find_package(IRT REQUIRED)
329+
find_package(IRT ${IRT_VERSION_MIN} REQUIRED)
329330
endif()
330331

331332
# FIXME: IRTConfig.cmake sets INTERFACE_INCLUDE_DIRECTORIES to
@@ -346,15 +347,18 @@ endmacro()
346347
macro(plugin_add_event_model _name)
347348

348349
if(NOT podio_FOUND)
349-
find_package(podio REQUIRED)
350+
find_package(podio ${podio_VERSION_MIN} QUIET)
351+
if(NOT podio_FOUND)
352+
find_package(podio 1.0 REQUIRED)
353+
endif()
350354
endif()
351355

352356
if(NOT EDM4HEP_FOUND)
353-
find_package(EDM4HEP REQUIRED)
357+
find_package(EDM4HEP ${EDM4HEP_VERSION_MIN} REQUIRED)
354358
endif()
355359

356360
if(NOT EDM4EIC_FOUND)
357-
find_package(EDM4EIC REQUIRED)
361+
find_package(EDM4EIC ${EDM4EIC_VERSION_MIN} REQUIRED)
358362
endif()
359363

360364
# Add include directories
@@ -373,7 +377,7 @@ endmacro()
373377
macro(plugin_add_cern_root _name)
374378

375379
if(NOT ROOT_FOUND)
376-
find_package(ROOT REQUIRED)
380+
find_package(ROOT ${ROOT_VERSION_MIN} REQUIRED)
377381
endif()
378382

379383
# Add libraries
@@ -385,7 +389,7 @@ endmacro()
385389
macro(plugin_add_fastjet _name)
386390

387391
if(NOT FASTJET_FOUND)
388-
find_package(FastJet REQUIRED)
392+
find_package(FastJet ${FastJet_VERSION_MIN} REQUIRED)
389393
endif()
390394

391395
# Add include directories
@@ -401,7 +405,7 @@ endmacro()
401405
macro(plugin_add_fastjettools _name)
402406

403407
if(NOT FJTOOLS_FOUND)
404-
find_package(FastJetTools REQUIRED)
408+
find_package(FastJetTools ${FastJet_VERSION_MIN} REQUIRED)
405409
endif()
406410

407411
# Add include directories
@@ -417,7 +421,7 @@ endmacro()
417421
macro(plugin_add_fastjetcontrib _name)
418422

419423
if(NOT FJCONTRIB_FOUND)
420-
find_package(FastJetContrib REQUIRED)
424+
find_package(FastJetContrib ${FastJetContrib_VERSION_MIN} REQUIRED)
421425
endif()
422426

423427
# Add include directories
@@ -433,7 +437,7 @@ endmacro()
433437
macro(plugin_add_onnxruntime _name)
434438

435439
if(NOT onnxruntime_FOUND)
436-
find_package(onnxruntime CONFIG)
440+
find_package(onnxruntime ${onnxruntime_MIN_VERSION} CONFIG)
437441
endif()
438442

439443
# Add libraries

0 commit comments

Comments
 (0)