forked from OSchip/llvm-project
[gn build] Embed __TEXT __info_plist section into clang binary on macOS
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
This commit is contained in:
parent
6399c5a3ba
commit
729e3c0c0e
|
@ -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.
|
||||
|
@ -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 = [
|
||||
|
@ -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.
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue