#
# Integration tests
#
cmake_minimum_required(VERSION 3.21.0 FATAL_ERROR)

if(COMMAND rocprofiler_deactivate_clang_tidy)
    rocprofiler_deactivate_clang_tidy()
endif()

project(rocprofiler-sdk-benchmark LANGUAGES C CXX)

#
# project options
#
option(ROCPROFILER_BENCHMARK_INSTALL_TIMEM "Install timem" ON)

#
# cmake overrides
#
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "benchmark")
set(ROCPROFILER_SDK_BENCHMARK_SOURCE_DIR "${PROJECT_SOURCE_DIR}")
set(ROCPROFILER_SDK_BENCHMARK_BINARY_DIR "${PROJECT_BINARY_DIR}")

if(NOT PROJECT_IS_TOP_LEVEL)
    set(CMAKE_MESSAGE_INDENT "[${PROJECT_NAME}] ")
endif()

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE
        "Release"
        CACHE STRING "" FORCE)
endif()

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_HIP_STANDARD 17)
set(CMAKE_HIP_EXTENSIONS OFF)
set(CMAKE_HIP_STANDARD_REQUIRED ON)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})

enable_testing()
include(CTest)

include(GNUInstallDirs)
# always use lib instead of lib64
set(CMAKE_INSTALL_LIBDIR "lib")
set(CMAKE_INSTALL_LIB64DIR "lib64")

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
set(CMAKE_DATAROOT_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}")

# define the library output directory
if(PROJECT_IS_TOP_LEVEL)
    file(READ "${CMAKE_CURRENT_SOURCE_DIR}/../VERSION" FULL_VERSION_STRING LIMIT_COUNT 1)
    string(REGEX REPLACE "(\n|\r)" "" FULL_VERSION_STRING "${FULL_VERSION_STRING}")
    string(REGEX REPLACE "([0-9]+)\.([0-9]+)\.([0-9]+)(.*)" "\\1.\\2.\\3"
                         ROCPROFILER_SDK_VERSION "${FULL_VERSION_STRING}")

    find_package(Git)

    if(Git_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/../.git")
        execute_process(
            COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/..
            OUTPUT_VARIABLE ROCPROFILER_SDK_GIT_REVISION
            OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
    else()
        set(ROCPROFILER_SDK_GIT_REVISION "")
    endif()
else()
    set(ROCPROFILER_BENCHMARK_INSTALL_PREFIX
        ${CMAKE_INSTALL_DATAROOTDIR}/rocprofiler-sdk/benchmark
        CACHE PATH "relative install prefix for rocprofiler-sdk benchmark")
    set(_GNUInstallDirs_VARIABLES
        BINDIR
        SBINDIR
        LIBEXECDIR
        SYSCONFDIR
        SHAREDSTATEDIR
        LOCALSTATEDIR
        RUNSTATEDIR
        LIBDIR
        LIB64DIR # locally defined
        INCLUDEDIR
        OLDINCLUDEDIR
        DATAROOTDIR
        DATADIR
        INFODIR
        LOCALEDIR
        MANDIR
        DOCDIR)

    foreach(_INSTALL_DIR ${_GNUInstallDirs_VARIABLES})
        set(CMAKE_INSTALL_${_INSTALL_DIR}
            ${ROCPROFILER_BENCHMARK_INSTALL_PREFIX}/${CMAKE_INSTALL_${_INSTALL_DIR}})
    endforeach()
endif()

# include the timem executable
include(timem)

add_subdirectory(source)
