Export xcode_locator's source file under tools/osx/ to make it available for reference by future repository rules. Removes the xcode-locator binary file under tools/objc. Originally, the precompiled binary was going to be referenced, but it's easier to build from source in the repository rule.

--
MOS_MIGRATED_REVID=128063694
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 1714cda..7c28986 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -261,7 +261,7 @@
 cp src/main/tools/build_interface_so ${ARCHIVE_DIR}/_embedded_binaries/build_interface_so
 cp src/main/tools/jdk.BUILD ${ARCHIVE_DIR}/_embedded_binaries/jdk.BUILD
 cp $OUTPUT_DIR/libblaze.jar ${ARCHIVE_DIR}
-cp src/tools/xcode/xcodelocator/xcode_locator_stub.sh ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator
+cp tools/osx/xcode_locator_stub.sh ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator
 
 # bazel build using bootstrap version
 function bootstrap_build() {
diff --git a/src/BUILD b/src/BUILD
index 3694e67..1b57055 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -28,7 +28,7 @@
         "//src/main/tools:process-wrapper",
         "//src/main/tools:linux-sandbox",
         "//src/main/tools:build_interface_so",
-        "//src/tools/xcode/xcodelocator:xcode-locator",
+        "//tools/osx:xcode-locator",
     ] + embedded_tools,
     outs = ["install_base_key" + suffix],
     cmd = select({
@@ -105,12 +105,12 @@
         "//src/tools/xcode/momcwrapper:momcwrapper",
         "//src/tools/xcode/swiftstdlibtoolwrapper:swiftstdlibtoolwrapper",
         "//src/tools/xcode/environment:environment_plist",
-        "//src/tools/xcode/xcodelocator:xcode-locator",
         "//src/tools/xcode/xcrunwrapper:xcrunwrapper",
         "//src/objc_tools/bundlemerge:bundlemerge_deploy.jar",
         "//src/objc_tools/plmerge:plmerge_deploy.jar",
         "//src/objc_tools/xcodegen:xcodegen_deploy.jar",
         "//src/tools/xcode/realpath:realpath",
+        "//tools/osx:xcode_locator.m",
     ] + select({
         ":iphonesdk": ["//src/tools/xcode/stdredirect:StdRedirect.dylib"],
         "//conditions:default": [":dummy_darwin_tool_src_tools_xcode_stdredirect_StdRedirect.dylib"],
@@ -185,7 +185,7 @@
         "//src/main/tools:jdk-support",
         "//src/main/tools:linux-sandbox",
         "//src/main/tools:build_interface_so",
-        "//src/tools/xcode/xcodelocator:xcode-locator",
+        "//tools/osx:xcode-locator",
         ":java-version",
     ],
     outs = ["package" + suffix + ".zip"],
@@ -313,10 +313,10 @@
         "//src/tools/singlejar:srcs",
         "//src/tools/xcode/stdredirect:srcs",
         "//src/tools/xcode/swiftstdlibtoolwrapper:srcs",
-        "//src/tools/xcode/xcodelocator:srcs",
         "//src/tools/xcode/xcrunwrapper:srcs",
         "//src/tools/xcode-common:srcs",
         "//src/tools/remote_worker:srcs",
+        "//tools/osx:srcs",
     ],
     visibility = ["//:__pkg__"],
 )
diff --git a/src/create_embedded_tools.sh b/src/create_embedded_tools.sh
index f8ab4c8..d482c86 100755
--- a/src/create_embedded_tools.sh
+++ b/src/create_embedded_tools.sh
@@ -54,6 +54,8 @@
     *xcode*StdRedirect.dylib) OUTPUT_PATH=tools/objc/StdRedirect.dylib ;;
     *xcode*realpath) OUTPUT_PATH=tools/objc/realpath ;;
     *xcode*xcode-locator) OUTPUT_PATH=tools/objc/xcode-locator ;;
+#    *xcode*xcode_locator.m) OUTPUT_PATH=tools/osx/xcode_locator.m ;;
+#    *tools/osx/BUILD) OUTPUT_PATH=tools/osx/BUILD ;;
     *src/tools/xcode/*) OUTPUT_PATH=tools/objc/${i##*/}.sh ;;
     *) OUTPUT_PATH=$(echo $i | sed 's_^.*bazel-out/[^/]*/bin/__') ;;
   esac
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index 95151b4..a3d9751 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -39,7 +39,7 @@
             "//src/tools/xcode/stdredirect:StdRedirect.dylib",
             "//src/tools/xcode/swiftstdlibtoolwrapper",
             "//src/tools/xcode/xcrunwrapper",
-            "//src/tools/xcode/xcodelocator:xcode-locator",
+            "//tools/osx:xcode-locator",
             "//third_party/iossim",
         ],
         "//conditions:default": [],
diff --git a/src/test/shell/bazel/bazel_apple_test.sh b/src/test/shell/bazel/bazel_apple_test.sh
index 6eb6ca2..a8e6bea 100755
--- a/src/test/shell/bazel/bazel_apple_test.sh
+++ b/src/test/shell/bazel/bazel_apple_test.sh
@@ -33,8 +33,19 @@
   # Find where Xcode 7 (any sub-version will do) is located and get the iOS SDK
   # version it contains.
   # TODO(b/27267941): This is a hack until the bug is fixed.
