Files
mercury/scripts/mmake.in
Fergus Henderson 04b720630b Update the copyright messages so that (a) they contain the correct years
and (b) they say "Copyright (C) ... _The_ University of Melbourne".
1997-07-27 15:09:59 +00:00

143 lines
3.4 KiB
Bash

#! /bin/sh
# @configure_input@
#---------------------------------------------------------------------------#
# Copyright (C) 1995-1997 The University of Melbourne.
# This file may only be copied under the terms of the GNU General
# Public License - see the file COPYING in the Mercury distribution.
#---------------------------------------------------------------------------#
#
# mmake - Mercury Make.
#
# Type mmake -h for help.
#
#-----------------------------------------------------------------------------#
# IMPORTANT: the manpage is produced automatically from this help
# message, so if you change the help message, don't forget to check
# that the manpage still looks OK.
Help="\
Name: mmake -- Mercury Make
Usage: mmake [<mmake options>] [-- <make options>] <target>...
Options:
-s, --save-makefile:
Save the generated makefile to \`Mmake.makefile'.
This is useful for tracking down syntax errors in
your Mmake file.
-v, --verbose:
Print verbose progress messages.
-h, --help:
Print this usage message.
Targets:
<module>.depend:
Make the file \`<module>.dep'. This step is required
in preparation for the targets below.
<module>:
Compile and link a Mercury program with main module
\`<module>.m' to produce an executable.
<module>.nu:
Compile and link a Mercury program with NU-Prolog
rather than with the Mercury compiler.
<module>.sicstus:
Compile and link a Mercury program with SICStus Prolog
rather than with the Mercury compiler.
<module>.nu.debug:
<module>.sicstus.debug:
Debugging versions of the above.
clean:
Remove intermediate files.
realclean:
Remove all automatically-generated files: intermediate files,
dependency files, and executables.
"
MMAKE_MAKE=${MMAKE_MAKE=@GNU_MAKE@}
MMAKE_DIR=${MMAKE_DIR=@LIBDIR@/mmake}
MMAKE_VARS=${MMAKE_VARS=$MMAKE_DIR/Mmake.vars}
MMAKE_RULES=${MMAKE_RULES=$MMAKE_DIR/Mmake.rules}
MERCURY_INT_DIR=${MERCURY_INT_DIR=@LIBDIR@/ints}
MERCURY_DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
MMAKE=$0
verbose=false
save_makefile=false
while [ $# -gt 0 ]; do
case $1 in
-h|--help)
echo "$Help"
exit 0
;;
-s|--save-makefile)
save_makefile=true
MMAKE="$MMAKE $1"
shift
;;
-v|--verbose)
verbose=true
MMAKE="$MMAKE $1"
shift
;;
--)
MMAKE="$MMAKE $1"
shift
break
;;
*)
break
;;
esac
done
if [ -f Mmakefile ]; then
mmake="Mmakefile"
else
if [ -f Mmake ]; then
mmake="Mmake"
else
mmake=""
fi
fi
if [ "`echo *.dep`" = "*.dep" ]; then
deps=""
else
deps="*.dep"
fi
if [ "`echo *.d`" = "*.d" ]; then
ds=""
else
ds="*.d"
fi
if $save_makefile; then
tmp=Mmake.makefile
else
tmp=/tmp/mmake.$$
trap 'status=$?; rm -f $tmp; exit $status' 0 1 2 3 13 15
fi
MMAKE_MAKE_CMD="${MMAKE_MAKE} -f $tmp -r"
if $verbose; then
echo MMAKE=$MMAKE
echo export MMAKE
echo MMAKE_MAKE_CMD=$MMAKE_MAKE_CMD
echo export MMAKE_MAKE_CMD
echo MERCURY_INT_DIR=$MERCURY_INT_DIR
echo export MERCURY_INT_DIR
echo MERCURY_DEFAULT_GRADE=$MERCURY_DEFAULT_GRADE
echo export MERCURY_DEFAULT_GRADE
echo cat ${MMAKE_VARS} $deps $ds $mmake ${MMAKE_RULES} ">" $tmp
echo ${MMAKE_MAKE} -f $tmp -r "$@"
fi
export MMAKE
export MMAKE_MAKE_CMD
export MERCURY_INT_DIR
export MERCURY_DEFAULT_GRADE
cat ${MMAKE_VARS} $deps $ds $mmake ${MMAKE_RULES} > $tmp
case $# in
# Note that we can't use `exec' here, because if we did that,
# that `trap' code which removes $tmp would never get executed.
0) ${MMAKE_MAKE} -f $tmp -r ;;
*) ${MMAKE_MAKE} -f $tmp -r "$@" ;;
esac