Build GN for mac-arm64 This enables cross-compiling GN for mac-arm64 and uploading the package to CIPD. Unfortunately, Fuchsia's Clang toolchain that GN uses doesn't yet contain universal libc++ that would support both x86_64 and arm64 macOS, so we need to temporarily revert back to using the system libc++ until the universal one is availabile in the toolchain. Change-Id: I958fd2ea3b3ae1304b706bd977a7e3875dfaab6a Reviewed-on: https://gn-review.googlesource.com/c/gn/+/10740 Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Petr Hosek <phosek@google.com>
diff --git a/infra/README.recipes.md b/infra/README.recipes.md index 869f775..c99a1bd 100644 --- a/infra/README.recipes.md +++ b/infra/README.recipes.md
@@ -27,7 +27,7 @@ API for using OS X SDK distributed via CIPD. -  **@contextmanager**<br>— **def [\_\_call\_\_](/infra/recipe_modules/macos_sdk/api.py#24)(self):** +  **@contextmanager**<br>— **def [\_\_call\_\_](/infra/recipe_modules/macos_sdk/api.py#30)(self):** Sets up the XCode SDK environment. @@ -60,6 +60,8 @@ Raises: StepFailure or InfraFailure. + +  **@property**<br>— **def [sdk\_dir](/infra/recipe_modules/macos_sdk/api.py#25)(self):** ### *recipe_modules* / [target](/infra/recipe_modules/target) [DEPS](/infra/recipe_modules/target/__init__.py#5): [recipe\_engine/platform][recipe_engine/recipe_modules/platform]
diff --git a/infra/recipe_modules/macos_sdk/api.py b/infra/recipe_modules/macos_sdk/api.py index 23d0066..cde4a8b 100644 --- a/infra/recipe_modules/macos_sdk/api.py +++ b/infra/recipe_modules/macos_sdk/api.py
@@ -17,10 +17,16 @@ def __init__(self, sdk_properties, *args, **kwargs): super(MacOSSDKApi, self).__init__(*args, **kwargs) + self._sdk_dir = None self._sdk_version = sdk_properties['sdk_version'].lower() self._tool_package = sdk_properties['tool_package'] self._tool_version = sdk_properties['tool_version'] + @property + def sdk_dir(self): + assert self._sdk_dir + return self._sdk_dir + @contextmanager def __call__(self): """Sets up the XCode SDK environment. @@ -61,9 +67,9 @@ try: with self.m.context(infra_steps=True): - sdk_dir = self._ensure_sdk() + self._sdk_dir = self._ensure_sdk() self.m.step('select XCode', - ['sudo', 'xcode-select', '--switch', sdk_dir]) + ['sudo', 'xcode-select', '--switch', self._sdk_dir]) yield finally: with self.m.context(infra_steps=True):
diff --git a/infra/recipe_modules/macos_sdk/examples/full.py b/infra/recipe_modules/macos_sdk/examples/full.py index 5546ad5..a3348ab 100644 --- a/infra/recipe_modules/macos_sdk/examples/full.py +++ b/infra/recipe_modules/macos_sdk/examples/full.py
@@ -12,6 +12,7 @@ def RunSteps(api): with api.macos_sdk(): + sdk_dir = api.macos_sdk.sdk_dir if api.platform.is_mac else None api.step('gn', ['gn', 'gen', 'out/Release']) api.step('ninja', ['ninja', '-C', 'out/Release'])
diff --git a/infra/recipe_modules/target/api.py b/infra/recipe_modules/target/api.py index f128707..850c104 100644 --- a/infra/recipe_modules/target/api.py +++ b/infra/recipe_modules/target/api.py
@@ -11,7 +11,7 @@ 'linux-amd64': 'x86_64-linux-gnu', 'linux-arm64': 'aarch64-linux-gnu', 'mac-amd64': 'x86_64-apple-darwin', - 'mac-arm64': 'aarch64-apple-darwin', + 'mac-arm64': 'arm64-apple-darwin', } PLATFORMS = PLATFORM_TO_TRIPLE.keys()
diff --git a/infra/recipes/gn.expected/ci_mac.json b/infra/recipes/gn.expected/ci_mac.json index 03d5da6..fa8164d 100644 --- a/infra/recipes/gn.expected/ci_mac.json +++ b/infra/recipes/gn.expected/ci_mac.json
@@ -155,7 +155,7 @@ "xcrun", "--show-sdk-path" ], - "name": "debug.mac-amd64.xcrun", + "name": "debug.mac-amd64.xcrun sdk-path", "stdout": "/path/to/tmp/", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@", @@ -165,6 +165,25 @@ }, { "cmd": [ + "xcrun", + "--toolchain", + "clang", + "clang++", + "-xc++", + "-fsyntax-only", + "-Wp,-v", + "-" + ], + "name": "debug.mac-amd64.xcrun toolchain", + "stderr": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[toolchain]@[CACHE]/macos_sdk/XCode.app/include/c++/v1@@@", + "@@@STEP_LOG_END@raw_io.output[toolchain]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py", @@ -174,9 +193,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "debug.mac-amd64.generate", "~followup_annotations": [ @@ -193,9 +212,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "debug.mac-amd64.build", "~followup_annotations": [ @@ -227,7 +246,7 @@ "xcrun", "--show-sdk-path" ], - "name": "release.mac-amd64.xcrun", + "name": "release.mac-amd64.xcrun sdk-path", "stdout": "/path/to/tmp/", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@", @@ -237,6 +256,25 @@ }, { "cmd": [ + "xcrun", + "--toolchain", + "clang", + "clang++", + "-xc++", + "-fsyntax-only", + "-Wp,-v", + "-" + ], + "name": "release.mac-amd64.xcrun toolchain", + "stderr": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[toolchain]@[CACHE]/macos_sdk/XCode.app/include/c++/v1@@@", + "@@@STEP_LOG_END@raw_io.output[toolchain]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py", @@ -247,9 +285,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "release.mac-amd64.generate", "~followup_annotations": [ @@ -266,9 +304,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "release.mac-amd64.build", "~followup_annotations": [ @@ -317,6 +355,117 @@ ] }, { + "cmd": [], + "name": "release.mac-arm64", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "xcrun", + "--show-sdk-path" + ], + "name": "release.mac-arm64.xcrun sdk-path", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", + "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" + ] + }, + { + "cmd": [ + "xcrun", + "--toolchain", + "clang", + "clang++", + "-xc++", + "-fsyntax-only", + "-Wp,-v", + "-" + ], + "name": "release.mac-arm64.xcrun toolchain", + "stderr": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[toolchain]@[CACHE]/macos_sdk/XCode.app/include/c++/v1@@@", + "@@@STEP_LOG_END@raw_io.output[toolchain]@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[START_DIR]/gn/build/gen.py", + "--use-lto", + "--use-icf" + ], + "cwd": "[START_DIR]/gn", + "env": { + "AR": "[START_DIR]/cipd/bin/llvm-ar", + "CC": "[START_DIR]/cipd/bin/clang", + "CFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", + "CXX": "[START_DIR]/cipd/bin/clang++", + "LDFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path" + }, + "name": "release.mac-arm64.generate", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd/ninja", + "-C", + "[START_DIR]/gn/out" + ], + "cwd": "[START_DIR]/gn", + "env": { + "AR": "[START_DIR]/cipd/bin/llvm-ar", + "CC": "[START_DIR]/cipd/bin/clang", + "CFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", + "CXX": "[START_DIR]/cipd/bin/clang++", + "LDFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path" + }, + "name": "release.mac-arm64.build", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [], + "name": "release.mac-arm64.upload", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "cipd", + "pkg-build", + "-pkg-def", + "{\"data\": [{\"file\": \"gn\"}, {\"version_file\": \".versions/gn.cipd_version\"}], \"install_mode\": \"copy\", \"package\": \"gn/gn/mac-arm64\", \"root\": \"[START_DIR]/gn/out\"}", + "-out", + "[CLEANUP]/gn.cipd", + "-hash-algo", + "sha256", + "-json-output", + "/path/to/tmp/json" + ], + "name": "release.mac-arm64.upload.build gn/gn/mac-arm64", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@3@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"40-chars-fake-of-the-package-instance_id\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"gn/gn/mac-arm64\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { "cmd": [ "sudo", "xcode-select",
diff --git a/infra/recipes/gn.expected/cq_mac.json b/infra/recipes/gn.expected/cq_mac.json index 0244003..c1d51f5 100644 --- a/infra/recipes/gn.expected/cq_mac.json +++ b/infra/recipes/gn.expected/cq_mac.json
@@ -182,7 +182,7 @@ "xcrun", "--show-sdk-path" ], - "name": "debug.mac-amd64.xcrun", + "name": "debug.mac-amd64.xcrun sdk-path", "stdout": "/path/to/tmp/", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@", @@ -192,6 +192,25 @@ }, { "cmd": [ + "xcrun", + "--toolchain", + "clang", + "clang++", + "-xc++", + "-fsyntax-only", + "-Wp,-v", + "-" + ], + "name": "debug.mac-amd64.xcrun toolchain", + "stderr": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[toolchain]@[CACHE]/macos_sdk/XCode.app/include/c++/v1@@@", + "@@@STEP_LOG_END@raw_io.output[toolchain]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py", @@ -201,9 +220,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "debug.mac-amd64.generate", "~followup_annotations": [ @@ -220,9 +239,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "debug.mac-amd64.build", "~followup_annotations": [ @@ -254,7 +273,7 @@ "xcrun", "--show-sdk-path" ], - "name": "release.mac-amd64.xcrun", + "name": "release.mac-amd64.xcrun sdk-path", "stdout": "/path/to/tmp/", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@", @@ -264,6 +283,25 @@ }, { "cmd": [ + "xcrun", + "--toolchain", + "clang", + "clang++", + "-xc++", + "-fsyntax-only", + "-Wp,-v", + "-" + ], + "name": "release.mac-amd64.xcrun toolchain", + "stderr": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[toolchain]@[CACHE]/macos_sdk/XCode.app/include/c++/v1@@@", + "@@@STEP_LOG_END@raw_io.output[toolchain]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py", @@ -274,9 +312,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "release.mac-amd64.generate", "~followup_annotations": [ @@ -293,9 +331,9 @@ "env": { "AR": "[START_DIR]/cipd/bin/llvm-ar", "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path", + "CFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path -nostdlib++ [START_DIR]/cipd/lib/libc++.a" + "LDFLAGS": "--target=x86_64-apple-darwin --sysroot=/some/xcode/path" }, "name": "release.mac-amd64.build", "~followup_annotations": [ @@ -312,6 +350,85 @@ ] }, { + "cmd": [], + "name": "release.mac-arm64", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@1@@@" + ] + }, + { + "cmd": [ + "xcrun", + "--show-sdk-path" + ], + "name": "release.mac-arm64.xcrun sdk-path", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", + "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" + ] + }, + { + "cmd": [ + "xcrun", + "--toolchain", + "clang", + "clang++", + "-xc++", + "-fsyntax-only", + "-Wp,-v", + "-" + ], + "name": "release.mac-arm64.xcrun toolchain", + "stderr": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[toolchain]@[CACHE]/macos_sdk/XCode.app/include/c++/v1@@@", + "@@@STEP_LOG_END@raw_io.output[toolchain]@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "[START_DIR]/gn/build/gen.py", + "--use-lto", + "--use-icf" + ], + "cwd": "[START_DIR]/gn", + "env": { + "AR": "[START_DIR]/cipd/bin/llvm-ar", + "CC": "[START_DIR]/cipd/bin/clang", + "CFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", + "CXX": "[START_DIR]/cipd/bin/clang++", + "LDFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path" + }, + "name": "release.mac-arm64.generate", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { + "cmd": [ + "[START_DIR]/cipd/ninja", + "-C", + "[START_DIR]/gn/out" + ], + "cwd": "[START_DIR]/gn", + "env": { + "AR": "[START_DIR]/cipd/bin/llvm-ar", + "CC": "[START_DIR]/cipd/bin/clang", + "CFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path -nostdinc++ -cxx-isystem [CACHE]/macos_sdk/XCode.app/include/c++/v1", + "CXX": "[START_DIR]/cipd/bin/clang++", + "LDFLAGS": "--target=arm64-apple-darwin --sysroot=/some/xcode/path" + }, + "name": "release.mac-arm64.build", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@" + ] + }, + { "cmd": [ "sudo", "xcode-select",
diff --git a/infra/recipes/gn.py b/infra/recipes/gn.py index 68e721c..5c767b1 100644 --- a/infra/recipes/gn.py +++ b/infra/recipes/gn.py
@@ -65,6 +65,14 @@ 'sysroot') api.cipd.ensure(cipd_dir, pkgs) + def release_targets(): + if api.platform.is_linux: + return [api.target('linux-amd64'), api.target('linux-arm64')] + elif api.platform.is_mac: + return [api.target('mac-amd64'), api.target('mac-arm64')] + else: + return [api.target.host] + # The order is important since release build will get uploaded to CIPD. configs = [ { @@ -75,12 +83,29 @@ { 'name': 'release', 'args': ['--use-lto', '--use-icf'], - 'targets': [api.target('linux-amd64'), - api.target('linux-arm64')] - if api.platform.is_linux else [api.target.host], + 'targets': release_targets(), }, ] + def get_libcxx_include_path(): + # Run the preprocessor with an empty input and print all include paths. + lines = api.step( + 'xcrun toolchain', [ + 'xcrun', '--toolchain', 'clang', 'clang++', '-xc++', + '-fsyntax-only', '-Wp,-v', '-' + ], + stderr=api.raw_io.output(name='toolchain', add_output_log=True), + step_test_data=lambda: api.raw_io.test_api.stream_output( + str(api.macos_sdk.sdk_dir.join('include', 'c++', 'v1')), + stream='stderr')).stderr.splitlines() + # Iterate over all include paths and look for the SDK libc++ one. + sdk_dir = str(api.macos_sdk.sdk_dir) + for line in lines: + line = line.strip() + if line.startswith(sdk_dir) and 'include/c++/v1' in line: + return line + return None # pragma: no cover + with api.macos_sdk(), api.windows_sdk(): for config in configs: with api.step.nest(config['name']): @@ -99,18 +124,31 @@ elif target.is_mac: triple = '--target=%s' % target.triple sysroot = '--sysroot=%s' % api.step( - 'xcrun', ['xcrun', '--show-sdk-path'], + 'xcrun sdk-path', ['xcrun', '--show-sdk-path'], stdout=api.raw_io.output( name='sdk-path', add_output_log=True), step_test_data=lambda: api.raw_io.test_api.stream_output( '/some/xcode/path')).stdout.strip() stdlib = cipd_dir.join('lib', 'libc++.a') + cxx_include = get_libcxx_include_path() + assert cxx_include, 'cannot find C++ header directory' env = { - 'CC': cipd_dir.join('bin', 'clang'), - 'CXX': cipd_dir.join('bin', 'clang++'), - 'AR': cipd_dir.join('bin', 'llvm-ar'), - 'CFLAGS': '%s %s' % (triple, sysroot), - 'LDFLAGS': '%s %s -nostdlib++ %s' % (triple, sysroot, stdlib), + 'CC': + cipd_dir.join('bin', 'clang'), + 'CXX': + cipd_dir.join('bin', 'clang++'), + 'AR': + cipd_dir.join('bin', 'llvm-ar'), + # TODO(phosek): temporarily use XCode C++ headers to make + # sure these are compatible with the system libc++. + 'CFLAGS': + '%s %s -nostdinc++ -cxx-isystem %s' % + (triple, sysroot, cxx_include), + # TODO(phosek): Use the system libc++ temporarily until we + # have universal libc++.a for macOS that supports both x86_64 + # and arm64. + 'LDFLAGS': + '%s %s' % (triple, sysroot), } else: env = {}