diff --git a/projects/rocr-runtime/CMakeLists.txt b/projects/rocr-runtime/CMakeLists.txt index ee036931df..d09529fea7 100644 --- a/projects/rocr-runtime/CMakeLists.txt +++ b/projects/rocr-runtime/CMakeLists.txt @@ -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") diff --git a/projects/rocr-runtime/libhsakmt/CMakeLists.txt b/projects/rocr-runtime/libhsakmt/CMakeLists.txt index 01c5e1f576..cb2c62256f 100644 --- a/projects/rocr-runtime/libhsakmt/CMakeLists.txt +++ b/projects/rocr-runtime/libhsakmt/CMakeLists.txt @@ -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 - $ - $ - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src ) + target_include_directories( ${HSAKMT_STATIC_DRM_TARGET} + PUBLIC + $ + $ + 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 diff --git a/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt b/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt index 8baa8f54c6..fbbcaf032a 100644 --- a/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt +++ b/projects/rocr-runtime/runtime/hsa-runtime/CMakeLists.txt @@ -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.