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" ]
  }
}
