Compile rdctst and improve CMakeLists
Main CMake improvements: * Add rdctst with -DBUILD_TESTS=ON * Set default ROCM_DIR to /opt/rocm/ * Split rdc_libs/CMakeLists.txt into subdirectories * Package tests into rdc-tests.deb and .rpm Misc improvements: * Add .editorconfig to normalize code formatting * Add .gitignore * Expand RPATH for gRPC to reduce LD_LIBRARY_PATH usage * Export compile_commands.json * Show warning and do not install gRPC if GRPC_ROOT is left as default * Move .in files into relevant subdirectories * Move most variables into project CMakeLists.txt to avoid redefinitions * Normalize CMakeLists.txt formatting (4 spaces indentation) * Rename DIAGNOSTIC_LIB to RDC_ROCR_LIB * Update gRPC version in README to 1.44.0 * Remove gtest source * Pull gtest from github if not installed Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com> Depends-On: I1039ef61247e3f0ff822925cc869fb0c2bf3af85 Change-Id: I879b21428e6642f19fda67092b365d8b78b7ba7b
Этот коммит содержится в:
1 родитель
3214c21e6e
Коммит
2c171767b3
268 files changed
+842
-109394
No files matched your search
@@ -18,11 +18,6 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
#
|
||||
# Minimum version of cmake required
|
||||
#
|
||||
cmake_minimum_required(VERSION 3.5.0)
|
||||
|
||||
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
|
||||
message(" Cmake Server ")
|
||||
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
|
||||
@@ -39,45 +34,43 @@ message("----------Proj Exe Dir: " ${PROJECT_BINARY_DIR}/bin)
|
||||
message("----------RSMI Lib Dir: " ${RSMI_LIB_DIR})
|
||||
message("----------RSMI Inc Dir: " ${RSMI_INC_DIR})
|
||||
message("---------GRPC Root Dir: " ${GRPC_ROOT})
|
||||
message("---Server Install Path: " ${RDC_SERVER_ROOT_PATH})
|
||||
message("---Server Install Path: " ${RDC_ROOT_PATH})
|
||||
message("")
|
||||
|
||||
set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
CACHE STRING "Location of RDC client library source code.")
|
||||
|
||||
## Compiler flags
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -std=c++11 ")
|
||||
# Use this instead of above for 32 bit
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
||||
|
||||
if ("${CMAKE_BUILD_TYPE}" STREQUAL Release)
|
||||
if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -s")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O0 -DDEBUG")
|
||||
endif()
|
||||
|
||||
set(SRC_DIR "src")
|
||||
set(INC_DIR "include/${RDC}")
|
||||
set(INC_DIR "include/rdc")
|
||||
|
||||
# TODO delete these if not used
|
||||
file(GLOB PROTOBUF_GENERATED_INCLUDES "${PROTOB_OUT_DIR}/*.h")
|
||||
file(GLOB PROTOBUF_GENERATED_SRCS "${PROTOB_OUT_DIR}/*.cc")
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
"${PROJECT_SOURCE_DIR}/include"
|
||||
"${GRPC_ROOT}/include"
|
||||
"${PROTOB_OUT_DIR}"
|
||||
"${RSMI_INC_DIR}"
|
||||
"${RDC_SRC_ROOT}")
|
||||
"${PROJECT_SOURCE_DIR}/include"
|
||||
"${GRPC_ROOT}/include"
|
||||
"${PROTOB_OUT_DIR}"
|
||||
"${RSMI_INC_DIR}"
|
||||
"${PROJECT_SOURCE_DIR}")
|
||||
|
||||
set(SERVER_SRC_LIST "${SRC_DIR}/rdc_rsmi_service.cc")
|
||||
set(SERVER_SRC_LIST ${SERVER_SRC_LIST} "${SRC_DIR}/rdc_admin_service.cc")
|
||||
set(SERVER_SRC_LIST ${SERVER_SRC_LIST} "${SRC_DIR}/rdc_api_service.cc")
|
||||
set(SERVER_SRC_LIST ${SERVER_SRC_LIST} "${SRC_DIR}/rdc_server_main.cc")
|
||||
set(SERVER_SRC_LIST ${SERVER_SRC_LIST} "${PROTOBUF_GENERATED_SRCS}")
|
||||
set(SERVER_SRC_LIST ${SERVER_SRC_LIST} "${RDC_SRC_ROOT}/common/rdc_utils.cc")
|
||||
set(SERVER_SRC_LIST ${SERVER_SRC_LIST} "${RDC_SRC_ROOT}/common/rdc_capabilities.cc")
|
||||
set(SERVER_SRC_LIST
|
||||
"${COMMON_DIR}/rdc_capabilities.cc"
|
||||
"${COMMON_DIR}/rdc_utils.cc"
|
||||
"${PROTOBUF_GENERATED_SRCS}"
|
||||
"${SRC_DIR}/rdc_admin_service.cc"
|
||||
"${SRC_DIR}/rdc_api_service.cc"
|
||||
"${SRC_DIR}/rdc_rsmi_service.cc"
|
||||
"${SRC_DIR}/rdc_server_main.cc")
|
||||
message("SERVER_SRC_LIST=${SERVER_SRC_LIST}")
|
||||
|
||||
set(SERVER_DAEMON_EXE "rdcd")
|
||||
@@ -88,42 +81,29 @@ 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/../lib:\$ORIGIN/../lib64:\$ORIGIN/../lib/rdc:\$ORIGIN/../lib64/rdc;\$ORIGIN/../grpc/lib:\$ORIGIN/../grpc/lib64:\$ORIGIN/../lib/rdc/grpc/lib:\$ORIGIN/../lib64/rdc/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)
|
||||
if(DEFINED ENV{ROCM_RPATH})
|
||||
set(CMAKE_EXE_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)
|
||||
|
||||
# Run path can only include direct refer library, include the indirect libs
|
||||
# required by gRPC
|
||||
# Get all absl library and re2
|
||||
file(GLOB grpc_libs "${GRPC_ROOT}/lib*/lib*.so")
|
||||
foreach(src_file ${grpc_libs})
|
||||
get_filename_component(lib_name "${src_file}" NAME_WLE)
|
||||
STRING(REGEX REPLACE "^lib" "" lib_name ${lib_name}) # strip out lib
|
||||
if(lib_name MATCHES "absl.*" OR lib_name STREQUAL "re2")
|
||||
set(RDCD_EXTRA_LIB ${RDCD_EXTRA_LIB} ${lib_name})
|
||||
endif()
|
||||
endforeach()
|
||||
# Set other library
|
||||
set(RDCD_EXTRA_LIB ${RDCD_EXTRA_LIB} address_sorting gpr upb ssl crypto)
|
||||
# Set other library
|
||||
set(RDCD_EXTRA_LIB ${RDCD_EXTRA_LIB} 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} ${RDCD_EXTRA_LIB} pthread rt grpc grpc++
|
||||
cap grpc++_reflection dl protobuf rocm_smi64 rdc_bootstrap)
|
||||
target_link_libraries(${SERVER_DAEMON_EXE} pthread rt gRPC::grpc++
|
||||
cap dl rocm_smi64 rdc_bootstrap ${RDCD_EXTRA_LIB})
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SERVER_DAEMON_EXE}
|
||||
PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_READ
|
||||
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
DESTINATION ${RDC_CLIENT_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}
|
||||
COMPONENT ${SERVER_COMPONENT})
|
||||
PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_READ
|
||||
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
DESTINATION ${RDC_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}
|
||||
COMPONENT ${SERVER_COMPONENT})
|
||||
install(FILES ${PROJECT_BINARY_DIR}/${SERVICE_FILE_NAME}
|
||||
DESTINATION ${RDC_CLIENT_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/${RDC}
|
||||
COMPONENT ${SERVER_COMPONENT})
|
||||
DESTINATION ${RDC_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/${RDC}
|
||||
COMPONENT ${SERVER_COMPONENT})
|
||||
|
||||
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
|
||||
message(" Finished Cmake Server ")
|
||||
|
||||
@@ -24,7 +24,7 @@ AmbientCapabilities=CAP_DAC_OVERRIDE
|
||||
# If we need to start anything before rdcd, use this
|
||||
# ExecStartPre=
|
||||
|
||||
ExecStart=/@RDC_CLIENT_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/rdcd
|
||||
ExecStart=/@RDC_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/rdcd
|
||||
|
||||
# If we need to start anything after rdcd use this
|
||||
# ExecStartPost=
|
||||
|
||||
Reference in new issue
Block a user