Repository navigation
[RFC,cmake] A layer of smoke: avoid by using file sets for library generation - #23061
ferdymercury wants to merge 6 commits into
Conversation
Test Results 21 files 21 suites 3d 7h 4m 44s ⏱️ For more details on these failures, see this check. Results for commit 991804a. ♻️ This comment has been updated with latest results. |
3f70b76 to
72eff9c
Compare
|
@guitargeek before I start with other targets, do you prefer the compact FILE_SET layout or the original one where each thing is in its own line? |
|
I prefer the tighter new layout. I guess you too, since you suggested to change to it? Question: do you intend your new functions to be public for ROOT users who integrate ROOT in their projects (see https://root.cern/manual/integrate_root_into_my_cmake_project/)? We have to be a bit more careful with RootMacros actually, because it's also implicitly included when you find ROOT via CMake: https://github.com/root-project/root/blob/master/cmake/scripts/ROOTConfig.cmake.in#L81 So we have to kind of treat |
trying to fix
2026-11-05T12:36:40.6393830Z Warning in <CheckModuleValid>: after creating module "RooFitXRooFit" the following headers are not part of that module:
2026-11-05T12:36:40.7063250Z /Users/sftnight/ROOT-CI/build/include/ROOT.modulemap:2953:46: error: cannot emit module RooFitXRooFit: size must be explicitly specified for missing header file "RooFit/xRooFit/xRooFit.h"
2026-11-05T12:36:40.7063940Z module "RooFit/xRooFit/xRooFit.h" { header "RooFit/xRooFit/xRooFit.h" export * }
2026-11-05T12:36:40.7064260Z ^
2026-11-05T12:36:40.7064810Z /Users/sftnight/ROOT-CI/build/include/ROOT.modulemap:2954:47: error: cannot emit module RooFitXRooFit: size must be explicitly specified for missing header file "RooFit/xRooFit/xRooNode.h"
2026-11-05T12:36:40.7065490Z module "RooFit/xRooFit/xRooNode.h" { header "RooFit/xRooFit/xRooNode.h" export * }
5304ae8 to
5755317
Compare
0bc04bc to
991804a
Compare
As you prefer, no strong opinion on that. In any case I have implemented everything as new functions to be backward compatible. I have also roofitcore converted, but I will not push the commit yet to easen getting an impression on a smaller diff. Unless you prefer it already now. |
In here: #24038 also with TMVA |
This Pull request:
Changes or fixes:
Note: this PR is totally experimental.
ROOT CMake macros are often... "a layer of smoke", masking common things such as PUBLIC and PRIVATE with ambiguous names such as DEPENDENCIES and LIBRARIES. No outside user (and often not inside ones) will know what they mean unless looking carefully in the instructions.
With CMake FILE_SETs, some macro stuff can be replaced with more standard CMake terminology. Clear advantage: an outside user with CMake knowledge will immediately know what you are doing no matter if it's the first time they look into ROOT. Otherwise, you need to dive in into a lot of cryptic macro layers...
This is an ongoing draft, it specifies more the structure /philosophy rather than being fully functional. For discussion and sandbox experiments, a few libraries were chosen. Not all tests are passing.
See also discussion in #20533 (comment)