Fix CMakeLists.txt conventions
Fix indentation, quoting, and white spaces. Change-Id: I5e5e95b961e83e5957bdd137ef9893615396bb53
This commit is contained in:
+22
-23
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
+2
-2
@@ -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'),
|
||||
|
||||
+112
-153
@@ -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}
|
||||
"$<$<BOOL:${HIP_INCLUDE_DIRECTORIES}>:-I$<JOIN:${HIP_INCLUDE_DIRECTORIES},$<SEMICOLON>-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} "$<$<BOOL:${HIP_INCLUDE_DIRECTORIES}>:-I$<JOIN:${HIP_INCLUDE_DIRECTORIES},$<SEMICOLON>-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}
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
||||
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()
|
||||
|
||||
@@ -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<RocTxApi> Loader;
|
||||
|
||||
+24
-32
@@ -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()
|
||||
Reference in New Issue
Block a user