Files
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

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()