-  XCODE_LOCATOR="$(bazel info output_base)/external/bazel_tools/tools/objc/xcode-locator"
-  XCODE_INFO=$($XCODE_LOCATOR -v | grep -m1 7)
+  rm -rf xcodehelper
+  mkdir -p xcodehelper
+  cat > xcodehelper/BUILD <<EOF
+genrule(
+    name = "invoke_tool",
+    srcs = ["@bazel_tools//tools/osx:xcode-locator"],
+    outs = ["xcode_locations"],
+    cmd = "\$< -v > \$@",
+)
+EOF
+
+  bazel build xcodehelper:xcode_locations
+  XCODE_INFO=$(cat bazel-genfiles/xcodehelper/xcode_locations | grep -m1 7)
   XCODE_DIR=$(echo $XCODE_INFO | cut -d ':' -f3)
   XCODE_VERSION=$(echo $XCODE_INFO | cut -d ':' -f1)
   IOS_SDK_VERSION=$(DEVELOPER_DIR=$XCODE_DIR xcodebuild -sdk -version \
diff --git a/src/test/shell/bazel/bazel_objc_test.sh b/src/test/shell/bazel/bazel_objc_test.sh
index 5a80672..125392c 100755
--- a/src/test/shell/bazel/bazel_objc_test.sh
+++ b/src/test/shell/bazel/bazel_objc_test.sh
@@ -168,7 +168,7 @@
   cat >ios/BUILD <<EOF
 genrule(
     name = "invoke_tool",
-    srcs = ["@bazel_tools//tools/objc:xcode-locator"],
+    srcs = ["@bazel_tools//tools/osx:xcode-locator"],
     outs = ["tool_output"],
     cmd = "\$< > \$@",
     tags = ["requires-darwin"],
diff --git a/src/tools/xcode/xcodelocator/BUILD b/src/tools/xcode/xcodelocator/BUILD
deleted file mode 100644
index 48eb694..0000000
--- a/src/tools/xcode/xcodelocator/BUILD
+++ /dev/null
@@ -1,28 +0,0 @@
-package(default_visibility = ["//src:__subpackages__"])
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
-
-DARWIN_XCODE_LOCATOR_COMPILE_COMMAND = """
-  /usr/bin/xcrun clang -fobjc-arc -framework CoreServices \
-      -framework Foundation -o $@ $<
-"""
-
-genrule(
-    name = "xcode-locator-genrule",
-    srcs = select({
-        "//src:darwin": ["xcode_locator.m"],
-        "//src:darwin_x86_64": ["xcode_locator.m"],
-        "//conditions:default": ["xcode_locator_stub.sh"],
-    }),
-    outs = ["xcode-locator"],
-    cmd = select({
-        "//src:darwin": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
-        "//src:darwin_x86_64": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
-        "//conditions:default": "cp $< $@",
-    }),
-    local = 1,
-    output_to_bindir = 1,
-)
diff --git a/tools/BUILD b/tools/BUILD
index 360d9eb..e502539 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -20,6 +20,7 @@
         "//tools/cpp:srcs",
         "//tools/j2objc:srcs",
         "//tools/objc:srcs",
+        "//tools/osx:srcs",
         "//tools/osx/crosstool:srcs",
         "//tools/test:srcs",
         "//tools/python:srcs",
@@ -46,6 +47,7 @@
         "//tools/python:srcs",
         "//tools/test:srcs",
         "//tools/osx/crosstool:srcs",
+        "//tools/osx:srcs",
         "//tools/zip:srcs",
     ],
 )
diff --git a/tools/osx/BUILD b/tools/osx/BUILD
new file mode 100644
index 0000000..e496018
--- /dev/null
+++ b/tools/osx/BUILD
@@ -0,0 +1,45 @@
+package(default_visibility = ["//visibility:public"])
+
+filegroup(
+    name = "srcs",
+    srcs = glob(["**"] + ["**/*"]),
+)
+
+exports_files([
+    "xcode_locator.m",
+])
+
+DARWIN_XCODE_LOCATOR_COMPILE_COMMAND = """
+  /usr/bin/xcrun clang -fobjc-arc -framework CoreServices \
+      -framework Foundation -o $@ $<
+"""
+
+genrule(
+    name = "xcode-locator-genrule",
+    srcs = select({
+        ":darwin": ["xcode_locator.m"],
+        ":darwin_x86_64": ["xcode_locator.m"],
+        "//conditions:default": ["xcode_locator_stub.sh"],
+    }),
+    outs = ["xcode-locator"],
+    cmd = select({
+        ":darwin": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
+        ":darwin_x86_64": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
+        "//conditions:default": "cp $< $@",
+    }),
+    local = 1,
+    output_to_bindir = 1,
+)
+
+# TODO(cparsons): Consolidate with config_settings under //src
+config_setting(
+    name = "darwin",
+    values = {"cpu": "darwin"},
+    visibility = ["//visibility:public"],
+)
+
+config_setting(
+    name = "darwin_x86_64",
+    values = {"cpu": "darwin_x86_64"},
+    visibility = ["//visibility:public"],
+)
diff --git a/src/tools/xcode/xcodelocator/xcode_locator.m b/tools/osx/xcode_locator.m
similarity index 100%
rename from src/tools/xcode/xcodelocator/xcode_locator.m
rename to tools/osx/xcode_locator.m
diff --git a/src/tools/xcode/xcodelocator/xcode_locator_stub.sh b/tools/osx/xcode_locator_stub.sh
similarity index 100%
rename from src/tools/xcode/xcodelocator/xcode_locator_stub.sh
rename to tools/osx/xcode_locator_stub.sh