hsakmt: Fix ROCr static lib build in new layout
Change-Id: Idc71524924b96a44d63be9b1d0fccbe0e328d96e
[ROCm/ROCR-Runtime commit: 7e13b9e62f]
Цей коміт міститься в:
зафіксовано
Chris Freehill
джерело
8b98df2d47
коміт
b56dd0ef3b
@@ -48,6 +48,8 @@ project("rocr")
|
||||
|
||||
# option(BUILD_TESTS "Build tests" OFF)
|
||||
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
|
||||
function(add_rocm_subdir subdir subdir_assigns)
|
||||
message("add_rocm_subdir() -- " ${subdir})
|
||||
# message(" subdir_assigns before:" ${subdir_assigns} "EOM")
|
||||
@@ -84,32 +86,23 @@ endif()
|
||||
set(SO_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||
set(PACKAGE_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_COMMIT_COUNT}")
|
||||
|
||||
# Handling of BUILD_SHARED_LIBS in this top-level CMake:
|
||||
# * Default is to build shared libraries
|
||||
# * Except thunk will ignore this; it is always static
|
||||
if (NOT DEFINED BUILD_SHARED_LIBS)
|
||||
set (BUILD_SHARED_DEFAULT ON)
|
||||
else()
|
||||
set (BUILD_SHARED_DEFAULT OFF)
|
||||
endif()
|
||||
|
||||
# Build libhsakmt as static
|
||||
set(SAVED_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
add_rocm_subdir(libhsakmt "${THUNK_DEFINITIONS}")
|
||||
set_target_properties(hsakmt PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libhsakmt/archive"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libhsakmt/lib"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/libhsakmt/runtime")
|
||||
|
||||
set (BUILD_SHARED_LIBS ${SAVED_BUILD_SHARED_LIBS})
|
||||
add_rocm_subdir(runtime/hsa-runtime "${ROCR_DEFINITIONS}")
|
||||
set_target_properties(hsa-runtime64 PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/rocr/archive"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/rocr/lib"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/rocr/runtime")
|
||||
add_dependencies(hsa-runtime64 hsakmt)
|
||||
|
||||
if (BUILD_SHARED_LIBS)
|
||||
add_dependencies(hsa-runtime64 hsakmt)
|
||||
else()
|
||||
add_dependencies(hsa-runtime64 hsakmt-staticdrm)
|
||||
endif()
|
||||
# Optionally record the package's find module in the user's package cache.
|
||||
if ( NOT DEFINED EXPORT_TO_USER_PACKAGE_REGISTRY )
|
||||
set ( EXPORT_TO_USER_PACKAGE_REGISTRY "off")
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
cmake_minimum_required ( VERSION 3.6.3 )
|
||||
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
|
||||
set ( HSAKMT "hsakmt" )
|
||||
set ( HSAKMT_PACKAGE "hsakmt-roct" )
|
||||
set ( HSAKMT_COMPONENT "lib${HSAKMT}" )
|
||||
@@ -37,6 +39,7 @@ project ( ${HSAKMT_TARGET} VERSION 1.9.0)
|
||||
if ( NOT DEFINED BUILD_SHARED_LIBS )
|
||||
set ( BUILD_SHARED_LIBS "off" )
|
||||
endif()
|
||||
set ( BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS} CACHE BOOL "Build shared library (.so) or not.")
|
||||
|
||||
# Optionally, build HSAKMT with ccache.
|
||||
set(ROCM_CCACHE_BUILD OFF CACHE BOOL "Set to ON for a ccache enabled build")
|
||||
@@ -134,7 +137,7 @@ set ( HSAKMT_SRC "src/debug.c"
|
||||
"src/pc_sampling.c")
|
||||
|
||||
## Declare the library target name
|
||||
add_library ( ${HSAKMT_TARGET} "")
|
||||
add_library (${HSAKMT_TARGET} STATIC "")
|
||||
|
||||
## Add sources
|
||||
target_sources ( ${HSAKMT_TARGET} PRIVATE ${HSAKMT_SRC} )
|
||||
@@ -278,43 +281,48 @@ configure_file ( libhsakmt.pc.in libhsakmt.pc @ONLY )
|
||||
|
||||
install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/libhsakmt.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT dev)
|
||||
|
||||
## Create separate target file for static builds
|
||||
## In static builds, libdrm and libdrm_amdgpu need to be linked statically
|
||||
add_library ( ${HSAKMT_STATIC_DRM_TARGET} STATIC ${HSAKMT_SRC})
|
||||
if ( NOT BUILD_SHARED_LIBS)
|
||||
## Create separate target file for static builds
|
||||
## In static builds, libdrm and libdrm_amdgpu need to be linked statically
|
||||
add_library (${HSAKMT_STATIC_DRM_TARGET} STATIC "")
|
||||
target_sources (${HSAKMT_STATIC_DRM_TARGET} PRIVATE ${HSAKMT_SRC})
|
||||
|
||||
target_include_directories( ${HSAKMT_STATIC_DRM_TARGET}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src )
|
||||
target_include_directories( ${HSAKMT_STATIC_DRM_TARGET}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src )
|
||||
|
||||
## Set the VERSION and SOVERSION values
|
||||
set_property(TARGET ${HSAKMT_STATIC_DRM_TARGET} PROPERTY LINK_FLAGS ${HSAKMT_LINK_FLAGS}
|
||||
PROPERTY VERSION "${LIB_VERSION_STRING}"
|
||||
PROPERTY SOVERSION "${LIB_VERSION_MAJOR}" )
|
||||
## Set the VERSION and SOVERSION values
|
||||
set_property(TARGET ${HSAKMT_STATIC_DRM_TARGET} PROPERTY LINK_FLAGS ${HSAKMT_LINK_FLAGS}
|
||||
PROPERTY VERSION "${LIB_VERSION_STRING}"
|
||||
PROPERTY SOVERSION "${LIB_VERSION_MAJOR}" )
|
||||
|
||||
#Additional search path for static libraries
|
||||
if(${DISTRO_ID} MATCHES "ubuntu")
|
||||
set(AMDGPU_STATIC_LIB_PATHS "-L/opt/amdgpu/lib/x86_64-linux-gnu")
|
||||
else()
|
||||
set(AMDGPU_STATIC_LIB_PATHS "-L/opt/amdgpu/lib64" "-L/opt/amdgpu/lib")
|
||||
#Additional search path for static libraries
|
||||
if(${DISTRO_ID} MATCHES "ubuntu")
|
||||
set(AMDGPU_STATIC_LIB_PATHS "-L/opt/amdgpu/lib/x86_64-linux-gnu")
|
||||
else()
|
||||
set(AMDGPU_STATIC_LIB_PATHS "-L/opt/amdgpu/lib64" "-L/opt/amdgpu/lib")
|
||||
endif()
|
||||
# Link drm_amdgpu and drm library statically
|
||||
target_link_libraries ( ${HSAKMT_STATIC_DRM_TARGET}
|
||||
PRIVATE pthread rt c numa ${CMAKE_DL_LIBS}
|
||||
INTERFACE -Wl,-Bstatic ${AMDGPU_STATIC_LIB_PATHS} ${DRM_AMDGPU_LDFLAGS} ${DRM_LDFLAGS} -Wl,-Bdynamic
|
||||
)
|
||||
target_compile_options(${HSAKMT_STATIC_DRM_TARGET} PRIVATE ${DRM_CFLAGS} ${HSAKMT_C_FLAGS})
|
||||
|
||||
install ( TARGETS ${HSAKMT_STATIC_DRM_TARGET} EXPORT ${HSAKMT_STATIC_DRM_TARGET}Targets
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary)
|
||||
install ( EXPORT ${HSAKMT_STATIC_DRM_TARGET}Targets
|
||||
FILE ${HSAKMT_STATIC_DRM_TARGET}Targets.cmake
|
||||
NAMESPACE ${HSAKMT_STATIC_DRM_TARGET}::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${HSAKMT_TARGET}
|
||||
COMPONENT dev)
|
||||
|
||||
add_library( ${HSAKMT_STATIC_DRM_TARGET}::${HSAKMT_STATIC_DRM_TARGET} ALIAS ${HSAKMT_STATIC_DRM_TARGET} )
|
||||
endif()
|
||||
# Link drm_amdgpu and drm library statically
|
||||
target_link_libraries ( ${HSAKMT_STATIC_DRM_TARGET}
|
||||
PRIVATE pthread rt c numa ${CMAKE_DL_LIBS}
|
||||
INTERFACE -Wl,-Bstatic ${AMDGPU_STATIC_LIB_PATHS} ${DRM_AMDGPU_LDFLAGS} ${DRM_LDFLAGS} -Wl,-Bdynamic
|
||||
)
|
||||
target_compile_options(${HSAKMT_STATIC_DRM_TARGET} PRIVATE ${DRM_CFLAGS} ${HSAKMT_C_FLAGS})
|
||||
|
||||
install ( TARGETS ${HSAKMT_STATIC_DRM_TARGET} EXPORT ${HSAKMT_STATIC_DRM_TARGET}Targets
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev)
|
||||
install ( EXPORT ${HSAKMT_STATIC_DRM_TARGET}Targets
|
||||
FILE ${HSAKMT_STATIC_DRM_TARGET}Targets.cmake
|
||||
NAMESPACE ${HSAKMT_STATIC_DRM_TARGET}::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${HSAKMT_TARGET}
|
||||
COMPONENT dev)
|
||||
|
||||
###########################
|
||||
# Packaging directives
|
||||
|
||||
@@ -47,6 +47,8 @@ cmake_minimum_required ( VERSION 3.7 )
|
||||
## Need an update to CMake 3.12 to remove this hack. See CMake policy change CMP0073.
|
||||
unset ( hsa-runtime64_LIB_DEPENDS CACHE )
|
||||
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
|
||||
## Set core runtime module name and project name.
|
||||
set ( CORE_RUNTIME_NAME "hsa-runtime64" )
|
||||
set ( CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}" )
|
||||
@@ -87,6 +89,7 @@ endif() # if (ROCM_CCACHE_BUILD)
|
||||
## Find external dependencies.
|
||||
find_package(PkgConfig)
|
||||
find_package(LibElf REQUIRED)
|
||||
|
||||
pkg_check_modules(drm REQUIRED IMPORTED_TARGET libdrm)
|
||||
|
||||
## Create the rocr target.
|
||||
|
||||
Посилання в новій задачі
Заблокувати користувача