diff --git a/math/mathcore/CMakeLists.txt b/math/mathcore/CMakeLists.txt
index 9499c36ac9671728db14ac46128fe54ba69d37e9..24dacd2e8cd5a326c91c61cf098f9a7852c0c7e2 100644
--- a/math/mathcore/CMakeLists.txt
+++ b/math/mathcore/CMakeLists.txt
@@ -1,37 +1,105 @@
 ############################################################################
-# CMakeLists.txt file for building ROOT io/io package
+# CMakeLists.txt file for building ROOT math/mathcore package
 ############################################################################
 
-set(MATHCORE_HEADERS TRandom.h
-  TRandom1.h TRandom2.h TRandom3.h TKDTree.h TKDTreeBinning.h TStatistic.h
-  Math/Error.h Math/IParamFunction.h Math/IFunction.h Math/ParamFunctor.h Math/Functor.h
-  Math/Minimizer.h Math/MinimizerOptions.h Math/IntegratorOptions.h Math/IOptions.h Math/GenAlgoOptions.h
-  Math/BasicMinimizer.h Math/MinimTransformFunction.h Math/MinimTransformVariable.h Math/IFunctionfwd.h
-  Math/Integrator.h Math/VirtualIntegrator.h Math/AllIntegrationTypes.h Math/AdaptiveIntegratorMultiDim.h
-  Math/IntegratorMultiDim.h Math/Factory.h Math/FitMethodFunction.h Math/GaussIntegrator.h
-  Math/GaussLegendreIntegrator.h Math/RootFinder.h Math/IRootFinderMethod.h Math/RichardsonDerivator.h
-  Math/BrentMethods.h Math/BrentMinimizer1D.h Math/BrentRootFinder.h Math/DistSampler.h
-  Math/DistSamplerOptions.h Math/GoFTest.h Math/SpecFuncMathCore.h Math/DistFuncMathCore.h
-  Math/ChebyshevPol.h Math/KDTree.h Math/TDataPoint.h Math/TDataPointN.h Math/Delaunay2D.h
-  Math/Random.h Math/TRandomEngine.h Math/RandomFunctions.h Math/StdEngine.h Math/Math.h
-  Math/MersenneTwisterEngine.h Math/MixMaxEngine.h   TRandomGen.h Math/LCGEngine.h
-  Math/Types.h Math/Util.h Math/WrappedFunction.h Math/IMinimizer1D.h Math/IParamFunctionfwd.h
-  Math/MinimizerVariableTransformation.h Math/MultiDimParamFunctionAdapter.h Math/OneDimFunctionAdapter.h
-  Math/PdfFunc.h Math/PdfFuncMathCore.h Math/ProbFunc.h Math/ProbFuncMathCore.h Math/QuantFunc.h
-  Math/QuantFuncMathCore.h Math/WrappedParamFunction.h
-  )
+set(HEADERS
+  Fit/BasicFCN.h
+  Fit/BinData.h
+  Fit/Chi2FCN.h
+  Fit/DataOptions.h
+  Fit/DataRange.h
+  Fit/FcnAdapter.h
+  Fit/FitConfig.h
+  Fit/FitData.h
+  Fit/FitExecutionPolicy.h
+  Fit/FitResult.h
+  Fit/FitUtil.h
+  Fit/Fitter.h
+  Fit/LogLikelihoodFCN.h
+  Fit/ParameterSettings.h
+  Fit/PoissonLikelihoodFCN.h
+  Fit/SparseData.h
+  Fit/UnBinData.h
+  Math/AdaptiveIntegratorMultiDim.h
+  Math/AllIntegrationTypes.h
+  Math/BasicMinimizer.h
+  Math/BrentMethods.h
+  Math/BrentMinimizer1D.h
+  Math/BrentRootFinder.h
+  Math/ChebyshevPol.h
+  Math/Delaunay2D.h
+  Math/DistFuncMathCore.h
+  Math/DistSampler.h
+  Math/DistSamplerOptions.h
+  Math/Error.h
+  Math/Factory.h
+  Math/FitMethodFunction.h
+  Math/Functor.h
+  Math/GaussIntegrator.h
+  Math/GaussLegendreIntegrator.h
+  Math/GenAlgoOptions.h
+  Math/GoFTest.h
+  Math/IFunction.h
+  Math/IFunctionfwd.h
+  Math/IMinimizer1D.h
+  Math/IOptions.h
+  Math/IParamFunction.h
+  Math/IParamFunctionfwd.h
+  Math/IRootFinderMethod.h
+  Math/Integrator.h
+  Math/IntegratorMultiDim.h
+  Math/IntegratorOptions.h
+  Math/KDTree.h
+  Math/LCGEngine.h
+  Math/Math.h
+  Math/MersenneTwisterEngine.h
+  Math/MinimTransformFunction.h
+  Math/MinimTransformVariable.h
+  Math/Minimizer.h
+  Math/MinimizerOptions.h
+  Math/MinimizerVariableTransformation.h
+  Math/MixMaxEngine.h
+  Math/MultiDimParamFunctionAdapter.h
+  Math/OneDimFunctionAdapter.h
+  Math/ParamFunctor.h
+  Math/PdfFunc.h
+  Math/PdfFuncMathCore.h
+  Math/ProbFunc.h
+  Math/ProbFuncMathCore.h
+  Math/QuantFunc.h
+  Math/QuantFuncMathCore.h
+  Math/Random.h
+  Math/RandomFunctions.h
+  Math/RichardsonDerivator.h
+  Math/RootFinder.h
+  Math/SpecFuncMathCore.h
+  Math/StdEngine.h
+  Math/TDataPoint.h
+  Math/TDataPointN.h
+  Math/TRandomEngine.h
+  Math/Types.h
+  Math/Util.h
+  Math/VirtualIntegrator.h
+  Math/WrappedFunction.h
+  Math/WrappedParamFunction.h
+  TComplex.h
+  TKDTree.h
+  TKDTreeBinning.h
+  TMath.h
+  TRandom.h
+  TRandom1.h
+  TRandom2.h
+  TRandom3.h
+  TRandomGen.h
+  TStatistic.h
+)
 
 if(runtime_cxxmodules)
   # Adding Math/Math.h to the MathCore module makes the generation of GenVector
   # dictionary hand due to a bug in rootcling/clang. The redeclaration chain of
   # 'abs' shadow declaration (from stl math.h) is broken.
   # FIXME: Revise after a llvm upgrade or reproduce it outside rootcling.
