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
Этот коммит содержится в:
Galantsev, Dmitrii committed 2022-10-07 13:58:50 -05:00
1 родитель 3214c21e6e
Коммит 2c171767b3
268 files changed
+842 -109394

No files matched your search

+31 -51
Просмотреть файл
@@ -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 ")
+1 -1
Просмотреть файл
@@ -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=