From 729e3c0c0e14daa53e61db18c39b3e6891d49641 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Sat, 22 Dec 2018 03:51:10 +0000 Subject: [PATCH] [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 --- .../utils/gn/secondary/clang/tools/driver/BUILD.gn | 32 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn b/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn index 88ac993..0b51704 100644 --- a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn +++ b/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. @@ -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. } -- 2.7.4