diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt
index cb778f9702829a2da2a5337931dd437e23881cc2..5c6436cc525a48830f5e6323e7d47442c9b3eee1 100644
--- a/core/base/CMakeLists.txt
+++ b/core/base/CMakeLists.txt
@@ -6,29 +6,215 @@ ROOT_ADD_TEST_SUBDIRECTORY(test)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/res ${CMAKE_CURRENT_SOURCE_DIR}/../foundation/res)
 
-ROOT_GLOB_HEADERS(Base_dict_headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/LinkDef?.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/T*.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/Rtypes.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/Gtypes.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/Riostream.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/GuiTypes.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/MessageTypes.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/KeySymbols.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/Buttons.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/Bytes.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/Byteswap.h
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/ROOT/TExecutor.hxx
-                                    ${CMAKE_CURRENT_SOURCE_DIR}/inc/ROOT/TSequentialExecutor.hxx
-                                    )
+set(Base_dict_headers LinkDef?.h
+   Rtypes.h
+   Gtypes.h
+   GuiTypes.h
+   Riostream.h
+   MessageTypes.h
+   KeySymbols.h
+   Buttons.h
+   Bytes.h
+   Byteswap.h
+   ROOT/TExecutor.hxx
+   ROOT/TSequentialExecutor.hxx
+   TApplication.h
+   TBrowserImp.h
+   TException.h
+   TObject.h
+   TRefCnt.h
+   TSystem.h
+   TVirtualMutex.h
+   TApplicationImp.h
+   TBuffer3D.h
+   TExec.h
+   TObjectSpy.h
+   TRef.h
+   TTask.h
+   TVirtualPadEditor.h
+   TAtt3D.h
+   TBuffer3DTypes.h
+   TFileCollection.h
+   TObjString.h
+   TRegexp.h
+   TThreadSlots.h
+   TVirtualPad.h
+   TAttAxis.h
+   TBuffer.h
+   TFileInfo.h
+   TParameter.h
+   TRemoteObject.h
+   TTime.h
+   TVirtualPadPainter.h
+   TAttBBox2D.h
+   TCanvasImp.h
+   TFolder.h
+   TPluginManager.h
+   TROOT.h
+   TTimer.h
+   TVirtualPerfStats.h
+   TAttBBox.h
+   TColorGradient.h
+   TGuiFactory.h
+   TPoint.h
+   TRootIOCtor.h
+   TTimeStamp.h
+   TVirtualPS.h
+   TAttFill.h
+   TColor.h
+   TInetAddress.h
+   TPRegexp.h
+   TStopwatch.h
+   TUri.h
+   TVirtualQConnection.h
+   TAttLine.h
+   TContextMenu.h
+   TInspectorImp.h
+   TProcessID.h
+   TStorage.h
+   TUrl.h
+   TVirtualRWMutex.h
+   TAttMarker.h
+   TContextMenuImp.h
+   TMacro.h
+   TProcessUUID.h
+   TString.h
+   TUUID.h
+   TVirtualTableInterface.h
+   TAttPad.h
+   TControlBarImp.h
+   TMathBase.h
+   TQClass.h
+   TStringLong.h
+   TVersionCheck.h
+   TVirtualViewer3D.h
+   TAttText.h
+   TDatime.h
+   TMD5.h
+   TQCommand.h
+   TStyle.h
+   TVirtualAuth.h
+   TVirtualX.h
+   TBase64.h
+   TDirectory.h
+   TMemberInspector.h
+   TQConnection.h
+   TSysEvtHandler.h
+   TVirtualFFT.h
+   TBenchmark.h
+   TEnv.h
+   TMessageHandler.h
+   TQObject.h
+   TSystemDirectory.h
+   TVirtualGL.h
+   TBrowser.h
+   TError.h
+   TNamed.h
+   TRedirectOutputGuard.h
+   TSystemFile.h
+   TVirtualMonitoring.h
+)
 if(root7)
