mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 17:33:38 +00:00
Rename *.sh as *.in.
scripts: Rename *.sh as *.in. The scripts are now made by configure, not by make/mmake in the scripts directory.
This commit is contained in:
@@ -19,15 +19,6 @@ SCRIPTS = mmake mc mcn mcs mod2c mod2init mgnuc ml mint mnc mnl mnp msc msl \
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
.SUFFIXES: .sh
|
||||
.sh:
|
||||
sed -e "s^@LIBDIR@^$(INSTALL_LIBDIR)^g" \
|
||||
-e "s^@FULLARCH@^$(FULLARCH)^g" \
|
||||
$< > $@
|
||||
chmod +x $@
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
.PHONY: all
|
||||
all: $(SCRIPTS)
|
||||
|
||||
@@ -52,6 +43,6 @@ clean_progs: clean_scripts
|
||||
|
||||
.PHONY: clean_scripts
|
||||
clean_scripts:
|
||||
for file in *.sh; do rm -f `basename $$file .sh`; done
|
||||
for file in *.in; do rm -f `basename $$file .in`; done
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
20
scripts/mc.in
Normal file
20
scripts/mc.in
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
#
|
||||
# MC - Mercury Compiler.
|
||||
#
|
||||
# Use `mc -h' for help.
|
||||
#
|
||||
# Environment variables: MERCURY_INT_DIR, MERCURY_DEP_DIR, MERCURY_C_INCL_DIR,
|
||||
# MERCURY_COMPILER.
|
||||
|
||||
INTDIR=${MERCURY_INT_DIR=@LIBDIR@/ints}
|
||||
DEPDIR=${MERCURY_DEP_DIR=@LIBDIR@/deps}
|
||||
C_INCL=${MERCURY_C_INCL_DIR=@LIBDIR@/inc}
|
||||
MC=${MERCURY_COMPILER="@LIBDIR@/bin/@FULLARCH@/mercury_compile"}
|
||||
|
||||
exec $MC -- -I "$INTDIR" -I "$DEPDIR" --c-include-directory "$C_INCL" "$@"
|
||||
20
scripts/mcn.in
Normal file
20
scripts/mcn.in
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
#
|
||||
# MCN - Mercury Compiler (compiled with NU-Prolog).
|
||||
#
|
||||
# Use `mcn -h' for help.
|
||||
#
|
||||
# Environment variables: MERCURY_INT_DIR, MERCURY_DEP_DIR, MERCURY_C_INCL_DIR,
|
||||
# MERCURY_COMPILER.
|
||||
|
||||
INTDIR=${MERCURY_INT_DIR=@LIBDIR@/ints}
|
||||
DEPDIR=${MERCURY_DEP_DIR=@LIBDIR@/deps}
|
||||
C_INCL=${MERCURY_C_INCL_DIR=@LIBDIR@/inc}
|
||||
MC=${MERCURY_COMPILER=@LIBDIR@/nuprolog/@FULLARCH@/mercury_compile.nu}
|
||||
|
||||
exec $MC -I "$INTDIR" -I "$DEPDIR" --c-include-directory "$C_INCL" "$@"
|
||||
20
scripts/mcs.in
Normal file
20
scripts/mcs.in
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
#
|
||||
# MCS - Mercury Compiler, compiled with Sicstus
|
||||
#
|
||||
# Use `mcs -h' for help.
|
||||
#
|
||||
# Environment variables: MERCURY_INT_DIR, MERCURY_DEP_DIR, MERCURY_C_INCL_DIR,
|
||||
# MERCURY_COMPILER_SICSTUS.
|
||||
|
||||
INTDIR=${MERCURY_INT_DIR=@LIBDIR@/ints}
|
||||
DEPDIR=${MERCURY_DEP_DIR=@LIBDIR@/deps}
|
||||
C_INCL=${MERCURY_C_INCL_DIR=@LIBDIR@/inc}
|
||||
MCS=${MERCURY_COMPILER_SICSTUS=@LIBDIR@/sicstus/@FULLARCH@/mercury_compile.sicstus}
|
||||
|
||||
exec $MCS -I "$INTDIR" -I "$DEPDIR" --c-include-directory "$C_INCL" "$@"
|
||||
49
scripts/mercury_update_interface.in
Normal file
49
scripts/mercury_update_interface.in
Normal file
@@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
#
|
||||
# MERCURY_UPDATE_INTERFACE
|
||||
#
|
||||
# usage:
|
||||
# mercury_update_interface [-v] filename
|
||||
#
|
||||
# Moves `filename.tmp' to `filename', but only if necessary:
|
||||
# if they are identical, then `filename.tmp' is simply removed,
|
||||
# and the time-stamp is left unaltered.
|
||||
#
|
||||
# If the `-v' (verbose) option is specified, then appropriate progress messages
|
||||
# will be printed.
|
||||
#
|
||||
# Enviroment variables: none.
|
||||
|
||||
PATH=/bin:/usr/bin
|
||||
|
||||
verbose=true
|
||||
|
||||
if [ $# -ge 1 ] && [ "$1" = "-v" ]; then
|
||||
verbose=true
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Usage: `basename $0` filename" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
filename="$1"
|
||||
|
||||
if [ ! -f "$filename" ]
|
||||
then
|
||||
$verbose && echo "creating \`$filename'." 1>&2
|
||||
mv -f "$filename.tmp" "$filename"
|
||||
elif cmp -s "$filename.tmp" "$filename"
|
||||
then
|
||||
$verbose && echo "\`$filename' has not changed." 1>&2
|
||||
rm -f "$filename.tmp"
|
||||
else
|
||||
$verbose && echo "\`$filename' has changed." 1>&2
|
||||
mv -f "$filename.tmp" "$filename"
|
||||
fi
|
||||
150
scripts/mgnuc.in
Normal file
150
scripts/mgnuc.in
Normal file
@@ -0,0 +1,150 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# MGNUC - Mercury GNU C
|
||||
#
|
||||
# Usage: mgnuc [-v|--verbose] [-s<grade>] -- [<gcc options>] files...
|
||||
#
|
||||
# -v, --verbose
|
||||
# Echo gcc command before executing it.
|
||||
# -s<grade>
|
||||
# Select optimization/debug/gc options according to <grade>, which
|
||||
# must be one of debug, none, jump, asm_jump, reg, fast, or asm_fast,
|
||||
# or one of those with .gc appended.
|
||||
#
|
||||
# This runs gcc with all warnings enabled, except for the following
|
||||
# exceptions:
|
||||
#
|
||||
# -Wredundant-decls causes too many complaints in system header files
|
||||
# -Wconversion really only intended to help people using `unprotoize'
|
||||
# -Waggregate-return not useful, IMHO
|
||||
#
|
||||
# -Wcast-align causes redundant warnings in memory.c
|
||||
# -pedantic causes unsuppressable warnings about LVALUE_CAST()
|
||||
# -Wnested-externs causes unsuppressable warnings about callentry()
|
||||
# -Wid-clash-31 causes warnings about entry_mercury__xxx ...
|
||||
# -Wenum-clash is for C++ only
|
||||
# -Wunused causes various spurious warnings
|
||||
|
||||
C_INCL_DIR=${MERCURY_C_INCL_DIR=@LIBDIR@/inc}
|
||||
|
||||
CHECK_OPTS="-ansi
|
||||
-Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wtraditional -Wshadow
|
||||
-Wstrict-prototypes -Wmissing-prototypes -Wno-unused"
|
||||
OPT_OPTS="-O2 -fomit-frame-pointer -DSPEED"
|
||||
OPT_OPTS="-O2 -g -DSPEED"
|
||||
DEBUG_OPTS="-g"
|
||||
|
||||
grade=asm_fast.gc
|
||||
verbose=false
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
-v|--verbose)
|
||||
verbose=true
|
||||
shift
|
||||
;;
|
||||
-s)
|
||||
shift
|
||||
grade="$1";
|
||||
shift
|
||||
;;
|
||||
-s*)
|
||||
grade="` expr $1 : '-s\(.*\)' `"
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
case "$grade" in
|
||||
*.gc) GC_OPTS="-DCONSERVATIVE_GC -DTAGBITS=0"
|
||||
grade="` expr $grade : '\(.*\).gc' `"
|
||||
;;
|
||||
*)
|
||||
GC_OPTS=""
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$grade" in
|
||||
asm_fast)
|
||||
GRADE_OPTS="$OPT_OPTS -DUSE_GCC_GLOBAL_REGISTERS
|
||||
-DUSE_ASM_LABELS -DUSE_GCC_NONLOCAL_GOTOS"
|
||||
;;
|
||||
fast)
|
||||
GRADE_OPTS="$OPT_OPTS
|
||||
-DUSE_GCC_GLOBAL_REGISTERS -DUSE_GCC_NONLOCAL_GOTOS"
|
||||
;;
|
||||
reg)
|
||||
GRADE_OPTS="$OPT_OPTS
|
||||
-DUSE_GCC_GLOBAL_REGISTERS"
|
||||
;;
|
||||
asm_jump)
|
||||
GRADE_OPTS="$OPT_OPTS
|
||||
-DUSE_ASM_LABELS -DUSE_GCC_NONLOCAL_GOTOS"
|
||||
;;
|
||||
jump)
|
||||
GRADE_OPTS="$OPT_OPTS
|
||||
-DUSE_GCC_NONLOCAL_GOTOS"
|
||||
;;
|
||||
none)
|
||||
GRADE_OPTS="$OPT_OPTS"
|
||||
;;
|
||||
init)
|
||||
echo "$0: the \`-s init' option is no longer supported" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
debug)
|
||||
GRADE_OPTS="$DEBUG_OPTS"
|
||||
;;
|
||||
*)
|
||||
echo "$0: invalid grade \`$grade'" 1>&2;
|
||||
exit 1
|
||||
esac
|
||||
|
||||
ARCH_OPTS=""
|
||||
case @FULLARCH@ in
|
||||
mips-sgi-irix5*)
|
||||
# nonlocal gotos don't work with PIC, which is the
|
||||
# default for Irix 5, so if nonlocal gotos are enabled
|
||||
# we need to disable PIC with -non_shared.
|
||||
case $GRADE_OPTS in
|
||||
*-DUSE_GCC_NONLOCAL_GOTOS*)
|
||||
ARCH_OPTS=-non_shared
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
HOST_OPTS=""
|
||||
case "`hostname`" in
|
||||
cadillac.*)
|
||||
GCC=/usr/local/bin/gcc ;;
|
||||
kryten.*)
|
||||
GCC=/usr/local/contrib/bin/gcc
|
||||
HOST_OPTS="-msupersparc" ;;
|
||||
*)
|
||||
GCC=gcc
|
||||
esac
|
||||
|
||||
if [ "`uname -r -s`" = "SunOS 4.1.2" ]; then
|
||||
# the header files on cadillac are stuffed, so don't
|
||||
# enable any warnings
|
||||
CHECK_OPTS=
|
||||
fi
|
||||
if $verbose; then
|
||||
echo $GCC -I $C_INCL_DIR $ARCH_OPTS $HOST_OPTS $CHECK_OPTS \
|
||||
$GRADE_OPTS $GC_OPTS "$@"
|
||||
fi
|
||||
exec $GCC -I $C_INCL_DIR $ARCH_OPTS $HOST_OPTS $CHECK_OPTS \
|
||||
$GRADE_OPTS $GC_OPTS "$@"
|
||||
32
scripts/mint.in
Normal file
32
scripts/mint.in
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
#
|
||||
# mint - Mercury interface browser.
|
||||
#
|
||||
# Usage: mint module-name ...
|
||||
|
||||
INTDIR=${MERCURY_INT_DIR=@LIBDIR@/ints}
|
||||
|
||||
exit_status=0
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
echo "usage: `basename $0` module-name ..." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for arg in "$@"; do
|
||||
module="`basename $arg .nl`"
|
||||
file="$INTDIR/$module.int"
|
||||
if [ -r "$file" ]; then
|
||||
${PAGER=more} "$file"
|
||||
else
|
||||
echo "`basename $0`: no interface file for \`$module'." 1>&2
|
||||
exit_status=1
|
||||
fi
|
||||
done
|
||||
exit $exit_status
|
||||
90
scripts/ml.in
Normal file
90
scripts/ml.in
Normal file
@@ -0,0 +1,90 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
#
|
||||
# ML - Mercury Linker.
|
||||
#
|
||||
# Invokes GCC with the appropriate options to link in the Mercury library.
|
||||
#
|
||||
# Usage: ml [<ml options>] [<gcc options] files...
|
||||
# Options:
|
||||
# -v, --verbose
|
||||
# Echo gcc command line before executing it
|
||||
# -s <grade>
|
||||
# Specify which grade of the Mercury library to link with.
|
||||
# Defaults to `asm_fast.gc'.
|
||||
#
|
||||
# Environment variables: MERCURY_C_LIB_DIR
|
||||
|
||||
LIBDIR=${MERCURY_C_LIB_DIR=@LIBDIR@/lib}
|
||||
verbose=false
|
||||
GRADE=asm_fast.gc
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
-v|--verbose)
|
||||
verbose=true
|
||||
shift ;;
|
||||
-s)
|
||||
shift
|
||||
GRADE="$1"
|
||||
shift ;;
|
||||
--)
|
||||
shift
|
||||
break ;;
|
||||
-static)
|
||||
break ;;
|
||||
-s*)
|
||||
GRADE="` expr $1 : '-s\(.*\)' `"
|
||||
shift ;;
|
||||
*)
|
||||
break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
case "$GRADE" in
|
||||
*.gc)
|
||||
LIBGC="-lgc"
|
||||
;;
|
||||
*)
|
||||
LIBGC=
|
||||
;;
|
||||
esac
|
||||
|
||||
case @FULLARCH@ in
|
||||
*-solaris*)
|
||||
LIBDIR_OPTS="
|
||||
-R@LIBDIR@/lib/@FULLARCH@ -L$LIBDIR/@FULLARCH@
|
||||
-R@LIBDIR@/lib/$GRADE/@FULLARCH@ -L$LIBDIR/$GRADE/@FULLARCH@
|
||||
"
|
||||
;;
|
||||
*-sgi-irix5*)
|
||||
LIBDIR_OPTS="
|
||||
-Wl,-rpath,@LIBDIR@/lib/@FULLARCH@:@LIBDIR@/lib/$GRADE/@FULLARCH@
|
||||
-L$LIBDIR/@FULLARCH@ -L$LIBDIR/$GRADE/@FULLARCH@
|
||||
"
|
||||
;;
|
||||
*)
|
||||
LIBDIR_OPTS="
|
||||
-L$LIBDIR/@FULLARCH@
|
||||
-L$LIBDIR/$GRADE/@FULLARCH@
|
||||
"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "`hostname`" in
|
||||
cadillac.dd.citri.edu.au)
|
||||
GCC=/usr/local/bin/gcc ;;
|
||||
kryten.cs.mu.OZ.AU)
|
||||
GCC=/usr/local/bin/gcc ;;
|
||||
*)
|
||||
GCC=${GCC=gcc}
|
||||
esac
|
||||
|
||||
if $verbose; then
|
||||
echo $GCC "$@" $LIBDIR_OPTS -lmer -lmercury -lmer $LIBGC
|
||||
fi
|
||||
exec $GCC "$@" $LIBDIR_OPTS -lmer -lmercury -lmer $LIBGC
|
||||
110
scripts/mmake.in
Normal file
110
scripts/mmake.in
Normal file
@@ -0,0 +1,110 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
MAKE=${MMAKE_MAKE=make}
|
||||
MMAKE_VARS=${MMAKE_VARS=@LIBDIR@/mmake/Mmake.vars}
|
||||
MMAKE_RULES=${MMAKE_RULES=@LIBDIR@/mmake/Mmake.rules}
|
||||
MERCURY_INT_DIR=${MERCURY_INT_DIR=@LIBDIR@/ints}
|
||||
|
||||
MMAKE=$0
|
||||
verbose=false
|
||||
save_makefile=false
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
#-----------------------------------------------------------------------------#
|
||||
cat << 'EOF'
|
||||
Usage: mmake [<mmake options>] [-- <make options>] <target>...
|
||||
Options:
|
||||
-s, --save-makefile:
|
||||
Save the generated makefile to `Mmake.makefile'.
|
||||
-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>.nl' to produce an executable.
|
||||
<module>.nu:
|
||||
Compile and link a Mercury program with NU-Prolog
|
||||
rather than with the Mercury compiler.
|
||||
clean:
|
||||
Remove intermediate files.
|
||||
realclean:
|
||||
Remove all automatically-generated files: intermediate files,
|
||||
dependency files, and executables.
|
||||
EOF
|
||||
#-----------------------------------------------------------------------------#
|
||||
exit
|
||||
;;
|
||||
-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 Mmake ]; then
|
||||
mmake="Mmake"
|
||||
else
|
||||
mmake=""
|
||||
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
|
||||
|
||||
if $verbose; then
|
||||
echo MMAKE=$MMAKE
|
||||
echo export MMAKE
|
||||
echo MERCURY_INT_DIR=$MERCURY_INT_DIR
|
||||
echo export MERCURY_INT_DIR
|
||||
echo cat ${MMAKE_VARS} $deps $ds $mmake ${MMAKE_RULES} ">" $tmp
|
||||
echo ${MAKE} -f $tmp "$@"
|
||||
fi
|
||||
export MMAKE
|
||||
export MERCURY_INT_DIR
|
||||
cat ${MMAKE_VARS} $deps $ds $mmake ${MMAKE_RULES} > $tmp
|
||||
${MAKE} -f $tmp -r "$@"
|
||||
62
scripts/mnc.in
Normal file
62
scripts/mnc.in
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# MNC - Mercury NU-Prolog Compiler.
|
||||
#
|
||||
# Compiles Mercury programs to NU-Prolog object code (*.no).
|
||||
#
|
||||
# Usage: same as for `nc'.
|
||||
#
|
||||
# Environment variables: MERCURY_NC_BUILTIN
|
||||
|
||||
nc_builtin_nl=${MERCURY_NC_BUILTIN=@LIBDIR@/nuprolog/nc_builtin.nl}
|
||||
|
||||
options=
|
||||
|
||||
unset target
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
-F) options="$options $1 $2"
|
||||
shift 2
|
||||
;;
|
||||
-o) target="$2"
|
||||
shift 2
|
||||
;;
|
||||
-*) options="$options $1"
|
||||
shift
|
||||
;;
|
||||
*) break 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for file in "$@"; do
|
||||
dir="`dirname $file`"
|
||||
case $file in
|
||||
*.m) base="`basename $file .m`" ;;
|
||||
*.nl) base="`basename $file .nl`" ;;
|
||||
*) base="`basename $file`" ;;
|
||||
esac
|
||||
rootname="$dir/$base"
|
||||
tmp=/tmp/mnc$$
|
||||
trap 'rm -f $tmp.nl $tmp.ns $tmp.no; exit 1' 1 2 3 13 15
|
||||
cat $nc_builtin_nl > $tmp.nl
|
||||
# as a special-case hack, if there is a .pp file we use it instead,
|
||||
# after preprocessing away any #if NU_PROLOG commands in it
|
||||
if [ -f "$rootname.pp" ]; then
|
||||
echo "mnc: compiling \`$rootname.pp'"
|
||||
sed -e '/^#if *NU_PROLOG/s/.*//' -e '/^#endif/s/.*//' \
|
||||
"$rootname.pp" >> $tmp.nl
|
||||
else
|
||||
echo "mnc: compiling \`$file'"
|
||||
cat $file >> $tmp.nl
|
||||
fi
|
||||
nc -c $options $tmp.nl
|
||||
rm $tmp.nl $tmp.ns
|
||||
mv $tmp.no ${target="$rootname.no"}
|
||||
done
|
||||
61
scripts/mnl.in
Normal file
61
scripts/mnl.in
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# mnl - Mercury NU-Prolog Linker.
|
||||
#
|
||||
# Links NU-Prolog object files together with the Mercury library
|
||||
# to produce an executable binary.
|
||||
#
|
||||
# Usage: mnl [-v|--verbose] [<nc link options>] files...
|
||||
#
|
||||
# Environment variables: MERCURY_LIB_DIR, MERCURY_LIB_OBJS
|
||||
|
||||
NULIBDIR=${MERCURY_LIB_DIR=@LIBDIR@/nuprolog/@FULLARCH@}
|
||||
LIBRARY_OBJS=${MERCURY_LIB_OBJS=`cd $NULIBDIR; echo *.no`}
|
||||
|
||||
options=
|
||||
verbose=false
|
||||
debug=false
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
-v|--verbose)
|
||||
verbose=true
|
||||
shift
|
||||
;;
|
||||
-d|--debug)
|
||||
debug=true
|
||||
shift
|
||||
;;
|
||||
-e|-u|-o|-F)
|
||||
options="$options $1 $2"
|
||||
shift 2
|
||||
;;
|
||||
-*) options="$options $1"
|
||||
shift
|
||||
;;
|
||||
*) break 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if $debug; then
|
||||
LIBRARY_OBJS="$LIBRARY_OBJS debug.no portray.no"
|
||||
fi
|
||||
|
||||
objlist=
|
||||
for obj in $LIBRARY_OBJS; do
|
||||
if echo "" "$@" "" | grep " $obj " > /dev/null; then
|
||||
true
|
||||
else
|
||||
objlist="$objlist $NULIBDIR/$obj"
|
||||
fi
|
||||
done
|
||||
|
||||
if $verbose; then
|
||||
echo nc $options $objlist "$@"
|
||||
fi
|
||||
exec nc $options $objlist "$@"
|
||||
18
scripts/mnp.in
Normal file
18
scripts/mnp.in
Normal file
@@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# mnp - Mercury NU-Prolog Interpreter
|
||||
#
|
||||
# A version of `np' with `np_builtin' and the Mercury library already loaded.
|
||||
#
|
||||
# Usage: mnp [<np options>]
|
||||
#
|
||||
# Environment variables: MERCURY_INTERPRETER
|
||||
|
||||
INTERPRETER=${MERCURY_INTERPRETER=@LIBDIR@/nuprolog/@FULLARCH@/library.nu}
|
||||
|
||||
exec $INTERPRETER "$@"
|
||||
94
scripts/mod2init.in
Normal file
94
scripts/mod2init.in
Normal file
@@ -0,0 +1,94 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# MOD2INIT - Convert *.mod (or *.c) to *_init.c
|
||||
#
|
||||
# This script outputs an appropriate init.c, given the .mod (or .c) files.
|
||||
#
|
||||
# Usage: mod2init [-w<entry_point>] modules...
|
||||
#
|
||||
# Environment variables: MERCURY_MOD_LIB_DIR, MERCURY_MOD_LIB_MODS.
|
||||
|
||||
MERCURY_MOD_LIB_DIR=${MERCURY_MOD_LIB_DIR=@LIBDIR@/modules}
|
||||
MERCURY_MOD_LIB_MODS=${MERCURY_MOD_LIB_MODS=@LIBDIR@/modules/*}
|
||||
|
||||
# maximum number of calls to put in a single function
|
||||
calls_per_func=50
|
||||
|
||||
defentry=mercury__io__run_0_0
|
||||
while getopts w: c
|
||||
do
|
||||
case $c in
|
||||
w) defentry="$OPTARG";;
|
||||
\?) echo "Usage: mod2init -[wentry] modules ..."
|
||||
exit 1;;
|
||||
esac
|
||||
shift `expr $OPTIND - 1`
|
||||
done
|
||||
|
||||
files="$* $MERCURY_MOD_LIB_MODS"
|
||||
modules="`sed -n '/^BEGIN_MODULE(\(.*\)).*$/s//\1/p' $files`"
|
||||
echo "/*";
|
||||
echo "** This code was automatically generated by mod2init.";
|
||||
echo "** Do not edit.";
|
||||
echo "**"
|
||||
echo "** Input files:"
|
||||
for file in $files; do
|
||||
echo "** $file"
|
||||
done
|
||||
echo "*/";
|
||||
echo "";
|
||||
echo '#include <stddef.h>';
|
||||
echo '#include "init.h"';
|
||||
echo "";
|
||||
echo "Declare_entry($defentry);";
|
||||
echo "#if defined(USE_GCC_NONLOCAL_GOTOS) && !defined(USE_ASM_LABELS)";
|
||||
echo "Code *default_entry;";
|
||||
echo "#else";
|
||||
echo "Code *default_entry = ENTRY($defentry);";
|
||||
echo "#endif";
|
||||
echo "";
|
||||
for mod in $modules; do
|
||||
echo "extern void $mod(void);";
|
||||
done
|
||||
echo "";
|
||||
echo "#ifdef CONSERVATIVE_GC";
|
||||
echo "/* This works around a bug in the Solaris 2.X (X <= 4) linker. */";
|
||||
echo "/* The reason it is here is that it needs to be in statically linked */";
|
||||
echo "/* code, it won't work if it is in the dynamically linked library. */";
|
||||
echo "void init_gc(void)";
|
||||
echo "{";
|
||||
echo " GC_INIT();";
|
||||
echo "}";
|
||||
echo "#endif";
|
||||
echo "";
|
||||
|
||||
init_funcs=
|
||||
num_funcs=0
|
||||
set - $modules
|
||||
while [ $# -gt 0 ]; do
|
||||
num_funcs=`expr $num_funcs + 1`
|
||||
init_funcs="$init_funcs init_modules_$num_funcs"
|
||||
echo "static void init_modules_$num_funcs(void) {"
|
||||
num_calls=0
|
||||
while [ $# -gt 0 ] && [ $num_calls -lt $calls_per_func ]; do
|
||||
num_calls=`expr $num_calls + 1`
|
||||
echo " $1();"
|
||||
shift
|
||||
done
|
||||
echo "}"
|
||||
echo ""
|
||||
done
|
||||
|
||||
echo "void init_modules(void)";
|
||||
echo "{";
|
||||
for init in $init_funcs; do
|
||||
echo " $init();";
|
||||
done
|
||||
echo "";
|
||||
echo " default_entry = ENTRY($defentry);";
|
||||
echo "}";
|
||||
105
scripts/msc.in
Normal file
105
scripts/msc.in
Normal file
@@ -0,0 +1,105 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# MSC - Mercury SICStus Compiler.
|
||||
#
|
||||
# Compiles Mercury programs to SICStus Prolog object code (*.ql).
|
||||
#
|
||||
# Use `msc -h' for help.
|
||||
|
||||
sp_builtin_pl=${MERCURY_SP_BUILTIN=@LIBDIR@/sicstus/sp_builtin.pl}
|
||||
sicstus_compile=\
|
||||
${MERCURY_SICSTUS_COMPILER=@LIBDIR@/sicstus/@FULLARCH@/sicstus_compile}
|
||||
|
||||
help=false
|
||||
compile_mode=fastcode
|
||||
unset target
|
||||
|
||||
while true; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
help=true
|
||||
break
|
||||
;;
|
||||
-o|--output)
|
||||
target=$2
|
||||
shift 2
|
||||
;;
|
||||
-m|--mode)
|
||||
compile_mode=$2
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
echo "$0: unrecognized option \`$1'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $# -lt 1 ] || $help; then
|
||||
cat << 'EOF'
|
||||
MSC - Mercury SICStus Compiler.
|
||||
Compiles Mercury programs to SICStus Prolog object code (*.ql).
|
||||
Usage: msc [<options>] file(s)
|
||||
Options:
|
||||
-h, --help
|
||||
Print this help message
|
||||
-o <target>, --output <target>
|
||||
Name the output file <target>.
|
||||
-m <compile-mode>, --mode <compile-mode>
|
||||
Use the specified mode of compilation.
|
||||
<compile-mode> should be either compactcode, fastcode,
|
||||
or profiledcode.
|
||||
Environment variables: MERCURY_SP_BUILTIN, MERCURY_SICSTUS_COMPILER
|
||||
EOF
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for file in "$@"; do
|
||||
echo "msc: compiling \`$file'"
|
||||
dir="`dirname $file`"
|
||||
case $file in
|
||||
*.m) base="`basename $file .m`" ;;
|
||||
*.nl) base="`basename $file .nl`" ;;
|
||||
*) base="`basename $file`" ;;
|
||||
esac
|
||||
rootname="$dir/$base"
|
||||
tmp=/tmp/msc$$
|
||||
trap 'rm -f $tmp.pl $tmp.ql; exit 1' 1 2 3 13 15
|
||||
|
||||
# This sed script is used to convert from Mercury/NU-Prolog to Sicstus Prolog
|
||||
# It does three things: delete the `:- module' line,
|
||||
# expand backslash escapes, and replace the use
|
||||
# of `^' for xor in calls to is/2 with `#'.
|
||||
# It also removes '%' comments, to avoid problems with quotes in them.
|
||||
# Obviously this is not the most robust method of translation imaginable!
|
||||
|
||||
sed '
|
||||
/ is /s/\^/#/g
|
||||
/^:- *module/d
|
||||
/^[ ]*%/s/.*//
|
||||
/\\\\/s//\\/g
|
||||
/\\a/s///g
|
||||
/\\b/s///g
|
||||
/\\r/s//
|
||||
/g
|
||||
/\\f/s///g
|
||||
/\\t/s// /g
|
||||
/\\n/s//\
|
||||
/g
|
||||
/\\v/s///g
|
||||
' $file > $tmp.pl
|
||||
$sicstus_compile $compile_mode $tmp.pl
|
||||
rm $tmp.pl
|
||||
mv $tmp.ql ${target="$rootname.ql"}
|
||||
110
scripts/msl.in
Normal file
110
scripts/msl.in
Normal file
@@ -0,0 +1,110 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# msl - Mercury SICStus Prolog Linker.
|
||||
#
|
||||
# Loads SICStus object files (*.ql) together with the Mercury library
|
||||
# into the SICStus interpreter, and then saves the state to produce an
|
||||
# executable binary.
|
||||
#
|
||||
# Usage: msl [<options>] files...
|
||||
# Options:
|
||||
# -v, --verbose
|
||||
# -d, --debug
|
||||
# -o, --output
|
||||
# Environment variables: MERCURY_SP_LIB_DIR, MERCURY_SP_LIB_OBJS
|
||||
|
||||
SP=${MERCURY_SICSTUS_PROLOG=@LIBDIR@/sicstus/@FULLARCH@/library.sicstus.debug}
|
||||
SPLIBDIR=${MERCURY_SP_LIB_DIR=@LIBDIR@/sicstus/@FULLARCH@}
|
||||
LIBRARY_OBJS=${MERCURY_SP_LIB_OBJS=`cd $SPLIBDIR; echo *.ql`}
|
||||
|
||||
verbose=false
|
||||
debug=false
|
||||
save_temp=false
|
||||
target=a.out
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
-v|--verbose)
|
||||
verbose=true
|
||||
shift
|
||||
;;
|
||||
-d|--debug)
|
||||
debug=true
|
||||
shift
|
||||
;;
|
||||
-o|--output)
|
||||
target=$2
|
||||
shift 2
|
||||
;;
|
||||
-s|--save-temp)
|
||||
save_temp=true
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
echo "$0: invalid option \`$1'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*) break 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
objlist=
|
||||
for obj in $LIBRARY_OBJS; do
|
||||
if [ "$obj" = "sp_lib.ql" ]; then
|
||||
sp_lib=$SPLIBDIR/$obj
|
||||
elif echo "" "$objlist" "$@" "" | grep " $obj " > /dev/null; then
|
||||
true
|
||||
else
|
||||
objlist="$objlist $SPLIBDIR/$obj"
|
||||
fi
|
||||
done
|
||||
|
||||
if $verbose; then
|
||||
echo Linking $objlist "$@" $sp_lib
|
||||
fi
|
||||
if $save_temp; then
|
||||
tmp=msl.tmp
|
||||
else
|
||||
tmp=/tmp/msl$$
|
||||
trap 'rm -f $tmp; exit 1' 1 2 3 13 15
|
||||
trap 'rm -f $tmp; exit 0' 0
|
||||
fi
|
||||
if $debug; then
|
||||
cat > $tmp << EOF
|
||||
assert((mercury_do_save :-
|
||||
on_exception(Error, (
|
||||
prolog_flag(compiling, _, fastcode),
|
||||
unix(argv(Files)), load(Files),
|
||||
abolish(mercury_do_save),
|
||||
save('$target', _),
|
||||
version
|
||||
), (print_message(error, Error), halt)))).
|
||||
|
||||
mercury_do_save.
|
||||
|
||||
EOF
|
||||
$SP $objlist "$@" $sp_lib < $tmp 2>&1
|
||||
else
|
||||
cat > $tmp << EOF
|
||||
on_exception(Error, (
|
||||
prolog_flag(compiling, _, fastcode),
|
||||
unix(argv(Files)), load(Files),
|
||||
garbage_collect,
|
||||
save('$target', 1),
|
||||
unix(argv(Args)), run([mc|Args])
|
||||
), print_message(error, Error)), halt ; halt.
|
||||
e
|
||||
e
|
||||
e
|
||||
e
|
||||
EOF
|
||||
$SP $objlist "$@" $sp_lib < $tmp 2>&1
|
||||
fi # grep -v 'DOMAIN ERROR.*when_condition'
|
||||
# We pipe the output through grep -v to suppress some spurious warnings
|
||||
# caused by the NU-Prolog when declarations not matching Sicstus syntax.
|
||||
19
scripts/msp.in
Normal file
19
scripts/msp.in
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
|
||||
# msp - Mercury SICStus Prolog Interpreter
|
||||
#
|
||||
# A version of `sp' with `sp_builtin' and the Mercury library already loaded.
|
||||
#
|
||||
# Usage: msp [<sp options>]
|
||||
#
|
||||
# Environment variables: MERCURY_SICSTUS_INTERPRETER
|
||||
|
||||
INTERPRETER=\
|
||||
${MERCURY_SICSTUS_INTERPRETER=@LIBDIR@/sicstus/@FULLARCH@/library.sicstus}
|
||||
|
||||
exec $INTERPRETER "$@"
|
||||
33
scripts/sicstus_conv.in
Normal file
33
scripts/sicstus_conv.in
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
#---------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995 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.
|
||||
#---------------------------------------------------------------------------#
|
||||
#
|
||||
# This sed script is used to convert from Mercury to Sicstus Prolog
|
||||
# It does three things: delete the `:- module' line,
|
||||
# expand backslash escapes, and replace the use
|
||||
# of `^' for xor in calls to is/2 with `#'.
|
||||
|
||||
for file in "$@"; do
|
||||
case $file in
|
||||
*.m) base=`basename $file .m` ;;
|
||||
*.nl) base=`basename $file .nl` ;;
|
||||
*) base=`basename $file` ;;
|
||||
esac
|
||||
sed -e '
|
||||
/ is /s/\^/#/g
|
||||
/^:- *module/d
|
||||
/^[ ]*%/s/.*//
|
||||
/\\\\/s//\\/g
|
||||
/\\a/s///g
|
||||
/\\b/s///g
|
||||
/\\r/s//
|
||||
/g
|
||||
/\\f/s///g
|
||||
/\\t/s// /g
|
||||
/\\n/s//\
|
||||
/g
|
||||
/\\v/s///g
|
||||
' $file > $base.pl
|
||||
Reference in New Issue
Block a user