diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d0435b589210..145f20afce042 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -530,10 +530,6 @@ install( PATTERN "pkgconfig" EXCLUDE ) -if(Vc_INCLUDE_DIR) - set(MODULES_ROOT_INCPATH "ROOT_INCLUDE_PATH=${Vc_INCLUDE_DIR}:${ROOT_INCLUDE_PATH}") -endif() - # modules.idx if(runtime_cxxmodules) ROOT_GET_LIBRARY_OUTPUT_DIR(library_output_dir) @@ -564,7 +560,7 @@ if(WIN32) set(hsimple_cmd COMMAND ${CMAKE_COMMAND} -E env PATH="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}\\\;%PATH%" ROOTIGNOREPREFIX=1 ROOT_HIST=0 $ -l -q -b -n -x ${CMAKE_SOURCE_DIR}/tutorials/hsimple.C -e return) else() - set(hsimple_cmd COMMAND ${MODULES_ROOT_INCPATH} ${ld_library_path}=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:$ENV{${ld_library_path}} + set(hsimple_cmd COMMAND ROOT_INCLUDE_PATH="${DEFAULT_ROOT_INCLUDE_PATH}" ${ld_library_path}=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:$ENV{${ld_library_path}} ROOTIGNOREPREFIX=1 ROOT_HIST=0 $ -l -q -b -n -x ${CMAKE_SOURCE_DIR}/tutorials/hsimple.C -e return) endif() add_custom_command(OUTPUT tutorials/hsimple.root diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake index 7a7d91b1357ed..74679de9b7aba 100644 --- a/cmake/modules/RootMacros.cmake +++ b/cmake/modules/RootMacros.cmake @@ -2135,3 +2135,39 @@ function(generateManual name input output) install(FILES ${output} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) endfunction() + +#---------------------------------------------------------------------------- +# If path is a system path, set the return variable is_system_path to true. +# The 1st argument is the path that should be checked +# The 2nd argument is the return value +#---------------------------------------------------------------------------- +function (IS_SYSTEM_PATH path is_system_path) + foreach (dir ${CMAKE_SYSTEM_PATH}) + if ("${path}" STREQUALS "$dir") + set(${is_system_path} true PARENT_SCOPE) + endif() + endforeach() + set(${is_system_path} false PARENT_SCOPE) +endfunction() + +#---------------------------------------------------------------------------- +# If path is not a system path, append it to the given variable +# The 1st argument is the path to be checked +# The 2nd argument is the variable that the path gets appended to if it is +# not a system path. +#---------------------------------------------------------------------------- +function (IF_NOT_SYSTEM_PATH_APPEND path variable) + IS_SYSTEM_PATH("${path}" is_system_path) + if (NOT is_system_path) + if (${${variable}} STRING_EMPTY) + set(${variable} "${path}" PARENT_SCOPE) + else() + if(WIN32) + set(ROOT_PATH_SEPARATOR ";") + elseif(UNIX) + set(ROOT_PATH_SEPARATOR ":") + endif() + set(${variable} "${${variable}}${ROOT_PATH_SEPARATOR}${path}" PARENT_SCOPE) + endif() + endif() +endfunction() diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index a3316787b5a84..dba504981ebfe 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1342,6 +1342,7 @@ elseif(vc) endif() if(Vc_FOUND) set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES ${Vc_INCLUDE_DIR}) + IF_NOT_SYSTEM_PATH_APPEND("${Vc_INCLUDE_DIR}" DEFAULT_ROOT_INCLUDE_PATH) endif() endif() diff --git a/config/thisroot.bat b/config/thisroot.bat index 4bc260272549d..c5274d27eefe7 100644 --- a/config/thisroot.bat +++ b/config/thisroot.bat @@ -12,5 +12,6 @@ cd /D %OLDPATH% set PATH=%ROOTSYS%\bin;%PATH% set CMAKE_PREFIX_PATH=%ROOTSYS%;%CMAKE_PREFIX_PATH% set PYTHONPATH=%ROOTSYS%\bin;%PYTHONPATH% +set ROOT_INCLUDE_PATH=@DEFAULT_ROOT_INLUCDE_PATH@;%ROOT_INCLUDE_PATH% set OLDPATH= set THIS= diff --git a/config/thisroot.csh b/config/thisroot.csh index 71b7aca85898b..ad2b1febac4de 100644 --- a/config/thisroot.csh +++ b/config/thisroot.csh @@ -162,6 +162,14 @@ if ($?old_rootsys) then -e "s;^$old_rootsys/etc/notebook${DOLLAR};;g"` endif + if ($?ROOT_INCLUDE_PATH) then + setenv ROOT_INCLUDE_PATH `set DOLLAR='$'; echo $ROOT_INCLUDE_PATH | \ + sed -e "s;:@DEFAULT_ROOT_INCLUDE_PATH@:;:;g" \ + -e "s;:@DEFAULT_ROOT_INCLUDE_PATH@${DOLLAR};;g" \ + -e "s;^@DEFAULT_ROOT_INCLUDE_PATH@:;;g" \ + -e "s;^@DEFAULT_ROOT_INCLUDE_PATH@${DOLLAR};;g"` + endif + endif @@ -232,6 +240,12 @@ else setenv JUPYTER_CONFIG_DIR ${ROOTSYS}/etc/notebook endif +if ($?ROOT_INCLUDE_PATH) then + setenv ROOT_INCLUDE_PATH @DEFAULT_ROOT_INLUCDE_PATH@:$ROOT_INCLUDE_PATH +else + setenv ROOT_INCLUDE_PATH @DEFAULT_ROOT_INLUCDE_PATH@ +endif + endif # if ("$thisroot" != "") set thisroot= diff --git a/config/thisroot.fish b/config/thisroot.fish index 0a027fdeead03..96140f5d95ac2 100644 --- a/config/thisroot.fish +++ b/config/thisroot.fish @@ -49,6 +49,7 @@ update_path MANPATH "$old_rootsys" "/man" @mandir@ update_path CMAKE_PREFIX_PATH "$old_rootsys" "" $ROOTSYS update_path JUPYTER_PATH "$old_rootsys" "/etc/notebook" $ROOTSYS/etc/notebook update_path JUPYTER_CONFIG_DIR "$old_rootsys" "/etc/notebook" $ROOTSYS/etc/notebook +update_path ROOT_INCLUDE_PATH "@DEFAULT_ROOT_INCLUDE_PATH@" "" "@DEFAULT_ROOT_INCLUDE_PATH@" functions -e update_path set -e old_rootsys diff --git a/config/thisroot.ps1 b/config/thisroot.ps1 index c3fad28355b51..8372a996da811 100644 --- a/config/thisroot.ps1 +++ b/config/thisroot.ps1 @@ -7,3 +7,4 @@ $ROOTSYS = split-path -parent (get-item $scriptPath) $env:PATH = $ROOTSYS + '\bin;' + $env:PATH $env:CMAKE_PREFIX_PATH = $ROOTSYS + ';' + $env:CMAKE_PREFIX_PATH $env:PYTHONPATH = $ROOTSYS + '\bin;' + $env:PYTHONPATH +$env:ROOT_INCLUDE_PATH = "@DEFAULT_ROOT_INCLUDE_PATH@" + ';' + $env:ROOT_INCLUDE_PATH diff --git a/config/thisroot.sh b/config/thisroot.sh index c7db68a312154..d2b945bb75c65 100644 --- a/config/thisroot.sh +++ b/config/thisroot.sh @@ -89,6 +89,10 @@ clean_environment() default_manpath="" fi fi + if [ -n "${ROOT_INCLUDE_PATH-}" ]; then + drop_from_path "$ROOT_INCLUDE_PATH" "@DEFAULT_ROOT_INCLUDE_PATH@" + ROOT_INCLUDE_PATH=$newpath + fi } set_environment() @@ -162,6 +166,14 @@ set_environment() else JUPYTER_CONFIG_DIR=$ROOTSYS/etc/notebook:$JUPYTER_CONFIG_DIR; export JUPYTER_CONFIG_DIR fi + + if [ -z "${ROOT_INCLUDE_PATH-}" ]; then + ROOT_INCLUDE_PATH=@DEFAULT_ROOT_INCLUDE_PATH@ + export ROOT_INCLUDE_PATH + else + ROOT_INCLUDE_PATH=@DEFAULT_ROOT_INCLUDE_PATH@:$ROOT_INCLUDE_PATH + export ROOT_INCLUDE_PATH + fi } getTrueShellExeName() { # mklement0 https://stackoverflow.com/a/23011530/7471760 diff --git a/roottest/root/io/transient/base/CMakeLists.txt b/roottest/root/io/transient/base/CMakeLists.txt index 4b91da235360e..95c1164497b54 100644 --- a/roottest/root/io/transient/base/CMakeLists.txt +++ b/roottest/root/io/transient/base/CMakeLists.txt @@ -22,4 +22,4 @@ ROOTTEST_ADD_TEST(hadd_autoload COMMAND hadd -f data_merge.root data1.root data2.root OUTREF hadd_autoload${outref_suffix}.ref FIXTURES_REQUIRED root-io-transient-base-WriteFile-fixture - ENVIRONMENT ROOT_INCLUDE_PATH=${CMAKE_CURRENT_SOURCE_DIR}) + ENVIRONMENT ROOT_INCLUDE_PATH=${CMAKE_CURRENT_SOURCE_DIR}:${DEFAULT_ROOT_INCLUDE_PATH})