mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-22 04:43:53 +00:00
scripts/init_grade_options.sh-subr:
scripts/mdb.in:
scripts/mercury_config.in:
scripts/mercury_update_interface.in:
scripts/mgnuc.in:
scripts/ml.in:
scripts/parse_ml_options.sh-subr.in:
Indent by four spaces, not by tabs, or by three spaces.
Use ${varname}, not just $varname.
Put successive commands on separate lines.
Indent case statements in a consistent manner: put case patterns
on their own lines; put ;;s on their own lines.
Replace the [ command with test.
Put quotes around strings that should be considered one word
even if they are empty or contain spaces.
Fix English in messages and comments.
246 lines
7.7 KiB
Bash
246 lines
7.7 KiB
Bash
#! /bin/sh
|
|
# @configure_input@
|
|
#---------------------------------------------------------------------------#
|
|
# Copyright (C) 2003, 2005, 2008, 2010 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.
|
|
#---------------------------------------------------------------------------#
|
|
#
|
|
# 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: mercury_config - generate new configurations for a Mercury installation
|
|
Usage: mercury_config [<options>] [-- <configure options>]
|
|
Options:
|
|
--rebase
|
|
Use this option after moving a Mercury installation to
|
|
regenerate the scripts and configuration files so that
|
|
the Mercury installation will work from the new location.
|
|
|
|
--output-prefix <dir>
|
|
Generate the new copies of the Mercury scripts and
|
|
configuration files into the given directory.
|
|
By default mercury_config overwrites the configuration in
|
|
the installation hierarchy containing the mercury_config
|
|
script.
|
|
|
|
Description:
|
|
Generates an alternative configuration for a Mercury
|
|
installation, for example to use a different C compiler.
|
|
|
|
The <configure options> must result in a configuration
|
|
which is compatible with the configuration used to build
|
|
the installed libraries, or else linking using the new
|
|
configuration will fail. For example, both configurations
|
|
must agree on the use of boxed or unboxed floats.
|
|
|
|
To use the new configuration, put \`<dir>/bin' at the
|
|
beginning of your PATH.
|
|
|
|
Environment variables:
|
|
MERCURY_DEFAULT_GRADE.
|
|
|
|
Configure options:
|
|
@CONFIGURE_HELP@
|
|
"
|
|
#---------------------------------------------------------------------------#
|
|
|
|
default_grade=${MERCURY_DEFAULT_GRADE-@DEFAULT_GRADE@}
|
|
libgrades="@LIBGRADES@"
|
|
input_prefix=@prefix@
|
|
output_prefix=@CONFIG_PREFIX@
|
|
exe_ext=@EXT_FOR_EXE@
|
|
unset MERCURY_STDLIB_DIR
|
|
unset MERCURY_CONFIG_DIR
|
|
recursive=no
|
|
|
|
orig_arity=$#
|
|
|
|
while true
|
|
do
|
|
case "$1" in
|
|
--rebase)
|
|
input_prefix=$(readlink -f $0)
|
|
input_prefix=${input_prefix%/bin/mercury_config}
|
|
output_prefix=${input_prefix}
|
|
;;
|
|
|
|
# This option is only for use by
|
|
# bindist/bindist.INSTALL.in
|
|
--input-prefix=*)
|
|
input_prefix=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
|
|
;;
|
|
--input-prefix)
|
|
input_prefix="$2"
|
|
shift
|
|
;;
|
|
|
|
--output-prefix=*)
|
|
output_prefix=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
|
|
;;
|
|
--output-prefix)
|
|
output_prefix="$2"
|
|
shift
|
|
;;
|
|
|
|
--recursive)
|
|
recursive=yes
|
|
;;
|
|
|
|
-h|--help|"-?")
|
|
echo "${Help}"
|
|
exit 0
|
|
;;
|
|
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
input_libdir="${input_prefix}/lib/mercury"
|
|
output_libdir="${output_prefix}/lib/mercury"
|
|
|
|
if test "${orig_arity}" -eq 0 && ! test -d "${input_prefix}"
|
|
then
|
|
echo "Input directory \`${input_prefix}' not found."
|
|
echo "Did you mean \`$0 --rebase'?"
|
|
exit 1
|
|
fi
|
|
|
|
# mercury_config regenerates itself, so we can't just execute it in place.
|
|
case "${recursive}" in
|
|
no)
|
|
if test -d "${TMPDIR}"
|
|
then
|
|
:
|
|
elif test -d /tmp
|
|
then
|
|
TMPDIR="/tmp"
|
|
else
|
|
TMPDIR="."
|
|
fi
|
|
TMPDIR=${TMPDIR}/mercury_config.$$
|
|
trap 'rm -rf ${TMPDIR}; exit 1' 1 2 3 13 15
|
|
test -d ${TMPDIR} || mkdir -p ${TMPDIR} || \
|
|
{ echo mercury_config: invalid TMPDIR: ${TMPDIR}; exit 1; }
|
|
export TMPDIR
|
|
|
|
cp ${input_prefix}/bin/mercury_config ${TMPDIR}
|
|
case "$#" in
|
|
0)
|
|
exec ${TMPDIR}/mercury_config --recursive \
|
|
--input-prefix "${input_prefix}" \
|
|
--output-prefix "${output_prefix}"
|
|
;;
|
|
*)
|
|
exec ${TMPDIR}/mercury_config --recursive \
|
|
--input-prefix "${input_prefix}" \
|
|
--output-prefix "${output_prefix}" "$@"
|
|
;;
|
|
esac
|
|
esac
|
|
|
|
cp -r ${input_libdir}/reconf/* ${TMPDIR} || exit 1
|
|
mkdir ${TMPDIR}/bindist || exit 1
|
|
|
|
# The configure script tries to process these files, but they won't be used.
|
|
touch ${TMPDIR}/scripts/Mercury.config.bootstrap.in || exit 1
|
|
touch ${TMPDIR}/Mmake.common.in ${TMPDIR}/bindist/bindist.INSTALL.in || exit 1
|
|
touch ${TMPDIR}/bindist/bindist.Makefile.in || exit 1
|
|
mkdir ${TMPDIR}/tools || exit 1
|
|
touch ${TMPDIR}/tools/lmc.in || exit 1
|
|
touch ${TMPDIR}/tools/dotime.in || exit 1
|
|
touch ${TMPDIR}/runtime/mercury_dotnet.cs.in || exit 1
|
|
mkdir ${TMPDIR}/java || exit 1
|
|
mkdir ${TMPDIR}/java/runtime || exit 1
|
|
touch ${TMPDIR}/java/runtime/Constants.java.in || exit 1
|
|
touch ${TMPDIR}/java/runtime/Native.java.in || exit 1
|
|
mkdir ${TMPDIR}/compiler || exit 1
|
|
touch ${TMPDIR}/compiler/COMP_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/grade_lib || exit 1
|
|
touch ${TMPDIR}/grade_lib/GRADE_LIB_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/library || exit 1
|
|
touch ${TMPDIR}/library/LIB_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/mdbcomp || exit 1
|
|
touch ${TMPDIR}/mdbcomp/MDBCOMP_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/browser || exit 1
|
|
touch ${TMPDIR}/browser/MDB_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/slice || exit 1
|
|
touch ${TMPDIR}/slice/SLICE_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/ssdb || exit 1
|
|
touch ${TMPDIR}/ssdb/SSDB_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/profiler || exit 1
|
|
touch ${TMPDIR}/profiler/PROF_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/deep_profiler || exit 1
|
|
touch ${TMPDIR}/deep_profiler/DEEP_FLAGS.in || exit 1
|
|
mkdir ${TMPDIR}/tests || exit 1
|
|
touch ${TMPDIR}/tests/TESTS_FLAGS.in || exit 1
|
|
touch ${TMPDIR}/tests/DEFNS_FOR_TESTS.in || exit 1
|
|
mkdir ${TMPDIR}/mfilterjavac || exit 1
|
|
touch ${TMPDIR}/mfilterjavac/MFILTERJAVAC_FLAGS.in || exit 1
|
|
|
|
enable_libgrades=`echo ${libgrades} | sed 's/ /,/g'`
|
|
|
|
cd ${TMPDIR}
|
|
case "$#" in
|
|
0)
|
|
./configure @RECONFIGURE_ARGS@ \
|
|
--with-default-grade="${default_grade}" \
|
|
--enable-libgrades="${enable_libgrades}" \
|
|
--cache-file=/dev/null \
|
|
--prefix="${input_prefix}" \
|
|
--enable-reconfigure="${output_prefix}" || exit 1
|
|
;;
|
|
*)
|
|
./configure @RECONFIGURE_ARGS@ "$@" \
|
|
--with-default-grade="${default_grade}" \
|
|
--enable-libgrades="${enable_libgrades}" \
|
|
--cache-file=/dev/null \
|
|
--prefix="${input_prefix}" \
|
|
--enable-reconfigure="${output_prefix}" || exit 1
|
|
;;
|
|
esac
|
|
|
|
test -d ${output_libdir}/conf || mkdir -p ${output_libdir}/conf || exit 1
|
|
test -d ${output_libdir}/mmake || mkdir -p ${output_libdir}/mmake || exit 1
|
|
test -d ${output_libdir}/mdb || mkdir -p ${output_libdir}/mdb || exit 1
|
|
test -d ${output_prefix}/bin || mkdir -p ${output_prefix}/bin || exit 1
|
|
|
|
# Copy the new configuration into place.
|
|
cp runtime/mercury_conf.h ${output_libdir}/conf || exit 1
|
|
cp scripts/Mercury.config ${output_libdir}/conf || exit 1
|
|
cp scripts/Mmake.vars ${output_libdir}/mmake || exit 1
|
|
if test "${input_prefix}" != "${output_prefix}"
|
|
then
|
|
cp ${input_prefix}/bin/mdemangle${exe_ext} \
|
|
${input_prefix}/bin/mfiltercc${exe_ext} \
|
|
${input_prefix}/bin/mkinit${exe_ext} \
|
|
${input_prefix}/bin/info_to_mdb${exe_ext} ${output_prefix}/bin
|
|
cp ${input_libdir}/mmake/Mmake.rules ${output_libdir}/mmake
|
|
fi
|
|
cd scripts
|
|
echo *
|
|
for file in *; do
|
|
case "${file}" in
|
|
*.in|Mmake.*|Mercury.config*|*.sh-subr)
|
|
;;
|
|
mdbrc)
|
|
cp ${file} ${output_libdir}/mdb || exit 1
|
|
;;
|
|
*)
|
|
cp ${file} ${output_prefix}/bin || exit 1
|
|
chmod u+wx ${output_prefix}/bin/${file} || exit 1
|
|
;;
|
|
esac
|
|
done
|
|
rm -rf ${TMPDIR}
|