Skip to content

Commit 705ceff

Browse files
authored
[TargetParser] Fix flaky installs of generated headers (#137853)
The `llvm-headers` target wasn't depending on the generated TargetParser headers, so they'd be flakily installed or not installed depending on which order the build steps ran in. Add an explicit dependency to fix this, and switch to a single `target_parser_gen` target to mirror the pattern used by `intrinsics_gen` (which also fixes a few other missing dependencies). Switch `llvm-headers` to use `add_dependencies` instead of `DEPENDS` for the tablegen dependencies as well, since `DEPENDS` is only intended for creating a file-level dependency on the output of an `add_custom_command` in the same CMakeLists.txt (see `DEPENDS` under https://cmake.org/cmake/help/latest/command/add_custom_target.html).
1 parent 0864e3c commit 705ceff

File tree

9 files changed

+12
-24
lines changed

9 files changed

+12
-24
lines changed

clang/lib/AST/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,5 @@ add_clang_library(clangAST
145145
ClangDriverOptions
146146
intrinsics_gen
147147
# These generated headers are included transitively.
148-
AArch64TargetParserTableGen
148+
target_parser_gen
149149
)

clang/lib/Basic/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,7 @@ add_clang_library(clangBasic
134134
omp_gen
135135
ClangDriverOptions
136136
# These generated headers are included transitively.
137-
ARMTargetParserTableGen
138-
AArch64TargetParserTableGen
137+
target_parser_gen
139138
)
140139

141140
target_link_libraries(clangBasic

clang/lib/CodeGen/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,7 @@ add_clang_library(clangCodeGen
162162
intrinsics_gen
163163
ClangDriverOptions
164164
# These generated headers are included transitively.
165-
ARMTargetParserTableGen
166-
AArch64TargetParserTableGen
165+
target_parser_gen
167166

168167
LINK_LIBS
169168
clangAST

clang/lib/Driver/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ add_clang_library(clangDriver
9494
DEPENDS
9595
ClangDriverOptions
9696
# These generated headers are included transitively.
97-
ARMTargetParserTableGen
98-
AArch64TargetParserTableGen
97+
target_parser_gen
9998

10099
LINK_LIBS
101100
clangBasic

clang/tools/driver/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ add_clang_tool(clang
4848
DEPENDS
4949
intrinsics_gen
5050
# These generated headers are included transitively.
51-
ARMTargetParserTableGen
52-
AArch64TargetParserTableGen
51+
target_parser_gen
5352
${support_plugins}
5453
${CLANG_BOLT_DEPS}
5554
GENERATE_DRIVER

llvm/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1415,7 +1415,8 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
14151415

14161416
# Installing the headers needs to depend on generating any public
14171417
# tablegen'd headers.
1418-
add_custom_target(llvm-headers DEPENDS intrinsics_gen omp_gen)
1418+
add_custom_target(llvm-headers)
1419+
add_dependencies(llvm-headers intrinsics_gen omp_gen target_parser_gen)
14191420
set_target_properties(llvm-headers PROPERTIES FOLDER "LLVM/Resources")
14201421

14211422
if (NOT LLVM_ENABLE_IDE)

llvm/cmake/modules/LLVMConfig.cmake.in

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -162,14 +162,8 @@ endif()
162162
if(NOT TARGET acc_gen)
163163
add_custom_target(acc_gen)
164164
endif()
165-
if(NOT TARGET ARMTargetParserTableGen)
166-
add_custom_target(ARMTargetParserTableGen)
167-
endif()
168-
if(NOT TARGET AArch64TargetParserTableGen)
169-
add_custom_target(AArch64TargetParserTableGen)
170-
endif()
171-
if(NOT TARGET RISCVTargetParserTableGen)
172-
add_custom_target(RISCVTargetParserTableGen)
165+
if(NOT TARGET target_parser_gen)
166+
add_custom_target(target_parser_gen)
173167
endif()
174168

175169
set_property(GLOBAL PROPERTY LLVM_TARGETS_CONFIGURED On)
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
set(LLVM_TARGET_DEFINITIONS ${PROJECT_SOURCE_DIR}/lib/Target/ARM/ARM.td)
22
tablegen(LLVM ARMTargetParserDef.inc -gen-arm-target-def -I ${PROJECT_SOURCE_DIR}/lib/Target/ARM/)
3-
add_public_tablegen_target(ARMTargetParserTableGen)
43

54
set(LLVM_TARGET_DEFINITIONS ${PROJECT_SOURCE_DIR}/lib/Target/AArch64/AArch64.td)
65
tablegen(LLVM AArch64TargetParserDef.inc -gen-arm-target-def -I ${PROJECT_SOURCE_DIR}/lib/Target/AArch64/)
7-
add_public_tablegen_target(AArch64TargetParserTableGen)
86

97
set(LLVM_TARGET_DEFINITIONS ${PROJECT_SOURCE_DIR}/lib/Target/RISCV/RISCV.td)
108
tablegen(LLVM RISCVTargetParserDef.inc -gen-riscv-target-def -I ${PROJECT_SOURCE_DIR}/lib/Target/RISCV/)
11-
add_public_tablegen_target(RISCVTargetParserTableGen)
129

10+
# This covers all of the tablegen calls above.
11+
add_public_tablegen_target(target_parser_gen)

llvm/lib/TargetParser/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,5 @@ add_llvm_component_library(LLVMTargetParser
3939
Support
4040

4141
DEPENDS
42-
ARMTargetParserTableGen
43-
AArch64TargetParserTableGen
44-
RISCVTargetParserTableGen
42+
target_parser_gen
4543
)

0 commit comments

Comments
 (0)