enable_language(HIP)
set(CMAKE_HIP_HOST_COMPILER ${CMAKE_HIP_COMPILER})

find_package(hip)

set(hip_BASE "${hip_INCLUDE_DIRS}/..")
set(CMAKE_CXX_COMPILER "${hip_BASE}/bin/hipcc")
pybind11_add_module(CLUE_GPU_HIP NO_EXTRAS SHARED binding_gpu_hip.cpp)
target_include_directories(CLUE_GPU_HIP
                           PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../../include)
target_link_libraries(CLUE_GPU_HIP PRIVATE alpaka::alpaka Boost::atomic)
target_compile_definitions(CLUE_GPU_HIP PRIVATE ALPAKA_ACC_GPU_HIP_ENABLED)
target_include_directories(CLUE_GPU_HIP PRIVATE ${hip_INCLUDE_DIRS})
target_include_directories(CLUE_GPU_HIP PRIVATE ${hip_BASE}/hiprand/include)
target_include_directories(CLUE_GPU_HIP PRIVATE ${hip_BASE}/rocrand/include)
# NOTE: PCH is intentionally omitted for the HIP backend. This target overrides
# CMAKE_CXX_COMPILER with hipcc, which does not support the PCH flags that CMake
# generates for standard Clang/GCC.
set_target_properties(
  CLUE_GPU_HIP
  PROPERTIES LIBRARY_OUTPUT_DIRECTORY
             ${CMAKE_CURRENT_BINARY_DIR}/../../../lib/CLUEstering/lib/)
install(TARGETS CLUE_GPU_HIP LIBRARY DESTINATION CLUEstering/lib)
# create link of shared object to lib folder inside CLUEstering directory
add_custom_command(
  TARGET CLUE_GPU_HIP
  POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:CLUE_GPU_HIP>
          ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)
