brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · b402bbb Raw
103 lines · plain
1import("//llvm/utils/gn/build/driver_executable.gni")2import("//llvm/utils/gn/build/symlink_or_copy.gni")3import("//llvm/utils/gn/build/write_cmake_config.gni")4import("//llvm/version.gni")5 6symlinks = [7  # target_name, symlink_target pairs: GN doesn't support '+' in rule names.8  [9    "clangxx",10    "clang++",11  ],12  [13    "clang-cl",14    "clang-cl",15  ],16  [17    "clang-cpp",18    "clang-cpp",19  ],20]21foreach(target, symlinks) {22  symlink_or_copy(target[0]) {23    deps = [ ":clang" ]24    source = "clang"25    output = "$root_out_dir/bin/${target[1]}"26  }27}28 29# //:clang depends on this symlink target, see comment in //BUILD.gn.30group("symlinks") {31  deps = [ ":clang" ]32  foreach(target, symlinks) {33    deps += [ ":${target[0]}" ]34  }35}36 37if (host_os == "mac") {38  write_cmake_config("write_info_plist") {39    input = "Info.plist.in"40    output = "$target_gen_dir/Info.plist"41    values = [42      "TOOL_INFO_BUILD_VERSION=$llvm_version_major.$llvm_version_minor",43      "TOOL_INFO_NAME=clang",44      "TOOL_INFO_UTI=org.llvm.clang",45      "TOOL_INFO_VERSION=$llvm_version",46    ]47  }48}49 50driver_executable("clang") {51  configs += [ "//llvm/utils/gn/build:clang_code" ]52  deps = [53    "//clang/include/clang/Config",54    "//clang/lib/Basic",55    "//clang/lib/CodeGen",56    "//clang/lib/Driver",57    "//clang/lib/Frontend",58    "//clang/lib/FrontendTool",59    "//clang/lib/Headers",60    "//clang/lib/Options",61    "//clang/tools/clang-linker-wrapper",62    "//clang/tools/clang-nvlink-wrapper",63    "//clang/tools/clang-offload-bundler",64    "//llvm/include/llvm/Config:llvm-config",65    "//llvm/lib/Analysis",66    "//llvm/lib/CodeGen",67    "//llvm/lib/IR",68    "//llvm/lib/MC",69    "//llvm/lib/MC/MCParser",70    "//llvm/lib/Option",71    "//llvm/lib/Support",72    "//llvm/lib/Target:TargetsToBuild",73    "//llvm/lib/TargetParser",74    "//llvm/lib/Transforms/IPO",75    "//llvm/lib/Transforms/InstCombine",76    "//llvm/lib/Transforms/Instrumentation",77    "//llvm/lib/Transforms/ObjCARC",78    "//llvm/lib/Transforms/Scalar",79    "//llvm/lib/Transforms/Utils",80    "//llvm/lib/Transforms/Vectorize",81  ]82  assert_no_deps = [ "//llvm/lib/Debuginfod" ]83  if (host_os == "mac") {84    deps += [ ":write_info_plist" ]85    plist = get_target_outputs(":write_info_plist")86    ldflags = [ "-Wl,-sectcreate,__TEXT,__info_plist," +87                rebase_path(plist[0], root_out_dir) ]88 89    # On macOS, libcxx headers are bundled with the compiler, not with the90    # sysroot. As a convenience, automatically copy them over when buildling91    # clang.  This is different from the CMake build, which requires devs to92    # explicitly build the "libcxx" target (which also needlessly compiles the93    # libcxx sources) to get a working compiler.94    deps += [ "//libcxx/include:copy_headers" ]95  }96  sources = [97    "cc1_main.cpp",98    "cc1as_main.cpp",99    "cc1gen_reproducer_main.cpp",100    "driver.cpp",101  ]102}103