################################################################################
# Copyright (C) 2022 Advanced Micro Devices, Inc.
################################################################################


cmake_minimum_required (VERSION 3.5)
project(test-wrapper CXX)

find_package(ROCmCMakeBuildTools)

include(ROCMInstallTargets)
include(ROCMPackageConfigHelpers)
include(ROCMSetupVersion)
include(ROCMInstallSymlinks)
include(ROCMCreatePackage)
include(ROCMHeaderWrapper)

rocm_setup_version(VERSION 1.0.0)

if(ROCM_PREFIX)
rocm_create_package(
    NAME wrapper
    PREFIX ${ROCM_PREFIX}
    MAINTAINER "Amd amd@amd.com"
    PTH
    LDCONFIG)
else()
rocm_create_package(
    NAME wrapper
    MAINTAINER "Amd amd@amd.com"
    PTH
    LDCONFIG)
endif()

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)

option(ERR_ON_WARN "Treat all warnings as errors." OFF)
if(ERR_ON_WARN)
    if(MSVC)
        add_compile_options(/W4 /WX)
    else()
        add_compile_options(-Wall -Wextra -pedantic -Werror)
    endif()
endif()

add_library(wrapper wrapper.cpp)
rocm_set_soversion(wrapper 1.1.2)

add_executable(wrapper-use-wrapper use_wrapper.cpp)
target_link_libraries(wrapper-use-wrapper wrapper)

add_executable(wrapper-use-original use_original.cpp)
target_link_libraries(wrapper-use-original wrapper)

rocm_wrap_header_file(
    wrapper.h
    HEADER_LOCATION include/wrapper
    GUARDS TESTWRAPPER
    WRAPPER_LOCATIONS include
)

rocm_wrap_header_dir(
    "${CMAKE_CURRENT_LIST_DIR}/include/other"
    HEADER_LOCATION include/other
    GUARDS TESTWRAPPER
    WRAPPER_LOCATIONS include
)

rocm_install_targets(TARGETS wrapper wrapper-use-wrapper wrapper-use-original INCLUDE include ${CMAKE_CURRENT_BINARY_DIR}/include)
rocm_export_targets(TARGETS wrapper INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/importtarget.cmake)
