CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
260 lines
9.3 KiB
CMake
260 lines
9.3 KiB
CMake
# ######################################################################################################################
|
|
# # Copyright (c) 2025 Advanced Micro Devices, Inc.
|
|
# ######################################################################################################################
|
|
|
|
cmake_minimum_required(VERSION 3.16.0)
|
|
|
|
project(att-decoder-unit-tests LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
function(create_system_gtest_targets)
|
|
find_path(GTEST_INCLUDE_DIR NAMES gtest/gtest.h)
|
|
find_library(GTEST_LIBRARY NAMES gtest)
|
|
find_library(GTEST_MAIN_LIBRARY NAMES gtest_main)
|
|
find_library(GMOCK_LIBRARY NAMES gmock)
|
|
find_library(GMOCK_MAIN_LIBRARY NAMES gmock_main)
|
|
|
|
if(GTEST_INCLUDE_DIR AND GTEST_LIBRARY)
|
|
if(NOT TARGET GTest::gtest)
|
|
add_library(GTest::gtest UNKNOWN IMPORTED)
|
|
set_target_properties(GTest::gtest PROPERTIES IMPORTED_LOCATION "${GTEST_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIR}")
|
|
endif()
|
|
|
|
if(GTEST_MAIN_LIBRARY AND NOT TARGET GTest::gtest_main)
|
|
add_library(GTest::gtest_main UNKNOWN IMPORTED)
|
|
set_target_properties(
|
|
GTest::gtest_main
|
|
PROPERTIES IMPORTED_LOCATION "${GTEST_MAIN_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIR}"
|
|
INTERFACE_LINK_LIBRARIES GTest::gtest)
|
|
endif()
|
|
endif()
|
|
|
|
if(GTEST_INCLUDE_DIR AND GMOCK_LIBRARY)
|
|
if(NOT TARGET GTest::gmock)
|
|
add_library(GTest::gmock UNKNOWN IMPORTED)
|
|
set_target_properties(
|
|
GTest::gmock
|
|
PROPERTIES IMPORTED_LOCATION "${GMOCK_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIR}"
|
|
INTERFACE_LINK_LIBRARIES GTest::gtest)
|
|
endif()
|
|
|
|
if(GMOCK_MAIN_LIBRARY AND NOT TARGET GTest::gmock_main)
|
|
add_library(GTest::gmock_main UNKNOWN IMPORTED)
|
|
set_target_properties(
|
|
GTest::gmock_main
|
|
PROPERTIES IMPORTED_LOCATION "${GMOCK_MAIN_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIR}"
|
|
INTERFACE_LINK_LIBRARIES GTest::gmock)
|
|
elseif(
|
|
TARGET GTest::gmock
|
|
AND TARGET GTest::gtest_main
|
|
AND NOT TARGET GTest::gmock_main)
|
|
add_library(GTest::gmock_main INTERFACE IMPORTED)
|
|
set_target_properties(GTest::gmock_main PROPERTIES INTERFACE_LINK_LIBRARIES
|
|
"GTest::gmock;GTest::gtest_main")
|
|
endif()
|
|
endif()
|
|
endfunction()
|
|
|
|
function(create_gtest_aliases)
|
|
if(TARGET gtest AND NOT TARGET GTest::gtest)
|
|
add_library(GTest::gtest ALIAS gtest)
|
|
endif()
|
|
if(TARGET gtest_main AND NOT TARGET GTest::gtest_main)
|
|
add_library(GTest::gtest_main ALIAS gtest_main)
|
|
endif()
|
|
if(TARGET gmock AND NOT TARGET GTest::gmock)
|
|
add_library(GTest::gmock ALIAS gmock)
|
|
endif()
|
|
if(TARGET gmock_main AND NOT TARGET GTest::gmock_main)
|
|
add_library(GTest::gmock_main ALIAS gmock_main)
|
|
endif()
|
|
endfunction()
|
|
|
|
find_package(GTest QUIET CONFIG)
|
|
if(NOT TARGET GTest::gtest_main OR NOT TARGET GTest::gmock_main)
|
|
find_package(GTest QUIET MODULE)
|
|
endif()
|
|
if(NOT TARGET GTest::gtest_main OR NOT TARGET GTest::gmock_main)
|
|
create_system_gtest_targets()
|
|
endif()
|
|
if(NOT TARGET GTest::gtest_main OR NOT TARGET GTest::gmock_main)
|
|
find_path(
|
|
GOOGLETEST_SOURCE_DIR
|
|
NAMES CMakeLists.txt
|
|
PATHS /usr/src/googletest /usr/local/src/googletest
|
|
NO_DEFAULT_PATH)
|
|
if(GOOGLETEST_SOURCE_DIR)
|
|
set(INSTALL_GTEST
|
|
OFF
|
|
CACHE BOOL "" FORCE)
|
|
add_subdirectory(${GOOGLETEST_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/googletest EXCLUDE_FROM_ALL)
|
|
create_gtest_aliases()
|
|
endif()
|
|
endif()
|
|
if(NOT TARGET GTest::gtest_main OR NOT TARGET GTest::gmock_main)
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
googletest
|
|
GIT_REPOSITORY https://github.com/google/googletest.git
|
|
GIT_TAG v1.14.0)
|
|
set(INSTALL_GTEST
|
|
OFF
|
|
CACHE BOOL "" FORCE)
|
|
FetchContent_MakeAvailable(googletest)
|
|
endif()
|
|
|
|
enable_testing()
|
|
|
|
# Source directory for including internal headers
|
|
set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../source)
|
|
set(INC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
|
|
|
# Test source files
|
|
set(TEST_FILES
|
|
trie_test.cpp
|
|
segment_test.cpp
|
|
stitch_utils_test.cpp
|
|
stitch_test.cpp
|
|
trace_parser_test.cpp
|
|
gfx9_test.cpp
|
|
gfx10_test.cpp
|
|
gfx11_test.cpp
|
|
gfx12_test.cpp
|
|
token_stream_test.cpp
|
|
quick_scan_api_test.cpp
|
|
sqttparser_test.cpp
|
|
mi400_test.cpp
|
|
funcmap_test.cpp)
|
|
|
|
# Function to create a test executable with specific sanitizer options Re-list library sources for sanitizer builds
|
|
# (must be recompiled with sanitizer flags)
|
|
file(
|
|
GLOB
|
|
UNIT_TEST_LIB_SOURCES
|
|
${SRC_DIR}/trie.cpp
|
|
${SRC_DIR}/rocprof_trace_decoder.cpp
|
|
${SRC_DIR}/quick_scan_export.cpp
|
|
${SRC_DIR}/stitch/stitch.cpp
|
|
${SRC_DIR}/stitch/pctranslator.cpp
|
|
${SRC_DIR}/trace_parser.cpp
|
|
${SRC_DIR}/gfx9/*.cpp
|
|
${SRC_DIR}/gfx10/*.cpp
|
|
${SRC_DIR}/gfx11/*.cpp
|
|
${SRC_DIR}/gfx12/*.cpp
|
|
${SRC_DIR}/mi400/*.cpp)
|
|
|
|
function(add_unit_test_executable TARGET_NAME SANITIZER_TYPE)
|
|
if(SANITIZER_TYPE STREQUAL "regular")
|
|
add_executable(${TARGET_NAME} ${TEST_FILES})
|
|
target_link_libraries(${TARGET_NAME} PRIVATE rocprof-trace-decoder-static)
|
|
else()
|
|
add_executable(${TARGET_NAME} ${TEST_FILES} ${UNIT_TEST_LIB_SOURCES})
|
|
endif()
|
|
|
|
target_include_directories(${TARGET_NAME} PRIVATE ${SRC_DIR} ${INC_DIR})
|
|
|
|
if(NOT SANITIZER_TYPE STREQUAL "regular")
|
|
if(DISABLE_COMGR)
|
|
target_compile_definitions(${TARGET_NAME} PRIVATE ROCPROF_TRACE_DECODER_COMGR_DISABLED)
|
|
else()
|
|
if(DEFINED ROCM_INCLUDE_DIR)
|
|
target_include_directories(${TARGET_NAME} PRIVATE ${ROCM_INCLUDE_DIR})
|
|
endif()
|
|
if(DEFINED COMGR_LIB)
|
|
target_link_libraries(${TARGET_NAME} PRIVATE ${COMGR_LIB})
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
target_link_libraries(${TARGET_NAME} PRIVATE GTest::gtest_main GTest::gmock_main)
|
|
|
|
if(SANITIZER_TYPE STREQUAL "asan")
|
|
target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=address -fno-omit-frame-pointer)
|
|
target_link_options(${TARGET_NAME} PRIVATE -fsanitize=address)
|
|
elseif(SANITIZER_TYPE STREQUAL "ubsan")
|
|
target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=undefined -fno-omit-frame-pointer)
|
|
target_link_options(${TARGET_NAME} PRIVATE -fsanitize=undefined)
|
|
endif()
|
|
endfunction()
|
|
|
|
# Create test executables
|
|
add_unit_test_executable(unit_tests "regular")
|
|
add_unit_test_executable(unit_tests_asan "asan")
|
|
add_unit_test_executable(unit_tests_ubsan "ubsan")
|
|
|
|
add_executable(unit_tests_logging rdna_logging_test.cpp)
|
|
target_include_directories(unit_tests_logging PRIVATE ${SRC_DIR} ${INC_DIR})
|
|
target_link_libraries(unit_tests_logging PRIVATE rocprof-trace-decoder-static GTest::gtest_main GTest::gmock_main)
|
|
|
|
add_executable(api_lifetime_test api_lifetime_test.cpp)
|
|
target_include_directories(api_lifetime_test PRIVATE ${SRC_DIR} ${INC_DIR})
|
|
target_link_libraries(api_lifetime_test PRIVATE rocprof-trace-decoder-static)
|
|
|
|
if(BUILD_MARKERS)
|
|
find_package(LLVM REQUIRED CONFIG)
|
|
|
|
set(MARKER_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../markers)
|
|
set(MARKER_TEST_LIB_SOURCES
|
|
${MARKER_SRC_DIR}/SQTTPass.cpp
|
|
${MARKER_SRC_DIR}/SQTTMarkers.cpp
|
|
${MARKER_SRC_DIR}/SQTTNamedMarkers.cpp
|
|
${MARKER_SRC_DIR}/SQTTAutomatic.cpp
|
|
${MARKER_SRC_DIR}/SQTTAddressTrace.cpp
|
|
${MARKER_SRC_DIR}/SQTTFunctions.cpp
|
|
${MARKER_SRC_DIR}/SQTTFuncMap.cpp)
|
|
|
|
add_executable(marker_unit_tests markers_test.cpp ${MARKER_TEST_LIB_SOURCES})
|
|
target_include_directories(marker_unit_tests PRIVATE ${MARKER_SRC_DIR} ${INC_DIR} ${LLVM_INCLUDE_DIRS})
|
|
target_compile_definitions(marker_unit_tests PRIVATE ${LLVM_DEFINITIONS})
|
|
target_compile_features(marker_unit_tests PRIVATE cxx_std_17)
|
|
if(NOT MSVC)
|
|
set_source_files_properties(${MARKER_TEST_LIB_SOURCES} PROPERTIES COMPILE_OPTIONS "-fno-rtti")
|
|
endif()
|
|
|
|
if(TARGET LLVM)
|
|
set(MARKER_TEST_LLVM_LIBS LLVM)
|
|
else()
|
|
llvm_map_components_to_libnames(MARKER_TEST_LLVM_LIBS Core Support Analysis TransformUtils Passes)
|
|
endif()
|
|
|
|
target_link_libraries(marker_unit_tests PRIVATE GTest::gtest_main ${MARKER_TEST_LLVM_LIBS})
|
|
endif()
|
|
|
|
include(GoogleTest)
|
|
|
|
gtest_discover_tests(
|
|
unit_tests
|
|
PROPERTIES LABELS "unit-tests;regular"
|
|
TEST_PREFIX "regular/")
|
|
|
|
gtest_discover_tests(
|
|
unit_tests_asan
|
|
PROPERTIES LABELS "unit-tests;asan"
|
|
TEST_PREFIX "asan/")
|
|
|
|
gtest_discover_tests(
|
|
unit_tests_ubsan
|
|
PROPERTIES LABELS "unit-tests;ubsan"
|
|
TEST_PREFIX "ubsan/")
|
|
|
|
gtest_discover_tests(
|
|
unit_tests_logging
|
|
PROPERTIES LABELS "unit-tests;regular;logging" ENVIRONMENT "SQTT_LOGGING=1"
|
|
TEST_PREFIX "logging/")
|
|
|
|
add_test(NAME api-lifetime COMMAND api_lifetime_test)
|
|
set_tests_properties(api-lifetime PROPERTIES LABELS "unit-tests;regular;lifetime")
|
|
|
|
if(BUILD_MARKERS)
|
|
gtest_discover_tests(
|
|
marker_unit_tests
|
|
PROPERTIES LABELS "unit-tests;regular;markers"
|
|
TEST_PREFIX "markers/")
|
|
endif()
|