import("//clang/lib/ARCMigrate/enable.gni")
import("//clang/lib/StaticAnalyzer/Frontend/enable.gni")
import("//llvm/utils/gn/build/toolchain/compiler.gni")

group("default") {
  deps = [
    "//clang-tools-extra/clangd/test",
    "//clang-tools-extra/test",
    "//clang/test",
    "//clang/tools/scan-build",
    "//compiler-rt/include",
    "//compiler-rt/lib/scudo",
    "//lld/test",
    "//llvm/test",
  ]
  if (current_os == "linux" || current_os == "mac") {
    deps += [ "//compiler-rt" ]
  }
  if (current_os == "linux") {
    deps += [
      "//libcxx",
      "//libcxxabi",
      "//libunwind",
    ]
  }
  if (current_os == "linux" || current_os == "android") {
    deps += [ "//compiler-rt/test/hwasan" ]
  }

  testonly = true
}

# Symlink handling.
# On POSIX, symlinks to the target can be created before the target exist,
# and the target can depend on the symlink targets, so that building the
# target ensures the symlinks exist.
# However, symlinks didn't exist on Windows until recently, so there the
# binary needs to be copied -- which requires it to exist. So the symlink step
# needs to run after the target that creates the binary.
# In the cmake build, this is done via a "postbuild" on the target, which just
# tacks on "&& copy out.exe out2.exe" to the link command.
# GN doesn't have a way to express postbuild commands.  It could probably be
# emulated by having the link command in the toolchain be a wrapper script that
# reads a ".symlinks" file next to the target, and have an action write that
# and make the target depend on that, but then every single link has to use the
# wrapper (unless we do further acrobatics to use a different toolchain for
# targets that need symlinks) even though most links don't need symlinks.
# Instead, have a top-level target for each target that needs symlinks, and
# make that depend on the symlinks. Then the symlinks can depend on the
# executable.  This has the effect that `ninja lld` builds lld and then creates
# symlinks (via this target), while `ninja bin/lld` only builds lld and doesn't
# update symlinks (in particular, on Windows it doesn't copy the new lld to its
# new locations).
# That seems simpler, more explicit, and good enough.
group("clang") {
  deps = [ "//clang/tools/driver:symlinks" ]
}
group("lld") {
  deps = [ "//lld/tools/lld:symlinks" ]
}
group("llvm-ar") {
  deps = [ "//llvm/tools/llvm-ar:symlinks" ]
}
group("llvm-dwp") {
  deps = [ "//llvm/tools/llvm-dwp:symlinks" ]
}
group("llvm-nm") {
  deps = [ "//llvm/tools/llvm-nm:symlinks" ]
}
group("llvm-cxxfilt") {
  deps = [ "//llvm/tools/llvm-cxxfilt:symlinks" ]
}
group("llvm-objcopy") {
  deps = [ "//llvm/tools/llvm-objcopy:symlinks" ]
}
group("llvm-objdump") {
  deps = [ "//llvm/tools/llvm-objdump:symlinks" ]
}
group("llvm-readobj") {
  deps = [ "//llvm/tools/llvm-readobj:symlinks" ]
}
group("llvm-size") {
  deps = [ "//llvm/tools/llvm-size:symlinks" ]
}
group("llvm-strings") {
  deps = [ "//llvm/tools/llvm-strings:symlinks" ]
}
group("llvm-symbolizer") {
  deps = [ "//llvm/tools/llvm-symbolizer:symlinks" ]
}

# A pool called "console" in the root BUILD.gn is magic and represents ninja's
# built-in console pool. (Requires a GN with `gn --version` >= 552353.)
pool("console") {
  depth = 1
}