-    set(root7src v7/src/*.cxx)
-    set(Base_v7_dict_headers ${CMAKE_CURRENT_SOURCE_DIR}/v7/inc/ROOT/RDrawable.hxx
-                             ${CMAKE_CURRENT_SOURCE_DIR}/v7/inc/ROOT/TDirectoryEntry.hxx
-                             ${CMAKE_CURRENT_SOURCE_DIR}/v7/inc/ROOT/TIndexIter.hxx
-                             ${CMAKE_CURRENT_SOURCE_DIR}/v7/inc/ROOT/TLogger.hxx
+    set(root7src v7/src/RDrawable.cxx
+        v7/src/TLogger.cxx)
+    set(Base_v7_dict_headers v7/inc/ROOT/RDrawable.hxx
+                             v7/inc/ROOT/TDirectoryEntry.hxx
+                             v7/inc/ROOT/TIndexIter.hxx
+                             v7/inc/ROOT/TLogger.hxx
     )
 endif()
-ROOT_GLOB_SOURCES(sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src src/*.cxx ${root7src})
+set(sources InitGui.cxx
+   TApplicationImp.cxx
+   TAttMarker.cxx
+   TBuffer3D.cxx
+   TControlBarImp.cxx
+   TFileCollection.cxx
+   TObject.cxx
+   TProcessUUID.cxx
+   TRemoteObject.cxx
+   TSysEvtHandler.cxx
+   TTimeStamp.cxx
+   TVirtualMutex.cxx
+   TVirtualX.cxx
+   Match.cxx
+   TAtt3D.cxx
+   TAttPad.cxx
+   TBuffer.cxx
+   TDatime.cxx
+   TFileInfo.cxx
+   TMacro.cxx
+   TObjectSpy.cxx
+   TQCommand.cxx
+   TROOT.cxx
+   TSystem.cxx
+   TUri.cxx
+   TVirtualPad.cxx
+   roota.cxx
+   TAttAxis.cxx
+   TAttText.cxx
+   TCanvasImp.cxx
+   TDirectory.cxx
+   TFolder.cxx
+   TMathBase.cxx
+   TObjString.cxx
+   TQConnection.cxx
+   TStopwatch.cxx
+   TSystemDirectory.cxx
+   TUrl.cxx
+   TVirtualPadEditor.cxx
+   TAttBBox2D.cxx
+   TBase64.cxx
+   TColor.cxx
+   TEnv.cxx
+   TGuiFactory.cxx
+   TMD5.cxx
+   TParameter.cxx
+   TQObject.cxx
+   TStorage.cxx
+   TSystemFile.cxx
+   TUUID.cxx
+   TVirtualPadPainter.cxx
+   String.cxx
+   TAttBBox.cxx
+   TBenchmark.cxx
+   TColorGradient.cxx
+   TError.cxx
+   TInetAddress.cxx
+   TMemberInspector.cxx
+   TPluginManager.cxx
+   TRefCnt.cxx
+   TString.cxx
+   TTask.cxx
+   TVirtualFFT.cxx
+   TVirtualPerfStats.cxx
+   Stringio.cxx
+   TAttFill.cxx
+   TBrowser.cxx
+   TContextMenu.cxx
+   TException.cxx
+   TInspectorImp.cxx
+   TMessageHandler.cxx
+   TPRegexp.cxx
+   TRef.cxx
+   TStringLong.cxx
+   TTime.cxx
+   TVirtualGL.cxx
+   TVirtualPS.cxx
+   TApplication.cxx
+   TAttLine.cxx
+   TBrowserImp.cxx
+   TContextMenuImp.cxx
+   TExec.cxx
+   TListOfTypes.cxx
+   TNamed.cxx
+   TProcessID.cxx
+   TRegexp.cxx
+   TStyle.cxx
+   TTimer.cxx
+   TVirtualMonitoring.cxx
+   TVirtualViewer3D.cxx
+   ${root7src}
+)
 
 # libCore is linked against zlib (based on the location returned by find_package or builtin_zlib). The dictionary of
 # libCore, G__Core.cxx, should contain the include path to zlib.h in order to keep the symbol and header files in sync.
@@ -74,4 +260,3 @@ if(GCC_MAJOR EQUAL 4 AND GCC_MINOR EQUAL 1)
   set_source_files_properties(src/TString.cxx src/TContextMenu.cxx
                               COMPILE_FLAGS -Wno-strict-aliasing )
 endif()
-
diff --git a/core/clib/CMakeLists.txt b/core/clib/CMakeLists.txt
index 2d12d51072d90bb24afa82ac0956577fcce17ab0..7c1e2a682166a29d3e80588d323dd6070ac51ab0 100644
--- a/core/clib/CMakeLists.txt
+++ b/core/clib/CMakeLists.txt
@@ -2,15 +2,35 @@
 # CMakeLists.txt file for building ROOT core/clib package
 ############################################################################
 
+set(sources attach.c
+   detach.c
+   keys.c
+   mfree.c
+   mmapsup.c
+   mmemalign.c
+   mmtrace.c
+   mvalloc.c
+   snprintf.c
+   strlcpy.c
+   Demangle.c
+   getpagesize.c
+   mcalloc.c
+   mmalloc.c
+   mmcheck.c
+   mmstats.c
+   mrealloc.c
+   sbrksup.c
+   strlcat.c
+)
+
 set(Clib_dict_headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/strlcpy.h
                       ${CMAKE_CURRENT_SOURCE_DIR}/inc/snprintf.h PARENT_SCOPE)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/res)
 
-ROOT_OBJECT_LIBRARY(Clib *.c)
+ROOT_OBJECT_LIBRARY(Clib ${sources})
 
 ROOT_INSTALL_HEADERS()
 
 
 
-
diff --git a/core/clingutils/CMakeLists.txt b/core/clingutils/CMakeLists.txt
index a1cccd56cbe493da4b1d6d77009e67313f8bd1e9..2506b9ee724d7a5d50b072f50395fff42bf9d028 100644
--- a/core/clingutils/CMakeLists.txt
+++ b/core/clingutils/CMakeLists.txt
@@ -5,8 +5,11 @@
 # These files depend on cling/clang/llvm; they need to be linked into libCling.
 # They are used by rootcling_stage1, rootcling and libCling.
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
-ROOT_GLOB_HEADERS(headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/*.h)
+set(sources TClingUtils.cxx
+   RStl.cxx
+)
+set(headers root_std_complex.h
+   TClingRuntime.h)
 
 set(ClingUtils_dict_headers ${headers} PARENT_SCOPE)
 
@@ -152,4 +155,3 @@ else()
         COMMENT "Copying LLVM resource and header files")
 endif()
 add_custom_target(LLVMRES DEPENDS ${stamp_file} CLING)
-
diff --git a/core/cont/CMakeLists.txt b/core/cont/CMakeLists.txt
index bb5a82e1338112668bd904fe569c880e260deb7a..96be4c6310c99dceb847ed24113ad75a0515fa55 100644
--- a/core/cont/CMakeLists.txt
+++ b/core/cont/CMakeLists.txt
@@ -6,9 +6,66 @@ ROOT_ADD_TEST_SUBDIRECTORY(test)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/res ${CMAKE_CURRENT_SOURCE_DIR}/../foundation/res)
 
-ROOT_GLOB_HEADERS(headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/*.h ${CMAKE_CURRENT_SOURCE_DIR}/inc/ROOT/*.hxx)
+set(headers ROOT/TSeq.hxx
+   TArrayC.h
+   TArrayF.h
+   TArrayI.h
+   TArrayL.h
+   TBits.h
+   TClassTable.h
+   TCollection.h
+   TExMap.h
+   THashTable.h
+   TList.h
+   TObjArray.h
+   TOrdCollection.h
+   TRefTable.h
+   TSortedList.h
+   TArrayD.h
+   TArray.h
+   TArrayL64.h
+   TArrayS.h
+   TBtree.h
+   TClonesArray.h
+   TCollectionProxyInfo.h
+   THashList.h
+   TIterator.h
+   TMap.h
+   TObjectTable.h
+   TRefArray.h
+   TSeqCollection.h
+   TVirtualCollectionProxy.h
+)
+
+set(sources TArrayC.cxx
+   TArrayD.cxx
+   TArrayI.cxx
+   TArrayL.cxx
+   TBits.cxx
+   TClassTable.cxx
+   TCollection.cxx
+   THashList.cxx
+   TIterator.cxx
+   TMap.cxx
+   TObjectTable.cxx
+   TRefArray.cxx
+   TSeqCollection.cxx
+   TArray.cxx
+   TArrayF.cxx
+   TArrayL64.cxx
+   TArrayS.cxx
+   TBtree.cxx
+   TClonesArray.cxx
+   TExMap.cxx
+   THashTable.cxx
+   TList.cxx
+   TObjArray.cxx
+   TOrdCollection.cxx
+   TRefTable.cxx
+   TSortedList.cxx
+)
 set(Cont_dict_headers ${headers} PARENT_SCOPE)
 
-ROOT_OBJECT_LIBRARY(Cont *.cxx)
+ROOT_OBJECT_LIBRARY(Cont ${sources})
 
 ROOT_INSTALL_HEADERS()
diff --git a/core/dictgen/CMakeLists.txt b/core/dictgen/CMakeLists.txt
index 51643712494900736aafb903e3413195aa5e76aa..b79d867cd0bff74f822f7755fd6c52110f94091b 100644
--- a/core/dictgen/CMakeLists.txt
+++ b/core/dictgen/CMakeLists.txt
@@ -8,7 +8,17 @@
 # These files are linked into rootcling_stage1 and libCling. rootcling accesses
 # them through rootcling_impl.
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
+set(sources src/BaseSelectionRule.cxx
+   src/ClassSelectionRule.cxx
+   src/DictSelectionReader.cxx
+   src/LinkdefReader.cxx
+   src/rootcling_impl.cxx
+   src/Scanner.cxx
+   src/SelectionRules.cxx
+   src/TModuleGenerator.cxx
+   src/VariableSelectionRule.cxx
+   src/XMLReader.cxx
+)
 
 ROOT_OBJECT_LIBRARY(Dictgen
   ${sources}
diff --git a/core/foundation/CMakeLists.txt b/core/foundation/CMakeLists.txt
index e3f6eead5955db50ed2d0425bd794e9c9af30a5b..65221a337d97453fc2e3b8e857af39426b2c1428 100644
--- a/core/foundation/CMakeLists.txt
+++ b/core/foundation/CMakeLists.txt
@@ -2,16 +2,23 @@
 # CMakeLists.txt file for building ROOT core/foundation package
 ############################################################################
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
-
-ROOT_GLOB_HEADERS(headers_h ${CMAKE_CURRENT_SOURCE_DIR}/inc/*.h)
-ROOT_GLOB_HEADERS(headers_hxx ${CMAKE_CURRENT_SOURCE_DIR}/inc/ROOT/*.hxx)
-set(headers ${headers_h} ${headers_hxx})
-list(REMOVE_ITEM headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/ROOT/libcpp_string_view.h)
-list(REMOVE_ITEM headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/ROOT/RWrap_libcpp_string_view.h)
+set(headers ESTLType.h
+   RStringView.h
+   TClassEdit.h
+   ROOT/RIntegerSequence.hxx
+   ROOT/RMakeUnique.hxx
+   ROOT/RNotFn.hxx
+   ROOT/RSpan.hxx
+   ROOT/RStringView.hxx
+   ROOT/span.hxx
+   ROOT/TypeTraits.hxx
+)
+
+set(sources src/RConversionRuleParser.cxx
+   src/TClassEdit.cxx
+)
 
 set(Foundation_dict_headers ${headers} PARENT_SCOPE)
-
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/res)
 
 ROOT_OBJECT_LIBRARY(Foundation ${sources})
diff --git a/core/imt/CMakeLists.txt b/core/imt/CMakeLists.txt
index 2bfbaf78d99ea9b7638ab8e55002d19562f2f287..eca66a142d50ef3d24730196595b2a5700c22fb8 100644
--- a/core/imt/CMakeLists.txt
+++ b/core/imt/CMakeLists.txt
@@ -3,7 +3,7 @@
 ############################################################################
 
 set(headers ROOT/TTaskGroup.hxx)
-set(sources base.cxx TTaskGroup.cxx)
+set(sources src/base.cxx src/TTaskGroup.cxx)
 
 if (imt)
   include_directories(SYSTEM ${TBB_INCLUDE_DIRS})
diff --git a/core/lz4/CMakeLists.txt b/core/lz4/CMakeLists.txt
index ef742978e68a600d942ed4f93bdaef61dbbf8c37..97a05ec6c4b206460d6c962e6e592540cbcc8458 100644
--- a/core/lz4/CMakeLists.txt
+++ b/core/lz4/CMakeLists.txt
@@ -1,8 +1,8 @@
 find_package(LZ4 REQUIRED)
 find_package(xxHash REQUIRED)
 
-ROOT_GLOB_HEADERS(headers inc/ZipLZ4.h)
-ROOT_GLOB_SOURCES(sources src/ZipLZ4.cxx)
+set(headers inc/ZipLZ4.h)
+set(sources src/ZipLZ4.cxx)
 
 ROOT_OBJECT_LIBRARY(Lz4 ${sources})
 target_include_directories(Lz4 PRIVATE ${LZ4_INCLUDE_DIR} ${xxHash_INCLUDE_DIR})
diff --git a/core/lzma/CMakeLists.txt b/core/lzma/CMakeLists.txt
index 6c53bc24db6c153c76774f0628c55843aabf82a6..367f74de3f234d79e150375fe2201a32e4f28448 100644
--- a/core/lzma/CMakeLists.txt
+++ b/core/lzma/CMakeLists.txt
@@ -7,8 +7,8 @@
 #   in cmake/modules/SearchInstalledSoftare.cmake
 
 #---Declare ZipLZMA sources as part of libCore-------------------------------
-set(headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/ZipLZMA.h)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/ZipLZMA.c)
+set(headers inc/ZipLZMA.h)
+set(sources src/ZipLZMA.c)
 
 
 include_directories(${LZMA_INCLUDE_DIR})
diff --git a/core/macosx/CMakeLists.txt b/core/macosx/CMakeLists.txt
index daba0d96145bd4b23c5c73fa88608ab651320881..42f8138035a2bd3eafbce2732d6fe71f11d4b542 100644
--- a/core/macosx/CMakeLists.txt
+++ b/core/macosx/CMakeLists.txt
@@ -2,8 +2,10 @@
 # CMakeLists.txt file for building ROOT core/macosx package
 ############################################################################
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.mm)
-ROOT_GLOB_SOURCES(headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/T*.h)
+set(sources src/CocoaUtils.mm
+   src/TMacOSXSystem.mm
+)
+set(headers TMacOSXSystem.h)
 
 set(Macosx_dict_headers ${headers} PARENT_SCOPE)
 
diff --git a/core/meta/CMakeLists.txt b/core/meta/CMakeLists.txt
index 4843b06cf0a96b3e822cdd29a8a9c2629514320f..da2bccbcb13350735d98f9521986527898bdb368 100644
--- a/core/meta/CMakeLists.txt
+++ b/core/meta/CMakeLists.txt
@@ -2,8 +2,87 @@
 # CMakeLists.txt file for building ROOT core/meta package
 ############################################################################
 
-ROOT_GLOB_FILES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
-ROOT_GLOB_FILES(headers FILTER "(LinkDef|RootMetaSelection.h)" ${CMAKE_CURRENT_SOURCE_DIR}/inc/*.h)
+set(headers TClass.h
+  TDataMember.h
+  TEnumConstant.h
+  TFunctionTemplate.h
+  TInterpreterValue.h
+  TListOfEnumsWithLock.h
+  TMethodArg.h
+  TRealData.h
+  TStatusBitsChecker.h
+  TToggle.h
+  TClassMenuItem.h
+  TDataType.h
+  TEnum.h
+  TGenericClassInfo.h
+  TIsAProxy.h
+  TListOfFunctions.h
+  TMethodCall.h
+  TSchemaHelper.h
+  TStreamerElement.h
+  TVirtualIsAProxy.h
+  TBaseClass.h
+  TClassRef.h
+  TDictAttributeMap.h
+  TFileMergeInfo.h
+  TGlobal.h
+  TListOfDataMembers.h
+  TListOfFunctionTemplates.h
+  TMethod.h
+  TSchemaRule.h
+  TStreamer.h
+  TVirtualRefProxy.h
+  TClassGenerator.h
+  TClassStreamer.h
+  TDictionary.h
+  TFunction.h
+  TInterpreter.h
+  TListOfEnums.h
+  TMemberStreamer.h
+  TProtoClass.h
+  TSchemaRuleSet.h
+  TToggleGroup.h
+  TVirtualStreamerInfo.h
+)
+
+set(sources src/TBaseClass.cxx
+  src/TClassRef.cxx
+  src/TEnumConstant.cxx
+  src/TGlobal.cxx
+  src/TListOfEnumsWithLock.cxx
+  src/TMethod.cxx
+  src/TStatusBitsChecker.cxx
+  src/TDataMember.cxx
+  src/TEnum.cxx
+  src/TInterpreter.cxx
+  src/TListOfFunctions.cxx
+  src/TProtoClass.cxx
+  src/TStreamerElement.cxx
+  src/TViewPubFunctions.cxx
+  src/TClass.cxx
+  src/TDataType.cxx
+  src/TFunction.cxx
+  src/TIsAProxy.cxx
+  src/TListOfFunctionTemplates.cxx
+  src/TRealData.cxx
+  src/TToggle.cxx
+  src/TClassGenerator.cxx
+  src/TDictAttributeMap.cxx
+  src/TFunctionTemplate.cxx
+  src/TListOfDataMembers.cxx
+  src/TMethodArg.cxx
+  src/TSchemaRule.cxx
+  src/TToggleGroup.cxx
+  src/TVirtualStreamerInfo.cxx
+  src/TClassMenuItem.cxx
+  src/TDictionary.cxx
+  src/TGenericClassInfo.cxx
+  src/TListOfEnums.cxx
+  src/TMethodCall.cxx
+  src/TSchemaRuleSet.cxx
+  src/TViewPubDataMembers.cxx
+)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/res ${CMAKE_CURRENT_SOURCE_DIR}/../foundation/res)
 
diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt
index 88247eebad12b183d5f45532fafb9fa9d57e2f57..bceec142c637a04ee36cf0be58bea624edc8255f 100644
--- a/core/metacling/src/CMakeLists.txt
+++ b/core/metacling/src/CMakeLists.txt
@@ -1,7 +1,19 @@
 # TInterpreter implementation for cling. Only in libCling; needs to resolve
 # symbols from libCore.
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/*.cxx)
+set(sources rootclingTCling.cxx
+   TClingDataMemberInfo.cxx
+   TClingBaseClassInfo.cxx
+   TClingCallbacks.cxx
+   TClingCallFunc.cxx
+   TClingClassInfo.cxx
+   TCling.cxx
+   TClingMethodArgInfo.cxx
+   TClingMethodInfo.cxx
+   TClingTypedefInfo.cxx
+   TClingTypeInfo.cxx
+   TClingValue.cxx
+)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../res
         ${CMAKE_CURRENT_SOURCE_DIR}/../../clingutils/res
diff --git a/core/multiproc/CMakeLists.txt b/core/multiproc/CMakeLists.txt
index f4b0bc33e71134a68137c0a4a6f5854ddb78dfad..1edd49d3062457db1afedae46a5a66361d50bcc0 100644
--- a/core/multiproc/CMakeLists.txt
+++ b/core/multiproc/CMakeLists.txt
@@ -2,9 +2,19 @@
 # CMakeLists.txt file for building ROOT core/multiproc package
 ############################################################################
 
-set(headers TMPClient.h MPSendRecv.h ROOT/TProcessExecutor.hxx TProcPool.h TMPWorker.h TMPWorkerExecutor.h MPCode.h PoolUtils.h)
+set(headers TMPClient.h
+   MPSendRecv.h
+   ROOT/TProcessExecutor.hxx
+   TProcPool.h
+   TMPWorker.h
+   TMPWorkerExecutor.h
+   MPCode.h
+   PoolUtils.h)
 
-set(sources TMPClient.cxx MPSendRecv.cxx TProcessExecutor.cxx TMPWorker.cxx)
+set(sources src/TMPClient.cxx
+   src/MPSendRecv.cxx
+   src/TProcessExecutor.cxx
+   src/TMPWorker.cxx)
 
 ROOT_STANDARD_LIBRARY_PACKAGE(MultiProc
                               OBJECT_LIBRARY
diff --git a/core/newdelete/CMakeLists.txt b/core/newdelete/CMakeLists.txt
index 90ce169a1a6c828fc0013487b5c911457c44d002..e7a52ea3a73a835723539d219a5fc31fef062a24 100644
--- a/core/newdelete/CMakeLists.txt
+++ b/core/newdelete/CMakeLists.txt
@@ -2,8 +2,10 @@
 # CMakeLists.txt file for building ROOT core/newdelete package
 ############################################################################
 
+set(sources src/MemCheck.cxx
+   src/NewDelete.cxx
+)
 include_directories(${CMAKE_SOURCE_DIR}/core/clib/res)
 
-ROOT_LINKER_LIBRARY(New *.cxx DEPENDENCIES Core)
+ROOT_LINKER_LIBRARY(New ${sources} DEPENDENCIES Core)
 ROOT_INSTALL_HEADERS()
-
diff --git a/core/textinput/CMakeLists.txt b/core/textinput/CMakeLists.txt
index ae6c3d48298d37a227868d64928ea655ec8ffbdb..65275345593a075f2e67411516ca6801435c009a 100644
--- a/core/textinput/CMakeLists.txt
+++ b/core/textinput/CMakeLists.txt
@@ -2,10 +2,24 @@
 # CMakeLists.txt file for building ROOT core/textinout package
 ############################################################################
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx
-                          ${CMAKE_CURRENT_SOURCE_DIR}/src/textinput/*.cpp)
-
-ROOT_GLOB_HEADERS(headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/*.h)
+set(sources src/Getline_color.cxx
+   src/Getline.cxx
+   src/textinput/Editor.cpp
+   src/textinput/Range.cpp
+   src/textinput/StreamReaderUnix.cpp
+   src/textinput/TerminalDisplay.cpp
+   src/textinput/TextInputContext.cpp
+   src/textinput/History.cpp
+   src/textinput/SignalHandler.cpp
+   src/textinput/StreamReaderWin.cpp
+   src/textinput/TerminalDisplayUnix.cpp
+   src/textinput/TextInput.cpp
+   src/textinput/KeyBinding.cpp
+   src/textinput/StreamReader.cpp
+   src/textinput/TerminalConfigUnix.cpp
+   src/textinput/TerminalDisplayWin.cpp
+)
+set(headers Getline.h)
 set(TextInput_dict_headers ${headers} PARENT_SCOPE)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
diff --git a/core/thread/CMakeLists.txt b/core/thread/CMakeLists.txt
index 77801c20ff3d7192c2a7385f9652bb509cb17a8f..59d4dba6c2bdbd7ac72f66b0534083c89fac4617 100644
--- a/core/thread/CMakeLists.txt
+++ b/core/thread/CMakeLists.txt
@@ -4,10 +4,24 @@
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../foundation/res)
 
-set(headers TAtomicCount.h TCondition.h TConditionImp.h TMutex.h TMutexImp.h
-            TRWLock.h ROOT/TRWSpinLock.hxx TSemaphore.h TThread.h TThreadFactory.h
-            TThreadImp.h ROOT/TThreadedObject.hxx TThreadPool.h
-            ThreadLocalStorage.h ROOT/TSpinMutex.hxx ROOT/TReentrantRWLock.hxx ROOT/RConcurrentHashColl.hxx)
+set(headers TAtomicCount.h
+   TCondition.h
+   TConditionImp.h
+   TMutex.h
+   TMutexImp.h
+   TRWLock.h
+   TSemaphore.h
+   TThread.h
+   TThreadFactory.h
+   TThreadImp.h
+   TThreadPool.h
+   ThreadLocalStorage.h
+   ROOT/TSpinMutex.hxx
+   ROOT/TThreadedObject.hxx
+   ROOT/TReentrantRWLock.hxx
+   ROOT/RConcurrentHashColl.hxx
+   ROOT/TRWSpinLock.hxx
+)
 if(NOT WIN32)
   set(headers ${headers} TPosixCondition.h TPosixMutex.h
                          TPosixThread.h TPosixThreadFactory.h PosixThreadInc.h)
@@ -18,9 +32,20 @@ else()
   set(installoptions FILTER "Posix")
 endif()
 
-set(sources TCondition.cxx TConditionImp.cxx TMutex.cxx TMutexImp.cxx
-            TRWLock.cxx TRWSpinLock.cxx TSemaphore.cxx TThread.cxx TThreadFactory.cxx
-            TThreadImp.cxx TRWMutexImp.cxx TReentrantRWLock.cxx RConcurrentHashColl.cxx)
+set(sources src/TCondition.cxx
+   src/TConditionImp.cxx
+   src/TMutex.cxx
+   src/TMutexImp.cxx
+   src/TRWLock.cxx
+   src/TRWSpinLock.cxx
+   src/TSemaphore.cxx
+   src/TThread.cxx
+   src/TThreadFactory.cxx
+   src/TThreadImp.cxx
+   src/TRWMutexImp.cxx
+   src/TReentrantRWLock.cxx
+   src/RConcurrentHashColl.cxx
+)
 if(NOT WIN32)
   set(sources ${sources} TPosixCondition.cxx TPosixMutex.cxx
                          TPosixThread.cxx TPosixThreadFactory.cxx)
diff --git a/core/unix/CMakeLists.txt b/core/unix/CMakeLists.txt
index 294b106f2fb98631bf6141b9a3e122dfc3d1bf2e..22e7a0551255bd793c7d0a4b2e2dc8b760fa63cf 100644
--- a/core/unix/CMakeLists.txt
+++ b/core/unix/CMakeLists.txt
@@ -2,12 +2,13 @@
 # CMakeLists.txt file for building ROOT core/unix package
 ############################################################################
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
+set(sources src/TUnixSystem.cxx)
 
 set(Unix_dict_headers  ${CMAKE_CURRENT_SOURCE_DIR}/inc/TUnixSystem.h PARENT_SCOPE)
 
 include_directories(${CMAKE_SOURCE_DIR}/net/net/inc
   ${CMAKE_SOURCE_DIR}/core/clib/res)
+
 ROOT_OBJECT_LIBRARY(Unix ${sources})
 
 ROOT_INSTALL_HEADERS()
diff --git a/core/winnt/CMakeLists.txt b/core/winnt/CMakeLists.txt
index 1088a5b8697ffb7d9f32132c651dda23aced47d1..d6a3fee1f80466e149d4f1b42a3436faa9b46f72 100644
--- a/core/winnt/CMakeLists.txt
+++ b/core/winnt/CMakeLists.txt
@@ -2,9 +2,11 @@
 # CMakeLists.txt file for building ROOT core/winnt package
 ############################################################################
 
-ROOT_GLOB_SOURCES(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cxx)
+set(sources src/TWin32SplashThread.cxx
+   src/TWinNTSystem.cxx
+   src/Win32Splash.cxx)
 
-set(Winnt_dict_headers  ${CMAKE_CURRENT_SOURCE_DIR}/inc/TWinNTSystem.h PARENT_SCOPE)
+set(Winnt_dict_headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/TWinNTSystem.h PARENT_SCOPE)
 
 include_directories(${CMAKE_SOURCE_DIR}/net/net/inc)
 
diff --git a/core/zip/CMakeLists.txt b/core/zip/CMakeLists.txt
index b13932683a2f60c36f4c902d83998fa1bd0480aa..31c365f2d33022b53da99c7075ee22a952c1be2b 100644
--- a/core/zip/CMakeLists.txt
+++ b/core/zip/CMakeLists.txt
@@ -1,11 +1,11 @@
 find_package(ZLIB REQUIRED)
 
-ROOT_GLOB_HEADERS(headers
+set(headers
   inc/Compression.h
   inc/RZip.h
 )
 
-ROOT_GLOB_SOURCES(sources
+set(sources
   src/Bits.c
   src/ZDeflate.c
   src/ZTrees.c