[PATCH] D74247: [gn build] make 'clang' target depend on libcxx/include on mac

Nico Weber via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 10 04:45:04 PST 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG3dc47979bb9e: [gn build] make 'clang' target depend on libcxx/include on mac (authored by thakis).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74247/new/

https://reviews.llvm.org/D74247

Files:
  llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
  llvm/utils/gn/secondary/libcxx/include/BUILD.gn


Index: llvm/utils/gn/secondary/libcxx/include/BUILD.gn
===================================================================
--- llvm/utils/gn/secondary/libcxx/include/BUILD.gn
+++ llvm/utils/gn/secondary/libcxx/include/BUILD.gn
@@ -210,7 +210,18 @@
     "wchar.h",
     "wctype.h",
   ]
-  deps = [ "//libcxxabi/include" ]
+  deps = []
+  if (target_os != "mac" && target_os != "win") {
+    # libcxx/cmake/Modules/HandleLibCXXABI.cmake sets
+    # LIBCXX_CXX_ABI_HEADER_TARGET if the libcxx abi library either of
+    # "libstdc++", "libsupc++", "libcxxabi", "libcxxrt", but not if it's "none",
+    # "default", or "vcruntime". So on Windows, these don't get copied due to
+    # LIBCXX_CXX_ABI_HEADER_TARGET not being set.
+    # On macOS, libcxx/CMakeLists.txt sets LIBCXX_CXX_ABI_SYSTEM to 1, which
+    # causes an empty header list to be passed to setup_abi_lib, so these
+    # don't get copied on macOS due to that.
+    deps += [ "//libcxxabi/include" ]
+  }
   if (!libcxx_needs_site_config) {
     sources += [ "__config" ]
   } else {
Index: llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
===================================================================
--- llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
+++ llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
@@ -80,6 +80,13 @@
     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",


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74247.243513.patch
Type: text/x-patch
Size: 1912 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200210/3716f564/attachment.bin>


More information about the llvm-commits mailing list