aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/xcode
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-05-04 15:36:15 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-05-04 18:32:11 +0000
commitf8f1be3626edb6244eebe48fa6f36bea6275d72c (patch)
treee77f22cf0557577df69dd95ab2aa6abce734c39d /src/tools/xcode
parent54fc221026b9dafec6aa0e65ce01aa90d3be2747 (diff)
*** Reason for rollback *** Seems to have broken exoblaze builds. https://paste.googleplex.com/5185376662585344 happens when rebuilding after a trivial change (removed a single method). *** Original change description *** Rollforward of "Workaround for duplicate input basename bug in apple's libtool", with regex fix -- MOS_MIGRATED_REVID=121483994
Diffstat (limited to 'src/tools/xcode')
-rwxr-xr-xsrc/tools/xcode/xcrunwrapper/xcrunwrapper.sh76
1 files changed, 5 insertions, 71 deletions
diff --git a/src/tools/xcode/xcrunwrapper/xcrunwrapper.sh b/src/tools/xcode/xcrunwrapper/xcrunwrapper.sh
index ae5772255c..dfb36aa4ef 100755
--- a/src/tools/xcode/xcrunwrapper/xcrunwrapper.sh
+++ b/src/tools/xcode/xcrunwrapper/xcrunwrapper.sh
@@ -14,29 +14,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# xcrunwrapper runs the command passed to it using xcrun. The first arg
-# passed is the name of the tool to be invoked via xcrun. (For example, libtool
-# or clang).
-# xcrunwrapper replaces __BAZEL_XCODE_DEVELOPER_DIR__ with $DEVELOPER_DIR (or
-# reasonable default) and __BAZEL_XCODE_SDKROOT__ with a valid path based on
-# SDKROOT (or reasonable default).
+# xcrunwrapper runs the command passed to it using xcrun.
+# It replaces __BAZEL_XCODE_DEVELOPER_DIR__ with $DEVELOPER_DIR (or reasonable
+# default) and __BAZEL_XCODE_SDKROOT__ with a valid path based on SDKROOT (or
+# reasonable default).
# These values (__BAZEL_XCODE_*) are a shared secret withIosSdkCommands.java.
set -eu
-TOOLNAME=$1
-shift
-
-# Creates a symbolic link to the input argument file and returns the symlink
-# file path.
-function hash_objfile() {
- ORIGINAL_NAME="$1"
- ORIGINAL_HASH="$(/sbin/md5 -q "${ORIGINAL_NAME}")"
- SYMLINK_NAME="${ORIGINAL_NAME%.o}_${ORIGINAL_HASH}.o"
- ln -s "$(basename "$ORIGINAL_NAME")" "$SYMLINK_NAME"
- echo "$SYMLINK_NAME"
-}
-
# Pick values for DEVELOPER_DIR and SDKROOT as appropriate (if they weren't set)
WRAPPER_DEVDIR="${DEVELOPER_DIR:-}"
@@ -62,59 +47,8 @@ if [[ -z "${WRAPPER_SDKROOT:-}" ]] ; then
WRAPPER_SDKROOT="$(/usr/bin/xcrun --show-sdk-path --sdk ${WRAPPER_SDK})"
fi
-ARGS=("$TOOLNAME")
-while [[ $# -gt 0 ]]; do
- ARG="$1"
- shift
-
- # Libtool artifact symlinking. Apple's libtool has a bug when there are two
- # input files with the same basename. We thus create symlinks that are named
- # with a hash suffix for each input, and pass them to libtool.
- # See b/28186497.
- # TODO(b/28347228): Handle this in a separate wrapper.
- if [ "$TOOLNAME" = "libtool" ] ; then
- case "${ARG}" in
- # Filelist flag, need to symlink each input in the contents of file and
- # pass a new filelist which contains the symlinks.
- -filelist)
- ARGS+=("${ARG}")
- ARG="$1"
- shift
- HASHED_FILELIST="${ARG//.objlist/_hashes.objlist}"
- while read INPUT_FILE || [ -n "$INPUT_FILE" ]; do
- echo "$(hash_objfile "${INPUT_FILE}")" >> "$HASHED_FILELIST"
- done < "${ARG}"
- ARGS+=("${HASHED_FILELIST}")
- ;;
- # Flags with no args
- -static|-s|-a|-c|-L|-T|-no_warning_for_no_symbols)
- ARGS+=("${ARG}")
- ;;
- # Single-arg flags
- -o|-arch_only|-syslibroot)
- ARGS+=("${ARG}")
- ARG="$1"
- shift
- ARGS+=("${ARG}")
- ;;
- # Any remaining flags are unexpected and may ruin flag parsing.
- -*)
- echo "Unrecognized libtool flag ${ARG}"
- exit 1
- ;;
- # Remaining args are input objects
- *)
- ARGS+=("$(echo "$(hash_objfile "${ARG}")")")
- ;;
- esac
- else
- ARGS+=("${ARG}")
- fi
-done
-
-# Subsitute toolkit path placeholders.
UPDATEDARGS=()
-for ARG in "${ARGS[@]}" ; do
+for ARG in "$@" ; do
ARG="${ARG//__BAZEL_XCODE_DEVELOPER_DIR__/${WRAPPER_DEVDIR}}"
ARG="${ARG//__BAZEL_XCODE_SDKROOT__/${WRAPPER_SDKROOT}}"
UPDATEDARGS+=("${ARG}")