| import("//llvm/lib/Target/targets.gni") |
| |
| # This build file has two parts: |
| # 1. The actual //llvm/lib/Target build target, which is just a static |
| # library containing the cpp files in this directory. It contains general |
| # shared target code. |
| # 2. Forwarding targets that forward to the concrete targets (X86, ARM, ...). |
| # These are defined in subdirectories, and the forwarding names match |
| # the names of the forwarding targets in CMake. They all (indirectly, |
| # through CodeGen) depend on the //llvm/lib/Target build target. |
| # (See also `gn help labels`). |
| # The dependency chain is: |
| # //llvm/lib/Target:TargetsToBuild (a target in this file) -> |
| # /llvm/lib/Target/(X86|ARM|...) (in the subdirectories) -> |
| # //llvm/lib/CodeGen -> |
| # //llvm/lib/Target (a target in this file again) |
| # Note that while this file appears twice in that stack, it's with different |
| # targets in this file, so there's no cyclic dependency. |
| |
| # 1. Actual build target. |
| static_library("Target") { |
| output_name = "LLVMTarget" |
| deps = [ |
| "//llvm/lib/Analysis", |
| "//llvm/lib/IR", |
| "//llvm/lib/MC", |
| "//llvm/lib/Support", |
| ] |
| public_deps = [ |
| # This is a bit of a hack: llvm-c/Target.h includes llvm/Config/Targets.def, |
| # but there's no target corresponding to llvm-c. Since the functions |
| # declared in llvm-c/Target.h are defined in llvm/lib/Target, clients of |
| # it must depend on llvm/lib/Target, so add the public_dep for Targets.def |
| # here. |
| "//llvm/include/llvm/Config:write_target_def_files", |
| ] |
| sources = [ |
| "Target.cpp", |
| "TargetIntrinsicInfo.cpp", |
| "TargetLoweringObjectFile.cpp", |
| "TargetMachine.cpp", |
| "TargetMachineC.cpp", |
| ] |
| } |
| |
| # 2. Forwarding targets. |
| group("NativeTarget") { |
| deps = [ |
| "$native_target", |
| ] |
| } |
| |
| group("TargetsToBuild") { |
| deps = llvm_targets_to_build |
| } |
| |
| group("AllTargetsAsmParsers") { |
| deps = [] |
| foreach(target, llvm_targets_to_build) { |
| deps += [ "$target/AsmParser" ] |
| } |
| } |
| |
| group("AllTargetsAsmPrinters") { |
| deps = [] |
| foreach(target, llvm_targets_to_build) { |
| deps += [ "$target/InstPrinter" ] |
| } |
| } |
| |
| group("AllTargetsDescs") { |
| deps = [] |
| foreach(target, llvm_targets_to_build) { |
| deps += [ "$target/MCTargetDesc" ] |
| } |
| } |
| |
| group("AllTargetsDisassemblers") { |
| deps = [] |
| foreach(target, llvm_targets_to_build) { |
| deps += [ "$target/Disassembler" ] |
| } |
| } |
| |
| group("AllTargetsInfos") { |
| deps = [] |
| foreach(target, llvm_targets_to_build) { |
| deps += [ "$target/TargetInfo" ] |
| } |
| } |