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).
175 lines
3.6 KiB
CMake
175 lines
3.6 KiB
CMake
set(LLVM_LINK_COMPONENTS
|
|
AggressiveInstCombine
|
|
Analysis
|
|
BitReader
|
|
BitWriter
|
|
CodeGenTypes
|
|
Core
|
|
Coroutines
|
|
Coverage
|
|
Demangle
|
|
Extensions
|
|
FrontendDriver
|
|
FrontendHLSL
|
|
FrontendOpenMP
|
|
FrontendOffloading
|
|
HIPStdPar
|
|
IPO
|
|
IRPrinter
|
|
IRReader
|
|
InstCombine
|
|
Instrumentation
|
|
LTO
|
|
Linker
|
|
MC
|
|
ObjCARCOpts
|
|
Object
|
|
Passes
|
|
ProfileData
|
|
ScalarOpts
|
|
Support
|
|
Target
|
|
TargetParser
|
|
TransformUtils
|
|
)
|
|
|
|
# Workaround for MSVC ARM64 performance regression:
|
|
# https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/10444970
|
|
# Since /O1 and /O2 represent a set of optimizations,
|
|
# our goal is to disable the /Og flag while retaining the other optimizations from the /O1|/O2 set
|
|
if(MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES Clang
|
|
AND MSVC_VERSION VERSION_GREATER_EQUAL 1932
|
|
AND MSVC_VERSION VERSION_LESS 1939
|
|
AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")
|
|
|
|
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
|
|
string(REGEX MATCHALL "/[Oo][12]" opt_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}")
|
|
if (opt_flags)
|
|
if(opt_flags MATCHES "1$")
|
|
set(opt_flags "/Od;/Os;/Oy;/Ob2;/GF;/Gy")
|
|
elseif (opt_flags MATCHES "2$")
|
|
set(opt_flags "/Od;/Oi;/Ot;/Oy;/Ob2;/GF;/Gy")
|
|
endif()
|
|
set_source_files_properties(CGBuiltin.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags}")
|
|
endif()
|
|
endif()
|
|
|
|
add_clang_library(clangCodeGen
|
|
ABIInfo.cpp
|
|
ABIInfoImpl.cpp
|
|
BackendUtil.cpp
|
|
CGAtomic.cpp
|
|
CGBlocks.cpp
|
|
CGBuiltin.cpp
|
|
CGCUDANV.cpp
|
|
CGCUDARuntime.cpp
|
|
CGCXX.cpp
|
|
CGCXXABI.cpp
|
|
CGCall.cpp
|
|
CGClass.cpp
|
|
CGCleanup.cpp
|
|
CGCoroutine.cpp
|
|
CGDebugInfo.cpp
|
|
CGDecl.cpp
|
|
CGDeclCXX.cpp
|
|
CGException.cpp
|
|
CGExpr.cpp
|
|
CGExprAgg.cpp
|
|
CGExprCXX.cpp
|
|
CGExprComplex.cpp
|
|
CGExprConstant.cpp
|
|
CGExprScalar.cpp
|
|
CGGPUBuiltin.cpp
|
|
CGHLSLRuntime.cpp
|
|
CGHLSLBuiltins.cpp
|
|
CGLoopInfo.cpp
|
|
CGNonTrivialStruct.cpp
|
|
CGObjC.cpp
|
|
CGObjCGNU.cpp
|
|
CGObjCMac.cpp
|
|
CGObjCRuntime.cpp
|
|
CGOpenCLRuntime.cpp
|
|
CGOpenMPRuntime.cpp
|
|
CGOpenMPRuntimeGPU.cpp
|
|
CGPointerAuth.cpp
|
|
CGRecordLayoutBuilder.cpp
|
|
CGStmt.cpp
|
|
CGStmtOpenMP.cpp
|
|
CGVTT.cpp
|
|
CGVTables.cpp
|
|
CodeGenABITypes.cpp
|
|
CodeGenAction.cpp
|
|
CodeGenFunction.cpp
|
|
CodeGenModule.cpp
|
|
CodeGenPGO.cpp
|
|
CodeGenSYCL.cpp
|
|
CodeGenTBAA.cpp
|
|
CodeGenTypes.cpp
|
|
ConstantInitBuilder.cpp
|
|
CoverageMappingGen.cpp
|
|
ItaniumCXXABI.cpp
|
|
HLSLBufferLayoutBuilder.cpp
|
|
LinkInModulesPass.cpp
|
|
MacroPPCallbacks.cpp
|
|
MicrosoftCXXABI.cpp
|
|
ModuleBuilder.cpp
|
|
ObjectFilePCHContainerWriter.cpp
|
|
PatternInit.cpp
|
|
SanitizerMetadata.cpp
|
|
SwiftCallingConv.cpp
|
|
TargetBuiltins/ARM.cpp
|
|
TargetBuiltins/AMDGPU.cpp
|
|
TargetBuiltins/DirectX.cpp
|
|
TargetBuiltins/Hexagon.cpp
|
|
TargetBuiltins/NVPTX.cpp
|
|
TargetBuiltins/PPC.cpp
|
|
TargetBuiltins/RISCV.cpp
|
|
TargetBuiltins/SPIR.cpp
|
|
TargetBuiltins/SystemZ.cpp
|
|
TargetBuiltins/WebAssembly.cpp
|
|
TargetBuiltins/X86.cpp
|
|
TargetInfo.cpp
|
|
Targets/AArch64.cpp
|
|
Targets/AMDGPU.cpp
|
|
Targets/ARC.cpp
|
|
Targets/ARM.cpp
|
|
Targets/AVR.cpp
|
|
Targets/BPF.cpp
|
|
Targets/CSKY.cpp
|
|
Targets/DirectX.cpp
|
|
Targets/Hexagon.cpp
|
|
Targets/Lanai.cpp
|
|
Targets/LoongArch.cpp
|
|
Targets/M68k.cpp
|
|
Targets/MSP430.cpp
|
|
Targets/Mips.cpp
|
|
Targets/NVPTX.cpp
|
|
Targets/PNaCl.cpp
|
|
Targets/PPC.cpp
|
|
Targets/RISCV.cpp
|
|
Targets/SPIR.cpp
|
|
Targets/Sparc.cpp
|
|
Targets/SystemZ.cpp
|
|
Targets/TCE.cpp
|
|
Targets/VE.cpp
|
|
Targets/WebAssembly.cpp
|
|
Targets/X86.cpp
|
|
Targets/XCore.cpp
|
|
VarBypassDetector.cpp
|
|
|
|
DEPENDS
|
|
vt_gen
|
|
intrinsics_gen
|
|
ClangDriverOptions
|
|
# These generated headers are included transitively.
|
|
target_parser_gen
|
|
|
|
LINK_LIBS
|
|
clangAST
|
|
clangAnalysis
|
|
clangBasic
|
|
clangFrontend
|
|
clangLex
|
|
clangSerialization
|
|
)
|