Skip to content

Commit e4e47de

Browse files
committed
[Offload] Correctly regenerate API files if modified
Summary: Currently these are done POST_BUILD, but they should be dependencies on generating the library since it's a direct dependency.
1 parent 539a2ac commit e4e47de

File tree

2 files changed

+36
-15
lines changed

2 files changed

+36
-15
lines changed

offload/liboffload/API/CMakeLists.txt

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
# include directory. These files are checked in with the rest of the source,
33
# therefore it is only needed when making changes to the API.
44

5-
find_program(CLANG_FORMAT clang-format PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
6-
if (CLANG_FORMAT)
5+
find_program(clang_format clang-format PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
6+
if (clang_format)
77
set(LLVM_TARGET_DEFINITIONS ${CMAKE_CURRENT_SOURCE_DIR}/OffloadAPI.td)
88

99
tablegen(OFFLOAD OffloadAPI.h -gen-api)
@@ -13,15 +13,31 @@ if (CLANG_FORMAT)
1313
tablegen(OFFLOAD OffloadPrint.hpp -gen-print-header)
1414
tablegen(OFFLOAD OffloadErrcodes.inc -gen-errcodes)
1515

16-
set(FILES_TO_COPY "OffloadAPI.h;OffloadEntryPoints.inc;OffloadFuncs.inc;OffloadImplFuncDecls.inc;OffloadPrint.hpp")
17-
set(GEN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include/generated)
16+
set(files_to_copy "OffloadAPI.h;OffloadEntryPoints.inc;OffloadFuncs.inc;OffloadImplFuncDecls.inc;OffloadPrint.hpp")
17+
set(generated_dir ${CMAKE_CURRENT_SOURCE_DIR}/../include/generated)
18+
set(shared_dir ${LIBOMPTARGET_INCLUDE_DIR}/Shared)
1819
add_public_tablegen_target(OffloadGenerate)
19-
add_custom_command(TARGET OffloadGenerate POST_BUILD COMMAND ${CLANG_FORMAT}
20-
-i ${TABLEGEN_OUTPUT})
21-
add_custom_command(TARGET OffloadGenerate POST_BUILD COMMAND ${CMAKE_COMMAND}
22-
-E copy_if_different ${FILES_TO_COPY} ${GEN_DIR})
23-
add_custom_command(TARGET OffloadGenerate POST_BUILD COMMAND ${CMAKE_COMMAND}
24-
-E copy_if_different OffloadErrcodes.inc "${LIBOMPTARGET_INCLUDE_DIR}/Shared/OffloadErrcodes.inc")
20+
21+
add_custom_target(OffloadAPI DEPENDS OffloadGenerate)
22+
add_custom_command(
23+
OUTPUT ${shared_dir}/OffloadErrcodes.inc
24+
COMMAND ${clang_format} -i OffloadErrcodes.inc
25+
COMMAND ${CMAKE_COMMAND} -E copy_if_different OffloadErrcodes.inc ${shared_dir}
26+
DEPENDS OffloadErrcodes.inc
27+
)
28+
add_custom_target(OffloadAPI.OffloadErrcodes.inc DEPENDS ${shared_dir}/OffloadErrcodes.inc)
29+
add_dependencies(OffloadAPI OffloadAPI.OffloadErrcodes.inc)
30+
foreach(file IN LISTS files_to_copy)
31+
add_custom_command(
32+
OUTPUT ${generated_dir}/${file}
33+
COMMAND ${clang_format} -i ${file}
34+
COMMAND ${CMAKE_COMMAND} -E make_directory ${generated_dir}
35+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${file} ${generated_dir}
36+
DEPENDS ${file}
37+
)
38+
add_custom_target(OffloadAPI.${file} DEPENDS ${generated_dir}/${file})
39+
add_dependencies(OffloadAPI OffloadAPI.${file})
40+
endforeach()
2541
else()
2642
message(WARNING "clang-format was not found, so the OffloadGenerate target\
2743
will not be available. Offload will still build, but you will not be\

offload/liboffload/CMakeLists.txt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ if(LLVM_HAVE_LINK_VERSION_SCRIPT)
1919
endif()
2020

2121
target_include_directories(LLVMOffload PUBLIC
22-
${CMAKE_CURRENT_BINARY_DIR}/../include
23-
${CMAKE_CURRENT_SOURCE_DIR}/include
24-
${CMAKE_CURRENT_SOURCE_DIR}/include/generated
25-
${CMAKE_CURRENT_SOURCE_DIR}/../include
26-
${CMAKE_CURRENT_SOURCE_DIR}/../plugins-nextgen/common/include)
22+
${CMAKE_CURRENT_BINARY_DIR}/../include
23+
${CMAKE_CURRENT_SOURCE_DIR}/include
24+
${CMAKE_CURRENT_SOURCE_DIR}/include/generated
25+
${CMAKE_CURRENT_SOURCE_DIR}/../include
26+
${CMAKE_CURRENT_SOURCE_DIR}/../plugins-nextgen/common/include)
2727

2828
target_compile_options(LLVMOffload PRIVATE ${offload_compile_flags})
2929
target_link_options(LLVMOffload PRIVATE ${offload_link_flags})
@@ -33,6 +33,11 @@ target_compile_definitions(LLVMOffload PRIVATE
3333
DEBUG_PREFIX="Liboffload"
3434
)
3535

36+
# Make sure these are up-to-date if modified.
37+
if(TARGET OffloadAPI)
38+
add_dependencies(LLVMOffload OffloadAPI)
39+
endif()
40+
3641
set_target_properties(LLVMOffload PROPERTIES
3742
POSITION_INDEPENDENT_CODE ON
3843
INSTALL_RPATH "$ORIGIN"

0 commit comments

Comments
 (0)