Skip to content

Commit

Permalink
Add explicit --sdk argument to xcrun calls
Browse files Browse the repository at this point in the history
Xcode 11 (and possibly earlier versions) has a bug where, when you don't
pass `-sdk macosx`, it can either pick the global
`/Library/Developer/CommandLineTools` SDK path, or the SDK path bundled
within Xcode itself. This seems to depend on if you have other versions
of Xcode installed, and which versions of the command line tools you
have installed. Passing `-sdk macosx` seems to always force it to pick
the Xcode bundled version, which is what we prefer. This fixes issues
with remote cache misses caused by these tools not being the same
because of this difference. At least 2 apple bugs have been filed
about this FB7147521 FB7253366

You can see which path it's picking by running:

```
env -i xcrun -l -n clang
```

Closes #9371.

PiperOrigin-RevId: 268906772
  • Loading branch information
keith authored and dslomov committed Sep 16, 2019
1 parent d278904 commit fbd10d1
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 3 deletions.
2 changes: 1 addition & 1 deletion scripts/bootstrap/compile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ cp $OUTPUT_DIR/libblaze.jar ${ARCHIVE_DIR}
# TODO(b/28965185): Remove when xcode-locator is no longer required in embedded_binaries.
log "Compiling xcode-locator..."
if [[ $PLATFORM == "darwin" ]]; then
run /usr/bin/xcrun clang -fobjc-arc -framework CoreServices -framework Foundation -o ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator tools/osx/xcode_locator.m
run /usr/bin/xcrun --sdk macosx clang -fobjc-arc -framework CoreServices -framework Foundation -o ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator tools/osx/xcode_locator.m
else
cp tools/osx/xcode_locator_stub.sh ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator
fi
Expand Down
2 changes: 1 addition & 1 deletion src/tools/xcode/realpath/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ genrule(
name = "realpath_genrule",
srcs = ["realpath.c"],
outs = ["realpath"],
cmd = "/usr/bin/xcrun clang -o $@ $<",
cmd = "/usr/bin/xcrun --sdk macosx clang -o $@ $<",
output_to_bindir = 1,
visibility = ["//visibility:public"],
)
Expand Down
2 changes: 2 additions & 0 deletions tools/cpp/osx_cc_configure.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ def configure_osx_toolchain(repository_ctx, overriden_tools):
"env",
"-i",
"xcrun",
"--sdk",
"macosx",
"clang",
"-std=c++11",
"-lc++",
Expand Down
2 changes: 1 addition & 1 deletion tools/osx/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ exports_files([
])

DARWIN_XCODE_LOCATOR_COMPILE_COMMAND = """
/usr/bin/xcrun clang -fobjc-arc -framework CoreServices \
/usr/bin/xcrun --sdk macosx clang -fobjc-arc -framework CoreServices \
-framework Foundation -o $@ $<
"""

Expand Down
2 changes: 2 additions & 0 deletions tools/osx/xcode_configure.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ def run_xcode_locator(repository_ctx, xcode_locator_src_label):
"env",
"-i",
"xcrun",
"--sdk",
"macosx",
"clang",
"-fobjc-arc",
"-framework",
Expand Down

0 comments on commit fbd10d1

Please sign in to comment.