From cce2345f0c6ad0ebfd0451c997e12e0a720daebd Mon Sep 17 00:00:00 2001 From: Sean Keely Date: Tue, 16 Jun 2020 21:44:36 -0500 Subject: [PATCH] Include linker script in static build usage requirements. Defines the non-SC version of several functions. Change-Id: I36b8c7791eb0d606029ff56ec48381abee5d2c1e --- runtime/hsa-runtime/CMakeLists.txt | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/runtime/hsa-runtime/CMakeLists.txt b/runtime/hsa-runtime/CMakeLists.txt index 02aebcfd1a..d766066dee 100644 --- a/runtime/hsa-runtime/CMakeLists.txt +++ b/runtime/hsa-runtime/CMakeLists.txt @@ -128,8 +128,8 @@ if ( CMAKE_COMPILER_IS_GNUCXX ) endif () set ( DRVDEF "${CMAKE_CURRENT_SOURCE_DIR}/hsacore.so.def" ) -set ( LNKSCR "${CMAKE_CURRENT_SOURCE_DIR}/hsacore.so.link" ) -set ( HSA_SHARED_LINK_FLAGS "-Wl,-Bdynamic -Wl,-z,noexecstack -Wl,${LNKSCR} -Wl,--version-script=${DRVDEF} -Wl,--enable-new-dtags" ) +set ( LNKSCR "hsacore.so.link" ) +set ( HSA_SHARED_LINK_FLAGS "-Wl,-Bdynamic -Wl,-z,noexecstack -Wl,${CMAKE_CURRENT_SOURCE_DIR}/${LNKSCR} -Wl,--version-script=${DRVDEF} -Wl,--enable-new-dtags" ) target_compile_options(${CORE_RUNTIME_TARGET} PRIVATE ${HSA_CXX_FLAGS}) #target_link_options not available prior to CMake 3.13 @@ -252,6 +252,13 @@ target_link_libraries ( ${CORE_RUNTIME_TARGET} PRIVATE elf::elf dl pthread rt ) set_property ( TARGET ${CORE_RUNTIME_TARGET} PROPERTY VERSION "${SO_VERSION_STRING}" ) set_property ( TARGET ${CORE_RUNTIME_TARGET} PROPERTY SOVERSION "${VERSION_MAJOR}" ) +## Add the public interface export target if doing a static build. +if( NOT ${BUILD_SHARED_LIBS} ) + add_library(${CORE_RUNTIME_NAME} INTERFACE) + target_link_libraries ( ${CORE_RUNTIME_NAME} INTERFACE -Wl,$/lib/cmake/${CORE_RUNTIME_NAME}/${LNKSCR} -Wl,--whole-archive ${CORE_RUNTIME_NAME}::${CORE_RUNTIME_TARGET} -Wl,--no-whole-archive) + install ( TARGETS ${CORE_RUNTIME_NAME} EXPORT ${CORE_RUNTIME_NAME}Targets ) +endif() + ## Create symlinks for legacy packaging and install add_custom_target ( hsa_include_link ALL WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E create_symlink ../../include/hsa hsa_include_link ) if ( ${BUILD_SHARED_LIBS} ) @@ -266,13 +273,6 @@ install ( TARGETS ${CORE_RUNTIME_TARGET} EXPORT ${CORE_RUNTIME_NAME}Targets ARCHIVE DESTINATION lib COMPONENT binary LIBRARY DESTINATION lib COMPONENT binary ) -## Add the wrapper interface export target if doing a static build. -if( NOT ${BUILD_SHARED_LIBS} ) - add_library(${CORE_RUNTIME_NAME} INTERFACE) - target_link_libraries(${CORE_RUNTIME_NAME} INTERFACE -Wl,--whole-archive ${CORE_RUNTIME_NAME}::${CORE_RUNTIME_TARGET} -Wl,--no-whole-archive) - install ( TARGETS ${CORE_RUNTIME_NAME} EXPORT ${CORE_RUNTIME_NAME}Targets ) -endif() - # Install license #install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT binary ) @@ -322,11 +322,16 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CORE_RUNTIME_NAME}-config.cmake ${CM DESTINATION lib/cmake/${CORE_RUNTIME_NAME} COMPONENT dev) -# Install the libelf find module if rocr is a static lib +# Install build files needed only when using a static build. if( NOT ${BUILD_SHARED_LIBS} ) + # libelf find package module install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindLibElf.cmake ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/COPYING-CMAKE-SCRIPTS DESTINATION lib/cmake/${CORE_RUNTIME_NAME} COMPONENT dev) + # Linker script (defines function aliases) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${LNKSCR} + DESTINATION lib/cmake/${CORE_RUNTIME_NAME} + COMPONENT dev) endif() # Optionally record the package's find module in the user's package cache.