1set(LLVM_LINK_COMPONENTS 2 Support 3 TargetParser 4 FrontendOpenMP 5 ) 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 TRUE 50 HEADER_FILE_ONLY TRUE) 51 52if(CLANG_VENDOR) 53 set_source_files_properties(Version.cpp 54 PROPERTIES COMPILE_DEFINITIONS "CLANG_VENDOR=\"${CLANG_VENDOR} \"") 55endif() 56 57add_clang_library(clangBasic 58 ASTSourceDescriptor.cpp 59 Attributes.cpp 60 Builtins.cpp 61 CLWarnings.cpp 62 CharInfo.cpp 63 CodeGenOptions.cpp 64 Cuda.cpp 65 DarwinSDKInfo.cpp 66 Diagnostic.cpp 67 DiagnosticIDs.cpp 68 DiagnosticOptions.cpp 69 ExpressionTraits.cpp 70 FileEntry.cpp 71 FileManager.cpp 72 FileSystemStatCache.cpp 73 IdentifierTable.cpp 74 LangOptions.cpp 75 LangStandards.cpp 76 MakeSupport.cpp 77 Module.cpp 78 ObjCRuntime.cpp 79 OpenCLOptions.cpp 80 OpenMPKinds.cpp 81 OperatorPrecedence.cpp 82 ParsedAttrInfo.cpp 83 ProfileList.cpp 84 NoSanitizeList.cpp 85 SanitizerSpecialCaseList.cpp 86 Sanitizers.cpp 87 Sarif.cpp 88 SourceLocation.cpp 89 SourceManager.cpp 90 SourceMgrAdapter.cpp 91 Stack.cpp 92 StackExhaustionHandler.cpp 93 TargetID.cpp 94 TargetInfo.cpp 95 Targets.cpp 96 Targets/AArch64.cpp 97 Targets/AMDGPU.cpp 98 Targets/ARC.cpp 99 Targets/ARM.cpp 100 Targets/AVR.cpp 101 Targets/BPF.cpp 102 Targets/CSKY.cpp 103 Targets/DirectX.cpp 104 Targets/Hexagon.cpp 105 Targets/Lanai.cpp 106 Targets/LoongArch.cpp 107 Targets/M68k.cpp 108 Targets/MSP430.cpp 109 Targets/Mips.cpp 110 Targets/NVPTX.cpp 111 Targets/OSTargets.cpp 112 Targets/PNaCl.cpp 113 Targets/PPC.cpp 114 Targets/RISCV.cpp 115 Targets/SPIR.cpp 116 Targets/Sparc.cpp 117 Targets/SystemZ.cpp 118 Targets/TCE.cpp 119 Targets/VE.cpp 120 Targets/WebAssembly.cpp 121 Targets/X86.cpp 122 Targets/XCore.cpp 123 Targets/Xtensa.cpp 124 TokenKinds.cpp 125 TypeTraits.cpp 126 Version.cpp 127 Warnings.cpp 128 XRayInstr.cpp 129 XRayLists.cpp 130 ${version_inc} 131 132 DEPENDS 133 omp_gen 134 ClangDriverOptions 135 # These generated headers are included transitively. 136 ARMTargetParserTableGen 137 AArch64TargetParserTableGen 138 ) 139 140target_link_libraries(clangBasic 141 PRIVATE 142 ${LLVM_ATOMIC_LIB} 143) 144