175 lines · plain
1set(LLVM_LINK_COMPONENTS2 AggressiveInstCombine3 Analysis4 BitReader5 BitWriter6 CodeGenTypes7 Core8 Coroutines9 Coverage10 Demangle11 Extensions12 FrontendDriver13 FrontendHLSL14 FrontendOpenMP15 FrontendOffloading16 HIPStdPar17 IPO18 IRPrinter19 IRReader20 InstCombine21 Instrumentation22 LTO23 Linker24 MC25 ObjCARCOpts26 Object27 Passes28 ProfileData29 ScalarOpts30 Support31 Target32 TargetParser33 TransformUtils34 )35 36# Workaround for MSVC ARM64 performance regression:37# https://developercommunity.visualstudio.com/t/Compiling-a-specific-code-for-ARM64-with/1044497038# Since /O1 and /O2 represent a set of optimizations,39# our goal is to disable the /Og flag while retaining the other optimizations from the /O1|/O2 set40if(MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES Clang41 AND MSVC_VERSION VERSION_GREATER_EQUAL 193242 AND MSVC_VERSION VERSION_LESS 193943 AND CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64")44 45 string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)46 string(REGEX MATCHALL "/[Oo][12]" opt_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}")47 if (opt_flags)48 if(opt_flags MATCHES "1$")49 set(opt_flags "/Od;/Os;/Oy;/Ob2;/GF;/Gy")50 elseif (opt_flags MATCHES "2$")51 set(opt_flags "/Od;/Oi;/Ot;/Oy;/Ob2;/GF;/Gy")52 endif()53 set_source_files_properties(CGBuiltin.cpp PROPERTIES COMPILE_OPTIONS "${opt_flags}")54 endif()55endif()56 57add_clang_library(clangCodeGen58 ABIInfo.cpp59 ABIInfoImpl.cpp60 BackendUtil.cpp61 CGAtomic.cpp62 CGBlocks.cpp63 CGBuiltin.cpp64 CGCUDANV.cpp65 CGCUDARuntime.cpp66 CGCXX.cpp67 CGCXXABI.cpp68 CGCall.cpp69 CGClass.cpp70 CGCleanup.cpp71 CGCoroutine.cpp72 CGDebugInfo.cpp73 CGDecl.cpp74 CGDeclCXX.cpp75 CGException.cpp76 CGExpr.cpp77 CGExprAgg.cpp78 CGExprCXX.cpp79 CGExprComplex.cpp80 CGExprConstant.cpp81 CGExprScalar.cpp82 CGGPUBuiltin.cpp83 CGHLSLRuntime.cpp84 CGHLSLBuiltins.cpp85 CGLoopInfo.cpp86 CGNonTrivialStruct.cpp87 CGObjC.cpp88 CGObjCGNU.cpp89 CGObjCMac.cpp90 CGObjCRuntime.cpp91 CGOpenCLRuntime.cpp92 CGOpenMPRuntime.cpp93 CGOpenMPRuntimeGPU.cpp94 CGPointerAuth.cpp95 CGRecordLayoutBuilder.cpp96 CGStmt.cpp97 CGStmtOpenMP.cpp98 CGVTT.cpp99 CGVTables.cpp100 CodeGenABITypes.cpp101 CodeGenAction.cpp102 CodeGenFunction.cpp103 CodeGenModule.cpp104 CodeGenPGO.cpp105 CodeGenSYCL.cpp106 CodeGenTBAA.cpp107 CodeGenTypes.cpp108 ConstantInitBuilder.cpp109 CoverageMappingGen.cpp110 ItaniumCXXABI.cpp111 HLSLBufferLayoutBuilder.cpp112 LinkInModulesPass.cpp113 MacroPPCallbacks.cpp114 MicrosoftCXXABI.cpp115 ModuleBuilder.cpp116 ObjectFilePCHContainerWriter.cpp117 PatternInit.cpp118 SanitizerMetadata.cpp119 SwiftCallingConv.cpp120 TargetBuiltins/ARM.cpp121 TargetBuiltins/AMDGPU.cpp122 TargetBuiltins/DirectX.cpp123 TargetBuiltins/Hexagon.cpp124 TargetBuiltins/NVPTX.cpp125 TargetBuiltins/PPC.cpp126 TargetBuiltins/RISCV.cpp127 TargetBuiltins/SPIR.cpp128 TargetBuiltins/SystemZ.cpp129 TargetBuiltins/WebAssembly.cpp130 TargetBuiltins/X86.cpp131 TargetInfo.cpp132 Targets/AArch64.cpp133 Targets/AMDGPU.cpp134 Targets/ARC.cpp135 Targets/ARM.cpp136 Targets/AVR.cpp137 Targets/BPF.cpp138 Targets/CSKY.cpp139 Targets/DirectX.cpp140 Targets/Hexagon.cpp141 Targets/Lanai.cpp142 Targets/LoongArch.cpp143 Targets/M68k.cpp144 Targets/MSP430.cpp145 Targets/Mips.cpp146 Targets/NVPTX.cpp147 Targets/PPC.cpp148 Targets/RISCV.cpp149 Targets/SPIR.cpp150 Targets/Sparc.cpp151 Targets/SystemZ.cpp152 Targets/TCE.cpp153 Targets/VE.cpp154 Targets/WebAssembly.cpp155 Targets/X86.cpp156 Targets/XCore.cpp157 TrapReasonBuilder.cpp158 VarBypassDetector.cpp159 160 DEPENDS161 vt_gen162 intrinsics_gen163 ClangDriverOptions164 # These generated headers are included transitively.165 target_parser_gen166 167 LINK_LIBS168 clangAST169 clangAnalysis170 clangBasic171 clangFrontend172 clangLex173 clangSerialization174 )175