
cmake_minimum_required(VERSION 3.18)
project (SeparateCompilation CXX HIP)

set(CMAKE_HIP_FLAGS "-fgpu-rdc")
set(CMAKE_HIP_ARCHITECTURES "gfx900")

add_library(HIPSeparateLibA STATIC file1.cu file2.cu file3.cu)
set_source_files_properties(file1.cu file2.cu file3.cu PROPERTIES LANGUAGE HIP)
target_compile_features(HIPSeparateLibA PRIVATE cxx_std_14)

add_library(HIPSeparateLibB SHARED file4.cxx file5.cxx)
set_source_files_properties(file4.cxx file5.cxx PROPERTIES LANGUAGE HIP)
target_compile_features(HIPSeparateLibB PRIVATE hip_std_14)
target_link_libraries(HIPSeparateLibB PRIVATE HIPSeparateLibA)

add_executable(SeparateCompilationManually main.hip)
target_link_libraries(SeparateCompilationManually
                      PRIVATE HIPSeparateLibB)
set_target_properties(SeparateCompilationManually PROPERTIES HIP_STANDARD 14)
set_target_properties(SeparateCompilationManually PROPERTIES HIP_STANDARD_REQUIRED TRUE)

set_target_properties(HIPSeparateLibA
                      HIPSeparateLibB
                      PROPERTIES POSITION_INDEPENDENT_CODE ON)
