#!/bin/sh # # kmk target [usual kernel make arguments] # # export LANG=C native() { for i; do eval "$i() { ARCH=$i; }"; done; } mapped() { eval "$1() { ARCH=$2; CROSS_COMPILE=$3-; }"; } normal() { for i; do mapped $i $i $i-linux; done; } uml() { $1; SUBARCH=$ARCH; ARCH=um; } missing() { for i; do eval "$1() { echo no toolchain for $1; exit 1; }"; done; } test -e /etc/kmk.rc && . /etc/kmk.rc test -e ~/.kmkrc && . ~/.kmkrc target=$1 shift # build tree BUILDDIR=$BUILDBASE/$target # target description CONFIG=$CONFIGDIR/$target test -e $CONFIG || { echo unknown target: $target; exit 1; } # OK, get its definitions. SUBARCH= EXTRA= . $CONFIG # decide whether to filter pathnames in the output, decide where we need # FIXED_CONF=... in make arguments. FIXED_CONF= filter="sed -u -e" filter_arg="s^`/bin/pwd`/^^g" case "$*" in *V=1* | oldconfig | menuconfig) filter=;; allmodconfig) FIXED_CONF="FIXED_CONF=$CONFIG" filter=;; -n) filter="sed -ne" filter_arg="/^set -e/s/';.*/'/p" esac if [ $SUBARCH ]; then SUBARCH=SUBARCH=$SUBARCH # yeeecch fi run_make() { make O=`pwd`/$BUILDDIR ARCH=$ARCH $SUBARCH \ CROSS_COMPILE=$CROSS_COMPILE $FIXED_CONF $EXTRA "$@" 2>&1 } if [ -n "$filter" ]; then run_make "$@" | $filter "$filter_arg" else run_make "$@" fi