#! /bin/sh # # Copyright (C) 1993, Digital Equipment Corporation # All rights reserved. # See the file COPYRIGHT for a full description. # # Last modified on Mon Nov 1 10:48:44 PST 1993 by kalsow # modified on Mon May 24 11:21:16 PDT 1993 by mjordan quake="/ex32/usr/local/bin/quake" template_dir="/ex32/usr/local/lib/m3/pkg/m3build/templates" template="LINUX" build_dir="LINUX" start_dir="." quake_args="" targets="" src_ok="0" use_overrides="0" verbose="n" # # parse the command line # while case "$1" in "") break;; -b) shift ; build_dir="$1" ; template="$1" ;; -T) shift ; template_dir="$1" ;; -F) shift ; quake_args="$quake_args $1" ;; -S) src_ok="1" ;; -O) use_overrides="1" ;; -d) shift ; start_dir="$1" ;; -v) verbose="y" ;; -*) quake_args="$quake_args $1" ;; *) targets="$targets $1" ;; esac do shift done # # get to the initial directory # cd "$start_dir" start_dir=`pwd` base=`basename "$start_dir"` parent=`cd .. ; pwd` # # move to the directory with derived objects # if [ $src_ok = "0" ] then if [ $base = "src" ] then echo "m3build: use -S to build in the 'src' directory" exit 1 elif [ $base = $build_dir ] then package_dir=$parent elif [ -d "$build_dir" ] then package_dir="$start_dir" echo "--- building in $build_dir ---" cd "$build_dir" elif [ -d src -a -r "$template_dir/$template" ] then package_dir="$start_dir" echo "mkdir $build_dir" mkdir "$build_dir" echo "--- building in $build_dir ---" cd "$build_dir" else echo "m3build: no build directory $build_dir" exit 1 fi else # assume that we're in an immediate subdirectory of the package package_dir="$parent" build_dir="$base" fi package=`basename "$package_dir"` # # check for a makefile # if [ -r m3makefile ] then makefile="$package_dir/$build_dir/m3makefile" overrides="$package_dir/$build_dir/m3overrides" elif [ -r "../src/m3makefile" ] then makefile="$package_dir/src/m3makefile" overrides="$package_dir/src/m3overrides" else echo "m3build: cannot locate an m3makefile" exit 1 fi # # check for an overrides file # if [ -r "$overrides" ] then if [ "$use_overrides" != "0" ] then quake_args="$quake_args $overrides" else echo "m3build: ignoring $overrides" fi else if [ "$use_overrides" != "0" ] then echo "m3build: missing $overrides" fi fi # # did we get an explicit target? # if [ -z "$targets" ] then targets="all" fi # # prepare for the worst... # # trap 'exit 1' 1 2 3 15 # # finally, evaulate the makefile once for each target # for target in $targets do if [ x"$verbose" = xy ] then echo "$quake -D_$target -DPACKAGE_DIR=$package_dir -DPACKAGE=$package -DBUILD_DIR=$build_dir $template_dir/$template $quake_args $makefile" fi if $quake -D_$target -DPACKAGE_DIR=$package_dir -DPACKAGE=$package -DBUILD_DIR=$build_dir $template_dir/$template $quake_args $makefile then : else exit 1 fi done