diff --git a/.gitignore b/.gitignore
index ef6bb1deef..88880693df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,5 +5,3 @@
*.swp
*.Po
build
-test/MatrixTranspose/MatrixTranspose
-test/MatrixTranspose_test/MatrixTranspose
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc0c6b83f6..98f7c5f819 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,69 +20,46 @@
## IN THE SOFTWARE.
################################################################################
-cmake_minimum_required ( VERSION 3.5.0 )
+cmake_minimum_required(VERSION 3.16.0)
## Set module name and project name.
-set ( ROCTRACER_NAME "roctracer" )
-set ( ROCTRACER_TARGET "${ROCTRACER_NAME}64" )
-set ( ROCTRACER_LIBRARY "lib${ROCTRACER_TARGET}" )
-project ( ${ROCTRACER_TARGET} VERSION 4.0.0)
+set(ROCTRACER_NAME "roctracer")
+set(ROCTRACER_TARGET "${ROCTRACER_NAME}")
-## Adding default path cmake modules
-list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules" )
-## Include common cmake modules
-include ( utils )
-## Set build environment
-include ( env )
+project(ROCTRACER VERSION 4.0.0)
-## Setup the package version.
-get_version ( "1.0.0" )
-
-set ( BUILD_VERSION_MAJOR ${VERSION_MAJOR} )
-set ( BUILD_VERSION_MINOR ${VERSION_MINOR} )
-set ( BUILD_VERSION_PATCH ${VERSION_PATCH} )
-
-if ( DEFINED VERSION_BUILD AND NOT ${VERSION_BUILD} STREQUAL "" )
- message ( "VERSION BUILD DEFINED ${VERSION_BUILD}" )
- set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" )
+## Build is not supported on Windows plaform
+if(WIN32)
+ message(FATAL_ERROR "Windows build is not supported.")
endif ()
-set ( LIB_VERSION_MAJOR ${BUILD_VERSION_MAJOR} )
-set ( LIB_VERSION_MINOR ${BUILD_VERSION_MINOR} )
-if (DEFINED ENV{ROCM_LIBPATCH_VERSION})
- set (LIB_VERSION_PATCH $ENV{ROCM_LIBPATCH_VERSION} )
-else ()
- set (LIB_VERSION_PATCH ${BUILD_VERSION_PATCH} )
+## Adding default path cmake modules
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+add_compile_options(-Wall -Werror)
+
+set(THREADS_PREFER_PTHREAD_FLAG ON)
+find_package(Threads REQUIRED)
+
+find_package(hsa-runtime64 REQUIRED CONFIG PATHS /opt/rocm/)
+find_package(HIP REQUIRED CONFIG PATHS /opt/rocm/)
+
+if(NOT DEFINED LIBRARY_TYPE)
+ set(LIBRARY_TYPE SHARED)
endif()
-set ( LIB_VERSION_STRING "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" )
-message ( "-- LIB-VERSION: ${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" )
-## Set target and root/lib/test directory
-set ( TARGET_NAME "${ROCTRACER_TARGET}" )
-set ( ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}" )
-set ( LIB_DIR "${ROOT_DIR}/src" )
-set ( TEST_DIR "${ROOT_DIR}/test" )
-set ( DEST_NAME ${ROCTRACER_NAME} )
-
-## Build library
-include ( ${LIB_DIR}/CMakeLists.txt )
-
-## Set the VERSION and SOVERSION values
-set_property ( TARGET ${TARGET_NAME} PROPERTY VERSION "${LIB_VERSION_STRING}" )
-set_property ( TARGET ${TARGET_NAME} PROPERTY SOVERSION "${LIB_VERSION_MAJOR}" )
-
-# If the library is a release, strip the target library
-#if ( "${CMAKE_BUILD_TYPE}" STREQUAL release )
-# add_custom_command ( TARGET ${ROCTRACER_TARGET} POST_BUILD COMMAND ${CMAKE_STRIP} *.so )
-#endif ()
+## Build libraries
+include(src/CMakeLists.txt)
## Build tests
-if ( ${LIBRARY_TYPE} STREQUAL SHARED )
-add_subdirectory ( ${TEST_DIR} ${PROJECT_BINARY_DIR}/test )
+if(${LIBRARY_TYPE} STREQUAL SHARED)
+add_subdirectory(test ${PROJECT_BINARY_DIR}/test)
endif()
## pbulic headers
-set ( PUBLIC_HEADERS
+set(PUBLIC_HEADERS
roctx.h
roctracer.h
roctracer_ext.h
@@ -92,44 +69,23 @@ set ( PUBLIC_HEADERS
roctracer_roctx.h
ext/prof_protocol.h
)
-set ( GEN_HEADERS
+set(GEN_HEADERS
hip_ostream_ops.h
hsa_prof_str.h
hsa_ostream_ops.h
)
-if ( ${LIBRARY_TYPE} STREQUAL SHARED )
+if(${LIBRARY_TYPE} STREQUAL SHARED)
## Installation and packaging
-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} )
+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 ()
-message ( "-----------Dest-name: ${DEST_NAME}" )
-message ( "------Install-prefix: ${CMAKE_INSTALL_PREFIX}" )
-message ( "-----------CPACK-dir: ${CPACK_PACKAGING_INSTALL_PREFIX}" )
-
-## Install information
-install ( TARGETS ${ROCTRACER_TARGET} LIBRARY DESTINATION lib )
-foreach ( header ${PUBLIC_HEADERS} )
- get_filename_component ( header_subdir ${header} DIRECTORY )
- install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/${header} DESTINATION include/${DEST_NAME}/${header_subdir} )
-endforeach ()
-foreach ( header ${GEN_HEADERS} )
- get_filename_component ( header_subdir ${header} DIRECTORY )
- install ( FILES ${PROJECT_BINARY_DIR}/inc/${header} DESTINATION include/${DEST_NAME}/${header_subdir} )
-endforeach ()
-
-## rocTX
-set ( ROCTX_TARGET "roctx64" )
-set ( ROCTX_LIBRARY "lib${ROCTX_TARGET}" )
-
-## Set the VERSION and SOVERSION values
-set_property ( TARGET ${ROCTX_TARGET} PROPERTY VERSION "${LIB_VERSION_STRING}" )
-set_property ( TARGET ${ROCTX_TARGET} PROPERTY SOVERSION "${LIB_VERSION_MAJOR}" )
-
-install ( TARGETS ${ROCTX_TARGET} LIBRARY DESTINATION lib )
+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)
@@ -137,58 +93,59 @@ if(FILE_REORG_BACKWARD_COMPATIBILITY)
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.")
-set ( CPACK_PACKAGE_NAME "${ROCTRACER_NAME}-dev" )
-set ( CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc." )
-set ( CPACK_PACKAGE_VERSION_MAJOR ${BUILD_VERSION_MAJOR} )
-set ( CPACK_PACKAGE_VERSION_MINOR ${BUILD_VERSION_MINOR} )
-set ( CPACK_PACKAGE_VERSION_PATCH ${BUILD_VERSION_PATCH} )
-set ( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" )
-if ( DEFINED ENV{ROCM_LIBPATCH_VERSION} )
- set ( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.$ENV{ROCM_LIBPATCH_VERSION}" )
+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.")
+set(CPACK_PACKAGE_NAME "${ROCTRACER_NAME}-dev")
+set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
+set(CPACK_PACKAGE_VERSION_MAJOR ${ROCTRACER_VERSION_MAJOR})
+set(CPACK_PACKAGE_VERSION_MINOR ${ROCTRACER_VERSION_MINOR})
+set(CPACK_PACKAGE_VERSION_PATCH ${ROCTRACER_VERSION_PATCH})
+set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+set(CPACK_PACKAGE_CONTACT "ROCm Profiler Support
")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD ROCTRACER library")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+
+if(DEFINED ENV{ROCM_LIBPATCH_VERSION})
+ set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.$ENV{ROCM_LIBPATCH_VERSION}")
+ message("Using CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}")
endif()
-message ( "-- CPACK_PACKAGE_VERSION: ${CPACK_PACKAGE_VERSION}" )
-set ( CPACK_PACKAGE_CONTACT "ROCm Profiler Support " )
-set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD ROCTRACER library" )
-set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" )
# Install license file
install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION share/doc/${CPACK_PACKAGE_NAME})
## Debian package specific variables
-if ( DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE} )
- set ( CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE} )
+if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
+ set(CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
else()
- set ( CPACK_DEBIAN_PACKAGE_RELEASE "local" )
+ 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} )
- set ( CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE} )
+if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
+ set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE})
else()
- set ( CPACK_RPM_PACKAGE_RELEASE "local" )
+ set(CPACK_RPM_PACKAGE_RELEASE "local")
endif()
-message ( "Using CPACK_RPM_PACKAGE_RELEASE ${CPACK_RPM_PACKAGE_RELEASE}" )
+message("Using CPACK_RPM_PACKAGE_RELEASE ${CPACK_RPM_PACKAGE_RELEASE}")
-set( CPACK_RPM_PACKAGE_LICENSE "MIT" )
+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 )
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
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}" )
+if(PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "")
+ string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}")
endif()
-set ( CPACK_RPM_FILE_NAME "RPM-DEFAULT" )
+set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
message("CPACK_RPM_PACKAGE_RELEASE: ${CPACK_RPM_PACKAGE_RELEASE}")
-include ( CPack )
+include(CPack)
endif()
diff --git a/build.sh b/build.sh
index 02ae67b746..871926b4c3 100755
--- a/build.sh
+++ b/build.sh
@@ -39,7 +39,6 @@ if [ -e "$DEFAULTS" ] ; then source "$DEFAULTS"; fi
if [ -z "$ROCTRACER_ROOT" ]; then ROCTRACER_ROOT=$SRC_DIR; fi
if [ -z "$BUILD_DIR" ] ; then BUILD_DIR=$PWD; fi
-if [ -z "$HIP_PATH" ] ; then export HIP_PATH="$ROCM_PATH/hip"; fi
if [ -z "$BUILD_TYPE" ] ; then BUILD_TYPE="release"; fi
if [ -z "$PACKAGE_ROOT" ] ; then PACKAGE_ROOT=$ROCM_PATH; fi
if [ -z "$PACKAGE_PREFIX" ] ; then PACKAGE_PREFIX="$ROCM_PATH/$COMPONENT"; fi
diff --git a/build_proto.sh b/build_proto.sh
deleted file mode 100755
index 709fe34645..0000000000
--- a/build_proto.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash -x
-
-################################################################################
-# Copyright (c) 2018-2022 Advanced Micro Devices, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-################################################################################
-
-COMPONENT="roctracer"
-ROCM_PATH="/opt/rocm"
-
-fatal() {
- echo "$1"
- exit 1
-}
-
-umask 022
-
-if [ -z "$ROCTRACER_ROOT" ]; then export ROCTRACER_ROOT=$PWD; fi
-if [ -z "$BUILD_DIR" ] ; then export BUILD_DIR=$PWD; fi
-if [ -z "$PACKAGE_ROOT" ] ; then export PACKAGE_ROOT=$ROCM_PATH; fi
-if [ -z "$PACKAGE_PREFIX" ] ; then export PACKAGE_PREFIX="$ROCM_PATH/$COMPONENT"; fi
-
-MAKE_OPTS="-j 8 -C $BUILD_DIR"
-
-mkdir -p $BUILD_DIR
-pushd $BUILD_DIR
-cmake \
- -DCMAKE_MODULE_PATH=$ROCTRACER_ROOT/cmake_modules \
- -DCMAKE_INSTALL_PREFIX=$PACKAGE_ROOT \
- -DCPACK_PACKAGING_INSTALL_PREFIX=$PACKAGE_PREFIX \
- -DCPACK_GENERATOR="DEB;RPM" \
- $ROCTRACER_ROOT/inc/ext
-popd
-
-make package
-
-exit 0
diff --git a/build_static.sh b/build_static.sh
index d313b0a5a0..a85399e5a0 100755
--- a/build_static.sh
+++ b/build_static.sh
@@ -39,7 +39,6 @@ if [ -e "$DEFAULTS" ] ; then source "$DEFAULTS"; fi
if [ -z "$ROCTRACER_ROOT" ]; then ROCTRACER_ROOT=$SRC_DIR; fi
if [ -z "$BUILD_DIR" ] ; then BUILD_DIR=$PWD; fi
-if [ -z "$HIP_PATH" ] ; then export HIP_PATH="$ROCM_PATH/hip"; fi
if [ -z "$BUILD_TYPE" ] ; then BUILD_TYPE="release"; fi
if [ -z "$PACKAGE_ROOT" ] ; then PACKAGE_ROOT=$ROCM_PATH; fi
if [ -z "$PACKAGE_PREFIX" ] ; then PACKAGE_PREFIX="$ROCM_PATH/$COMPONENT"; fi
diff --git a/cmake_modules/env.cmake b/cmake_modules/env.cmake
deleted file mode 100644
index beed3762eb..0000000000
--- a/cmake_modules/env.cmake
+++ /dev/null
@@ -1,179 +0,0 @@
-################################################################################
-## Copyright (c) 2018-2022 Advanced Micro Devices, Inc.
-##
-## Permission is hereby granted, free of charge, to any person obtaining a copy
-## of this software and associated documentation files (the "Software"), to
-## deal in the Software without restriction, including without limitation the
-## rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-## sell copies of the Software, and to permit persons to whom the Software is
-## furnished to do so, subject to the following conditions:
-##
-## The above copyright notice and this permission notice shall be included in
-## all copies or substantial portions of the Software.
-##
-## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-## IN THE SOFTWARE.
-################################################################################
-
-## Build is not supported on Windows plaform
-if ( WIN32 )
- message ( FATAL_ERROR "Windows build is not supported." )
-endif ()
-
-set ( CMAKE_CXX_STANDARD 17 )
-set ( CMAKE_CXX_STANDARD_REQUIRED ON )
-
-## Compiler Preprocessor definitions.
-add_definitions ( -DAMD_INTERNAL_BUILD )
-add_definitions ( -D__HIP_PLATFORM_HCC__=1 )
-
-## Linux Compiler options
-add_compile_options ( -Wall -Werror )
-
-add_link_options("-Bdynamic -z,noexecstck")
-
-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()
-
-## CLANG options
-if ( "$ENV{CXX}" STREQUAL "/usr/bin/clang++" )
- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ferror-limit=1000000" )
-endif()
-
-## Enable debug trace
-if ( DEFINED CMAKE_DEBUG_TRACE )
- add_definitions ( -DDEBUG_TRACE_ON=1 )
-endif()
-if ( DEFINED ENV{CMAKE_DEBUG_TRACE} )
- add_definitions ( -DDEBUG_TRACE_ON=1 )
-endif()
-
-if ( NOT DEFINED LIBRARY_TYPE )
- set ( LIBRARY_TYPE SHARED )
-endif()
-if ( ${LIBRARY_TYPE} STREQUAL STATIC )
- add_definitions ( -DSTATIC_BUILD=1 )
-endif()
-
-## Enable Hip API call to translate hip call args function
-add_definitions ( -DHIP_PROF_HIP_API_STRING=1 )
-
-## Enable HIP_VDI mode
-add_definitions ( -D__HIP_ROCclr__=1 )
-set ( HIP_DEFINES "-D__HIP_PLATFORM_HCC__=1 -D__HIP_ROCclr__=1" )
-
-## Enable HIP local build
-if ( DEFINED LOCAL_BUILD )
- add_definitions ( -DLOCAL_BUILD=${LOCAL_BUILD} )
-else()
- add_definitions ( -DLOCAL_BUILD=1 )
-endif()
-
-## Enable direct loading of AQL-profile HSA extension
-if ( DEFINED ENV{CMAKE_LD_AQLPROFILE} )
- add_definitions ( -DROCP_LD_AQLPROFILE=1 )
-endif()
-
-## Build type
-if ( NOT DEFINED CMAKE_BUILD_TYPE OR "${CMAKE_BUILD_TYPE}" STREQUAL "" )
- if ( DEFINED ENV{CMAKE_BUILD_TYPE} )
- set ( CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE} )
- endif()
-endif()
-
-## Installation prefix path
-if ( NOT DEFINED CMAKE_PREFIX_PATH AND DEFINED ENV{CMAKE_PREFIX_PATH} )
- set ( CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH} )
-endif()
-set ( ENV{CMAKE_PREFIX_PATH} ${CMAKE_PREFIX_PATH} )
-
-set ( HIP_PATH "/opt/rocm/hip" )
-if ( DEFINED ENV{HIP_PATH} )
- set ( HIP_PATH $ENV{HIP_PATH} )
-endif()
-set ( HIP_INC_DIR "${HIP_PATH}/include" )
-
-## Extend Compiler flags based on build type
-string ( TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE )
-if ( "${CMAKE_BUILD_TYPE}" STREQUAL debug )
- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb" )
- set ( CMAKE_BUILD_TYPE "debug" )
-else ()
- set ( CMAKE_BUILD_TYPE "release" )
-endif ()
-
-## Extend Compiler flags based on Processor architecture
-if ( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64" )
- set ( NBIT 64 )
- set ( NBITSTR "64" )
- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -msse -msse2" )
-elseif ( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86" )
- set ( NBIT 32 )
- set ( NBITSTR "" )
- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" )
-endif ()
-
-## Find hsa-runtime headers/lib
-find_file ( HSA_RUNTIME_INC "hsa/hsa.h" )
-find_library ( HSA_RUNTIME_LIB "libhsa-runtime${NBIT}.so" )
-get_filename_component ( HSA_RUNTIME_INC_PATH "${HSA_RUNTIME_INC}" DIRECTORY )
-get_filename_component ( HSA_RUNTIME_LIB_PATH "${HSA_RUNTIME_LIB}" DIRECTORY )
-
-find_library ( HSA_KMT_LIB "libhsakmt.so" )
-if ( "${HSA_KMT_LIB_PATH}" STREQUAL "" )
- find_library ( HSA_KMT_LIB "libhsakmt.a" )
-endif()
-get_filename_component ( HSA_KMT_LIB_PATH "${HSA_KMT_LIB}" DIRECTORY )
-set ( HSA_KMT_INC_PATH "${HSA_KMT_LIB_PATH}/../include" )
-
-get_filename_component ( ROCM_ROOT_DIR "${HSA_KMT_LIB_PATH}" DIRECTORY )
-set ( ROCM_INC_PATH "${ROCM_ROOT_DIR}/include" )
-
-## Basic Tool Chain Information
-message ( "----------------NBit: ${NBIT}" )
-message ( "----------Build-Type: ${CMAKE_BUILD_TYPE}" )
-message ( "----------C-Compiler: ${CMAKE_C_COMPILER}" )
-message ( "--C-Compiler-Version: ${CMAKE_C_COMPILER_VERSION}" )
-message ( "--------CXX-Compiler: ${CMAKE_CXX_COMPILER}" )
-message ( "CXX-Compiler-Version: ${CMAKE_CXX_COMPILER_VERSION}" )
-message ( "-----HSA-Runtime-Inc: ${HSA_RUNTIME_INC_PATH}" )
-message ( "-----HSA-Runtime-Lib: ${HSA_RUNTIME_LIB_PATH}" )
-message ( "----HSA_KMT_LIB_PATH: ${HSA_KMT_LIB_PATH}" )
-message ( "-------ROCM_ROOT_DIR: ${ROCM_ROOT_DIR}" )
-message ( "-------ROCM_INC_PATH: ${ROCM_INC_PATH}" )
-message ( "-------------KFD-Inc: ${HSA_KMT_INC_PATH}" )
-message ( "-------------HIP-Inc: ${HIP_INC_DIR}" )
-message ( "-----CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}" )
-message ( "---CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}" )
-message ( "---------GPU_TARGETS: ${GPU_TARGETS}" )
-message ( "--------LIBRARY_TYPE: ${LIBRARY_TYPE}" )
-
-## Check the ROCm pathes
-if ( "${HSA_RUNTIME_INC_PATH}" STREQUAL "" )
- message ( FATAL_ERROR "HSA_RUNTIME_INC_PATH is not found." )
-endif ()
-if ( "${HSA_RUNTIME_LIB_PATH}" STREQUAL "" )
- message ( FATAL_ERROR "HSA_RUNTIME_LIB_PATH is not found." )
-endif ()
-if ( "${HSA_KMT_LIB_PATH}" STREQUAL "" )
- message ( FATAL_ERROR "HSA_KMT_LIB_PATH is not found." )
-endif ()
-if ( "${ROCM_ROOT_DIR}" STREQUAL "" )
- message ( FATAL_ERROR "ROCM_ROOT_DIR is not found." )
-endif ()
diff --git a/cmake_modules/utils.cmake b/cmake_modules/utils.cmake
deleted file mode 100644
index 1b2f342ea4..0000000000
--- a/cmake_modules/utils.cmake
+++ /dev/null
@@ -1,96 +0,0 @@
-################################################################################
-## Copyright (c) 2018-2022 Advanced Micro Devices, Inc.
-##
-## Permission is hereby granted, free of charge, to any person obtaining a copy
-## of this software and associated documentation files (the "Software"), to
-## deal in the Software without restriction, including without limitation the
-## rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-## sell copies of the Software, and to permit persons to whom the Software is
-## furnished to do so, subject to the following conditions:
-##
-## The above copyright notice and this permission notice shall be included in
-## all copies or substantial portions of the Software.
-##
-## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-## IN THE SOFTWARE.
-################################################################################
-
-## Parses the VERSION_STRING variable and places
-## the first, second and third number values in
-## the major, minor and patch variables.
-function( parse_version VERSION_STRING )
-
- string ( FIND ${VERSION_STRING} "-" STRING_INDEX )
-
- if ( ${STRING_INDEX} GREATER -1 )
- math ( EXPR STRING_INDEX "${STRING_INDEX} + 1" )
- string ( SUBSTRING ${VERSION_STRING} ${STRING_INDEX} -1 VERSION_BUILD )
- endif ()
-
- string ( REGEX MATCHALL "[0123456789]+" VERSIONS ${VERSION_STRING} )
- list ( LENGTH VERSIONS VERSION_COUNT )
-
- if ( ${VERSION_COUNT} GREATER 0)
- list ( GET VERSIONS 0 MAJOR )
- set ( VERSION_MAJOR ${MAJOR} PARENT_SCOPE )
- set ( TEMP_VERSION_STRING "${MAJOR}" )
- endif ()
-
- if ( ${VERSION_COUNT} GREATER 1 )
- list ( GET VERSIONS 1 MINOR )
- set ( VERSION_MINOR ${MINOR} PARENT_SCOPE )
- set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}" )
- endif ()
-
- if ( ${VERSION_COUNT} GREATER 2 )
- list ( GET VERSIONS 2 PATCH )
- set ( VERSION_PATCH ${PATCH} PARENT_SCOPE )
- set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}" )
- endif ()
-
- if ( DEFINED VERSION_BUILD )
- set ( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE )
- endif ()
-
- set ( VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE )
-
-endfunction ()
-
-## Gets the current version of the repository
-## using versioning tags and git describe.
-## Passes back a packaging version string
-## and a library version string.
-function ( get_version DEFAULT_VERSION_STRING )
-
- parse_version ( ${DEFAULT_VERSION_STRING} )
-
- find_program ( GIT NAMES git )
-
- if ( GIT )
-
- execute_process ( COMMAND "git describe --dirty --long --match [0-9]* 2>/dev/null"
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_TAG_STRING
- OUTPUT_STRIP_TRAILING_WHITESPACE
- RESULT_VARIABLE RESULT )
-
- if ( ${RESULT} EQUAL 0 )
-
- parse_version ( ${GIT_TAG_STRING} )
-
- endif ()
-
- endif ()
-
- set( VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE )
- set( VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE )
- set( VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE )
- set( VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE )
- set( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE )
-
-endfunction()
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 46b8e55638..74e1204811 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -58,7 +58,7 @@ PROJECT_NAME = "@ROCTRACER_NAME@"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = @roctracer64_VERSION_MAJOR@.@roctracer64_VERSION_MINOR@.@roctracer64_VERSION_PATCH@
+PROJECT_NUMBER = @ROCTRACER_VERSION_MAJOR@.@ROCTRACER_VERSION_MINOR@.@ROCTRACER_VERSION_PATCH@
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 27cda80cfb..0910c8e3bd 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -20,39 +20,160 @@
## IN THE SOFTWARE.
################################################################################
-# Generating tracing primitives
-set ( GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc )
-set ( GEN_SRC_DIR ${PROJECT_BINARY_DIR}/src )
-execute_process ( COMMAND sh -xc "mkdir -p ${GEN_INC_DIR}" )
-execute_process ( COMMAND sh -xc "mkdir -p ${GEN_SRC_DIR}" )
-execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HSA_RUNTIME_INC_PATH}/hsa.h > ${GEN_INC_DIR}/hsa_pp.h" )
-execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HSA_RUNTIME_INC_PATH}/hsa_ext_amd.h > ${GEN_INC_DIR}/hsa_ext_amd_pp.h" )
-execute_process ( COMMAND sh -xc "python3 ${ROOT_DIR}/script/gen_ostream_ops.py -in ${GEN_INC_DIR}/hsa_pp.h,${GEN_INC_DIR}/hsa_ext_amd_pp.h -out ${GEN_INC_DIR}/hsa_ostream_ops.h" )
-execute_process ( COMMAND sh -xc "python3 ${ROOT_DIR}/script/hsaap.py ${PROJECT_BINARY_DIR} ${HSA_RUNTIME_INC_PATH}" )
-execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HSA_KMT_INC_PATH}/hsakmttypes.h > ${GEN_INC_DIR}/hsakmttypes_pp.h" )
-execute_process ( COMMAND sh -xc "${CMAKE_C_COMPILER} -E ${HIP_PATH}/include/hip/hip_runtime_api.h ${HIP_DEFINES} -I${HIP_PATH}/include -I${ROCM_ROOT_DIR}/hsa/include > ${GEN_INC_DIR}/hip_runtime_api_pp.h" )
-execute_process ( COMMAND sh -xc "python3 ${ROOT_DIR}/script/gen_ostream_ops.py -in ${GEN_INC_DIR}/hip_runtime_api_pp.h -out ${GEN_INC_DIR}/hip_ostream_ops.h" )
-execute_process ( COMMAND sh -xc "mkdir ${GEN_INC_DIR}/rocprofiler" )
-execute_process ( COMMAND sh -xc "ln -s ${ROOT_DIR}/../rocprofiler/inc/rocprofiler.h ${GEN_INC_DIR}/rocprofiler/rocprofiler.h" )
-execute_process ( COMMAND sh -xc "ln -s ${ROOT_DIR}/../rocprofiler/src/core/activity.h ${GEN_INC_DIR}/rocprofiler/activity.h" )
+find_package(Python3 COMPONENTS Interpreter REQUIRED)
-# Build dynamic Library object
-set ( TARGET_LIB ${TARGET_NAME} )
-set ( LIB_SRC
- ${LIB_DIR}/core/roctracer.cpp
+execute_process(
+ COMMAND ${Python3_EXECUTABLE} -c "import CppHeaderParser"
+ RESULT_VARIABLE CPPHEADERPARSER
+ OUTPUT_QUIET
)
-add_library ( ${TARGET_LIB} ${LIBRARY_TYPE} ${LIB_SRC} )
-target_compile_definitions ( ${TARGET_LIB} PRIVATE PROF_API_IMPL )
-target_include_directories ( ${TARGET_LIB} PRIVATE ${LIB_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${HSA_RUNTIME_INC_PATH} ${ROCM_INC_PATH} ${HIP_INC_DIR} ${HSA_KMT_INC_PATH} ${GEN_INC_DIR} )
-target_link_libraries( ${TARGET_LIB} PRIVATE ${HSA_RUNTIME_LIB} c stdc++ )
-set_target_properties( ${TARGET_LIB} PROPERTIES CXX_VISIBILITY_PRESET hidden )
-# Build ROCTX tracing library
-set ( ROCTX_LIB "roctx64" )
-set ( ROCTX_LIB_SRC
- ${LIB_DIR}/roctx/roctx.cpp
+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()
+
+if(${LIBRARY_TYPE} STREQUAL STATIC)
+ add_definitions(-DSTATIC_BUILD=1)
+endif()
+
+option(DEBUG_TRACE "Enable debug tracing")
+if(DEBUG_TRACE)
+ add_definitions(-DDEBUG_TRACE_ON=1)
+endif()
+
+set(GEN_INC_DIR ${PROJECT_BINARY_DIR}/inc)
+
+# 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")
+
+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
)
-add_library ( ${ROCTX_LIB} SHARED ${ROCTX_LIB_SRC} )
-target_include_directories ( ${ROCTX_LIB} PRIVATE ${LIB_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${HSA_RUNTIME_INC_PATH} ${GEN_INC_DIR} )
-target_link_libraries( ${ROCTX_LIB} PRIVATE c stdc++ )
-set_target_properties( ${ROCTX_LIB} PROPERTIES CXX_VISIBILITY_PRESET hidden )
+get_filename_component(HSA_RUNTIME_INC_PATH ${hsa_h_file} DIRECTORY)
+
+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..."
+)
+
+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..."
+)
+
+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
+)
+
+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/core/*.cpp" "src/util/*.cpp")
+
+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_target_properties(roctracer PROPERTIES
+ CXX_VISIBILITY_PRESET hidden
+ OUTPUT_NAME "roctracer64"
+ 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
+)
+
+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_BINARY_DIR}/inc
+)
+target_link_libraries(roctracer PRIVATE hsa-runtime64::hsa-runtime64 Threads::Threads dl)
+
+install(TARGETS ${ROCTRACER_TARGET} 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")
+
+add_library(roctx ${LIBRARY_TYPE} ${ROCTX_SOURCES})
+
+set_target_properties(roctx PROPERTIES
+ CXX_VISIBILITY_PRESET hidden
+ OUTPUT_NAME "roctx64"
+ VERSION ${ROCTRACER_VERSION}
+ SOVERSION ${ROCTRACER_VERSION_MAJOR}
+)
+
+target_include_directories(roctx PRIVATE
+ ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc
+ ${PROJECT_SOURCE_DIR}/src
+)
+
+install(TARGETS roctx LIBRARY DESTINATION lib)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 4f2ab13146..09a3f5e48b 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -20,89 +20,82 @@
## IN THE SOFTWARE.
################################################################################
-cmake_minimum_required ( VERSION 3.5.0 )
+add_custom_target(mytest) # builds all the tests
+add_dependencies(mytest roctracer_tool ctrl)
-if ( NOT DEFINED ROOT_DIR )
- MESSAGE ( FATAL_ERROR "ROOT_DIR is not defined" )
-endif ()
-if ( NOT DEFINED INC_PATH )
- set ( INC_PATH "${ROOT_DIR}/inc" )
-endif ()
-if ( NOT DEFINED LIB_PATH )
- set ( LIB_PATH "${PROJECT_BINARY_DIR}" )
-endif ()
-if ( NOT DEFINED TEST_DIR )
- set ( TEST_DIR "${CMAKE_CURRENT_SOURCE_DIR}" )
- ## Adding default path cmake modules
- list ( APPEND CMAKE_MODULE_PATH "${ROOT_DIR}/cmake_modules" )
- ## Include common cmake modules
- include ( utils )
- ## Set build environment
- include ( env )
-endif ()
-
-## Path to HSA test
-set ( HSA_TEST_DIR "${TEST_DIR}/hsa/test" )
-
-## test run script
-set ( RUN_SCRIPT "${TEST_DIR}/run.sh" )
+# 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 ( INC_PATH "${INC_PATH} ${GEN_INC_DIR}" )
-set ( TEST_ENV ROCM_PATH=${ROCM_ROOT_DIR} HSA_PATH=${ROCM_ROOT_DIR}/hsa INC_PATH=${INC_PATH} LIB_PATH=${LIB_PATH} HIPCC_VERBOSE=3 )
-add_custom_target( mytest
- COMMAND ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose" -j1
- COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose/MatrixTranspose ${PROJECT_BINARY_DIR}/test"
- COMMAND ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
- COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_test"
- COMMAND HIP_API_ACTIVITY_ON=1 ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
- COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_hipaact_test"
- COMMAND MGPU_TEST=1 ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
- COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_mgpu"
- COMMAND C_TEST=1 ${TEST_ENV} make -C "${TEST_DIR}/MatrixTranspose_test" -j1
- COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_ctest"
-# copy traces
- COMMAND sh -xc "cp ${TEST_DIR}/golden_traces/*_trace.txt ${PROJECT_BINARY_DIR}/test/"
- COMMAND sh -xc "cp ${TEST_DIR}/golden_traces/tests_trace_cmp_levels.txt ${PROJECT_BINARY_DIR}/test/"
-)
+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(MatrixTranspose/MatrixTranspose.cpp MatrixTranspose_test/MatrixTranspose.cpp
+ PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
+
+hip_add_executable(MatrixTranspose EXCLUDE_FROM_ALL MatrixTranspose/MatrixTranspose.cpp)
+target_include_directories(MatrixTranspose PRIVATE ${PROJECT_SOURCE_DIR}/inc)
+target_link_libraries(MatrixTranspose PRIVATE roctracer roctx)
+add_dependencies(mytest MatrixTranspose)
+
+function(build_matrix_transpose_test OUTPUT_FILE DEFINITIONS)
+ hip_add_executable(${OUTPUT_FILE} EXCLUDE_FROM_ALL MatrixTranspose_test/MatrixTranspose.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_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)
+
+add_custom_command(OUTPUT MatrixTranspose.c
+ COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/MatrixTranspose_test/MatrixTranspose.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_link_libraries(MatrixTranspose_ctest PRIVATE roctracer roctx)
+add_dependencies(mytest MatrixTranspose_ctest)
+
+file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/golden_traces/*_trace.txt")
+foreach(file ${files})
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${file} ${PROJECT_BINARY_DIR}/test/)
+endforeach()
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/golden_traces/tests_trace_cmp_levels.txt ${PROJECT_BINARY_DIR}/test/)
## Build HSA test
-set ( TMP ${TEST_DIR} )
-set ( TEST_DIR ${HSA_TEST_DIR} )
-add_subdirectory ( ${HSA_TEST_DIR} ${PROJECT_BINARY_DIR}/test/hsa )
-set ( TEST_DIR ${TMP} )
+add_subdirectory(hsa/test ${PROJECT_BINARY_DIR}/test/hsa)
-## Util sources
-file( GLOB UTIL_SRC "${HSA_TEST_DIR}/util/*.cpp" )
-
-if ( DEFINED ROCTRACER_TARGET )
- ## Build test library
- set ( TEST_LIB "roctracer_tool" )
- set ( TEST_LIB_SRC ${TEST_DIR}/tool/tracer_tool.cpp ${UTIL_SRC} )
- add_library ( ${TEST_LIB} SHARED ${TEST_LIB_SRC} )
- target_include_directories ( ${TEST_LIB} PRIVATE ${HSA_TEST_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${HSA_RUNTIME_INC_PATH} ${ROCM_INC_PATH} ${HIP_INC_DIR} ${HSA_KMT_INC_PATH} ${GEN_INC_DIR} )
- target_link_libraries ( ${TEST_LIB} ${ROCTRACER_TARGET} ${HSA_RUNTIME_LIB} c stdc++ atomic dl pthread rt numa )
- set_target_properties( ${TEST_LIB} PROPERTIES CXX_VISIBILITY_PRESET hidden )
- install ( TARGETS ${TEST_LIB} LIBRARY DESTINATION lib/${DEST_NAME})
+if(DEFINED ROCTRACER_TARGET)
+ ## Build the tracer_tool library
+ file(GLOB TRACER_TOOL_SOURCES "tool/*.cpp" "${PROJECT_SOURCE_DIR}/src/util/*.cpp")
+ add_library(roctracer_tool SHARED ${TRACER_TOOL_SOURCES})
+ target_compile_definitions(roctracer_tool PRIVATE HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_HCC__)
+ target_include_directories(roctracer_tool PRIVATE hsa/test ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/inc ${HIP_INCLUDE_DIRECTORIES} ${GEN_INC_DIR})
+ target_link_libraries(roctracer_tool ${ROCTRACER_TARGET} hsa-runtime64::hsa-runtime64 Threads::Threads atomic dl)
+ set_target_properties(roctracer_tool PROPERTIES CXX_VISIBILITY_PRESET hidden)
+ install(TARGETS roctracer_tool LIBRARY DESTINATION lib/${ROCTRACER_NAME})
endif ()
## Build hsaco_test.cpp referenc test
-set ( CO_LIB_NAME "hsaco_test" )
-set ( CO_LIB_SRC ${TEST_DIR}/app/hsaco_test.cpp )
-add_library ( ${CO_LIB_NAME} SHARED ${CO_LIB_SRC} )
-target_include_directories ( ${CO_LIB_NAME} PRIVATE ${HSA_RUNTIME_INC_PATH} )
-target_link_libraries ( ${CO_LIB_NAME} ${HSA_RUNTIME_LIB} c stdc++ )
+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)
+add_dependencies(mytest hsaco_test)
## Build codeobj event test
-set ( CO_LIB_NAME "codeobj_test" )
-set ( CO_LIB_SRC ${TEST_DIR}/app/codeobj_test.cpp )
-add_library ( ${CO_LIB_NAME} SHARED ${CO_LIB_SRC} )
-target_include_directories ( ${CO_LIB_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${ROOT_DIR}/inc ${GEN_INC_DIR} ${HSA_RUNTIME_INC_PATH} ${ROCM_INC_PATH} )
-target_link_libraries ( ${CO_LIB_NAME} ${ROCTRACER_TARGET} c stdc++ )
+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_link_libraries(codeobj_test roctracer)
+add_dependencies(mytest codeobj_test)
## copying run script
-execute_process ( COMMAND sh -xc "cp ${RUN_SCRIPT} ${PROJECT_BINARY_DIR}" )
-execute_process ( COMMAND sh -xc "ln -s run.sh ${PROJECT_BINARY_DIR}/run_ci.sh" )
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/run.sh ${PROJECT_BINARY_DIR})
+execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink run.sh ${PROJECT_BINARY_DIR}/run_ci.sh)
## copying tests output check script
-execute_process ( COMMAND sh -xc "cp ${ROOT_DIR}/script/check_trace.py ${PROJECT_BINARY_DIR}/test/." )
+execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/script/check_trace.py ${PROJECT_BINARY_DIR}/test/.)
diff --git a/test/MatrixTranspose/Makefile b/test/MatrixTranspose/Makefile
deleted file mode 100644
index 9a805fb194..0000000000
--- a/test/MatrixTranspose/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-ROOT_PATH ?= ../..
-INC_PATH ?= $(ROOT_PATH)/inc
-LIB_PATH ?= $(ROOT_PATH)/build
-ROCM_PATH ?= /opt/rocm
-ROC_LIBS = -Wl,--rpath,${LIB_PATH} $(LIB_PATH)/libroctracer64.so $(LIB_PATH)/libroctx64.so
-
-HIP_PATH ?= $(wildcard /opt/rocm/hip)
-ifeq (,$(HIP_PATH))
- HIP_PATH=../../..
-endif
-
-HIPCC=$(HIP_PATH)/bin/hipcc
-
-TARGET=hcc
-
-SOURCES = MatrixTranspose.cpp
-OBJECTS = $(SOURCES:.cpp=.o)
-
-EXECUTABLE=./MatrixTranspose
-
-.PHONY: test
-
-
-all: clean $(EXECUTABLE)
-
-CXXFLAGS =-g $(INC_PATH:%=-I%) -DLOCAL_BUILD=1 --rocm-path=$(ROCM_PATH)
-CXX=$(HIPCC)
-
-$(EXECUTABLE): $(OBJECTS)
- /usr/bin/env
- $(HIPCC) $(OBJECTS) -o $@ $(ROC_LIBS)
-
-test: $(EXECUTABLE)
- $(EXECUTABLE)
-
-
-clean:
- rm -f $(EXECUTABLE)
- rm -f $(OBJECTS)
- rm -f $(HIP_PATH)/src/*.o
-
diff --git a/test/MatrixTranspose_test/Makefile b/test/MatrixTranspose_test/Makefile
deleted file mode 100644
index d0eab5a24b..0000000000
--- a/test/MatrixTranspose_test/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-ROOT_PATH ?= ../..
-INC_PATH ?= $(ROOT_PATH)/inc
-LIB_PATH ?= $(ROOT_PATH)/build
-ROCM_PATH ?= /opt/rocm
-HIP_VDI ?= 0
-ITERATIONS ?= 100
-
-ROC_LIBS = -Wl,--rpath,${LIB_PATH} $(LIB_PATH)/libroctracer64.so $(LIB_PATH)/libroctx64.so
-
-HIP_PATH ?= $(wildcard /opt/rocm/hip)
-ifeq (,$(HIP_PATH))
- HIP_PATH=../../..
-endif
-
-HIPCC=$(HIP_PATH)/bin/hipcc
-TARGET=hcc
-
-EXECUTABLE=./MatrixTranspose
-OBJECTS = MatrixTranspose.o
-FLAGS =-g $(INC_PATH:%=-I%) -I$(ROCM_PATH)/hsa/include/hsa -I$(ROCM_PATH)/hsa/include -I$(ROCM_PATH)/hip/include -I$(ROCM_PATH)/include -DLOCAL_BUILD=1 -DITERATIONS=$(ITERATIONS) -DAMD_INTERNAL_BUILD=1
-
-ifeq ($(C_TEST), 1)
- COMP=${CC}
- SOURCES = MatrixTranspose.c
- FLAGS += -DHIP_TEST=0 -D__HIP_PLATFORM_HCC__=1
-else
- COMP=$(HIPCC)
- SOURCES = MatrixTranspose.cpp
- FLAGS += -DHIP_TEST=1 --rocm-path=$(ROCM_PATH)
-endif
-ifeq ($(MGPU_TEST), 1)
- FLAGS += -DMGPU_TEST=1
-endif
-ifeq ($(HIP_API_ACTIVITY_ON), 1)
- FLAGS += -DHIP_API_ACTIVITY_ON=1
-endif
-
-.PHONY: test
-
-all: clean $(EXECUTABLE)
-
-$(OBJECTS): $(SOURCES)
- $(COMP) $(FLAGS) -c -o $@ $<
-
-$(EXECUTABLE): $(OBJECTS)
- $(HIPCC) $(OBJECTS) -o $@ $(ROC_LIBS)
-
-test: $(EXECUTABLE)
- LD_PRELOAD="librocprofiler64.so" $(EXECUTABLE)
-
-clean:
- rm -f $(EXECUTABLE)
- rm -f $(OBJECTS)
- rm -f $(HIP_PATH)/src/*.o
-
diff --git a/test/MatrixTranspose_test/MatrixTranspose.c b/test/MatrixTranspose_test/MatrixTranspose.c
deleted file mode 120000
index 14d96acbc8..0000000000
--- a/test/MatrixTranspose_test/MatrixTranspose.c
+++ /dev/null
@@ -1 +0,0 @@
-MatrixTranspose.cpp
\ No newline at end of file
diff --git a/test/MatrixTranspose_test/MatrixTranspose.cpp b/test/MatrixTranspose_test/MatrixTranspose.cpp
index 1c7051de3c..840df63741 100644
--- a/test/MatrixTranspose_test/MatrixTranspose.cpp
+++ b/test/MatrixTranspose_test/MatrixTranspose.cpp
@@ -114,8 +114,10 @@ int main() {
float* TransposeMatrix;
float* cpuTransposeMatrix;
+#if HIP_TEST
float* gpuMatrix;
float* gpuTransposeMatrix;
+#endif
int i;
int errors;
diff --git a/test/hsa/test/CMakeLists.txt b/test/hsa/test/CMakeLists.txt
index bfe3728e73..eaab608759 100644
--- a/test/hsa/test/CMakeLists.txt
+++ b/test/hsa/test/CMakeLists.txt
@@ -20,44 +20,60 @@
## IN THE SOFTWARE.
################################################################################
-cmake_minimum_required ( VERSION 2.8.12 )
+find_package(Clang REQUIRED CONFIG
+ PATHS
+ "/opt/rocm/"
+ PATH_SUFFIXES
+ "llvm/lib/cmake/clang")
-set ( EXE_NAME "ctrl" )
+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
+ -target amdgcn-amd-amdhsa -mcpu=${TARGET_ID} -o ${OUTPUT_FILE} ${INPUT_FILE}")
-if ( NOT DEFINED TEST_DIR )
- set ( TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
- project ( ${EXE_NAME} )
- ## Set build environment
- include ( env )
-endif ()
+ ## Add custom command to produce a code object file.
+ ## This depends on the kernel source file & compiler.
+ ## It does not pickup devicelib changes. It is not clear
+ ## how to do that after conversion to --rocm-path is done.
+ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/${OUTPUT_FILE}
+ COMMAND clang ${CLANG_ARG_LIST}
+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
+ DEPENDS ${INPUT_FILE} clang
+ COMMENT "Building ${OUTPUT_FILE}..."
+ VERBATIM)
-if ( NOT DEFINED ROCM_ROOT_DIR )
- set ( ROCM_ROOT_DIR "" )
-endif ()
-if ( NOT DEFINED GPU_TARGETS )
- set ( GPU_TARGETS "" )
-endif ()
+ set(HSACO_TARGET_LIST ${HSACO_TARGET_LIST} ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} PARENT_SCOPE)
+endfunction(generate_hsaco)
-## Util sources
-file( GLOB UTIL_SRC "${TEST_DIR}/util/*.cpp" )
+function(build_kernel_for_devices KERNEL_FILE KERNEL_NAME)
+ foreach(target_id ${GPU_TARGETS})
+ ## generate kernel bitcodes
+ generate_hsaco(${target_id} ${KERNEL_FILE} ${target_id}_${KERNEL_NAME}.hsaco)
+ endforeach(target_id)
+ set(HSACO_TARGET_LIST ${HSACO_TARGET_LIST} PARENT_SCOPE)
+endfunction(build_kernel_for_devices)
-## Test control sources
-set ( CTRL_SRC
- ${TEST_DIR}/app/test.cpp
- ${TEST_DIR}/ctrl/test_hsa.cpp
-)
-
-## Dummy kernel
-set ( DUMMY_NAME dummy_kernel )
-execute_process ( COMMAND sh -xc "${TEST_DIR}/../script/build_kernel.sh '${TEST_DIR}/${DUMMY_NAME}/${DUMMY_NAME}' '${PROJECT_BINARY_DIR}' '${ROCM_ROOT_DIR}' '${GPU_TARGETS}'" )
+set(HSACO_TARGET_LIST "")
+build_kernel_for_devices("${CMAKE_CURRENT_SOURCE_DIR}/dummy_kernel/dummy_kernel.cl" "DummyKernel")
+build_kernel_for_devices("${CMAKE_CURRENT_SOURCE_DIR}/simple_convolution/simple_convolution.cl" "SimpleConvolution")
+add_custom_target(hsaco_targets DEPENDS ${HSACO_TARGET_LIST})
## Test kernel
-set ( TEST_NAME simple_convolution )
-set ( KERN_SRC ${TEST_DIR}/${TEST_NAME}/${TEST_NAME}.cpp )
-execute_process ( COMMAND sh -xc "${TEST_DIR}/../script/build_kernel.sh '${TEST_DIR}/${TEST_NAME}/${TEST_NAME}' '${PROJECT_BINARY_DIR}' '${ROCM_ROOT_DIR}' '${GPU_TARGETS}'" )
+set(TEST_NAME simple_convolution)
+set(KERN_SRC ${TEST_NAME}/${TEST_NAME}.cpp)
+
+## Util sources
+file(GLOB UTIL_SRC "util/*.cpp")
+
+## Test control sources
+set(CTRL_SRC
+ app/test.cpp
+ ctrl/test_hsa.cpp)
## Building ctrl test executable
-add_executable ( ${EXE_NAME} ${CTRL_SRC} ${UTIL_SRC} ${KERN_SRC} )
-target_include_directories ( ${EXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} )
-target_link_libraries( ${EXE_NAME} ${HSA_RUNTIME_LIB} ${HSA_KMT_LIB} c stdc++ dl pthread rt )
-execute_process ( COMMAND sh -xc "cp ${TEST_DIR}/run.sh ${PROJECT_BINARY_DIR}" )
+add_executable(ctrl EXCLUDE_FROM_ALL ${CTRL_SRC} ${UTIL_SRC} ${KERN_SRC})
+target_compile_definitions(ctrl PRIVATE AMD_INTERNAL_BUILD)
+target_include_directories(ctrl PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR})
+target_link_libraries(ctrl hsa-runtime64::hsa-runtime64 Threads::Threads dl)
+add_dependencies(ctrl hsaco_targets)
+add_dependencies(mytest ctrl)