aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/xcode
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-05-23 19:23:24 +0000
committerGravatar Yue Gan <yueg@google.com>2016-05-24 11:57:21 +0000
commit1f67a7be7282310783728c636add4345ba8e2c16 (patch)
tree3b8fe8f98d915e31b278e6a25d2220e1c7c7f5a9 /src/tools/xcode
parenta385d760f27e38140181ec787e19fed9747617a0 (diff)
libtool wrapper script to isolate the unfortunate hacks we must make to get around apple's buggy libtool tool
-- MOS_MIGRATED_REVID=123024674
Diffstat (limited to 'src/tools/xcode')
-rw-r--r--src/tools/xcode/libtool/BUILD14
-rw-r--r--src/tools/xcode/libtool/README9
-rwxr-xr-xsrc/tools/xcode/libtool/libtool.sh31
3 files changed, 54 insertions, 0 deletions
diff --git a/src/tools/xcode/libtool/BUILD b/src/tools/xcode/libtool/BUILD
new file mode 100644
index 0000000000..1d7fb5878f
--- /dev/null
+++ b/src/tools/xcode/libtool/BUILD
@@ -0,0 +1,14 @@
+package(default_visibility = ["//src:__subpackages__"])
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+sh_binary(
+ name = "libtool",
+ srcs = ["libtool.sh"],
+ data = [
+ "//src/tools/xcode/xcrunwrapper",
+ ],
+)
diff --git a/src/tools/xcode/libtool/README b/src/tools/xcode/libtool/README
new file mode 100644
index 0000000000..7b817537fb
--- /dev/null
+++ b/src/tools/xcode/libtool/README
@@ -0,0 +1,9 @@
+libtool.sh runs the command passed to it using "xcrun libtool".
+
+It creates symbolic links for all input files with a content-hash appended
+to their original name (foo.o becomes foo_{md5sum}.o). This is to circumvent
+a bug in the original tool that arises when two input files have the same
+base name (even if they are in different directories).
+
+xcrun only runs on Darwin, so libtool.sh only runs on Darwin.
+
diff --git a/src/tools/xcode/libtool/libtool.sh b/src/tools/xcode/libtool/libtool.sh
new file mode 100755
index 0000000000..c72f229b00
--- /dev/null
+++ b/src/tools/xcode/libtool/libtool.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright 2016 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# libtool.sh runs the command passed to it using "xcrunwrapper libtool".
+#
+# It creates symbolic links for all input files with a content-hash appended
+# to their original name (foo.o becomes foo_{md5sum}.o). This is to circumvent
+# a bug in the original tool that arises when two input files have the same
+# base name (even if they are in different directories).
+
+set -eu
+
+MY_LOCATION=${MY_LOCATION:-"$0.runfiles/bazel_tools/tools/objc"}
+WRAPPER="${MY_LOCATION}/xcrunwrapper.sh"
+
+# TODO(b/28347228): When all callers of "xcrunwrapper libtool" are migrated to
+# using this script, move the symlinking behavior to this script.
+"${WRAPPER}" libtool "$@"