blob: daff202fd2626b9154564b01498174e3321bc013 [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Wrap all the old style config scripts.
# We'll be working with the env:
# argv[0]: armv7a-cros-linux-gnueabi-ncurses5-config
# CHOST: armv7a-cros-linux-gnueabi
# SYSROOT: /build/arm-generic
# See if there's a wrapper in the SYSROOT for us to execute, let's do
# that, and then filter the output for any -I/-L paths that'd screw us up.
wrap=${0##*/}
if [[ -z ${CHOST} ]]; then
# Let's figure out the answer from $0. Do it piece by piece as
# we cannot assume the number of components in the target tuple
# or in the config script name. Tuples can have 1, 2, 3, or 4
# components, and config scripts can have as many as they want
# (although most of the time, it's just 2).
parts=( ${wrap//-/ } )
i=$(( ${#parts[@]} - 1 ))
cfg=${parts[${i}]}
while [[ $(( --i )) -ge 0 ]]; do
cfg="${parts[${i}]}-${cfg}"
if [[ -e ${SYSROOT}/usr/bin/${cfg} ]]; then
CHOST=${wrap%-${cfg}}
type -P ${CHOST}-gcc >/dev/null && break
unset CHOST
fi
done
else
cfg=${wrap#${CHOST}-}
fi
if [[ -z ${CHOST} ]] || [[ -z ${SYSROOT} ]]; then
echo "${wrap}: please set CHOST/SYSROOT in the env" 1>&2
exit 1
fi
PATH="${SYSROOT}/usr/bin:${PATH}"
# Some wrappers will dynamically figure out where they're being run from,
# and then output a full path -I/-L path based on that. So we trim any
# expanded sysroot paths that might be in the output already to avoid
# having it be -L${SYSROOT}${SYSROOT}/usr/lib.
set -o pipefail
exec ${cfg} "$@" | sed -r "s:(-[IL])(${SYSROOT})?:\1${SYSROOT}:g"