From 808f445bca8e31b3fd8c98a5fd2395525a7d8514 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 25 Nov 2025 16:26:03 +0100 Subject: [PATCH] [core] Add core headers to private CMake target FILE_SETS This is a non-functional change, it only improves the IDE experience. In the future, we could avoid copying headers to build-directory and verbose target_include_directory statements by just using the file_sets. Same with INSTALL, would go through headers. This could ultimately go into the ROOT custom macros, but for the moment let's only do the minimal changes for the IDE and let the rest for later. --- core/base/CMakeLists.txt | 9 +++--- core/clib/CMakeLists.txt | 31 +++++++++++++++++++- core/clingutils/CMakeLists.txt | 16 +++++++++++ core/cont/CMakeLists.txt | 20 +++++++++++-- core/dictgen/CMakeLists.txt | 30 +++++++++++++++++++ core/foundation/CMakeLists.txt | 31 +++++++++++++++++++- core/gui/CMakeLists.txt | 21 +++++++++++++- core/imt/CMakeLists.txt | 27 +++++++++++++++-- core/lz4/CMakeLists.txt | 11 +++++++ core/lzma/CMakeLists.txt | 12 +++++++- core/macosx/CMakeLists.txt | 14 +++++++++ core/meta/CMakeLists.txt | 18 +++++++++++- core/metacling/src/CMakeLists.txt | 31 ++++++++++++++++++++ core/multiproc/CMakeLists.txt | 37 ++++++++++++++++++------ core/rint/CMakeLists.txt | 23 +++++++++++++-- core/testsupport/CMakeLists.txt | 13 +++++++++ core/textinput/CMakeLists.txt | 34 ++++++++++++++++++++++ core/thread/CMakeLists.txt | 48 ++++++++++++++++++++++--------- core/unix/CMakeLists.txt | 12 ++++++++ core/winnt/CMakeLists.txt | 16 +++++++++++ core/zip/CMakeLists.txt | 16 +++++++++++ core/zstd/CMakeLists.txt | 11 +++++++ 22 files changed, 443 insertions(+), 38 deletions(-) diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt index f6b8a0be390cd..395fedf0dfb8b 100644 --- a/core/base/CMakeLists.txt +++ b/core/base/CMakeLists.txt @@ -199,15 +199,15 @@ set(BASE_SOURCES src/TVirtualX.cxx ) -set(RELATIVE_BASE_INC_HEADERS ${BASE_HEADERS}) -list(TRANSFORM RELATIVE_BASE_INC_HEADERS PREPEND inc/) +set(RELATIVE_INC_HEADERS ${BASE_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) # only here complete list of headers can be propogated to parent cmake file set_property(TARGET Core APPEND PROPERTY DICT_HEADERS ${BASE_HEADERS}) target_sources(Core PRIVATE ${BASE_SOURCES}) -if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") # https://discourse.cmake.org/t/file-set-xyz-is-listed-in-interface-file-sets-of-w-but-has-not-been-exported/9131/3 +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") target_sources( Core PRIVATE @@ -215,7 +215,8 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") # https://discourse.cmake.org/t/file TYPE HEADERS BASE_DIRS inc/ src/ FILES - ${RELATIVE_BASE_INC_HEADERS} + ${RELATIVE_INC_HEADERS} + inc/LinkDef.h src/TListOfTypes.h ) endif() diff --git a/core/clib/CMakeLists.txt b/core/clib/CMakeLists.txt index 64a874c3bc8f5..034ae14af7c48 100644 --- a/core/clib/CMakeLists.txt +++ b/core/clib/CMakeLists.txt @@ -8,12 +8,28 @@ # CMakeLists.txt file for building ROOT core/clib package ############################################################################ -set_property(TARGET Core APPEND PROPERTY DICT_HEADERS +set(CLIB_HEADERS strlcpy.h snprintf.h strtok.h ) +set(RELATIVE_INC_HEADERS ${CLIB_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +set(CLIB_RES_HEADERS + mmalloc.h + mmconfig.h + mmprivate.h +) + +set(RELATIVE_RES_HEADERS ${CLIB_RES_HEADERS}) +list(TRANSFORM RELATIVE_RES_HEADERS PREPEND res/) + +set_property(TARGET Core APPEND PROPERTY DICT_HEADERS + ${CLIB_HEADERS} +) + ROOT_OBJECT_LIBRARY(Clib src/attach.c src/detach.c @@ -31,6 +47,19 @@ ROOT_OBJECT_LIBRARY(Clib src/strlcpy.c ) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Clib + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ res/ + FILES + ${RELATIVE_INC_HEADERS} + ${RELATIVE_RES_HEADERS} + ) +endif() + target_include_directories(Clib PUBLIC $ diff --git a/core/clingutils/CMakeLists.txt b/core/clingutils/CMakeLists.txt index c3d1294aa0c87..f3589373e39be 100644 --- a/core/clingutils/CMakeLists.txt +++ b/core/clingutils/CMakeLists.txt @@ -25,6 +25,22 @@ ROOT_OBJECT_LIBRARY(ClingUtils src/TClingUtils.cxx ) +set(RELATIVE_RES_HEADERS RStl.h TClingUtils.h) +list(TRANSFORM RELATIVE_RES_HEADERS PREPEND res/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + ClingUtils + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS res/ inc/ + FILES + ${RELATIVE_RES_HEADERS} + inc/root_std_complex.h + ) +endif() + if(NOT MSVC) target_compile_options(ClingUtils PRIVATE -Wno-error) endif() diff --git a/core/cont/CMakeLists.txt b/core/cont/CMakeLists.txt index 421f8e8f0bee3..8a968e5a1db80 100644 --- a/core/cont/CMakeLists.txt +++ b/core/cont/CMakeLists.txt @@ -7,8 +7,7 @@ ############################################################################ # CMakeLists.txt file for building ROOT core/cont package ############################################################################ - -set_property(TARGET Core APPEND PROPERTY DICT_HEADERS +set(CONT_HEADERS ROOT/TSeq.hxx TArrayC.h TArrayD.h @@ -40,6 +39,8 @@ set_property(TARGET Core APPEND PROPERTY DICT_HEADERS TVirtualCollectionProxy.h ) +set_property(TARGET Core APPEND PROPERTY DICT_HEADERS ${CONT_HEADERS}) + target_sources(Core PRIVATE src/TArrayC.cxx src/TArray.cxx @@ -72,6 +73,21 @@ target_sources(Core PRIVATE target_include_directories(Core PUBLIC $) +set(RELATIVE_INC_HEADERS ${CONT_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + ) +endif() + ROOT_INSTALL_HEADERS() ROOT_ADD_TEST_SUBDIRECTORY(test) diff --git a/core/dictgen/CMakeLists.txt b/core/dictgen/CMakeLists.txt index 3df26f190b2bd..ab601687d258c 100644 --- a/core/dictgen/CMakeLists.txt +++ b/core/dictgen/CMakeLists.txt @@ -27,6 +27,36 @@ ROOT_OBJECT_LIBRARY(Dictgen XMLReader.cxx ) +set(DICTGEN_HEADERS + BaseSelectionRule.h + ClassSelectionRule.h + cygpath.h + DictSelectionReader.h + LinkdefReader.h + OptionParser.h + rootcling_impl.h + Scanner.h + SelectionRules.h + TModuleGenerator.h + VariableSelectionRule.h + XMLReader.h +) + +set(RELATIVE_RES_HEADERS ${DICTGEN_HEADERS}) +list(TRANSFORM RELATIVE_RES_HEADERS PREPEND res/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Dictgen + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS res/ + FILES + ${RELATIVE_RES_HEADERS} + ) +endif() + # This directory contains files that include llvm, which can give warnings. if(NOT MSVC) target_compile_options(Dictgen PRIVATE -Wno-error) diff --git a/core/foundation/CMakeLists.txt b/core/foundation/CMakeLists.txt index 63b93ac475843..410894214651f 100644 --- a/core/foundation/CMakeLists.txt +++ b/core/foundation/CMakeLists.txt @@ -8,7 +8,7 @@ # CMakeLists.txt file for building ROOT core/foundation package ############################################################################ -set_property(TARGET Core APPEND PROPERTY DICT_HEADERS +set(FOUNDATION_HEADERS ESTLType.h RStringView.h TClassEdit.h @@ -26,6 +26,8 @@ set_property(TARGET Core APPEND PROPERTY DICT_HEADERS ROOT/TypeTraits.hxx ) +set_property(TARGET Core APPEND PROPERTY DICT_HEADERS ${FOUNDATION_HEADERS}) + set(FOUNDATION_SOURCES src/FoundationUtils.cxx src/RConversionRuleParser.cxx @@ -38,6 +40,8 @@ set(FOUNDATION_SOURCES set(FOUNDATION_HEADER_DIRS inc/) + + target_sources(Core PRIVATE ${FOUNDATION_SOURCES}) target_include_directories(Core @@ -62,5 +66,30 @@ set_target_properties(Foundation_Stage1 PROPERTIES VISIBILITY_INLINES_HIDDEN "ON" ) + +set(RELATIVE_INC_HEADERS ${FOUNDATION_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Foundation_Stage1 + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + ) + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + ) +endif() + ROOT_INSTALL_HEADERS(${FOUNDATION_HEADER_DIRS}) ROOT_ADD_TEST_SUBDIRECTORY(test) diff --git a/core/gui/CMakeLists.txt b/core/gui/CMakeLists.txt index b51d25f3a6046..dc70c777de000 100644 --- a/core/gui/CMakeLists.txt +++ b/core/gui/CMakeLists.txt @@ -8,7 +8,7 @@ # CMakeLists.txt file for building ROOT core/meta package ############################################################################ -set_property(TARGET Core APPEND PROPERTY DICT_HEADERS +set(GUI_HEADERS GuiTypes.h TApplicationImp.h TBrowser.h @@ -25,6 +25,10 @@ set_property(TARGET Core APPEND PROPERTY DICT_HEADERS TToggle.h ) + + +set_property(TARGET Core APPEND PROPERTY DICT_HEADERS ${GUI_HEADERS}) + target_sources(Core PRIVATE src/InitGui.cxx src/TApplicationImp.cxx @@ -46,4 +50,19 @@ target_include_directories(Core PUBLIC $ ) +set(RELATIVE_INC_HEADERS ${GUI_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + ) +endif() + ROOT_INSTALL_HEADERS() diff --git a/core/imt/CMakeLists.txt b/core/imt/CMakeLists.txt index c99e8cd53ece9..a0f84d72136bb 100644 --- a/core/imt/CMakeLists.txt +++ b/core/imt/CMakeLists.txt @@ -25,13 +25,15 @@ target_link_libraries(Imt PRIVATE Thread INTERFACE Core) if(imt) target_link_libraries(Imt PRIVATE TBB::tbb) - - ROOT_GENERATE_DICTIONARY(G__Imt STAGE1 + set(IMT_HEADERS ROOT/TTaskGroup.hxx ROOT/RTaskArena.hxx ROOT/RSlotStack.hxx ROOT/TExecutor.hxx ROOT/TThreadExecutor.hxx + ) + ROOT_GENERATE_DICTIONARY(G__Imt STAGE1 + ${IMT_HEADERS} LINKDEF LinkDef.h MODULE @@ -52,8 +54,11 @@ if(imt) ROOT_ADD_TEST_SUBDIRECTORY(test) else() - ROOT_GENERATE_DICTIONARY(G__Imt STAGE1 + set(IMT_HEADERS ROOT/TExecutor.hxx + ) + ROOT_GENERATE_DICTIONARY(G__Imt STAGE1 + ${IMT_HEADERS} LINKDEF LinkDef.h MODULE @@ -64,4 +69,20 @@ else() ) endif() +set(RELATIVE_INC_HEADERS ${IMT_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Imt + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + inc/LinkDef.h + ) +endif() + ROOT_INSTALL_HEADERS() diff --git a/core/lz4/CMakeLists.txt b/core/lz4/CMakeLists.txt index ca23f250b59e1..a8422e5d8a35b 100644 --- a/core/lz4/CMakeLists.txt +++ b/core/lz4/CMakeLists.txt @@ -9,5 +9,16 @@ target_link_libraries(Core PRIVATE xxHash::xxHash LZ4::LZ4) target_include_directories(Core PUBLIC $ ) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + inc/ZipLZ4.h + ) +endif() ROOT_INSTALL_HEADERS() diff --git a/core/lzma/CMakeLists.txt b/core/lzma/CMakeLists.txt index f19eec364cb8d..2aa6d43497530 100644 --- a/core/lzma/CMakeLists.txt +++ b/core/lzma/CMakeLists.txt @@ -13,5 +13,15 @@ target_sources(Core PRIVATE src/ZipLZMA.c) target_link_libraries(Core PRIVATE LibLZMA::LibLZMA) target_include_directories(Core PUBLIC $) - +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + inc/ZipLZMA.h + ) +endif() ROOT_INSTALL_HEADERS() diff --git a/core/macosx/CMakeLists.txt b/core/macosx/CMakeLists.txt index e3e38e959316f..7d4d8d84a40e8 100644 --- a/core/macosx/CMakeLists.txt +++ b/core/macosx/CMakeLists.txt @@ -35,6 +35,20 @@ if(cocoa) target_sources(Core PRIVATE $) + if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Macosx + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + inc/CocoaUtils.h + inc/TMacOSXSystem.h + inc/LinkDef.h + ) + endif() + endif() ROOT_INSTALL_HEADERS() diff --git a/core/meta/CMakeLists.txt b/core/meta/CMakeLists.txt index 8e010343a9a34..efb8f35e3ecbf 100644 --- a/core/meta/CMakeLists.txt +++ b/core/meta/CMakeLists.txt @@ -8,7 +8,7 @@ # CMakeLists.txt file for building ROOT core/meta package ############################################################################ -set_property(TARGET Core APPEND PROPERTY DICT_HEADERS +set(META_HEADERS TBaseClass.h TClassGenerator.h TClass.h @@ -52,6 +52,8 @@ set_property(TARGET Core APPEND PROPERTY DICT_HEADERS TVirtualObject.h ) +set_property(TARGET Core APPEND PROPERTY DICT_HEADERS ${META_HEADERS}) + target_sources(Core PRIVATE src/TBaseClass.cxx src/TClass.cxx @@ -93,5 +95,19 @@ target_include_directories(Core $ ) +set(RELATIVE_INC_HEADERS ${META_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + ) +endif() ROOT_INSTALL_HEADERS() ROOT_ADD_TEST_SUBDIRECTORY(test) diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt index ce830802a9b21..3339dfdd19aaf 100644 --- a/core/metacling/src/CMakeLists.txt +++ b/core/metacling/src/CMakeLists.txt @@ -37,6 +37,37 @@ ROOT_OBJECT_LIBRARY(MetaCling TClingValue.cxx ) +set (METACLING_HEADERS + ClingRAII.h + TClingBaseClassInfo.h + TClingCallbacks.h + TClingCallFunc.h + TClingClassInfo.h + TClingDataMemberInfo.h + TClingDeclInfo.h + TClingDiagnostics.h + TCling.h + TClingMemberIter.h + TClingMethodArgInfo.h + TClingMethodInfo.h + TClingRdictModuleFileExtension.h + TClingTypedefInfo.h + TClingTypeInfo.h + TClingValue.h +) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + MetaCling + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS ./ + FILES + ${METACLING_HEADERS} + ) +endif() + # This directory contains files that include llvm, which can give warnings. if(NOT MSVC) target_compile_options(MetaCling PRIVATE -Wno-error) diff --git a/core/multiproc/CMakeLists.txt b/core/multiproc/CMakeLists.txt index b506d8de530e4..125e4ceac0bfa 100644 --- a/core/multiproc/CMakeLists.txt +++ b/core/multiproc/CMakeLists.txt @@ -12,16 +12,21 @@ if(WIN32) return() endif() + +set(MULTIPROC_HEADERS + MPCode.h + MPSendRecv.h + PoolUtils.h + TMPClient.h + TMPWorker.h + TMPWorkerExecutor.h + TProcPool.h + ROOT/TProcessExecutor.hxx +) + ROOT_STANDARD_LIBRARY_PACKAGE(MultiProc STAGE1 HEADERS - MPCode.h - MPSendRecv.h - PoolUtils.h - TMPClient.h - TMPWorker.h - TMPWorkerExecutor.h - TProcPool.h - ROOT/TProcessExecutor.hxx + ${MULTIPROC_HEADERS} SOURCES src/MPSendRecv.cxx src/TMPClient.cxx @@ -33,3 +38,19 @@ ROOT_STANDARD_LIBRARY_PACKAGE(MultiProc STAGE1 Core Net ) + +set(RELATIVE_INC_HEADERS ${MULTIPROC_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + MultiProc + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + inc/LinkDef.h + ) +endif() diff --git a/core/rint/CMakeLists.txt b/core/rint/CMakeLists.txt index 80e9aea0e0fe6..cec473c3899c3 100644 --- a/core/rint/CMakeLists.txt +++ b/core/rint/CMakeLists.txt @@ -8,11 +8,15 @@ # CMakeLists.txt file for building ROOT core/rint package ############################################################################ +set(RINT_HEADERS + TRint.h + TTabCom.h +) + ROOT_STANDARD_LIBRARY_PACKAGE(Rint STAGE1 HEADERS - TRint.h - TTabCom.h + ${RINT_HEADERS} SOURCES src/TRint.cxx src/TTabCom.cxx @@ -23,5 +27,20 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Rint ) target_include_directories(Core PRIVATE inc) +set(RELATIVE_INC_HEADERS ${RINT_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Rint + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + inc/LinkDef.h + ) +endif() ROOT_ADD_TEST_SUBDIRECTORY(test) diff --git a/core/testsupport/CMakeLists.txt b/core/testsupport/CMakeLists.txt index eaa1b032e0451..71ed513e25bb8 100644 --- a/core/testsupport/CMakeLists.txt +++ b/core/testsupport/CMakeLists.txt @@ -26,6 +26,19 @@ install(TARGETS ${libname} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${header_dir}) set_property(GLOBAL APPEND PROPERTY ROOT_EXPORTED_TARGETS ${libname}) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + ${libname} + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/${header_dir} + FILES + inc/${header_dir}/TestSupport.hxx + ) +endif() + + # Make it usable inside and outside of ROOT under a single name if somebody writes their own tests using ROOT_ADD_GTEST add_library(ROOT::TestSupport ALIAS ${libname}) diff --git a/core/textinput/CMakeLists.txt b/core/textinput/CMakeLists.txt index a06f61d5a0b96..1e2cf2fc12033 100644 --- a/core/textinput/CMakeLists.txt +++ b/core/textinput/CMakeLists.txt @@ -36,4 +36,38 @@ target_include_directories(Core src ) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ src/ + FILES + inc/Getline.h + src/Getline_color.h + src/textinput/Callbacks.h + src/textinput/Callbacks.h + src/textinput/Color.h + src/textinput/Display.h + src/textinput/Editor.h + src/textinput/History.h + src/textinput/InputData.h + src/textinput/KeyBinding.h + src/textinput/Range.h + src/textinput/Reader.h + src/textinput/SignalHandler.h + src/textinput/StreamReader.h + src/textinput/StreamReaderUnix.h + src/textinput/StreamReaderWin.h + src/textinput/TerminalConfigUnix.h + src/textinput/TerminalDisplay.h + src/textinput/TerminalDisplayUnix.h + src/textinput/TerminalDisplayWin.h + src/textinput/Text.h + src/textinput/TextInputContext.h + src/textinput/TextInput.h + ) +endif() + ROOT_INSTALL_HEADERS() diff --git a/core/thread/CMakeLists.txt b/core/thread/CMakeLists.txt index 83133efce59a4..19dae01ef2e38 100644 --- a/core/thread/CMakeLists.txt +++ b/core/thread/CMakeLists.txt @@ -27,23 +27,27 @@ else() ) endif() +set(THREAD_HEADERS + TAtomicCount.h + TCondition.h + TConditionImp.h + TMutex.h + TMutexImp.h + TRWLock.h + TSemaphore.h + TThreadFactory.h + TThread.h + TThreadImp.h + TThreadPool.h + ROOT/TRWSpinLock.hxx + ROOT/TSpinMutex.hxx + ROOT/TThreadedObject.hxx +) + ROOT_STANDARD_LIBRARY_PACKAGE(Thread HEADERS ${PLATFORM_HEADERS} - TAtomicCount.h - TCondition.h - TConditionImp.h - TMutex.h - TMutexImp.h - TRWLock.h - TSemaphore.h - TThreadFactory.h - TThread.h - TThreadImp.h - TThreadPool.h - ROOT/TRWSpinLock.hxx - ROOT/TSpinMutex.hxx - ROOT/TThreadedObject.hxx + ${THREAD_HEADERS} SOURCES src/TCondition.cxx src/TConditionImp.cxx @@ -69,6 +73,22 @@ target_include_directories(Core PUBLIC $ ) +set(RELATIVE_INC_HEADERS ${PLATFORM_HEADERS} ${THREAD_HEADERS}) +list(TRANSFORM RELATIVE_INC_HEADERS PREPEND inc/) + +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Thread + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + ${RELATIVE_INC_HEADERS} + inc/LinkDef.h + ) +endif() + target_link_libraries(Thread PUBLIC ${CMAKE_THREAD_LIBS_INIT}) target_include_directories(Thread PUBLIC diff --git a/core/unix/CMakeLists.txt b/core/unix/CMakeLists.txt index f1bfed48174af..91742f801e719 100644 --- a/core/unix/CMakeLists.txt +++ b/core/unix/CMakeLists.txt @@ -15,6 +15,18 @@ endif() set_property(TARGET Core APPEND PROPERTY DICT_HEADERS TUnixSystem.h) target_sources(Core PRIVATE src/TUnixSystem.cxx) target_include_directories(Core PRIVATE inc ../clib/res) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + inc/TUnixSystem.h + inc/LinkDef.h + ) +endif() if (CMAKE_SYSTEM_NAME MATCHES FreeBSD) target_link_libraries(Core PRIVATE execinfo util) diff --git a/core/winnt/CMakeLists.txt b/core/winnt/CMakeLists.txt index e5810ab8ecb4a..1f1aa47886716 100644 --- a/core/winnt/CMakeLists.txt +++ b/core/winnt/CMakeLists.txt @@ -30,4 +30,20 @@ target_link_libraries(Core PRIVATE target_include_directories(Core PRIVATE inc) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + inc/TWin32SplashThread.h + inc/TWinNTSystem.h + inc/Win32Constants.h + inc/Windows4Root.h + inc/LinkDef.h + ) +endif() + ROOT_INSTALL_HEADERS() diff --git a/core/zip/CMakeLists.txt b/core/zip/CMakeLists.txt index 558cbde6aaed1..13f1947f762a8 100644 --- a/core/zip/CMakeLists.txt +++ b/core/zip/CMakeLists.txt @@ -19,6 +19,22 @@ target_include_directories(Core PUBLIC $ ) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ src/ + FILES + inc/Compression.h + inc/RZip.h + src/Bits.h + src/Tailor.h + src/ZIP.h + ) +endif() + ROOT_INSTALL_HEADERS() ROOT_ADD_TEST_SUBDIRECTORY(test) diff --git a/core/zstd/CMakeLists.txt b/core/zstd/CMakeLists.txt index 899fcc8dbd3e7..9c80673d7b113 100644 --- a/core/zstd/CMakeLists.txt +++ b/core/zstd/CMakeLists.txt @@ -8,4 +8,15 @@ target_link_libraries(Core PRIVATE ZSTD::ZSTD) target_include_directories(Core PUBLIC $) +if(NOT CMAKE_VERSION VERSION_LESS "3.23.0") + target_sources( + Core + PRIVATE + FILE_SET private_header_files + TYPE HEADERS + BASE_DIRS inc/ + FILES + inc/ZipZSTD.h + ) +endif() ROOT_INSTALL_HEADERS()