Skip to content
Merged
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
12 changes: 2 additions & 10 deletions cmake/modules/RootMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2482,8 +2482,7 @@ endfunction(ROOTTEST_ADD_AUTOMACROS)
#-------------------------------------------------------------------------------
#
# macro ROOTTEST_COMPILE_MACRO(<filename> [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 <filename>. A test that performs the compilation is created.
Expand All @@ -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.
Expand All @@ -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
)
Expand Down
7 changes: 6 additions & 1 deletion core/base/src/TSystem.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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 + " ";
Expand Down
2 changes: 0 additions & 2 deletions roottest/root/io/arrayobject/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
Loading