001aa0b825
This corrects issues that arose after OAM reorganization.
It should address SWDEV-243294.
Also, fix some compile warnings that show up on RHEL.
Change-Id: Id14d444905da35cd7346bcfbcd82b6d0572708c4
[ROCm/rocm_smi_lib commit: c2ef9a6879]
174 řádky
6.7 KiB
CMake
Spustitelný soubor
174 řádky
6.7 KiB
CMake
Spustitelný soubor
#
|
|
# Minimum version of cmake required
|
|
#
|
|
cmake_minimum_required(VERSION 3.5.0)
|
|
|
|
set(AMD_SMI_LIBS_TARGET "amd_smi_libraries")
|
|
|
|
## Set default module path if not already set
|
|
if(NOT DEFINED CMAKE_MODULE_PATH)
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/")
|
|
endif()
|
|
## Include common cmake modules
|
|
include(utils)
|
|
|
|
set(ROCM_SMI "rocm_smi")
|
|
set(ROCM_SMI_COMPONENT "lib${ROCM_SMI}")
|
|
set(ROCM_SMI_TARGET "${ROCM_SMI}64")
|
|
set(ROCM_SMI_LIB_NAME "lib${ROCM_SMI_TARGET}")
|
|
|
|
# provide git to utilities
|
|
find_program (GIT NAMES git)
|
|
|
|
## Setup the package version based on git tags.
|
|
set(PKG_VERSION_GIT_TAG_PREFIX "rsmi_pkg_ver")
|
|
get_package_version_number("1.0.0" ${PKG_VERSION_GIT_TAG_PREFIX} GIT)
|
|
message("Package version: ${PKG_VERSION_STR}")
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_MAJOR "${VERSION_MAJOR}")
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_MINOR "${VERSION_MINOR}")
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_PATCH "0")
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_BUILD "0")
|
|
|
|
# The following default version values should be updated as appropriate for
|
|
# ABI breaks (update MAJOR and MINOR), and ABI/API additions (update MINOR).
|
|
# Until ABI stabilizes VERSION_MAJOR will be 0. This should be over-ridden
|
|
# by git tags (through "git describe") when they are present.
|
|
set(PKG_VERSION_MAJOR 1)
|
|
set(PKG_VERSION_MINOR 0)
|
|
set(PKG_VERSION_PATCH 0)
|
|
set(PKG_VERSION_NUM_COMMIT 0)
|
|
|
|
## Define default variable and variables for the optional build target
|
|
## rocm_smi_lib-dev
|
|
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
|
set(CMAKE_INSTALL_PREFIX "/opt/rocm"
|
|
CACHE STRING "Default installation directory.")
|
|
endif ()
|
|
set(COMMON_SRC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}
|
|
CACHE STRING "Location source code common root.")
|
|
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm"
|
|
CACHE STRING "Default packaging prefix.")
|
|
set(CPACK_GENERATOR "DEB;RPM" CACHE STRING "Default packaging generators.")
|
|
|
|
if (NOT DEFINED CPACK_PACKAGE_VENDOR)
|
|
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
|
|
endif()
|
|
|
|
if (NOT DEFINED CPACK_PACKAGE_CONTACT)
|
|
set(CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc.")
|
|
endif()
|
|
|
|
if (NOT DEFINED CPACK_PACKAGE_DESCRIPTION_SUMMARY)
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
|
"AMD System Management libraries")
|
|
endif()
|
|
|
|
if (NOT ROCM_SMI_PACKAGE)
|
|
set(ROCM_SMI_PACKAGE rocm-smi-lib64)
|
|
endif()
|
|
|
|
set(CPACK_PACKAGE_NAME ${ROCM_SMI_PACKAGE})
|
|
set(CPACK_PACKAGE_VERSION ${PKG_VERSION_STR})
|
|
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_SOURCE_DIR}/package.txt)
|
|
|
|
project(${AMD_SMI_LIBS_TARGET})
|
|
|
|
set(COMMON_PROJ_ROOT ${PROJECT_SOURCE_DIR})
|
|
|
|
## Verbose output.
|
|
set(CMAKE_VERBOSE_MAKEFILE on)
|
|
|
|
if (CMAKE_COMPILER_IS_GNUCC AND
|
|
CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.4.0)
|
|
message("Compiler version is " ${CMAKE_CXX_COMPILER_VERSION})
|
|
message(FATAL_ERROR "Require at least gcc-5.4.0")
|
|
endif()
|
|
|
|
## Compiler flags
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wall -Wextra -fno-rtti -m64 -msse -msse2 -std=c++11 ")
|
|
# Security options
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wconversion -Wcast-align ")
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wformat=2 -fno-common -Wstrict-overflow -Wtrampolines ")
|
|
# Intentionally leave out -Wsign-promo. It causes spurious warnings.
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wreorder ")
|
|
|
|
## Security breach mitigation flags
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -DFORTIFY_SOURCE=2 -fstack-protector-all -Wcast-align")
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wl,-z,noexecstack -Wl,-znoexecheap -Wl,-z,relro ")
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wl,-z,now -fPIE")
|
|
|
|
# Use this instead of above for 32 bit
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
|
|
|
if ("${CMAKE_BUILD_TYPE}" STREQUAL Release)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
|
else ()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O0 -DDEBUG")
|
|
endif ()
|
|
|
|
set(COMMON_SRC_DIR "${PROJECT_SOURCE_DIR}/src")
|
|
set(COMMON_INC_DIR "${PROJECT_SOURCE_DIR}/include/rocm_smi")
|
|
set(SHR_MUTEX_DIR "${PROJECT_SOURCE_DIR}/third_party/shared_mutex")
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/third_party/shared_mutex)
|
|
|
|
set(CMN_SRC_LIST "${COMMON_SRC_DIR}/rocm_smi_device.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi_main.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi_monitor.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi_power_mon.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi_utils.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi_counters.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi_kfd.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi_io_link.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${COMMON_SRC_DIR}/rocm_smi.cc")
|
|
set(CMN_SRC_LIST ${CMN_SRC_LIST} "${SHR_MUTEX_DIR}/shared_mutex.cc")
|
|
|
|
set(CMN_INC_LIST "${COMMON_INC_DIR}/rocm_smi_device.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_main.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_monitor.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_power_mon.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_utils.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_common.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_exception.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_counters.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_kfd.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi_io_link.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${COMMON_INC_DIR}/rocm_smi.h")
|
|
set(CMN_INC_LIST ${CMN_INC_LIST} "${SHR_MUTEX_DIR}/shared_mutex.h")
|
|
|
|
add_subdirectory("rocm_smi")
|
|
add_subdirectory("oam")
|
|
|
|
# install(TARGETS ${ROCM_SMI_TARGET}
|
|
# LIBRARY DESTINATION ${ROCM_SMI}/lib COMPONENT ${ROCM_SMI_COMPONENT})
|
|
# install(FILES ${COMMON_SRC_ROOT}/include/rocm_smi/rocm_smi.h
|
|
# DESTINATION rocm_smi/include/rocm_smi)
|
|
|
|
## Add the packaging directives for the runtime library.
|
|
|
|
# TODO set(CPACK_DEBIAN_PACKAGE_HOMEPAGE <GITHUB URL> )
|
|
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst;
|
|
${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/prerm")
|
|
set (CPACK_DEBIAN_PACKAGE_NAME ${ROCM_SMI_PACKAGE})
|
|
set (CPACK_DEBIAN_PACKAGE_VERSION ${PKG_VERSION_STR})
|
|
|
|
# RPM package specific variables
|
|
set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_post")
|
|
set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_postun")
|
|
set (CPACK_RPM_PACKAGE_NAME ${ROCM_SMI_PACKAGE})
|
|
set (CPACK_RPM_PACKAGE_VERSION ${PKG_VERSION_STR})
|
|
|
|
include (CPack)
|
|
|