-  list(REMOVE_ITEM MATHCORE_HEADERS "Math/Math.h")
-endif()
-
-if(veccore)
-  set(MATHCORE_LIBRARIES ${VecCore_LIBRARIES})
-  set(MATHCORE_BUILTINS VECCORE)
+  list(REMOVE_ITEM HEADERS "Math/Math.h")
 endif()
 
 ROOT_ADD_C_FLAG(_flags -Wno-strict-overflow)  # Avoid what it seems a compiler false positive warning
@@ -44,15 +112,82 @@ if(imt)
   set(MATHCORE_DEPENDENCIES Imt)
 endif()
 
-ROOT_STANDARD_LIBRARY_PACKAGE(MathCore HEADERS TComplex.h TMath.h ${MATHCORE_HEADERS} Fit/*.h
-                              SOURCES *.cxx *.c
-                              DICTIONARY_OPTIONS "-writeEmptyRootPCM"
-                              LIBRARIES ${CMAKE_THREAD_LIBS_INIT} ${MATHCORE_LIBRARIES}
-                              DEPENDENCIES Core ${MATHCORE_DEPENDENCIES}
-                              BUILTINS ${MATHCORE_BUILTINS})
-
 if(veccore)
-  target_compile_definitions(MathCore INTERFACE ${VecCore_DEFINITIONS})
+  set(MATHCORE_BUILTINS VECCORE)
+  set(MATHCORE_LIBRARIES ${VecCore_LIBRARIES})
 endif()
 
+ROOT_STANDARD_LIBRARY_PACKAGE(MathCore
+  HEADERS
+    ${HEADERS}
+  SOURCES
+    src/AdaptiveIntegratorMultiDim.cxx
+    src/BasicMinimizer.cxx
+    src/BinData.cxx
+    src/BrentMethods.cxx
+    src/BrentMinimizer1D.cxx
+    src/BrentRootFinder.cxx
+    src/ChebyshevPol.cxx
+    src/DataRange.cxx
+    src/Delaunay2D.cxx
+    src/DistSampler.cxx
+    src/DistSamplerOptions.cxx
+    src/Factory.cxx
+    src/FitConfig.cxx
+    src/FitData.cxx
+    src/FitResult.cxx
+    src/FitUtil.cxx
+    src/Fitter.cxx
+    src/GaussIntegrator.cxx
+    src/GaussLegendreIntegrator.cxx
+    src/GenAlgoOptions.cxx
+    src/GoFTest.cxx
+    src/Integrator.cxx
+    src/IntegratorOptions.cxx
+    src/MersenneTwisterEngine.cxx
+    src/MinimTransformFunction.cxx
+    src/MinimizerOptions.cxx
+    src/MinimizerVariableTransformation.cxx
+    src/MixMaxEngineImpl17.cxx
+    src/MixMaxEngineImpl240.cxx
+    src/MixMaxEngineImpl256.cxx
+    src/ParameterSettings.cxx
+    src/PdfFuncMathCore.cxx
+    src/ProbFuncMathCore.cxx
+    src/QuantFuncMathCore.cxx
+    src/RandomFunctions.cxx
+    src/RichardsonDerivator.cxx
+    src/RootFinder.cxx
+    src/SparseData.cxx
+    src/SpecFuncCephes.cxx
+    src/SpecFuncCephes.h
+    src/SpecFuncCephesInv.cxx
+    src/SpecFuncMathCore.cxx
+    src/StdEngine.cxx
+    src/TComplex.cxx
+    src/TKDTree.cxx
+    src/TKDTreeBinning.cxx
+    src/TMath.cxx
+    src/TRandom.cxx
+    src/TRandom1.cxx
+    src/TRandom2.cxx
+    src/TRandom3.cxx
+    src/TRandomGen.cxx
+    src/TStatistic.cxx
+    src/UnBinData.cxx
+    src/triangle.c
+  LIBRARIES
+    ${MATHCORE_LIBRARIES}
+  DICTIONARY_OPTIONS
+    -writeEmptyRootPCM
+  DEPENDENCIES
+    Core
+    ${MATHCORE_DEPENDENCIES}
+  BUILTINS
+    ${MATHCORE_BUILTINS}
+)
+
+target_compile_definitions(MathCore INTERFACE ${VecCore_DEFINITIONS})
+target_link_libraries(MathCore PUBLIC ${CMAKE_THREAD_LIBS_INIT})
+
 ROOT_ADD_TEST_SUBDIRECTORY(test)