diff --git a/cmake/modules/RootMacros.cmake b/cmake/modules/RootMacros.cmake index 87c95d2e7ddf3..1fc36f5899169 100644 --- a/cmake/modules/RootMacros.cmake +++ b/cmake/modules/RootMacros.cmake @@ -2482,8 +2482,7 @@ endfunction(ROOTTEST_ADD_AUTOMACROS) #------------------------------------------------------------------------------- # # macro ROOTTEST_COMPILE_MACRO( [BUILDOBJ object] [BUILDLIB lib] -# [FIXTURES_SETUP ...] [FIXTURES_CLEANUP ...] [FIXTURES_REQUIRED ...] -# [EXTRA_RPATHS ...]) +# [FIXTURES_SETUP ...] [FIXTURES_CLEANUP ...] [FIXTURES_REQUIRED ...]) # # This macro creates and loads a shared library containing the code from # the file . A test that performs the compilation is created. @@ -2493,7 +2492,7 @@ endfunction(ROOTTEST_ADD_AUTOMACROS) # #------------------------------------------------------------------------------- macro(ROOTTEST_COMPILE_MACRO filename) - CMAKE_PARSE_ARGUMENTS(ARG "" "BUILDOBJ;BUILDLIB" "FIXTURES_SETUP;FIXTURES_CLEANUP;FIXTURES_REQUIRED;EXTRA_RPATHS" ${ARGN}) + CMAKE_PARSE_ARGUMENTS(ARG "" "BUILDOBJ;BUILDLIB" "FIXTURES_SETUP;FIXTURES_CLEANUP;FIXTURES_REQUIRED" ${ARGN}) # Add defines to root_compile_macro, in order to have out-of-source builds # when using the scripts/build.C macro. @@ -2508,18 +2507,11 @@ macro(ROOTTEST_COMPILE_MACRO filename) endforeach() cmake_path(CONVERT "${CMAKE_CURRENT_BINARY_DIR}" TO_NATIVE_PATH_LIST NATIVE_BINARY_DIR) - if(ARG_EXTRA_RPATHS) - set(extra_rpaths) - foreach(rpath ${ARG_EXTRA_RPATHS}) - list(APPEND extra_rpaths -e "gSystem->SetMakeSharedLib(TString{gSystem->GetMakeSharedLib()}.ReplaceAll(\"$RPath\", \"$RPath -Wl,-rpath,${rpath}\"))") - endforeach() - endif() set(root_compile_macro ${CMAKE_COMMAND} -E env ROOT_LIBRARY_PATH=${NATIVE_BINARY_DIR} ROOT_INCLUDE_PATH=${CMAKE_CURRENT_BINARY_DIR}:${DEFAULT_ROOT_INCLUDE_PATH} ${ROOT_root_CMD} -e "gSystem->SetBuildDir(\"${CMAKE_CURRENT_BINARY_DIR}\", true)" - ${extra_rpaths} ${RootMacroDirDefines} -q -b ) diff --git a/core/base/src/TSystem.cxx b/core/base/src/TSystem.cxx index 018ea869ed8eb..9df99712e9c0c 100644 --- a/core/base/src/TSystem.cxx +++ b/core/base/src/TSystem.cxx @@ -3736,7 +3736,12 @@ int TSystem::CompileMacro(const char *filename, Option_t *opt, cmd.ReplaceAll("\"$BuildDir","$BuildDir"); cmd.ReplaceAll("$BuildDir","\"$BuildDir\""); cmd.ReplaceAll("$BuildDir",build_loc); - cmd.ReplaceAll("$RPath", "-Wl,-rpath," + gROOT->GetSharedLibDir()); + // Add relevant directories to RPATH: + // - Directory with all the ROOT libraries. + // - Directory where this shared library is being created. This enables creating multiple + // libraries via ACLiC in the same session and have them depend on each other without + // the need to set further environment variables. + cmd.ReplaceAll("$RPath", "-Wl,-rpath," + gROOT->GetSharedLibDir() + " -Wl,-rpath," + build_loc); TString optdebFlags; if (mode & kDebug) optdebFlags = fFlagsDebug + " "; diff --git a/roottest/root/io/arrayobject/CMakeLists.txt b/roottest/root/io/arrayobject/CMakeLists.txt index 2aaf64961bb64..60efffe130f1a 100644 --- a/roottest/root/io/arrayobject/CMakeLists.txt +++ b/roottest/root/io/arrayobject/CMakeLists.txt @@ -3,13 +3,11 @@ ROOTTEST_COMPILE_MACRO(foo.C ROOTTEST_COMPILE_MACRO(bar.C BUILDLIB foo_C - EXTRA_RPATHS ${CMAKE_CURRENT_BINARY_DIR} FIXTURES_REQUIRED root-io-arrayobject-foo-fixture FIXTURES_SETUP root-io-arrayobject-bar-fixture) ROOTTEST_COMPILE_MACRO(main.C BUILDLIB bar_C - EXTRA_RPATHS ${CMAKE_CURRENT_BINARY_DIR} FIXTURES_REQUIRED root-io-arrayobject-bar-fixture FIXTURES_SETUP root-io-arrayobject-main-fixture)