aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/xcode
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-05-02 18:25:41 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-05-03 08:37:28 +0000
commit17bc4dc980df8e8cc3dfef7c1d21e0400d7ebdcb (patch)
tree0e2f2b9c02671d38fc5f1100de0702ebceb11d12 /src/tools/xcode
parent910a907e643d3b1320c9ebd6b2b339848089acce (diff)
-- MOS_MIGRATED_REVID=121291329
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 2dfd92e84f..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}")