From 13fe79ab09655e365282b71ac0bec9bd8ef2c651 Mon Sep 17 00:00:00 2001 From: Laurent Morichetti Date: Fri, 20 May 2022 09:12:22 -0700 Subject: [PATCH] Fix CMakeLists.txt conventions Fix indentation, quoting, and white spaces. Change-Id: I5e5e95b961e83e5957bdd137ef9893615396bb53 --- CMakeLists.txt | 45 +++--- roctracer-backward-compat.cmake | 12 +- script/hsaap.py | 4 +- src/CMakeLists.txt | 265 ++++++++++++++------------------ src/roctracer/loader.h | 4 +- test/CMakeLists.txt | 56 +++---- 6 files changed, 168 insertions(+), 218 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0592b5bbce..ac61965bc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,14 +20,17 @@ ## IN THE SOFTWARE. ################################################################################ -cmake_minimum_required(VERSION 3.16.0) +cmake_minimum_required(VERSION 3.18.0) project(ROCTRACER VERSION 4.1.0) +## Set module name +string(TOLOWER "${CMAKE_PROJECT_NAME}" ROCTRACER_NAME) + ## Build is not supported on Windows plaform if(WIN32) message(FATAL_ERROR "Windows build is not supported.") -endif () +endif() set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -43,15 +46,17 @@ if(NOT DEFINED LIBRARY_TYPE) set(LIBRARY_TYPE SHARED) endif() -## Set module name -string(TOLOWER "${CMAKE_PROJECT_NAME}" ROCTRACER_NAME) +## FIXME!!! should not depend on another project's internal files +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory inc/rocprofiler) +execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/../rocprofiler/inc/rocprofiler.h inc/rocprofiler/rocprofiler.h) +execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_SOURCE_DIR}/../rocprofiler/src/core/activity.h inc/rocprofiler/activity.h) ## Build libraries -include(src/CMakeLists.txt) +add_subdirectory(src) ## Build tests if(${LIBRARY_TYPE} STREQUAL SHARED) -add_subdirectory(test ${PROJECT_BINARY_DIR}/test) + add_subdirectory(test) endif() if(${LIBRARY_TYPE} STREQUAL SHARED) @@ -61,16 +66,11 @@ if(DEFINED CPACK_PACKAGING_INSTALL_PREFIX) get_filename_component(DEST_NAME ${CPACK_PACKAGING_INSTALL_PREFIX} NAME) get_filename_component(DEST_DIR ${CPACK_PACKAGING_INSTALL_PREFIX} DIRECTORY) set(CPACK_PACKAGING_INSTALL_PREFIX ${DEST_DIR}) -endif () +endif() message("-----------Dest-name: ${DEST_NAME}") message("------Install-prefix: ${CMAKE_INSTALL_PREFIX}") message("-----------CPACK-dir: ${CPACK_PACKAGING_INSTALL_PREFIX}") -option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorg with backward compatibility" ON) -if(FILE_REORG_BACKWARD_COMPATIBILITY) - include(roctracer-backward-compat.cmake) -endif() - ## Packaging directives set(CPACK_GENERATOR "DEB" "RPM" "TGZ" CACHE STRING "CPACK GENERATOR DEB;RPM") set(ENABLE_LDCONFIG ON CACHE BOOL "Set library links and caches using ldconfig.") @@ -89,8 +89,8 @@ if(DEFINED ENV{ROCM_LIBPATCH_VERSION}) message("Using CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}") endif() -# Install license file -install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION share/doc/${CPACK_PACKAGE_NAME}) +## Install license file +install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION share/doc/${ROCTRACER_NAME}) ## Debian package specific variables if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE}) @@ -98,8 +98,8 @@ if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE}) else() set(CPACK_DEBIAN_PACKAGE_RELEASE "local") endif() -message ("Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}") -set (CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") +message("Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}") +set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") ## RPM package specific variables if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE}) @@ -112,10 +112,10 @@ message("Using CPACK_RPM_PACKAGE_RELEASE ${CPACK_RPM_PACKAGE_RELEASE}") set( CPACK_RPM_PACKAGE_LICENSE "MIT") ## 'dist' breaks manual builds on debian systems due to empty Provides -execute_process( COMMAND rpm --eval %{?dist} - RESULT_VARIABLE PROC_RESULT - OUTPUT_VARIABLE EVAL_RESULT - OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND rpm --eval %{?dist} + RESULT_VARIABLE PROC_RESULT + OUTPUT_VARIABLE EVAL_RESULT + OUTPUT_STRIP_TRAILING_WHITESPACE) message("RESULT_VARIABLE ${PROC_RESULT} OUTPUT_VARIABLE: ${EVAL_RESULT}") if(PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "") @@ -130,11 +130,11 @@ endif() find_package(Doxygen) if(DOXYGEN_FOUND) - # set input and output files + ## Set input and output files set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in) set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - # request to configure the file + ## Request to configure the file configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) add_custom_command( @@ -158,5 +158,4 @@ if(DOXYGEN_FOUND) "${CMAKE_CURRENT_BINARY_DIR}/doc/html/" DESTINATION share/html/roctracer OPTIONAL) - endif() diff --git a/roctracer-backward-compat.cmake b/roctracer-backward-compat.cmake index fbee24fa67..2d019903b0 100644 --- a/roctracer-backward-compat.cmake +++ b/roctracer-backward-compat.cmake @@ -37,7 +37,7 @@ function(set_file_contents input_file) ${file_contents} #endif") get_filename_component(file_name ${input_file} NAME) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${file_name}) + configure_file(${PROJECT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${file_name}) endfunction() #use header template file and generate wrapper header files @@ -54,18 +54,18 @@ function(generate_wrapper_header) get_filename_component ( header_subdir ${header_file} DIRECTORY ) if(header_subdir) set(include_statements "#include \"../../../include/${ROCTRACER_NAME}/${header_subdir}/${file_name}\"\n") - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${header_subdir}/${file_name}) + configure_file(${PROJECT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${header_subdir}/${file_name}) else() set(include_statements "#include \"../../include/${ROCTRACER_NAME}/${file_name}\"\n") if(${file_name} STREQUAL "roctracer.h") - set_file_contents(${CMAKE_CURRENT_SOURCE_DIR}/inc/${file_name}) + set_file_contents(${PROJECT_SOURCE_DIR}/inc/${file_name}) else() - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${file_name}) + configure_file(${PROJECT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${file_name}) endif() endif() endforeach() - foreach(header_file ${GEN_HEADERS}) + foreach(header_file ${GENERATED_HEADERS}) #set include guard get_filename_component(INC_GAURD_NAME ${header_file} NAME_WE) string(TOUPPER ${INC_GAURD_NAME} INC_GAURD_NAME) @@ -73,7 +73,7 @@ function(generate_wrapper_header) #set include statements get_filename_component(file_name ${header_file} NAME) set(include_statements "#include \"../../include/${ROCTRACER_NAME}/${file_name}\"\n") - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${file_name}) + configure_file(${PROJECT_SOURCE_DIR}/header_template.hpp.in ${ROCT_WRAPPER_INC_DIR}/${file_name}) endforeach() diff --git a/script/hsaap.py b/script/hsaap.py index 7323fe60f1..9d93b65799 100755 --- a/script/hsaap.py +++ b/script/hsaap.py @@ -23,9 +23,9 @@ from __future__ import print_function import os, sys, re -OUT='inc/hsa_prof_str.h' +OUT='hsa_prof_str.h' API_TABLES_H = 'hsa_api_trace.h' -API_HEADERS_H = ( +API_HEADERS_H = ( ('CoreApiTable', 'hsa.h'), ('AmdExtTable', 'hsa_ext_amd.h'), ('ImageExtTable', 'hsa_ext_image.h'), diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1cdf62f737..2b1941d874 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,216 +20,175 @@ ## IN THE SOFTWARE. ################################################################################ -find_package(Python3 COMPONENTS Interpreter REQUIRED) - -execute_process( - COMMAND ${Python3_EXECUTABLE} -c "import CppHeaderParser" - RESULT_VARIABLE CPPHEADERPARSER - OUTPUT_QUIET -) - -if(NOT ${CPPHEADERPARSER} EQUAL 0) - message(FATAL_ERROR - "The \"CppHeaderParser\" Python3 package is not installed. Please install it using the following command: \"pip3 install CppHeaderParser\"." - ) -endif() +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) if(${LIBRARY_TYPE} STREQUAL STATIC) - add_definitions(-DSTATIC_BUILD=1) + add_compile_definitions(STATIC_BUILD=1) endif() option(DEBUG_TRACE "Enable debug tracing") if(DEBUG_TRACE) - add_definitions(-DDEBUG_TRACE_ON=1) + add_compile_definitions(DEBUG_TRACE_ON=1) endif() -set(GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc) +find_package(Python3 COMPONENTS Interpreter REQUIRED) -# FIXME!!! should not depend on another project's internal files -execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}/rocprofiler") -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/../rocprofiler/inc/rocprofiler.h" "${GEN_INC_DIR}/rocprofiler/rocprofiler.h") -execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/../rocprofiler/src/core/activity.h" "${GEN_INC_DIR}/rocprofiler/activity.h") +execute_process(COMMAND ${Python3_EXECUTABLE} -c "import CppHeaderParser" + RESULT_VARIABLE CPP_HEADER_PARSER + OUTPUT_QUIET) + +if(NOT ${CPP_HEADER_PARSER} EQUAL 0) + message(FATAL_ERROR "\ +The \"CppHeaderParser\" Python3 package is not installed. \ +Please install it using the following command: \"pip3 install CppHeaderParser\".\ +") +endif() get_property(HSA_RUNTIME_INCLUDE_DIRECTORIES TARGET hsa-runtime64::hsa-runtime64 PROPERTY INTERFACE_INCLUDE_DIRECTORIES) -find_file(hsa_h_file hsa.h - PATHS ${HSA_RUNTIME_INCLUDE_DIRECTORIES} - PATH_SUFFIXES hsa - NO_DEFAULT_PATH - REQUIRED -) -get_filename_component(HSA_RUNTIME_INC_PATH ${hsa_h_file} DIRECTORY) +find_file(HSA_H hsa.h + PATHS ${HSA_RUNTIME_INCLUDE_DIRECTORIES} + PATH_SUFFIXES hsa + NO_DEFAULT_PATH + REQUIRED) +get_filename_component(HSA_RUNTIME_INC_PATH ${HSA_H} DIRECTORY) +## Generate the HSA wrapper functions header add_custom_command( - OUTPUT "${GEN_INC_DIR}/hsa_prof_str.h" - COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}" - COMMAND ${Python3_EXECUTABLE} - "${PROJECT_SOURCE_DIR}/script/hsaap.py" - "${PROJECT_BINARY_DIR}" "${HSA_RUNTIME_INC_PATH}" > /dev/null - DEPENDS "${PROJECT_SOURCE_DIR}/script/hsaap.py" - "${HSA_RUNTIME_INC_PATH}/hsa.h" "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h" - "${HSA_RUNTIME_INC_PATH}/hsa_ext_image.h" "${HSA_RUNTIME_INC_PATH}/hsa_api_trace.h" - COMMENT "Generating hsa_prof_str.h..." -) + OUTPUT hsa_prof_str.h + COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/script/hsaap.py ${CMAKE_CURRENT_BINARY_DIR} "${HSA_RUNTIME_INC_PATH}" > /dev/null + DEPENDS ${PROJECT_SOURCE_DIR}/script/hsaap.py + "${HSA_RUNTIME_INC_PATH}/hsa.h" "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h" + "${HSA_RUNTIME_INC_PATH}/hsa_ext_image.h" "${HSA_RUNTIME_INC_PATH}/hsa_api_trace.h" + COMMENT "Generating hsa_prof_str.h...") +## Generate the HSA pretty printers add_custom_command( - OUTPUT "${GEN_INC_DIR}/hsa_ostream_ops.h" - COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}" - COMMAND ${CMAKE_C_COMPILER} -E "${HSA_RUNTIME_INC_PATH}/hsa.h" -o "${GEN_INC_DIR}/hsa.h.i" - COMMAND ${CMAKE_C_COMPILER} -E "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h" -o "${GEN_INC_DIR}/hsa_ext_amd.h.i" - BYPRODUCTS "${GEN_INC_DIR}/hsa.h.i" "${GEN_INC_DIR}/hsa_ext_amd.h.i" - COMMAND ${Python3_EXECUTABLE} - "${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py" - -in "${GEN_INC_DIR}/hsa.h.i,${GEN_INC_DIR}/hsa_ext_amd.h.i" - -out "${GEN_INC_DIR}/hsa_ostream_ops.h" > /dev/null - DEPENDS "${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py" - "${HSA_RUNTIME_INC_PATH}/hsa.h" "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h" - COMMENT "Generating hsa_ostream_ops.h..." -) + OUTPUT hsa_ostream_ops.h + COMMAND ${CMAKE_C_COMPILER} -E "${HSA_RUNTIME_INC_PATH}/hsa.h" -o hsa.h.i + COMMAND ${CMAKE_C_COMPILER} -E "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h" -o hsa_ext_amd.h.i + BYPRODUCTS hsa.h.i hsa_ext_amd.h.i + COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py + -in hsa.h.i,hsa_ext_amd.h.i -out hsa_ostream_ops.h > /dev/null + DEPENDS ${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py + "${HSA_RUNTIME_INC_PATH}/hsa.h" "${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h" + COMMENT "Generating hsa_ostream_ops.h...") get_property(HIP_INCLUDE_DIRECTORIES TARGET hip::amdhip64 PROPERTY INTERFACE_INCLUDE_DIRECTORIES) - find_file(HIP_RUNTIME_API_H hip_runtime_api.h - PATHS ${HIP_INCLUDE_DIRECTORIES} - PATH_SUFFIXES hip - NO_DEFAULT_PATH - REQUIRED -) + PATHS ${HIP_INCLUDE_DIRECTORIES} + PATH_SUFFIXES hip + NO_DEFAULT_PATH + REQUIRED) +## Generate the HIP pretty printers add_custom_command( - OUTPUT "${GEN_INC_DIR}/hip_ostream_ops.h" - COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_INC_DIR}" - COMMAND ${CMAKE_C_COMPILER} - "$<$:-I$-I>>" - -E "${HIP_RUNTIME_API_H}" -D__HIP_PLATFORM_HCC__=1 -D__HIP_ROCclr__=1 -o ${GEN_INC_DIR}/hip_runtime_api.h.i - BYPRODUCTS "${GEN_INC_DIR}/hip_runtime_api.h.i" - COMMAND ${Python3_EXECUTABLE} - "${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py" - -in "${GEN_INC_DIR}/hip_runtime_api.h.i" - -out "${GEN_INC_DIR}/hip_ostream_ops.h" > /dev/null - DEPENDS "${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py" "${HIP_RUNTIME_API_H}" - COMMENT "Generating hip_ostream_ops.h..." - COMMAND_EXPAND_LISTS -) - -# Build the ROCtracer library - -file(GLOB ROCTRACER_SOURCES "src/roctracer/*.cpp" "src/util/*.cpp") + OUTPUT hip_ostream_ops.h + COMMAND ${CMAKE_C_COMPILER} "$<$:-I$-I>>" + -E "${HIP_RUNTIME_API_H}" -D__HIP_PLATFORM_HCC__=1 -D__HIP_ROCclr__=1 -o hip_runtime_api.h.i + BYPRODUCTS hip_runtime_api.h.i + COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py + -in hip_runtime_api.h.i -out hip_ostream_ops.h > /dev/null + DEPENDS ${PROJECT_SOURCE_DIR}/script/gen_ostream_ops.py "${HIP_RUNTIME_API_H}" + COMMENT "Generating hip_ostream_ops.h..." + COMMAND_EXPAND_LISTS) set(PUBLIC_HEADERS - roctx.h - roctracer.h - roctracer_ext.h - roctracer_hip.h - roctracer_hcc.h - roctracer_hsa.h - roctracer_roctx.h - ext/prof_protocol.h -) + roctx.h + roctracer.h + roctracer_ext.h + roctracer_hip.h + roctracer_hcc.h + roctracer_hsa.h + roctracer_roctx.h + ext/prof_protocol.h) -set(GEN_HEADERS - hip_ostream_ops.h - hsa_prof_str.h - hsa_ostream_ops.h -) +foreach(header ${PUBLIC_HEADERS}) + get_filename_component(header_subdir ${header} DIRECTORY) + install(FILES ${PROJECT_SOURCE_DIR}/inc/${header} DESTINATION include/${ROCTRACER_NAME}/${header_subdir}) +endforeach() -add_library(roctracer ${LIBRARY_TYPE} - ${ROCTRACER_SOURCES} - "${GEN_INC_DIR}/hsa_ostream_ops.h" - "${GEN_INC_DIR}/hsa_prof_str.h" - "${GEN_INC_DIR}/hip_ostream_ops.h" -) +set(GENERATED_HEADERS + hip_ostream_ops.h + hsa_prof_str.h + hsa_ostream_ops.h) + +foreach(header ${GENERATED_HEADERS}) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${header} DESTINATION include/${ROCTRACER_NAME}) +endforeach() + +## Build the ROCtracer library +file(GLOB ROCTRACER_SOURCES "roctracer/*.cpp" "util/*.cpp") +add_library(roctracer ${LIBRARY_TYPE} ${ROCTRACER_SOURCES} ${GENERATED_HEADERS}) set_target_properties(roctracer PROPERTIES - CXX_VISIBILITY_PRESET hidden - OUTPUT_NAME "roctracer64" - LINK_DEPENDS roctracer.exportmap - VERSION ${ROCTRACER_VERSION} - SOVERSION ${ROCTRACER_VERSION_MAJOR} -) + CXX_VISIBILITY_PRESET hidden + OUTPUT_NAME "roctracer64" + LINK_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roctracer.exportmap + VERSION ${ROCTRACER_VERSION} + SOVERSION ${ROCTRACER_VERSION_MAJOR}) target_compile_definitions(roctracer - PUBLIC - AMD_INTERNAL_BUILD - PRIVATE - PROF_API_IMPL - HIP_PROF_HIP_API_STRING=1 - __HIP_PLATFORM_HCC__=1 -) + PUBLIC AMD_INTERNAL_BUILD + PRIVATE PROF_API_IMPL HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1) target_include_directories(roctracer PUBLIC ${HIP_INCLUDE_DIRECTORIES} ${HSA_RUNTIME_INCLUDE_DIRECTORIES} + $ PRIVATE - ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${PROJECT_SOURCE_DIR}/src - ${PROJECT_SOURCE_DIR}/src/roctracer ${PROJECT_BINARY_DIR}/inc -) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/roctracer/exportmap.in roctracer.exportmap @ONLY) -target_link_options(roctracer PRIVATE -Wl,--version-script=roctracer.exportmap -Wl,--no-undefined) + ${CMAKE_CURRENT_SOURCE_DIR}/roctracer ${CMAKE_CURRENT_SOURCE_DIR} + ${PROJECT_SOURCE_DIR}/inc) +configure_file(roctracer/exportmap.in roctracer.exportmap @ONLY) +target_link_options(roctracer PRIVATE -Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/roctracer.exportmap -Wl,--no-undefined) target_link_libraries(roctracer PRIVATE hsa-runtime64::hsa-runtime64 Threads::Threads dl) install(TARGETS roctracer LIBRARY DESTINATION lib) -foreach(header ${PUBLIC_HEADERS}) - get_filename_component(header_subdir ${header} DIRECTORY) - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/${header} DESTINATION include/${ROCTRACER_NAME}/${header_subdir}) -endforeach() - -foreach(header ${GEN_HEADERS}) - get_filename_component(header_subdir ${header} DIRECTORY) - install(FILES ${GEN_INC_DIR}/${header} DESTINATION include/${ROCTRACER_NAME}/${header_subdir}) -endforeach() - -# Build the ROCTX library - -file(GLOB ROCTX_SOURCES "src/roctx/*.cpp") +## Build the ROCTX library +file(GLOB ROCTX_SOURCES "roctx/*.cpp") add_library(roctx ${LIBRARY_TYPE} ${ROCTX_SOURCES}) set_target_properties(roctx PROPERTIES - CXX_VISIBILITY_PRESET hidden - OUTPUT_NAME "roctx64" - LINK_DEPENDS roctx.exportmap - VERSION ${ROCTRACER_VERSION} - SOVERSION ${ROCTRACER_VERSION_MAJOR} -) + CXX_VISIBILITY_PRESET hidden + OUTPUT_NAME "roctx64" + LINK_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roctx.exportmap + VERSION ${ROCTRACER_VERSION} + SOVERSION ${ROCTRACER_VERSION_MAJOR}) -target_include_directories(roctx PRIVATE - ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${PROJECT_SOURCE_DIR}/src/roctracer - ${PROJECT_SOURCE_DIR}/src -) +target_include_directories(roctx + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/roctracer ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/roctx/exportmap.in roctx.exportmap @ONLY) +configure_file(roctx/exportmap.in roctx.exportmap @ONLY) target_link_options(roctx PRIVATE -Wl,--version-script=roctx.exportmap -Wl,--no-undefined) install(TARGETS roctx LIBRARY DESTINATION lib) ## Build the tracer_tool library - if (${LIBRARY_TYPE} STREQUAL SHARED) -file(GLOB TRACER_TOOL_SOURCES "src/tracer_tool/*.cpp" "src/util/*.cpp") - +file(GLOB TRACER_TOOL_SOURCES "tracer_tool/*.cpp" "util/*.cpp") add_library(roctracer_tool SHARED ${TRACER_TOOL_SOURCES}) set_target_properties(roctracer_tool PROPERTIES - CXX_VISIBILITY_PRESET hidden - LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/tracer_tool/exportmap -) + CXX_VISIBILITY_PRESET hidden + LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tracer_tool/exportmap) -target_compile_definitions(roctracer_tool PRIVATE - HIP_PROF_HIP_API_STRING=1 - __HIP_PLATFORM_HCC__=1 -) +target_compile_definitions(roctracer_tool + PRIVATE HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_HCC__=1) -target_include_directories(roctracer_tool PRIVATE - ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${PROJECT_SOURCE_DIR}/src/roctracer - ${PROJECT_SOURCE_DIR}/src ${HIP_INCLUDE_DIRECTORIES} ${GEN_INC_DIR} -) +target_include_directories(roctracer_tool + PRIVATE + ${PROJECT_SOURCE_DIR}/inc ${CMAKE_CURRENT_SOURCE_DIR}/roctracer + ${CMAKE_CURRENT_SOURCE_DIR}) 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}/src/tracer_tool/exportmap -Wl,--no-undefined) +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/${ROCTRACER_NAME}) - +endif() + +option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorg with backward compatibility" ON) +if(FILE_REORG_BACKWARD_COMPATIBILITY) + include(${PROJECT_SOURCE_DIR}/roctracer-backward-compat.cmake) endif() diff --git a/src/roctracer/loader.h b/src/roctracer/loader.h index b6a6d91edd..bc85bc2d42 100644 --- a/src/roctracer/loader.h +++ b/src/roctracer/loader.h @@ -133,7 +133,7 @@ class RocpApi { }; // HIP runtime library loader class -#include "inc/roctracer_hip.h" +#include "roctracer_hip.h" #if STATIC_BUILD __attribute__((weak)) hipError_t hipRegisterApiCallback(uint32_t id, void* fun, void* arg) { return hipErrorUnknown; @@ -273,7 +273,7 @@ class HipApi { #endif // rocTX runtime library loader class -#include "inc/roctracer_roctx.h" +#include "roctracer_roctx.h" class RocTxApi { public: typedef BaseLoader Loader; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 6f8fe41da9..bbdcb0c7fc 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -20,60 +20,49 @@ ## IN THE SOFTWARE. ################################################################################ -# Find clang to build the HSA code objects -find_package(Clang REQUIRED CONFIG - PATHS "/opt/rocm/" - PATH_SUFFIXES "llvm/lib/cmake/clang" -) - -add_custom_target(mytest) # builds all the tests -add_dependencies(mytest roctracer_tool) - -# Add a 'check' target to run the tests. -add_custom_target(check COMMAND ${PROJECT_BINARY_DIR}/run.sh DEPENDS mytest) - -## build HIP tests -set(GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc) - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/opt/rocm/hip/cmake") find_package(HIP REQUIRED MODULE) -set_source_files_properties(hip/MatrixTranspose.cpp app/MatrixTranspose_test.cpp - PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1) +find_package(Clang REQUIRED CONFIG + PATHS "/opt/rocm/" + PATH_SUFFIXES "llvm/lib/cmake/clang") +## Add a custom targets to build and run all the tests +add_custom_target(mytest) +add_dependencies(mytest roctracer_tool) +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) target_include_directories(MatrixTranspose PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(MatrixTranspose PRIVATE roctracer roctx) 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) target_compile_definitions(${OUTPUT_FILE} PRIVATE ITERATIONS=100 HIP_TEST=1 ${DEFINITIONS}) - target_include_directories(${OUTPUT_FILE} PRIVATE ${PROJECT_SOURCE_DIR}/inc ${GEN_INC_DIR}) + target_include_directories(${OUTPUT_FILE} PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(${OUTPUT_FILE} PRIVATE roctracer roctx) add_dependencies(mytest ${OUTPUT_FILE}) endfunction(build_matrix_transpose_test) - build_matrix_transpose_test(MatrixTranspose_test "") build_matrix_transpose_test(MatrixTranspose_hipaact_test HIP_API_ACTIVITY_ON=1) 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) target_compile_definitions(MatrixTranspose_ctest PRIVATE HIP_TEST=0 __HIP_PLATFORM_HCC__) -target_include_directories(MatrixTranspose_ctest PRIVATE ${PROJECT_SOURCE_DIR}/inc ${GEN_INC_DIR}) +target_include_directories(MatrixTranspose_ctest PRIVATE ${PROJECT_SOURCE_DIR}/inc) target_link_libraries(MatrixTranspose_ctest PRIVATE roctracer roctx) add_dependencies(mytest MatrixTranspose_ctest) -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() - -## Build hsaco_test.cpp referenc test +## Build hsaco_test reference test add_library(hsaco_test SHARED EXCLUDE_FROM_ALL app/hsaco_test.cpp) target_compile_definitions(hsaco_test PRIVATE AMD_INTERNAL_BUILD) target_link_libraries(hsaco_test hsa-runtime64::hsa-runtime64) @@ -81,7 +70,7 @@ add_dependencies(mytest hsaco_test) ## Build codeobj event test add_library(codeobj_test SHARED EXCLUDE_FROM_ALL app/codeobj_test.cpp) -target_include_directories(codeobj_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${GEN_INC_DIR}) +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,8 +80,7 @@ target_include_directories(trace_buffer PRIVATE ${PROJECT_SOURCE_DIR}/src/tracer target_link_libraries(trace_buffer Threads::Threads atomic) add_dependencies(mytest trace_buffer) - -## Build the hsa copy test +## Build the hsa (standalone) copy test function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE) separate_arguments(CLANG_ARG_LIST UNIX_COMMAND "-O2 -x cl -Xclang -finclude-default-header -cl-denorms-are-zero -cl-std=CL2.0 @@ -117,8 +105,12 @@ target_link_libraries(copy hsa-runtime64::hsa-runtime64 Threads::Threads dl) add_dependencies(copy hsaco_targets) add_dependencies(mytest copy) -## copying run script +## 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) -## copying tests output check script configure_file(${PROJECT_SOURCE_DIR}/script/check_trace.py ${PROJECT_BINARY_DIR}/test/check_trace.py COPYONLY) + +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() \ No newline at end of file