#!/bin/sh
#
# This is make+. Make+ is a set of scripts which enhance GNU make and
# let you build RPMs, and other packages types with just one control
# file. Read more at http://www.annexia.org/freeware/makeplus/
#
# The original author is Richard W.M. Jones <rich@annexia.org>.
#
# This software has been explicitly placed in the PUBLIC DOMAIN. You
# do not need any sort of license or agreement to use or copy this
# software. You may also copyright this software yourself, and/or
# relicense it under any terms you want, at any time and at no cost.
# This allows you (among other things) to include this software with
# other packages so that the user does not need to download and
# install make+ separately.
# The control file. XXX Parse and remove the -f option.
_mp_makefile="Makefile+"; export _mp_makefile
# Check the control file exists in the current directory. You can only
# run make+ from the top level source directory, the one which contains
# Makefile+. You should not be doing anything recursive with make+.
if [ ! -r "$_mp_makefile" ]; then
echo "make+: $_mp_makefile: file not found or not readable"
echo "You should always run make+ from the top-level source"
echo "directory, the one which contains the Makefile+ file."
exit 1
fi
# Find a suitable copy of GNU make. You can override this test
# by setting the $MAKE option.
if [ "x$MAKE" = "x" ]; then
if sh -c 'gmake --version' 2>/dev/null | grep -q 'GNU Make'; then
MAKE=gmake
elif sh -c 'make --version' 2>/dev/null | grep -q 'GNU Make'; then
MAKE=make
else
echo "make+: I cannot find a copy of GNU make. Please set the \$MAKE"
echo "environment variable to point to the GNU make binary."
fi
fi
# Check for a sufficiently recent version of GNU make.
if $MAKE --version | grep -q '^GNU Make .*3\.'; then
# make is up-to-date
:
else
echo "make+: Your 'make' is not GNU make (or not a recent version)"
echo "Please install a recent version of GNU make."
exit 1
fi
# Check that either MAKEPLUS_HOME or /etc/make+.conf exists, and run it.
if [ "x$MAKEPLUS_HOME" = "x" ]; then
for d in /etc /usr/etc /usr/local/etc; do
if [ -f $d/make+.conf ]; then
. $d/make+.conf
break
fi
done
fi
# Check MAKEPLUS_HOME looks reasonable.
if [ ! -f "$MAKEPLUS_HOME/main.mk" ]; then
echo "make+: MAKEPLUS_HOME environment variable not set correctly."
echo "This environment variable should point to the installation"
echo "directory for make+ (eg. /usr/share/makeplus). You would normally"
echo "do this by creating a file called /etc/make+.conf containing"
echo " export MAKEPLUS_HOME=/usr/share/makeplus"
echo "or you can set it as an environment variable each time you run"
echo "make+."
exit 1
fi
# Set MAKEFILES.
MAKEFILES=$MAKEPLUS_HOME/main.mk; export MAKEFILES
# Construct a suitable target architecture.
# XXX Cross compiling.
arch=`uname -m`
os=`uname -s | tr 'A-Z' 'a-z'`
hw=`uname -i 2>/dev/null || echo "unknown"`
_mp_builddir=build-$arch-$hw-$os; export _mp_builddir
# Create the build directory.
# XXX
mkdir -p $_mp_builddir
cd $_mp_builddir
# Create the directories under the build directory.
(cd .. && find . -type d -a \! -name CVS) | grep -v $_mp_builddir |
xargs mkdir -p
# Run GNU make from the build directory.
$MAKE -f ../$_mp_makefile "$@"
syntax highlighted by Code2HTML, v. 0.9.1