Update build for rocprofiler-library to support unit tests (#76)
* Update build for rocprofiler-library - Build rocprofiler OBJECT library (rocprofiler-object-library) - Generate rocprofiler shared library via rocprofiler-object-library - Generate rocprofiler static library via rocprofiler-object-library - this target is excluded from all target and, thus, is only built when another target links to it * Update lib/rocprofiler/CMakeLists.txt - tweak order of EXCLUDE_FROM_ALL and STATIC in add_library(rocprofiler-static-library ...) * Update samples - link against rocprofiler::rocprofiler instead of rocprofiler::rocprofiler-library following target renaming * Update cmake - fix PROJECT_BUILD_TARGETS for rocprofiler::rocprofiler target in rocprofiler-config.cmake - disable <OS>-<VERSION> in CPack package name - Add ROCPROFILER_BUILD_CODECOV option
This commit is contained in:
committed by
GitHub
parent
34505943b2
commit
5c07deb159
@@ -8,17 +8,85 @@ set(ROCPROFILER_LIB_SOURCES
|
||||
buffer.cpp buffer_tracing.cpp callback_tracing.cpp context.cpp internal_threading.cpp
|
||||
rocprofiler.cpp registration.cpp)
|
||||
|
||||
add_library(rocprofiler-library SHARED)
|
||||
add_library(rocprofiler::rocprofiler-library ALIAS rocprofiler-library)
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# object library allows us to compile rocprofiler code once and generate both a shared and
|
||||
# static library
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
|
||||
target_sources(rocprofiler-library PRIVATE ${ROCPROFILER_LIB_SOURCES}
|
||||
${ROCPROFILER_LIB_HEADERS})
|
||||
add_library(rocprofiler-object-library OBJECT)
|
||||
add_library(rocprofiler::rocprofiler-object-library ALIAS rocprofiler-object-library)
|
||||
|
||||
target_sources(rocprofiler-object-library PRIVATE ${ROCPROFILER_LIB_SOURCES}
|
||||
${ROCPROFILER_LIB_HEADERS})
|
||||
|
||||
add_subdirectory(hsa)
|
||||
add_subdirectory(context)
|
||||
|
||||
target_link_libraries(
|
||||
rocprofiler-library
|
||||
rocprofiler-object-library
|
||||
PUBLIC rocprofiler::rocprofiler-headers rocprofiler::rocprofiler-hsa-runtime
|
||||
rocprofiler::rocprofiler-hip
|
||||
PRIVATE rocprofiler::rocprofiler-build-flags rocprofiler::rocprofiler-memcheck
|
||||
rocprofiler::rocprofiler-common-library rocprofiler::rocprofiler-stdcxxfs
|
||||
rocprofiler::rocprofiler-dl rocprofiler::rocprofiler-amd-comgr)
|
||||
|
||||
target_compile_definitions(rocprofiler-object-library PRIVATE rocprofiler_EXPORTS=1)
|
||||
|
||||
set_target_properties(rocprofiler-object-library PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# shared library
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
|
||||
add_library(rocprofiler-shared-library SHARED)
|
||||
add_library(rocprofiler::rocprofiler-shared-library ALIAS rocprofiler-shared-library)
|
||||
|
||||
target_sources(rocprofiler-shared-library
|
||||
PRIVATE $<TARGET_OBJECTS:rocprofiler::rocprofiler-object-library>)
|
||||
target_link_libraries(
|
||||
rocprofiler-shared-library
|
||||
INTERFACE rocprofiler::rocprofiler-headers rocprofiler::rocprofiler-hsa-runtime
|
||||
rocprofiler::rocprofiler-hip
|
||||
PRIVATE rocprofiler::rocprofiler-build-flags rocprofiler::rocprofiler-memcheck
|
||||
rocprofiler::rocprofiler-common-library rocprofiler::rocprofiler-stdcxxfs
|
||||
rocprofiler::rocprofiler-dl rocprofiler::rocprofiler-amd-comgr)
|
||||
|
||||
set_target_properties(
|
||||
rocprofiler-shared-library
|
||||
PROPERTIES OUTPUT_NAME rocprofiler64
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SKIP_BUILD_RPATH OFF
|
||||
BUILD_RPATH "\$ORIGIN"
|
||||
INSTALL_RPATH "\$ORIGIN"
|
||||
DEFINE_SYMBOL rocprofiler_EXPORTS)
|
||||
|
||||
add_library(rocprofiler::rocprofiler-library ALIAS rocprofiler-shared-library)
|
||||
add_library(rocprofiler::rocprofiler ALIAS rocprofiler-shared-library)
|
||||
|
||||
install(
|
||||
TARGETS rocprofiler-shared-library
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
COMPONENT core
|
||||
EXPORT ${PROJECT_NAME}-library-targets)
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# static library (only built if another target links to it)
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
|
||||
add_library(rocprofiler-static-library EXCLUDE_FROM_ALL STATIC)
|
||||
add_library(rocprofiler::rocprofiler-static-library ALIAS rocprofiler-static-library)
|
||||
|
||||
target_sources(rocprofiler-static-library
|
||||
PRIVATE $<TARGET_OBJECTS:rocprofiler::rocprofiler-object-library>)
|
||||
target_link_libraries(
|
||||
rocprofiler-static-library
|
||||
PUBLIC rocprofiler::rocprofiler-headers rocprofiler::rocprofiler-hsa-runtime
|
||||
rocprofiler::rocprofiler-hip
|
||||
PRIVATE rocprofiler::rocprofiler-build-flags rocprofiler::rocprofiler-memcheck
|
||||
@@ -26,15 +94,5 @@ target_link_libraries(
|
||||
rocprofiler::rocprofiler-dl rocprofiler::rocprofiler-amd-comgr)
|
||||
|
||||
set_target_properties(
|
||||
rocprofiler-library
|
||||
PROPERTIES OUTPUT_NAME rocprofiler64
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
VERSION ${PROJECT_VERSION}
|
||||
INSTALL_RPATH "\$ORIGIN"
|
||||
DEFINE_SYMBOL rocprofiler_EXPORTS)
|
||||
|
||||
install(
|
||||
TARGETS rocprofiler-library
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
COMPONENT core
|
||||
EXPORT ${PROJECT_NAME}-library-targets)
|
||||
rocprofiler-static-library PROPERTIES OUTPUT_NAME rocprofiler64 DEFINE_SYMBOL
|
||||
rocprofiler_EXPORTS)
|
||||
|
||||
@@ -4,11 +4,5 @@
|
||||
set(ROCPROFILER_LIB_CONFIG_SOURCES context.cpp domain.cpp)
|
||||
set(ROCPROFILER_LIB_CONFIG_HEADERS context.hpp domain.hpp allocator.hpp)
|
||||
|
||||
target_sources(rocprofiler-library PRIVATE ${ROCPROFILER_LIB_CONFIG_SOURCES}
|
||||
${ROCPROFILER_LIB_CONFIG_HEADERS})
|
||||
|
||||
# add_executable(rocr-example hsa.cpp rocr.hpp) target_link_libraries(rocr-example PRIVATE
|
||||
# rocprofiler-v2) target_include_directories( rocr-example PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
# ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src)
|
||||
# target_compile_definitions( rocr-example PRIVATE AMD_INTERNAL_BUILD PROF_API_IMPL
|
||||
# HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1)
|
||||
target_sources(rocprofiler-object-library PRIVATE ${ROCPROFILER_LIB_CONFIG_SOURCES}
|
||||
${ROCPROFILER_LIB_CONFIG_HEADERS})
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
set(ROCPROFILER_LIB_HSA_SOURCES hsa.cpp)
|
||||
set(ROCPROFILER_LIB_HSA_HEADERS hsa.hpp defines.hpp types.hpp utils.hpp)
|
||||
|
||||
target_sources(rocprofiler-library PRIVATE ${ROCPROFILER_LIB_HSA_SOURCES}
|
||||
${ROCPROFILER_LIB_HSA_HEADERS})
|
||||
target_sources(rocprofiler-object-library PRIVATE ${ROCPROFILER_LIB_HSA_SOURCES}
|
||||
${ROCPROFILER_LIB_HSA_HEADERS})
|
||||
|
||||
add_subdirectory(details)
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
set(ROCPROFILER_LIB_HSA_DETAILS_SOURCES)
|
||||
set(ROCPROFILER_LIB_HSA_DETAILS_HEADERS ostream.hpp)
|
||||
|
||||
target_sources(rocprofiler-library PRIVATE ${ROCPROFILER_LIB_HSA_DETAILS_SOURCES}
|
||||
${ROCPROFILER_LIB_HSA_DETAILS_HEADERS})
|
||||
target_sources(rocprofiler-object-library PRIVATE ${ROCPROFILER_LIB_HSA_DETAILS_SOURCES}
|
||||
${ROCPROFILER_LIB_HSA_DETAILS_HEADERS})
|
||||
|
||||
Reference in New Issue
Block a user