| #!/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" |