98 lines
2.6 KiB
Plaintext
98 lines
2.6 KiB
Plaintext
import("//llvm/utils/gn/build/symlink_or_copy.gni")
|
|
import("//llvm/utils/gn/build/write_cmake_config.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") {
|
|
write_cmake_config("write_info_plist") {
|
|
input = "Info.plist.in"
|
|
output = "$target_gen_dir/Info.plist"
|
|
values = [
|
|
"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",
|
|
"//clang/tools/clang-offload-wrapper",
|
|
"//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) ]
|
|
|
|
# On macOS, libcxx headers are bundled with the compiler, not with the
|
|
# sysroot. As a convenience, automatically copy them over when buildling
|
|
# clang. This is different from the CMake build, which requires devs to
|
|
# explicitly build the "libcxx" target (which also needlessly compiles the
|
|
# libcxx sources) to get a working compiler.
|
|
deps += [ "//libcxx/include" ]
|
|
}
|
|
sources = [
|
|
"cc1_main.cpp",
|
|
"cc1as_main.cpp",
|
|
"cc1gen_reproducer_main.cpp",
|
|
"driver.cpp",
|
|
]
|
|
}
|