144 lines · plain
1set(LLVM_LINK_COMPONENTS2 Support3 TargetParser4 FrontendOpenMP5 )6 7find_first_existing_vc_file("${LLVM_MAIN_SRC_DIR}" llvm_vc)8find_first_existing_vc_file("${CLANG_SOURCE_DIR}" clang_vc)9 10# The VC revision include that we want to generate.11set(version_inc "${CMAKE_CURRENT_BINARY_DIR}/VCSVersion.inc")12 13set(generate_vcs_version_script "${LLVM_CMAKE_DIR}/GenerateVersionFromVCS.cmake")14 15if(llvm_vc AND LLVM_APPEND_VC_REV)16 set(llvm_source_dir ${LLVM_MAIN_SRC_DIR})17endif()18if (LLVM_VC_REPOSITORY AND LLVM_VC_REVISION)19 set(llvm_source_dir ${LLVM_SOURCE_DIR})20 set(llvm_vc_repository ${LLVM_VC_REPOSITORY})21 set(llvm_vc_revision ${LLVM_VC_REVISION})22endif()23if(clang_vc AND LLVM_APPEND_VC_REV)24 set(clang_source_dir ${CLANG_SOURCE_DIR})25endif()26if (CLANG_VC_REPOSITORY AND CLANG_VC_REVISION)27 set(clang_source_dir ${CLANG_SOURCE_DIR})28 set(clang_vc_repository ${CLANG_VC_REPOSITORY})29 set(clang_vc_revision ${CLANG_VC_REVISION})30endif()31 32# Create custom target to generate the VC revision include.33add_custom_command(OUTPUT "${version_inc}"34 DEPENDS "${llvm_vc}" "${clang_vc}" "${generate_vcs_version_script}"35 COMMAND ${CMAKE_COMMAND} "-DNAMES=\"LLVM;CLANG\""36 "-DLLVM_SOURCE_DIR=${llvm_source_dir}"37 "-DCLANG_SOURCE_DIR=${clang_source_dir}"38 "-DCLANG_VC_REPOSITORY=${clang_vc_repository}"39 "-DCLANG_VC_REVISION=${clang_vc_revision}"40 "-DHEADER_FILE=${version_inc}"41 "-DLLVM_VC_REPOSITORY=${llvm_vc_repository}"42 "-DLLVM_VC_REVISION=${llvm_vc_revision}"43 "-DLLVM_FORCE_VC_REVISION=${LLVM_FORCE_VC_REVISION}"44 "-DLLVM_FORCE_VC_REPOSITORY=${LLVM_FORCE_VC_REPOSITORY}"45 -P "${generate_vcs_version_script}")46 47# Mark the generated header as being generated.48set_source_files_properties("${version_inc}"49 PROPERTIES GENERATED TRUE50 HEADER_FILE_ONLY TRUE)51 52if(CLANG_VENDOR)53 set_source_files_properties(Version.cpp54 PROPERTIES COMPILE_DEFINITIONS "CLANG_VENDOR=\"${CLANG_VENDOR} \"")55endif()56 57add_clang_library(clangBasic58 ASTSourceDescriptor.cpp59 Attributes.cpp60 Builtins.cpp61 CLWarnings.cpp62 CharInfo.cpp63 CodeGenOptions.cpp64 Cuda.cpp65 DarwinSDKInfo.cpp66 Diagnostic.cpp67 DiagnosticIDs.cpp68 DiagnosticOptions.cpp69 ExpressionTraits.cpp70 FileEntry.cpp71 FileManager.cpp72 FileSystemStatCache.cpp73 IdentifierTable.cpp74 LangOptions.cpp75 LangStandards.cpp76 MakeSupport.cpp77 Module.cpp78 ObjCRuntime.cpp79 OffloadArch.cpp80 OpenCLOptions.cpp81 OpenMPKinds.cpp82 OperatorPrecedence.cpp83 ParsedAttrInfo.cpp84 ProfileList.cpp85 NoSanitizeList.cpp86 SanitizerSpecialCaseList.cpp87 Sanitizers.cpp88 Sarif.cpp89 SimpleTypoCorrection.cpp90 SourceLocation.cpp91 SourceManager.cpp92 SourceMgrAdapter.cpp93 Stack.cpp94 StackExhaustionHandler.cpp95 TargetID.cpp96 TargetInfo.cpp97 Targets.cpp98 Targets/AArch64.cpp99 Targets/AMDGPU.cpp100 Targets/ARC.cpp101 Targets/ARM.cpp102 Targets/AVR.cpp103 Targets/BPF.cpp104 Targets/CSKY.cpp105 Targets/DirectX.cpp106 Targets/Hexagon.cpp107 Targets/Lanai.cpp108 Targets/LoongArch.cpp109 Targets/M68k.cpp110 Targets/MSP430.cpp111 Targets/Mips.cpp112 Targets/NVPTX.cpp113 Targets/OSTargets.cpp114 Targets/PPC.cpp115 Targets/RISCV.cpp116 Targets/SPIR.cpp117 Targets/Sparc.cpp118 Targets/SystemZ.cpp119 Targets/TCE.cpp120 Targets/VE.cpp121 Targets/WebAssembly.cpp122 Targets/X86.cpp123 Targets/XCore.cpp124 Targets/Xtensa.cpp125 TokenKinds.cpp126 TypeTraits.cpp127 Version.cpp128 Warnings.cpp129 XRayInstr.cpp130 XRayLists.cpp131 ${version_inc}132 133 DEPENDS134 omp_gen135 ClangDriverOptions136 # These generated headers are included transitively.137 target_parser_gen138 )139 140target_link_libraries(clangBasic141 PRIVATE142 ${LLVM_ATOMIC_LIB}143)144