Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ asan=ON
ccache=ON
builtin_civetweb=ON
builtin_vdt=ON
daos_mock=ON
fail-on-missing=ON
minimal=ON
roottest=ON
testing=ON
vdt=ON
LSAN_OPTIONS=verbosity=1:log_threads=1
ROOT_CTEST_CUSTOM_FLAGS="-E \(cppinterop-CppInterOpTest\|roottest-cling-specialobj-runf02$\|roottest-root-collection-DeleteWarning$\|roottest-root-io-evolution-fixarr2$\|roottest-root-meta-rlibmap$\|roottest-root-treeproxy-vectorint-vectorint$\)"
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
ccache=ON
builtin_civetweb=ON
builtin_vdt=ON
daos_mock=ON
fail-on-missing=ON
minimal=ON
roottest=ON
testing=ON
vdt=ON
2 changes: 2 additions & 0 deletions .github/workflows/root-ci-config/buildconfig/global.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ coverage=OFF
cuda=OFF
curl=ON
daos=OFF
daos_mock=ON
dataframe=ON
davix=ON
dcache=OFF
Expand Down Expand Up @@ -83,6 +84,7 @@ test_distrdf_pyspark=ON
test_roofit_hs3testsuite=ON
test_tmva_sofie=ON
testing=ON
testsupport=OFF
tmva-cpu=ON
tmva-gpu=OFF
tmva-cudnn=OFF
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ builtin_xxhash=ON
builtin_zlib=ON
builtin_zstd=ON
ccache=OFF
daos_mock=OFF
davix=OFF
fortran=OFF
llvm13_broken_tests=OFF
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/root-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@
env:
GITHUB_PR_ORIGIN: ${{ github.event.pull_request.head.repo.clone_url }}
OVERRIDES: ${{ join( matrix.overrides, ' ') }}
run: |

Check failure on line 160 in .github/workflows/root-ci.yml

View workflow job for this annotation

GitHub Actions / lint-action-files

"github.event.pull_request.head.ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks for more details
[ -d "${VIRTUAL_ENV_DIR}" ] && source ${VIRTUAL_ENV_DIR}/bin/activate
echo "Python is now $(which python3) $(python3 --version)"
src/.github/workflows/root-ci-config/build_root.py \
Expand Down Expand Up @@ -300,7 +300,7 @@
INCREMENTAL: ${{ !contains(github.event.pull_request.labels.*.name, 'clean build') }}
GITHUB_PR_ORIGIN: ${{ github.event.pull_request.head.repo.clone_url }}
shell: cmd
run: "C:\\setenv.bat ${{ matrix.target_arch }} &&

Check failure on line 303 in .github/workflows/root-ci.yml

View workflow job for this annotation

GitHub Actions / lint-action-files

"github.event.pull_request.head.ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks for more details
python .github/workflows/root-ci-config/build_root.py
--buildtype ${{ matrix.config }}
--platform windows10
Expand Down Expand Up @@ -406,7 +406,7 @@
overrides: ["CMAKE_BUILD_TYPE=Debug"]
- image: alma10
- image: ubuntu22
overrides: ["imt=Off", "CMAKE_BUILD_TYPE=Debug"]
overrides: ["imt=Off", "tmva-cpu=OFF", "CMAKE_BUILD_TYPE=Debug"]
- image: ubuntu2404
overrides: ["CMAKE_BUILD_TYPE=Debug"]
- image: ubuntu2604
Expand Down Expand Up @@ -467,7 +467,7 @@
- self-hosted
- linux
- ${{ matrix.architecture == null && 'x64' || matrix.architecture }}
- ${{ matrix.extra-runs-on == null && 'cpu' || matrix.extra-runs-on }}

Check failure on line 470 in .github/workflows/root-ci.yml

View workflow job for this annotation

GitHub Actions / lint-action-files

property "extra-runs-on" is not defined in object type {architecture: string; image: string; is_special: bool; overrides: array<string>; platform_config: string; property: string; python_venv: string}

Check failure on line 470 in .github/workflows/root-ci.yml

View workflow job for this annotation

GitHub Actions / lint-action-files

property "extra-runs-on" is not defined in object type {architecture: string; image: string; is_special: bool; overrides: array<string>; platform_config: string; property: string; python_venv: string}

