84 lines
2.4 KiB
Plaintext
84 lines
2.4 KiB
Plaintext
|
import("//llvm/lib/Target/targets.gni")
|
||
|
import("//llvm/lib/Target/targets_with_asm_parsers.gni")
|
||
|
import("//llvm/lib/Target/targets_with_disassemblers.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, targets_with_asm_parsers) {
|
||
|
deps += [ "$target/AsmParser" ]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
group("AllTargetsDescs") {
|
||
|
deps = []
|
||
|
foreach(target, llvm_targets_to_build) {
|
||
|
deps += [ "$target/MCTargetDesc" ]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
group("AllTargetsDisassemblers") {
|
||
|
deps = []
|
||
|
foreach(target, targets_with_disassemblers) {
|
||
|
deps += [ "$target/Disassembler" ]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
group("AllTargetsInfos") {
|
||
|
deps = []
|
||
|
foreach(target, llvm_targets_to_build) {
|
||
|
deps += [ "$target/TargetInfo" ]
|
||
|
}
|
||
|
}
|