diff --git a/CMakeLists.txt b/CMakeLists.txt index f710f445dd..6a4ecb0ef6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,7 +88,9 @@ if(DEFINED ENV{ROCM_LIBPATCH_VERSION}) endif() ## Install license file -install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION share/doc/${PROJECT_NAME}) +install(FILES ${CPACK_RESOURCE_FILE_LICENSE} + DESTINATION share/doc/${PROJECT_NAME} + COMPONENT runtime) ## Debian package specific variables if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE}) @@ -97,8 +99,12 @@ else() set(CPACK_DEBIAN_PACKAGE_RELEASE "local") endif() message("Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}") +set(CPACK_DEB_COMPONENT_INSTALL ON) set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") -set(CPACK_DEBIAN_PACKAGE_DEPENDS "rocm-core") +set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME "${PROJECT_NAME}-dev") +set(CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS "rocm-core") +set(CPACK_DEBIAN_TESTS_PACKAGE_NAME "${PROJECT_NAME}-tests") +set(CPACK_DEBIAN_TESTS_PACKAGE_DEPENDS "${PROJECT_NAME}-dev") ## RPM package specific variables if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE}) @@ -120,17 +126,32 @@ message("RESULT_VARIABLE ${PROC_RESULT} OUTPUT_VARIABLE: ${EVAL_RESULT}") if(PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "") string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}") endif() +set(CPACK_RPM_COMPONENT_INSTALL ON) set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") -set(CPACK_RPM_PACKAGE_REQUIRES "rocm-core") +set(CPACK_RPM_RUNTIME_PACKAGE_NAME "${PROJECT_NAME}-dev") +set(CPACK_RPM_RUNTIME_PACKAGE_REQUIRES "rocm-core") +set(CPACK_RPM_TESTS_PACKAGE_NAME "${PROJECT_NAME}-tests") +set(CPACK_RPM_TESTS_PACKAGE_REQUIRES "${PROJECT_NAME}-dev") message("CPACK_RPM_PACKAGE_RELEASE: ${CPACK_RPM_PACKAGE_RELEASE}") if(NOT ROCM_DEP_ROCMCORE) - string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_PACKAGE_REQUIRES ${CPACK_RPM_PACKAGE_REQUIRES}) - string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}) + string(REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_RUNTIME_PACKAGE_REQUIRES ${CPACK_RPM_RUNTIME_PACKAGE_REQUIRES}) + string(REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS ${CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS}) endif() +set(CPACK_COMPONENTS_ALL runtime tests) + include(CPack) +cpack_add_component(runtime + DISPLAY_NAME "Runtime" + DESCRIPTION "Dynamic libraries for the ROCtracer") + +cpack_add_component(tests + DISPLAY_NAME "Tests" + DESCRIPTION "Tests for the ROCtracer" + DEPENDS runtime) + endif() find_package(Doxygen) @@ -157,10 +178,12 @@ if(DOXYGEN_FOUND) "${CMAKE_CURRENT_BINARY_DIR}/doc/latex/refman.pdf" DESTINATION share/doc/${PROJECT_NAME} RENAME "roctracer.pdf" - OPTIONAL) + OPTIONAL + COMPONENT runtime) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc/html/" DESTINATION share/html/${PROJECT_NAME} - OPTIONAL) + OPTIONAL + COMPONENT runtime) endif() diff --git a/roctracer-backward-compat.cmake b/roctracer-backward-compat.cmake index 335e15884c..89ae525793 100644 --- a/roctracer-backward-compat.cmake +++ b/roctracer-backward-compat.cmake @@ -109,8 +109,8 @@ endfunction() #Use template header file and generater wrapper header files generate_wrapper_header() -install(DIRECTORY ${ROCT_WRAPPER_INC_DIR} DESTINATION ${PROJECT_NAME}) +install(DIRECTORY ${ROCT_WRAPPER_INC_DIR} DESTINATION ${PROJECT_NAME} COMPONENT runtime) create_library_symlink() -install(DIRECTORY ${ROCT_WRAPPER_LIB_DIR} DESTINATION ${PROJECT_NAME}) +install(DIRECTORY ${ROCT_WRAPPER_LIB_DIR} DESTINATION ${PROJECT_NAME} COMPONENT runtime) #install soft link to tool #install(DIRECTORY ${ROCT_WRAPPER_TOOL_DIR} DESTINATION ${PROJECT_NAME}) diff --git a/script/check_trace.py b/script/check_trace.py old mode 100644 new mode 100755 index 28772e3f25..13df203b30 --- a/script/check_trace.py +++ b/script/check_trace.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + ################################################################################ # Copyright (c) 2018-2022 Advanced Micro Devices, Inc. # diff --git a/script/gen_ostream_ops.py b/script/gen_ostream_ops.py index eeec1d2ddf..0f839acc39 100755 --- a/script/gen_ostream_ops.py +++ b/script/gen_ostream_ops.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + ################################################################################ # Copyright (c) 2018-2022 Advanced Micro Devices, Inc. # diff --git a/script/hsaap.py b/script/hsaap.py index 90c859f334..8794513a99 100755 --- a/script/hsaap.py +++ b/script/hsaap.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + ################################################################################ # Copyright (c) 2018-2022 Advanced Micro Devices, Inc. # diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9d552b2e9c..bd9ecc1170 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -104,7 +104,9 @@ set(PUBLIC_HEADERS foreach(header ${PUBLIC_HEADERS}) get_filename_component(header_subdir ${header} DIRECTORY) - install(FILES ${PROJECT_SOURCE_DIR}/inc/${header} DESTINATION include/${PROJECT_NAME}/${header_subdir}) + install(FILES ${PROJECT_SOURCE_DIR}/inc/${header} + DESTINATION include/${PROJECT_NAME}/${header_subdir} + COMPONENT runtime) endforeach() set(GENERATED_HEADERS @@ -113,7 +115,9 @@ set(GENERATED_HEADERS hsa_ostream_ops.h) foreach(header ${GENERATED_HEADERS}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${header} DESTINATION include/${PROJECT_NAME}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${header} + DESTINATION include/${PROJECT_NAME} + COMPONENT runtime) endforeach() ## Build the ROCtracer library @@ -143,7 +147,9 @@ target_include_directories(roctracer target_link_options(roctracer PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/roctracer/exportmap -Wl,--no-undefined) target_link_libraries(roctracer PRIVATE hsa-runtime64::hsa-runtime64 Threads::Threads dl) -install(TARGETS roctracer LIBRARY DESTINATION lib) +install(TARGETS roctracer LIBRARY + DESTINATION lib + COMPONENT runtime) ## Build the ROCTX library file(GLOB ROCTX_SOURCES "roctx/*.cpp") @@ -163,7 +169,9 @@ target_include_directories(roctx target_link_options(roctx PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/roctx/exportmap -Wl,--no-undefined) -install(TARGETS roctx LIBRARY DESTINATION lib) +install(TARGETS roctx LIBRARY + DESTINATION lib + COMPONENT runtime) ## Build the tracer_tool library if (${LIBRARY_TYPE} STREQUAL SHARED) @@ -186,12 +194,12 @@ target_include_directories(roctracer_tool target_link_libraries(roctracer_tool roctracer hsa-runtime64::hsa-runtime64 Threads::Threads atomic dl) target_link_options(roctracer_tool PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/tracer_tool/exportmap -Wl,--no-undefined) -install(TARGETS roctracer_tool LIBRARY DESTINATION lib/${PROJECT_NAME}) +install(TARGETS roctracer_tool LIBRARY DESTINATION lib/${PROJECT_NAME} COMPONENT runtime) add_library(hip_stats SHARED hip_stats/hip_stats.cpp) target_compile_definitions(hip_stats PRIVATE __HIP_PLATFORM_AMD__) target_link_libraries(hip_stats roctracer stdc++fs) -install(TARGETS hip_stats LIBRARY DESTINATION lib/${PROJECT_NAME}) +install(TARGETS hip_stats LIBRARY DESTINATION lib/${PROJECT_NAME} COMPONENT runtime) endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 817ca5b680..ec649194d4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -40,7 +40,7 @@ add_custom_target(check COMMAND ${PROJECT_BINARY_DIR}/run.sh DEPENDS mytest) ## Build MatrixTranspose set_source_files_properties(hip/MatrixTranspose.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1) -hip_add_executable(MatrixTranspose EXCLUDE_FROM_ALL hip/MatrixTranspose.cpp) +hip_add_executable(MatrixTranspose hip/MatrixTranspose.cpp) target_include_directories(MatrixTranspose PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(MatrixTranspose PRIVATE roctracer roctx) add_dependencies(mytest MatrixTranspose) @@ -48,7 +48,7 @@ add_dependencies(mytest MatrixTranspose) ## Build MatrixTranspose_test, MatrixTranspose_hipaact_test and MatrixTranspose_mgpu set_source_files_properties(app/MatrixTranspose_test.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1) function(build_matrix_transpose_test OUTPUT_FILE DEFINITIONS) - hip_add_executable(${OUTPUT_FILE} EXCLUDE_FROM_ALL app/MatrixTranspose_test.cpp) + hip_add_executable(${OUTPUT_FILE} app/MatrixTranspose_test.cpp) target_compile_definitions(${OUTPUT_FILE} PRIVATE ITERATIONS=100 HIP_TEST=1 ${DEFINITIONS}) target_include_directories(${OUTPUT_FILE} PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(${OUTPUT_FILE} PRIVATE roctracer roctx) @@ -62,20 +62,20 @@ build_matrix_transpose_test(MatrixTranspose_mgpu MGPU_TEST=1) ## Build MatrixTranspose MatrixTranspose_ctest add_custom_command(OUTPUT MatrixTranspose.c COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/app/MatrixTranspose_test.cpp MatrixTranspose.c) -hip_add_executable(MatrixTranspose_ctest EXCLUDE_FROM_ALL MatrixTranspose.c) +hip_add_executable(MatrixTranspose_ctest MatrixTranspose.c) target_compile_definitions(MatrixTranspose_ctest PRIVATE HIP_TEST=0 __HIP_PLATFORM_HCC__) target_include_directories(MatrixTranspose_ctest PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(MatrixTranspose_ctest PRIVATE roctracer roctx) add_dependencies(mytest MatrixTranspose_ctest) ## Build hsaco_test reference test -add_library(hsaco_test SHARED EXCLUDE_FROM_ALL app/hsaco_test.cpp) +add_library(hsaco_test SHARED app/hsaco_test.cpp) target_compile_definitions(hsaco_test PRIVATE AMD_INTERNAL_BUILD) target_link_libraries(hsaco_test hsa-runtime64::hsa-runtime64) add_dependencies(mytest hsaco_test) ## Build codeobj event test -add_library(codeobj_test SHARED EXCLUDE_FROM_ALL app/codeobj_test.cpp) +add_library(codeobj_test SHARED app/codeobj_test.cpp) target_include_directories(codeobj_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(codeobj_test roctracer) add_dependencies(mytest codeobj_test) @@ -91,6 +91,7 @@ function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE) DEPENDS ${INPUT_FILE} clang COMMENT "Building ${OUTPUT_FILE}..." VERBATIM) + install(FILES ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} DESTINATION test/${PROJECT_NAME} COMPONENT tests) set(HSACO_TARGET_LIST ${HSACO_TARGET_LIST} ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} PARENT_SCOPE) endfunction(generate_hsaco) @@ -100,34 +101,34 @@ foreach(target_id ${GPU_TARGETS}) endforeach(target_id) add_custom_target(hsaco_targets DEPENDS ${HSACO_TARGET_LIST}) -add_executable(copy EXCLUDE_FROM_ALL hsa/copy.cpp) +add_executable(copy hsa/copy.cpp) target_link_libraries(copy hsa-runtime64::hsa-runtime64 Threads::Threads dl) add_dependencies(copy hsaco_targets) add_dependencies(mytest copy) ## Build the ROCTX test set_source_files_properties(app/roctx_test.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1) -hip_add_executable(roctx_test EXCLUDE_FROM_ALL app/roctx_test.cpp) +hip_add_executable(roctx_test app/roctx_test.cpp) target_link_libraries(roctx_test Threads::Threads roctx) add_dependencies(mytest roctx_test) ## Build the backward compatibility test -add_executable(backward_compat_test EXCLUDE_FROM_ALL app/backward_compat_test.cpp) +add_executable(backward_compat_test app/backward_compat_test.cpp) target_link_libraries(backward_compat_test roctracer) add_dependencies(mytest backward_compat_test) -add_executable(load_unload_reload_test EXCLUDE_FROM_ALL hsa/load_unload_reload.cpp) +add_executable(load_unload_reload_test hsa/load_unload_reload.cpp) target_link_libraries(load_unload_reload_test hsa-runtime64::hsa-runtime64) add_dependencies(mytest load_unload_reload_test) ## Build the trace_buffer test -add_executable(trace_buffer EXCLUDE_FROM_ALL directed/trace_buffer.cpp) +add_executable(trace_buffer directed/trace_buffer.cpp) target_include_directories(trace_buffer PRIVATE ${PROJECT_SOURCE_DIR}/src/tracer_tool) target_link_libraries(trace_buffer Threads::Threads atomic) add_dependencies(mytest trace_buffer) ## Build the memory_pool test -add_executable(memory_pool EXCLUDE_FROM_ALL directed/memory_pool.cpp) +add_executable(memory_pool directed/memory_pool.cpp) target_include_directories(memory_pool PRIVATE ${PROJECT_SOURCE_DIR}/src/roctracer ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(memory_pool Threads::Threads atomic) add_dependencies(mytest memory_pool) @@ -135,9 +136,24 @@ add_dependencies(mytest memory_pool) ## Copy the golden traces and test scripts configure_file(run.sh ${PROJECT_BINARY_DIR} COPYONLY) execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink run.sh ${PROJECT_BINARY_DIR}/run_ci.sh) +install(PROGRAMS ${PROJECT_BINARY_DIR}/run.sh DESTINATION test/${PROJECT_NAME} COMPONENT tests) + configure_file(${PROJECT_SOURCE_DIR}/script/check_trace.py ${PROJECT_BINARY_DIR}/test/check_trace.py COPYONLY) +install(PROGRAMS ${PROJECT_BINARY_DIR}/test/check_trace.py DESTINATION test/${PROJECT_NAME}/test COMPONENT tests) file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "golden_traces/tests_trace_cmp_levels.txt" "golden_traces/*_trace.txt") foreach(file ${files}) configure_file(${file} ${PROJECT_BINARY_DIR}/test/${file} COPYONLY) endforeach() +install(DIRECTORY ${PROJECT_BINARY_DIR}/test/golden_traces DESTINATION test/${PROJECT_NAME}/test COMPONENT tests) + +# install all executables +set(all_executables) +get_property(all_targets DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY BUILDSYSTEM_TARGETS) +foreach(target IN LISTS all_targets) + get_target_property(target_type ${target} TYPE) + if (target_type STREQUAL "EXECUTABLE") + list(APPEND all_executables ${target}) + endif() +endforeach() +install(TARGETS ${all_executables} DESTINATION test/${PROJECT_NAME}/test COMPONENT tests)