diff --git a/hipamd/CMakeLists.txt b/hipamd/CMakeLists.txt index 838102344f..ab9c5c3749 100755 --- a/hipamd/CMakeLists.txt +++ b/hipamd/CMakeLists.txt @@ -282,6 +282,7 @@ set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) set(CONFIG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/hip) set(CONFIG_LANG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/hip-lang) +set(CONFIG_RTC_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/hiprtc) # Build clang hipify if enabled if (BUILD_HIPIFY_CLANG) diff --git a/hipamd/src/hiprtc/CMakeLists.txt b/hipamd/src/hiprtc/CMakeLists.txt index 0f9e306d2f..b3456d2a90 100644 --- a/hipamd/src/hiprtc/CMakeLists.txt +++ b/hipamd/src/hiprtc/CMakeLists.txt @@ -68,29 +68,30 @@ if(BUILD_SHARED_LIBS) endif() endif() -# Create HIPRTC object library if(BUILD_SHARED_LIBS) - add_library(hiprtcobject OBJECT hiprtc.cpp hiprtcComgrHelper.cpp hiprtcInternal.cpp) + target_sources(hiprtc PRIVATE hiprtc.cpp hiprtcComgrHelper.cpp hiprtcInternal.cpp) endif() -set_target_properties(hiprtcobject PROPERTIES +set_target_properties(hiprtc PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF POSITION_INDEPENDENT_CODE ON) -target_include_directories(hiprtcobject +target_include_directories(hiprtc PRIVATE - ${HIP_COMMON_INCLUDE_DIR} - ${PROJECT_SOURCE_DIR}/include - ${PROJECT_BINARY_DIR}/include) + $ + $ + $ + PUBLIC + $) if(BUILD_SHARED_LIBS) if(WIN32) target_sources(hiprtc PRIVATE hiprtc.def) else() - target_link_libraries(hiprtcobject PRIVATE "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/hiprtc.map.in") - set_target_properties(hiprtcobject PROPERTIES LINK_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/hiprtc.map.in") + target_link_libraries(hiprtc PRIVATE "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/hiprtc.map.in") + set_target_properties(hiprtc PROPERTIES LINK_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/hiprtc.map.in") endif() endif() @@ -98,16 +99,16 @@ if(WIN32) target_link_libraries(hiprtc PRIVATE Dbghelp.lib) endif() -target_link_libraries(hiprtcobject PRIVATE ${CMAKE_DL_LIBS}) +target_link_libraries(hiprtc PUBLIC ${CMAKE_DL_LIBS}) if(BUILD_SHARED_LIBS) - target_link_libraries(hiprtcobject PRIVATE rocclr) + target_link_libraries(hiprtc PRIVATE rocclr) else() - target_compile_definitions(hiprtcobject PRIVATE $) - target_include_directories(hiprtcobject PRIVATE $) + target_compile_definitions(hiprtc PRIVATE $) + target_include_directories(hiprtc PRIVATE $) endif() -target_compile_definitions(hiprtcobject PRIVATE __HIP_PLATFORM_AMD__) +target_compile_definitions(hiprtc PUBLIC __HIP_PLATFORM_AMD__) add_to_config(_versionInfo HIP_PACKAGING_VERSION_PATCH) add_to_config(_versionInfo CPACK_DEBIAN_PACKAGE_RELEASE) @@ -182,13 +183,9 @@ add_custom_command( COMMAND $ -O3 --rocm-path=${PROJECT_SOURCE_DIR}/include/.. -std=c++14 -nogpulib -nogpuinc -emit-llvm -c -isystem ${HIP_COMMON_INCLUDE_DIR} -isystem ${PROJECT_BINARY_DIR}/include -isystem ${CMAKE_CURRENT_SOURCE_DIR}/include --cuda-device-only -D__HIPCC_RTC__ --offload-arch=gfx906 -x hip-cpp-output ${HIPRTC_GEN_PREPROCESSED} -o ${HIPRTC_GEN_DIR}/tmp.bc DEPENDS clang ${HIPRTC_GEN_PREPROCESSED}) -target_link_libraries(hiprtcobject PRIVATE ${HIPRTC_GEN_OBJ}) -target_compile_definitions(hiprtcobject PRIVATE __HIP_ENABLE_RTC) -target_link_libraries(hiprtc PRIVATE hiprtcobject) +target_link_libraries(hiprtc PRIVATE ${HIPRTC_GEN_OBJ}) +target_compile_definitions(hiprtc PRIVATE __HIP_ENABLE_RTC) -# As a temporary workaround adding hiprtc sources to amdhip64 using target_sources, to avoid -# jenkins failure. Once, jenkins upgrades to 3.21 or higher, hiprtcobject can be appended to -# HIPRTC_OBJECTS below which links to amdhip64 if(NOT WIN32) target_sources(amdhip64 PRIVATE hiprtc.cpp hiprtcComgrHelper.cpp hiprtcInternal.cpp) endif() @@ -208,3 +205,27 @@ INSTALL(TARGETS hiprtc LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +INSTALL(EXPORT hiprtc-targets NAMESPACE hiprtc:: DESTINATION ${CONFIG_RTC_PACKAGE_INSTALL_DIR}) + +############################# +# hiprtc-config +############################# +include(CMakePackageConfigHelpers) + +write_basic_package_version_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/hiprtc-config-version.cmake + VERSION "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_GITDATE}" + COMPATIBILITY SameMajorVersion) + +INSTALL(FILES ${HIP_COMMON_INCLUDE_DIR}/hip/hiprtc.h DESTINATION "include/hip") + +INSTALL(FILES ${HIP_COMMON_INCLUDE_DIR}/hip/hip_common.h DESTINATION "include/hip") + +INSTALL( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/hiprtc-config.cmake + DESTINATION ${CONFIG_RTC_PACKAGE_INSTALL_DIR}) + +INSTALL( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/hiprtc-config-version.cmake + DESTINATION ${CONFIG_RTC_PACKAGE_INSTALL_DIR}) diff --git a/hipamd/src/hiprtc/cmake/hiprtc-config.cmake b/hipamd/src/hiprtc/cmake/hiprtc-config.cmake new file mode 100644 index 0000000000..1930832d9e --- /dev/null +++ b/hipamd/src/hiprtc/cmake/hiprtc-config.cmake @@ -0,0 +1,2 @@ +include(CMakeFindDependencyMacro) +include("${CMAKE_CURRENT_LIST_DIR}/hiprtc-targets.cmake")