Install grpc lib to rdc folder

Install the grpc lib to rdc/grpc/lib and add miss libraries.

Add “--no-as-needed” and all extra grpc libraries in rdci/rdcd as
RUNPATH will only search direct dependencies.

Change-Id: I596acb2eb3a7228d703e79db64699bc20d0e7c09
Этот коммит содержится в:
Bill(Shuzhou) Liu
2021-01-21 14:23:30 -05:00
родитель 51efe26442
Коммит 07d4d5376e
4 изменённых файлов: 55 добавлений и 19 удалений
+14 -4
Просмотреть файл
@@ -150,7 +150,7 @@ if(BUILD_STANDALONE)
message("protoc cmd:")
message(" $ ${PROTOB_CMD} --proto_path=${PROTOB_SRC_DIR}")
message(" --grpc_out=${PROTOB_OUT_DIR}")
message("....--plugin=\"${GRPC_PLUGIN}\" ${file}")
message("....--plugin=protoc-gen-grpc=\"${GRPC_PLUGIN}\" ${file}")
execute_process(COMMAND
${PROTOB_CMD} --proto_path=${PROTOB_SRC_DIR}
@@ -177,9 +177,19 @@ set(CLIENT_COMPONENT "client")
# Standalone only folders
if(BUILD_STANDALONE)
install(DIRECTORY ${GRPC_ROOT}/lib
USE_SOURCE_PERMISSIONS
DESTINATION usr
FILES_MATCHING PATTERN "libgrpc*")
USE_SOURCE_PERMISSIONS
DESTINATION ${RDC_CLIENT_INSTALL_PREFIX}/${RDC}/grpc
COMPONENT ${SERVER_COMPONENT})
# Also include dev setup for people do not want to build grpc
install(DIRECTORY ${GRPC_ROOT}/bin
USE_SOURCE_PERMISSIONS
DESTINATION ${RDC_CLIENT_INSTALL_PREFIX}/${RDC}/grpc
COMPONENT ${SERVER_COMPONENT})
install(DIRECTORY ${GRPC_ROOT}/include
USE_SOURCE_PERMISSIONS
DESTINATION ${RDC_CLIENT_INSTALL_PREFIX}/${RDC}/grpc
COMPONENT ${SERVER_COMPONENT})
add_subdirectory("server")
add_subdirectory("client")
+9
Просмотреть файл
@@ -65,6 +65,15 @@ set(SRC_DIR "${PROJECT_SOURCE_DIR}/rdc_libs")
set(RDC_LIB_INC_DIR "${PROJECT_SOURCE_DIR}/include")
set(COMMON_DIR "${PROJECT_SOURCE_DIR}/common")
## Set RUNPATH if ROCM_RPATH is defined and passed by the environment
## RUNPATH should help to run "rdcd" without the usage of ldconfig
if (DEFINED ENV{ROCM_RPATH})
set (LIB_RUNPATH "\$ORIGIN/../lib:\$ORIGIN/../lib64")
set (CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-new-dtags -Wl,--no-as-needed -Wl,-z,origin")
set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${LIB_RUNPATH}")
set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set (CMAKE_SKIP_BUILD_RPATH TRUE)
endif()
################# Determine the library version #########################
## Setup the SO version based on git tags.
+18 -8
Просмотреть файл
@@ -85,19 +85,29 @@ set(RDCI_SRC_LIST ${RDCI_SRC_LIST}
message("RDCI_SRC_LIST=${RDCI_SRC_LIST}")
set(RDCI_EXE "rdci")
link_directories(${LIB_BOOSTRAP_DIR})
link_directories(${LIB_BOOSTRAP_DIR} "${GRPC_ROOT}/lib" "${GRPC_ROOT}/lib64")
add_executable(${RDCI_EXE} "${RDCI_SRC_LIST}")
## RUNPATH should help to run "rdci" without the usage of ldconfig
set(RDC_RUNPATH "\$ORIGIN:\$ORIGIN/../lib:\$ORIGIN/../lib64")
set(GRPC_RUNPATH "\$ORIGIN/../../grpc/lib:\$ORIGIN/../../grpc/lib64")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags -Wl,--rpath,${RDC_RUNPATH}:${GRPC_RUNPATH}")
set(CMAKE_SKIP_BUILD_RPATH TRUE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_SKIP_RPATH TRUE)
if (DEFINED ENV{ROCM_RPATH})
set(RDC_RUNPATH "\$ORIGIN:\$ORIGIN/../lib:\$ORIGIN/../lib64")
set(GRPC_RUNPATH "\$ORIGIN/../grpc/lib:\$ORIGIN/../grpc/lib64")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags -Wl,--rpath,${RDC_RUNPATH}:${GRPC_RUNPATH} -Wl,--no-as-needed -Wl,-z,origin")
set(CMAKE_SKIP_BUILD_RPATH TRUE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_SKIP_RPATH TRUE)
target_link_libraries(${RDCI_EXE} pthread dl rdc_bootstrap)
# Run path can only include direct refer library, here is the indirect libs
# required by gRPC
set (RDCD_EXTRA_LIB absl_str_format_internal absl_strings absl_throw_delegate
absl_bad_optional_access absl_strings absl_throw_delegate absl_int128
absl_strings_internal absl_raw_logging_internal address_sorting
gpr upb ssl crypto )
endif()
target_link_libraries(${RDCI_EXE} ${RDCD_EXTRA_LIB} pthread dl rdc_bootstrap)
## Add the install directives for the rdci executable
+14 -7
Просмотреть файл
@@ -89,17 +89,24 @@ link_directories(${RSMI_LIB_DIR} "${GRPC_ROOT}/lib" "${GRPC_ROOT}/lib64")
## Set RUNPATH if ROCM_RPATH is defined and passed by the environment
## RUNPATH should help to run "rdcd" without the usage of ldconfig
if (DEFINED ENV{ROCM_RPATH})
set (GRPC_RUNPATH "\$ORIGIN/../../grpc/lib:\$ORIGIN/../../grpc/lib64")
set (CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags")
set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${GRPC_RUNPATH}")
set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set (CMAKE_SKIP_BUILD_RPATH TRUE)
endif ()
set (GRPC_RUNPATH "\$ORIGIN/../lib:\$ORIGIN/../grpc/lib:\$ORIGIN/../grpc/lib64")
set (CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags -Wl,--no-as-needed -Wl,-z,origin")
set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:${GRPC_RUNPATH}")
set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set (CMAKE_SKIP_BUILD_RPATH TRUE)
# Run path can only include direct refer library, here is the indirect libs
# required by gRPC
set (RDCD_EXTRA_LIB absl_str_format_internal absl_strings absl_throw_delegate
absl_bad_optional_access absl_strings absl_throw_delegate absl_int128
absl_strings_internal absl_raw_logging_internal address_sorting
gpr upb ssl crypto)
endif()
add_executable(${SERVER_DAEMON_EXE} "${SERVER_SRC_LIST}")
# target_include_directories(${SERVER_DAEMON_EXE} PUBLIC ${RSMI_INC_DIR})
target_link_libraries(${SERVER_DAEMON_EXE} pthread rt grpc grpc++
target_link_libraries(${SERVER_DAEMON_EXE} ${RDCD_EXTRA_LIB} pthread rt grpc grpc++
cap grpc++_reflection dl protobuf rocm_smi64 rdc_bootstrap)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SERVER_DAEMON_EXE}