import("//llvm/utils/gn/build/symlink_or_copy.gni")
import("//llvm/version.gni")

symlinks = [
  # target_name, symlink_target pairs: GN doesn't support '+' in rule names.
  [
    "clangxx",
    "clang++",
  ],
  [
    "clang-cl",
    "clang-cl",
  ],
  [
    "clang-cpp",
    "clang-cpp",
  ],
]
foreach(target, symlinks) {
  symlink_or_copy(target[0]) {
    deps = [
      ":clang",
    ]
    source = "clang"
    output = "$root_out_dir/bin/${target[1]}"
  }
}

# //:clang depends on this symlink target, see comment in //BUILD.gn.
group("symlinks") {
  deps = []
  foreach(target, symlinks) {
    deps += [ ":${target[0]}" ]
  }
}

if (host_os == "mac") {
  action("write_info_plist") {
    script = "//llvm/utils/gn/build/write_cmake_config.py"
    sources = [
      "Info.plist.in",
    ]
    outputs = [
      "$target_gen_dir/Info.plist",
    ]

    args = [
      "-o",
      rebase_path(outputs[0], root_out_dir),
      rebase_path(sources[0], root_out_dir),

      "TOOL_INFO_BUILD_VERSION=$llvm_version_major.$llvm_version_minor",
      "TOOL_INFO_NAME=clang",
      "TOOL_INFO_UTI=org.llvm.clang",
      "TOOL_INFO_VERSION=$llvm_version",
    ]
  }
}

executable("clang") {
  configs += [ "//llvm/utils/gn/build:clang_code" ]
  deps = [
    "//clang/include/clang/Config",
    "//clang/lib/Basic",
    "//clang/lib/CodeGen",
    "//clang/lib/Driver",
    "//clang/lib/Frontend",
    "//clang/lib/FrontendTool",
    "//clang/lib/Headers",
    "//clang/tools/clang-offload-bundler",
    "//llvm/include/llvm/Config:llvm-config",
    "//llvm/lib/Analysis",
    "//llvm/lib/CodeGen",
    "//llvm/lib/IR",
    "//llvm/lib/MC",
    "//llvm/lib/MC/MCParser",
    "//llvm/lib/Option",
    "//llvm/lib/Support",
    "//llvm/lib/Target:TargetsToBuild",
    "//llvm/lib/Transforms/IPO",
    "//llvm/lib/Transforms/InstCombine",
    "//llvm/lib/Transforms/Instrumentation",
    "//llvm/lib/Transforms/ObjCARC",
    "//llvm/lib/Transforms/Scalar",
    "//llvm/lib/Transforms/Utils",
    "//llvm/lib/Transforms/Vectorize",
  ]
  if (host_os == "mac") {
    deps += [ ":write_info_plist" ]
    plist = get_target_outputs(":write_info_plist")
    ldflags = [ "-Wl,-sectcreate,__TEXT,__info_plist," +
                rebase_path(plist[0], root_out_dir) ]
  }
  sources = [
    "cc1_main.cpp",
    "cc1as_main.cpp",
    "cc1gen_reproducer_main.cpp",
    "driver.cpp",
  ]
}
