From fb57a438d79eb01145cec5e66451788e794759b1 Mon Sep 17 00:00:00 2001 From: Cen Zhao Date: Tue, 26 Sep 2023 12:50:54 -0700 Subject: [PATCH] Update install.sh to take "--static" option (#894) * Update install.sh to take "--static" option * Fix static build errors --------- Co-authored-by: BertanDogancay --- CMakeLists.txt | 16 +++++++++------- install.sh | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90ace2446a..2cd71cd270 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -607,20 +607,15 @@ endif() target_link_directories(rccl PRIVATE ${ROCM_SMI_LIB_DIR}) ## Set RCCL linked libraries -target_link_libraries(rccl PRIVATE Threads::Threads) -target_link_libraries(rccl INTERFACE hip::host) -target_link_libraries(rccl PRIVATE hip::device) -target_link_libraries(rccl PRIVATE dl) -target_link_libraries(rccl PRIVATE ${ROCM_SMI_LIBRARIES}) if (HAS_BFD) target_link_libraries(rccl PRIVATE bfd) if(HAVE_IBERTY) target_link_libraries(rccl PRIVATE iberty z) endif() endif() +target_link_libraries(rccl PRIVATE -fgpu-rdc) # Required when linking relocatable device code ## Set RCCL link options -target_link_options(rccl PRIVATE -fgpu-rdc) # Required when linking relocatable device code target_link_options(rccl PRIVATE -parallel-jobs=16) # Use multiple threads to link if(BUILD_ADDRESS_SANITIZER) target_link_options(rccl PRIVATE -fuse-ld=lld) @@ -628,9 +623,10 @@ endif() if(TIMETRACE) target_link_options(rccl PRIVATE -ftime-trace) endif() + if(NOT BUILD_SHARED_LIBS) message(STATUS "Building static RCCL library") - target_link_options(rccl PRIVATE --emit-static-lib) + target_link_libraries(rccl PRIVATE --emit-static-lib) set(CMAKE_AR "${hipcc_executable}") get_property(link_libraries TARGET rccl PROPERTY LINK_LIBRARIES) string (REPLACE ";" " " LINK_PROPS "${link_libraries}") @@ -639,6 +635,12 @@ else() message(STATUS "Building shared RCCL library") endif() +target_link_libraries(rccl PRIVATE Threads::Threads) +target_link_libraries(rccl INTERFACE hip::host) +target_link_libraries(rccl PRIVATE hip::device) +target_link_libraries(rccl PRIVATE dl) +target_link_libraries(rccl PRIVATE ${ROCM_SMI_LIBRARIES}) + ## Track linking time set_property(TARGET rccl PROPERTY RULE_LAUNCH_LINK "${CMAKE_COMMAND} -E time") diff --git a/install.sh b/install.sh index a7d5ad5d84..476f9f8496 100755 --- a/install.sh +++ b/install.sh @@ -68,7 +68,7 @@ function display_help() # check if we have a modern version of getopt that can handle whitespace and long parameters getopt -T if [[ $? -eq 4 ]]; then - GETOPT_PARSE=$(getopt --name "${0}" --options dfhij:lprt --longoptions address-sanitizer,build_allreduce_only,dependencies,debug,disable_backtrace,disable-colltrace,disable-msccl-kernel,fast,help,install,jobs:,local_gpu_only,no_clean,npkit-enable,package_build,prefix:,rm-legacy-include-dir,run_tests_all,run_tests_quick,tests_build,time-trace,verbose -- "$@") + GETOPT_PARSE=$(getopt --name "${0}" --options dfhij:lprt --longoptions address-sanitizer,build_allreduce_only,dependencies,debug,disable_backtrace,disable-colltrace,disable-msccl-kernel,fast,help,install,jobs:,local_gpu_only,no_clean,npkit-enable,package_build,prefix:,rm-legacy-include-dir,run_tests_all,run_tests_quick,static,tests_build,time-trace,verbose -- "$@") else echo "Need a new version of getopt" exit 1