name: |
${{ matrix.image }} ${{ matrix.property }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/root-docs-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ jobs:

- name: Apply option overrides
env:
OVERRIDES: "testing=Off roottest=Off"
OVERRIDES: "testing=Off", "roottest=Off", "daos_mock=Off"
CONFIGFILE: '.github/workflows/root-ci-config/buildconfig/alma9.txt'
shell: bash
run: |
Expand Down
1 change: 1 addition & 0 deletions README/ReleaseNotes/v642/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ The following people have contributed to this new version:
Note that `all=ON` enables several of these options, so building with `-Dall=ON` now requires all of their dependencies to be installed, or the unwanted ones to be disabled explicitly.
Build options that are enabled by default, such as `pyroot`, `opengl`, `xml`, `sqlite`, `davix`, `curl`, `tmva-cpu` or `tpython` are not affected: they are still disabled automatically when their dependencies are missing.
* The option `fail-on-missing=OFF` will no longer be honored for CMake ROOT build options that have easy-to-install dependencies (e.g. via homebrew or apt-get), such as those required by options `cfitsio`, `civetweb`, `fftw3`, `imt`, `mathmore`, `nlohmann_json`, `tmva-cpu`, `unuran`, `vdt` or `xrootd`. Before, associated `builtin_option` was automatically turned ON (or the opt-in feature turned to OFF), now, user has to install system package or manually set `builtin_option` to `ON` or opt-in feature to `OFF`.
* Irrespective of the value of `fail-on-missing`, all ROOT build options that are contradictory or are missing a dependency will now raise an error rather than letting the build system to automatically turn features OFF or ON. A helpful error message will be printed stating what packages need to be installed or what build flags need to be changed.
* The method `RooRealVar::removeRange()` and the corresponding method in `RooErrorVar` that were deprecated in ROOT 6.40 are now removed.
* The overloads of `RooAbsReal::createChi2()` and `RooAbsReal::chi2FitTo()` that take unbinned **RooDataSet** data objects were deprecated in ROOT 6.40 and are now removed.
* The **RooStats::HybridPlot** class and the related **HybridResult::GetPlot** method were deprecated in ROOT 6.40 and are now removed.
Expand Down
2 changes: 2 additions & 0 deletions cmake/modules/CheckCompiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ if(fortran)
endif()
if(NOT CMAKE_Fortran_COMPILER)
message(SEND_ERROR "No Fortran compiler found. Please make sure it's installed, or disable ROOT's Fortran features with '-Dfortran=OFF'")
list(APPEND MISSING_PACKAGES 'gfortran')
list(APPEND HOTFIX_BUILD_FLAGS -Dfortran=OFF)
endif()
else()
set(CMAKE_Fortran_COMPILER CMAKE_Fortran_COMPILER-NOTFOUND)
Expand Down
119 changes: 97 additions & 22 deletions cmake/modules/RootBuildOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ ROOT_BUILD_OPTION(coverage OFF "Enable compile flags for coverage testing")
ROOT_BUILD_OPTION(cuda OFF "Enable support for CUDA (requires CUDA toolkit >= 7.5)")
ROOT_BUILD_OPTION(curl ON "Enable support for HTTP(S) through libcurl")
ROOT_BUILD_OPTION(daos OFF "Enable RNTuple support for Intel DAOS")
ROOT_BUILD_OPTION(daos_mock OFF "Use libdaos_mock for RNTuple, use only for testing. Mutually exclusive with daos")
ROOT_BUILD_OPTION(dataframe ON "Enable ROOT RDataFrame")
ROOT_BUILD_OPTION(davix ON "Enable support for Davix (HTTP/WebDAV access)")
ROOT_BUILD_OPTION(dcache OFF "Enable support for dCache (requires libdcap from DESY)")
Expand Down Expand Up @@ -157,14 +158,14 @@ ROOT_BUILD_OPTION(roofit_multiprocess OFF "Build RooFit::MultiProcess and multi-
ROOT_BUILD_OPTION(root7 ON "Build ROOT 7 experimental components of ROOT")
ROOT_BUILD_OPTION(runtime_cxxmodules ON "Enable runtime support for C++ modules")
ROOT_BUILD_OPTION(shadowpw OFF "Enable support for shadow passwords")
ROOT_BUILD_OPTION(shared ON "Use shared 3rd party libraries if possible")
ROOT_BUILD_OPTION(shared ON "Use shared 3rd party libraries if possible (OFF not supported on Windows)")
ROOT_BUILD_OPTION(soversion OFF "Set version number in sonames for shared libraries. Not recommended, as the pcm and rootmap files do not (yet) support versioning and always point to the non-versioned shared libraries.")
ROOT_BUILD_OPTION(spectrum ON "Enable support for TSpectrum")
ROOT_BUILD_OPTION(sqlite ON "Enable support for SQLite")
ROOT_BUILD_OPTION(ssl ON "Enable support for SSL encryption via OpenSSL")
ROOT_BUILD_OPTION(test_distrdf_dask OFF "Enable distributed RDataFrame tests that use dask")
ROOT_BUILD_OPTION(test_distrdf_pyspark OFF "Enable distributed RDataFrame tests that use pyspark")
ROOT_BUILD_OPTION(testsupport OFF "Build the ROOT::TestSupport library required to use all features of ROOT_ADD_GTEST and similar macros (requires gtest at build time)")
ROOT_BUILD_OPTION(testsupport OFF "Build the ROOT::TestSupport library required to use ROOT_ADD_GTEST and similar macros by downstream users (requires gtest at build time). Even if OFF, this library is still built if testing=ON")
ROOT_BUILD_OPTION(thisroot_scripts ON "Build scripts like thisroot.{sh, fish, etc.} that set environment paths for using ROOT. Usually not needed when building ROOT for the distribution with a package manager.")
ROOT_BUILD_OPTION(tmva ON "Build TMVA multi variate analysis library")
ROOT_BUILD_OPTION(tmva-cpu ON "Build TMVA with CPU support for deep learning (requires BLAS)")
Expand All @@ -190,11 +191,11 @@ option(clingtest "Enable cling tests (Note: that this makes llvm/clang symbols v
option(fail-on-missing "Fail at configure time if a required package cannot be found" OFF)
option(gminimal "Enable only required options by default, but include X11/Cocoa" OFF)
option(minimal "Enable only required options by default" OFF)
option(rootbench "Build rootbench if rootbench exists in root or if it is a sibling directory (implies testing=ON)" OFF)
option(roottest "Build roottest (implies testing=ON)" OFF)
option(rootbench "Build rootbench if rootbench exists in root or if it is a sibling directory (requires testing=ON)" OFF)
option(roottest "Build roottest (requires testing=ON)" OFF)
option(test_roofit_hs3testsuite "Setup and use the HS3 conformance test suite (requires network)" OFF)
option(test_tmva_sofie "Enable SOFIE tests (requires BLAS library that can be found with CMake's FindBLAS)" ON)
option(testing "Enable testing with CTest" OFF)
option(testing "Enable testing with CTest and GTest" OFF)
option(asan "Build ROOT with address sanitizer instrumentation (see core/sanitizer for details)" OFF)
option(_wheel_build "ROOT is being packaged as a wheel, do not install .dist-info metadata" OFF)

Expand Down Expand Up @@ -309,6 +310,10 @@ if(roofit_multiprocess AND WIN32)
message(FATAL_ERROR ">>> Option 'roofit_multiprocess' is not supported on Windows.")
endif()

if(WIN32 AND NOT shared)
message(FATAL_ERROR "Option \"shared=Off\" not supported on Windows!")
endif()

#---Options depending of CMake Generator-------------------------------------------------------
if( CMAKE_GENERATOR STREQUAL Ninja)
set(fortran_defvalue OFF)
Expand Down Expand Up @@ -336,45 +341,115 @@ endif()
#---Define at moment the options with the selected default values------------------------------
ROOT_APPLY_OPTIONS()

#---roottest option implies testing
if(roottest OR rootbench)
set(testing ON CACHE BOOL "" FORCE)
# builtins require feature
if (builtin_fftw3 AND NOT fftw3)
message(SEND_ERROR "-Dbuiltin_fftw3=ON requires -Dfftw3=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dfftw3=ON)
endif()

#---testing implies testsupport
if(testing)
set(testsupport ON CACHE BOOL "" FORCE)
if (builtin_xrootd AND NOT xrootd)
message(SEND_ERROR "-Dbuiltin_xrootd=ON requires -Dxrootd=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dxrootd=ON)
endif()
if (builtin_cfitsio AND NOT fitsio)
message(SEND_ERROR "-Dbuiltin_cfitsio=ON requires -Dfitsio=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dfitsio=ON)
endif()
if (builtin_gl2ps AND NOT opengl)
message(SEND_ERROR "-Dbuiltin_gl2ps=ON requires -Dopengl=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dopengl=ON)
endif()
if (builtin_ftgl AND NOT opengl)
message(SEND_ERROR "-Dbuiltin_ftgl=ON requires -Dopengl=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dopengl=ON)
endif()
if (builtin_tbb AND NOT imt)
message(SEND_ERROR "-Dbuiltin_tbb=ON requires -Dimt=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dimt=ON)
endif()
if (builtin_vdt AND NOT vdt)
message(SEND_ERROR "-Dbuiltin_vdt=ON requires -Dvdt=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dvdt=ON)
endif()
if (builtin_gtest AND NOT (testing OR testsupport))
message(SEND_ERROR "-Dbuiltin_gtest=ON requires -Dtesting=ON or -Dtestsupport=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dtestsupport=ON)
endif()
if(builtin_openui5 AND NOT webgui)
message(SEND_ERROR "-Dbuiltin_openui5=ON requires -Dwebgui=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dwebgui=ON)
endif()
if (builtin_openssl AND NOT ssl)
message(SEND_ERROR "-Dbuiltin_openssl=ON requires -Dssl=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dssl=ON)
endif()
# On Linux, OpenGL should be working only with x11
if(NOT WIN32 AND NOT APPLE)
if(opengl AND NOT x11)
message(SEND_ERROR "OpenGL requires x11 on Linux, either disable opengl or set -Dx11=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dopengl=OFF)
endif()
endif()
#---Check for Cocoa/Quartz graphics backend (MacOS X only)---------------------------
# Note that this check happens *after* the above check for FreeType because that
# library is needed for builds on Apple with Cocoa graphics
if(cocoa)
if(APPLE)
if (x11)
message(SEND_ERROR "x11 (${x11_description}) and cocoa cannot be enabled simultaneously. Set -Dcocoa=OFF")
list(APPEND HOTFIX_BUILD_FLAGS -Dcocoa=OFF)
endif()
else()
message(SEND_ERROR "Cocoa option can only be enabled on MacOSX platform. Set -Dcocoa=OFF")
list(APPEND HOTFIX_BUILD_FLAGS -Dcocoa=OFF)
endif()
elseif(asimage AND NOT x11 AND NOT WIN32)
message(SEND_ERROR "asimage on Unix requires x11, either disable asimage or set -Dx11=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dasimage=OFF)
endif()

#---ensure that the cuda option is sound
if(cuda AND NOT CMAKE_CUDA_COMPILER)
message(FATAL_ERROR "Option cuda=On, but CMAKE_CUDA_COMPILER='${CMAKE_CUDA_COMPILER}'")
#---roottest/rootbench options require testing
if (roottest AND NOT testing)
message(SEND_ERROR "-Droottest=ON requires -Dtesting=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dtesting=ON)
endif()
if (rootbench AND NOT testing)
message(SEND_ERROR "-Drootbench=ON requires -Dtesting=ON")
list(APPEND HOTFIX_BUILD_FLAGS -Dtesting=ON)
endif()

#---running HS3 test suite requires both testing and pyroot, but testing globally disables tests
if(testing AND test_roofit_hs3testsuite AND NOT pyroot)
message(FATAL_ERROR "-Dtest_roofit_hs3testsuite=ON requires both -Dtesting=ON and -Dpyroot=ON)")
message(SEND_ERROR "-Dtest_roofit_hs3testsuite=ON requires both -Dtesting=ON and -Dpyroot=ON)")
list(APPEND HOTFIX_BUILD_FLAGS -Dpyroot=ON)
endif()

if(unfold AND NOT xml)
message(STATUS "Cannot enable unfold without enabling xml: unfold is disabled.")
set(unfold OFF)
message(SEND_ERROR "Cannot enable unfold without enabling -Dxml=ON.")
list(APPEND HOTFIX_BUILD_FLAGS -Dxml=ON)
endif()

if (NOT builtin_cling)
if (builtin_clang OR builtin_llvm)
message(WARNING "No need to build internal llvm or clang. Consider turning builtin_clang=Off and builtin_llvm=Off")
list(APPEND HOTFIX_BUILD_FLAGS -Dbuiltin_clang=OFF)
list(APPEND HOTFIX_BUILD_FLAGS -Dbuiltin_llvm=OFF)
endif()
endif(NOT builtin_cling)

if(NOT http AND webgui)
message(WARNING "Cannot build WebGui components without HTTP: webgui is disabled.")
set(webgui OFF)
message(SEND_ERROR "Cannot build WebGui components without HTTP: enable -Dhttp=ON or set -Dwebgui=OFF.")
list(APPEND HOTFIX_BUILD_FLAGS -Dwebgui=OFF)
endif()

if(NOT webgui)
set(qt6web OFF CACHE BOOL "Disabled because webgui not build" FORCE)
set(cefweb OFF CACHE BOOL "Disabled because webgui not build" FORCE)
if(qt6web)
message(SEND_ERROR "Cannot build qt6web without webgui and http: enable -Dwebgui=ON -Dhttp=ON or set -Dqt6web=OFF.")
list(APPEND HOTFIX_BUILD_FLAGS -Dqt6web=OFF)
endif()
if(qt6web)
message(SEND_ERROR "Cannot build cefweb without webgui and http: enable -Dwebgui=ON -Dhttp=ON or set -Dcefweb=OFF.")
list(APPEND HOTFIX_BUILD_FLAGS -Dcefweb=OFF)
endif()
endif()

#---Removed options------------------------------------------------------------
Expand Down
Loading
Loading