Skip to content

Commit

Permalink
[gn build] Embed __TEXT __info_plist section into clang binary on macOS
Browse files Browse the repository at this point in the history
Verified by comparing the output of `otool -P bin/clang` between the GN and the
CMake build.

Differential Revision: https://reviews.llvm.org/D55984

llvm-svn: 349992
  • Loading branch information
nico committed Dec 22, 2018
1 parent 6399c5a commit 729e3c0
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
@@ -1,4 +1,5 @@
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.
Expand Down Expand Up @@ -33,6 +34,29 @@ group("symlinks") {
}
}

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 = [
Expand Down Expand Up @@ -61,12 +85,16 @@ executable("clang") {
"//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",
]

# FIXME: Info.plist embedding for mac builds.
}

0 comments on commit 729e3c0

Please sign in to comment.