cmake/Hipify.cmake (38 lines of code) (raw):
function (prepend OUTPUT PREPEND)
set(OUT "")
foreach(ITEM ${ARGN})
list(APPEND OUT "${PREPEND}${ITEM}")
endforeach()
set(${OUTPUT} ${OUT} PARENT_SCOPE)
endfunction(prepend)
set(HIPIFY_SCRIPTS_DIR ${PROJECT_SOURCE_DIR}/tools/amd_build)
file(GLOB HIPIFY_SCRIPTS ${HIPIFY_SCRIPTS_DIR}/*.py)
set(HIPIFY_OUTPUT_ROOT_DIR ${PROJECT_BINARY_DIR}/hip)
set(HIPIFY_COMMAND
${HIPIFY_SCRIPTS_DIR}/build_amd.py
--project-directory ${PROJECT_SOURCE_DIR}
--output-directory ${HIPIFY_OUTPUT_ROOT_DIR}
)
execute_process(
COMMAND ${HIPIFY_COMMAND} --list-files-only
OUTPUT_VARIABLE HIPIFY_FILES
RESULT_VARIABLE hipify_return_value
)
if (NOT hipify_return_value EQUAL 0)
message(FATAL_ERROR "Failed to get hipify files list!")
endif()
prepend(HIPIFY_INPUT_FILES "${PROJECT_SOURCE_DIR}/" "${HIPIFY_FILES}")
prepend(HIPIFY_OUTPUT_FILES "${HIPIFY_OUTPUT_ROOT_DIR}/" "${HIPIFY_FILES}")
# add_custom_command(
# OUTPUT ${HIPIFY_OUTPUT_FILES}
# DEPENDS ${HIPIFY_INPUT_FILES} ${HIPIFY_SCRIPTS}
# COMMAND ${HIPIFY_COMMAND})
execute_process(
COMMAND ${HIPIFY_COMMAND}
RESULT_VARIABLE hipify_return_value
)
if (NOT hipify_return_value EQUAL 0)
message(FATAL_ERROR "Failed to get hipify files list!")
endif()
include_directories(PREPEND ${HIPIFY_OUTPUT_ROOT_DIR})
set(HIPIFY_OUTPUT_DIR ${HIPIFY_OUTPUT_ROOT_DIR}/gloo)