Files
mercury/tools/build_srcdist
Zoltan Somogyi 47a1a02a92 Add vim modelines to most tools.
tools/add_cont_lines:
tools/appears:
tools/assemble:
tools/avg_frame_size:
tools/build_srcdist:
tools/cleanint:
tools/compare_frame_sizes:
tools/configure_mingw_cross:
tools/cont:
tools/ctor_rep_stats:
tools/cur_param:
tools/dd_speedtest:
tools/divide:
tools/extract_dd_stats:
tools/file_name_translation_stats:
tools/frame_sizes:
tools/gdbrun:
tools/half:
tools/info_stats.awk:
tools/linear:
tools/lmc.in:
tools/mai_stats:
tools/make_arena:
tools/next_param:
tools/not:
tools/optstages:
tools/type_ctor_stats:
    Add vim mode lines. Replace tabs with spaces.
2021-04-27 03:54:27 +10:00

179 lines
4.0 KiB
Bash
Executable File

#!/bin/bash
# vim: ft=sh ts=4 sw=4 et
# Copyright (C) 2013-2015 The Mercury team.
#
# This script builds the Mercury source distribution.
#
# After any options, this script expects exactly three arguments
#
# The first argument should be the path name of the Mercury workspace
# that the distribution should be based on.
#
# The second argument should be name associated with the version.
# The two usual forms of these names are rotd-yyyy-mm-dd for ROTDs
# and yy.mm for major releases.
#
# The third is the absolute path name where the tar file containing
# the Mercury source distribution should be put. To prevent surprises
# when the tar file is unpacked, the name should end in
# mercury-srcdist-VERSION.tar
#
set -e
CC=gcc
TMPDIR=/tmp
PARALLEL=1
# We should set the default LEAVE_TMP_DIR to "no"
# once this script has been in use for a while.
LEAVE_TMP_DIR=yes
UPDATE_VERSION_FILE=yes
TAR=tar
USAGE="\
$0 [options] orig_ws version tar_file_name
Options:
-c CC
Use CC as the C compiler.
-d
The directory in which to do work. It should be a directory intended
for short-lived files, such as /tmp or /var/tmp.
-h
Output this help message and exit.
-j N
Run N jobs in parallel.
-l
Leave the temporary directory as it was when done.
-n
Do not update the VERSION file.
-t TAR
Use TAR as the archiving utility (default: tar).
"
while getopts "c:d:hj:lnt:" OPT
do
case "${OPT}" in
c)
CC=${OPTARG}
;;
d)
TMPDIR=${OPTARG}
;;
h)
echo "${USAGE}"
exit 0
;;
j)
PARALLEL=${OPTARG}
;;
l)
LEAVE_TMP_DIR=yes
;;
n)
UPDATE_VERSION_FILE=no
;;
t)
TAR=${OPTARG}
;;
?)
echo "${USAGE}"
exit 1
;;
*)
echo "Getopt error \"${OPT}\""
echo "${USAGE}"
exit 1
;;
esac
done
shift `expr ${OPTIND} - 1`
if test "$#" != 3
then
echo "${USAGE}"
exit 1
fi
orig_ws="$1"
version="$2"
tar_file_name="$3"
if test ! -d "${orig_ws}"
then
echo "Error: ${orig_ws} is not a directory"
exit 2
fi
if test ! -d "${orig_ws}/.git"
then
echo "Error: ${orig_ws} is not a git workspace"
exit 2
fi
if test ! -f "${orig_ws}/library/private_builtin.m"
then
echo "Error: ${orig_ws} is not a Mercury git workspace"
exit 2
fi
case "${tar_file_name}" in
/*)
;;
*)
echo "Error: ${tar_file_name} is not an absolute path name"
exit 2
;;
esac
srcdist_name="mercury-srcdist-${version}"
srcdist_dir="${TMPDIR}/${srcdist_name}"
if test -e "${srcdist_dir}"
then
echo "Error: the name of the temporary directory ${srcdist_dir} is in use"
exit 3
fi
cp -rp "${orig_ws}" "${srcdist_dir}"
cd "${srcdist_dir}"
/bin/rm -rf stage2 stage3 Mmake.params Mmake.stage.params
# git checkout -- VERSION
git submodule deinit -f .
git clean -d -f -x
git rev-parse HEAD > COMMIT_ID
if test "${UPDATE_VERSION_FILE}" = "yes"
then
sed "s/VERSION=.*/VERSION=${version}/" VERSION > VERSION.new
mv VERSION.new VERSION
fi
./prepare.sh
# NOTE: the hlc.gc.pregen grade that we use *requires* these settings.
NUM_TAG_BITS=2
BITS_PER_WORD=32
BYTES_PER_WORD=4
UNBOXED_FLOATS=no
mercury_cv_low_tag_bits=${NUM_TAG_BITS} \
mercury_cv_bits_per_word=${BITS_PER_WORD} \
mercury_cv_bytes_per_word=${BYTES_PER_WORD} \
mercury_cv_unboxed_floats=${UNBOXED_FLOATS} \
sh configure --with-cc="${CC}" &&
mmake \
TAR="${TAR}" \
GRADE=hlc.gc.pregen \
MMAKEFLAGS="EXTRA_MCFLAGS='-O5 --opt-space' -j${PARALLEL}" \
SRCDIST_NAME="${srcdist_name}" \
TAR_FILE_NAME="${tar_file_name}" \
tar
if test "${LEAVE_TMP_DIR}" = "yes"
then
echo "leaving build directory in ${TMPDIR}/build_srcdist.$$"
mv "${srcdist_dir}" "${TMPDIR}/build_srcdist.$$"
else
/bin/rm -fr "${srcdist_dir}"
fi
exit 0