[m-dev.] for review: specifying library grades

Zoltan Somogyi zs at cs.mu.OZ.AU
Thu Dec 7 14:16:01 AEDT 2000


configure.in:
	Add options that allow the user to specify the set of library grades
	more precisely. Add an option, --enable-minimum-grades,
	that reduces the installed grades to the minimum (asm_fast.gc,
	asm_fast.gc.debug.tr and hlc.gc), since this is useful to minimize
	installation time e.g. when installing a release of the day on a
	laptop. Add an option --enable-libgrade=<gradelist> that specifies
	the list of library grades precisely.

scripts/canonical_grade.in:
	A new script to be used by configure.in. Its jobs is to print the
	canonical version of a grade string.

scripts/canonical_grade.sh-subr:
	A new sh subroutine, containing code previously from ml.in that is
	now also needed by canonical_grade.in.

scripts/ml.in:
	Move code from here to canonical_grade.sh-subr.

Mmakefile:
	Include scripts/canonical_grade in tar files, since configure.in
	needs it.

bindist/Mmakefile:
	Include scripts/canonical_grade in binary distributions, since
	configure.in needs it.

Zoltan.

cvs diff: Diffing .
Index: Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/Mmakefile,v
retrieving revision 1.61
diff -u -b -r1.61 Mmakefile
--- Mmakefile	2000/11/29 00:10:07	1.61
+++ Mmakefile	2000/12/06 04:06:10
@@ -215,6 +215,7 @@
 	-cd bindist && $(SUBDIR_MMAKE) bindist.build_vars
 	# clean up
 	cd scripts && mmake realclean
+	cd scripts && mmake canonical_grade
 	cd util && mmake realclean
 	cd doc && mmake distclean
 	-rm -f errs errs2 update.log
Index: configure.in
===================================================================
RCS file: /home/mercury1/repository/mercury/configure.in,v
retrieving revision 1.237
diff -u -b -r1.237 configure.in
--- configure.in	2000/12/01 03:22:14	1.237
+++ configure.in	2000/12/07 03:05:19
@@ -1812,37 +1812,97 @@
 [  --enable-all-grades     install all the different versions of the library],
 enable_all_grades="$enableval",enable_all_grades=no)
 
+AC_ARG_ENABLE(most-grades,
+[  --disable-most-grades   install only the essential versions of the library],
+enable_most_grades="$enableval",enable_most_grades=yes)
+
+AC_ARG_ENABLE(nogc-grades,
+[  --disable-nogc-grades   do not install no-gc versions of the library],
+enable_nogc_grades="$enableval",enable_nogc_grades=yes)
+
+AC_ARG_ENABLE(prof-grades,
+[  --disable-prof-grades   do not install profiling versions of the library],
+enable_prof_grades="$enableval",enable_prof_grades=yes)
+
+AC_ARG_ENABLE(trail-grades,
+[  --disable-trail-grades  do not install trailing versions of the library],
+enable_trail_grades="$enableval",enable_trail_grades=yes)
+
+AC_ARG_ENABLE(par-grades,
+[  --disable-par-grades    do not install thread-safe versions of the library],
+enable_par_grades="$enableval",enable_par_grades=yes)
+
+AC_ARG_ENABLE(all-hlc-grades,
+[  --enable-all-hlc-grades install all the hlc grades],
+enable_all_hlc_grades=yes,enable_all_hlc_grades=no)
+
+AC_ARG_ENABLE(libgrades,
+[  --enable-libgrades      install exactly the given versions of the library],
+enable_libgrades="$enableval",enable_libgrades="")
+
+if test "$enable_most_grades" = no; then
+	enable_all_grades=no
+	enable_nogc_grades=no
+	enable_prof_grades=no
+	enable_trail_grades=no
+	enable_all_hlc_grades=no
+	enable_par_grades=no
+fi
+
 if test "$enable_all_grades" = yes; then
-	LIBGRADES="$ALL_LIBGRADES"
+	BASE_LIBGRADES="$ALL_LIBGRADES"
 else
-	LIBGRADES="$BEST_GRADE"
+	BASE_LIBGRADES="$BEST_GRADE"
 fi
 
-# add `.gc' (--conservative-gc) grades
-for grade in $LIBGRADES; do
-	LIBGRADES="$LIBGRADES $grade.gc"
+# find all `.gc' (--conservative-gc) grades
+GC_LIBGRADES=""
+for grade in $BASE_LIBGRADES; do
+	GC_LIBGRADES="$GC_LIBGRADES $grade.gc"
 done
+
+if test "$enable_nogc_grades" = yes; then
+	LIBGRADES="$BASE_LIBGRADES $GC_LIBGRADES"
+else
+	LIBGRADES="$GC_LIBGRADES"
+fi
 
-# add `.prof' (--profiling) grades, if time profiling is supported,
-# and a `.memprof' (--memory-profiling) grade.
-if test $mercury_cv_profiling = yes; then
+if test "$enable_nogc_grades" = yes; then
+	# add `.prof' (--profiling) grades, if time profiling is supported,
+	# and a `.memprof' (--memory-profiling) grade.
+	if test $mercury_cv_profiling = yes; then
+		if test "$enable_prof_grades" = yes; then
 	DEFAULT_GRADE_NOGC="`echo $DEFAULT_GRADE | sed 's/\.gc$//'`"
 	LIBGRADES="$LIBGRADES $DEFAULT_GRADE.prof $DEFAULT_GRADE_NOGC.prof"
+		else
+			LIBGRADES="$LIBGRADES $DEFAULT_GRADE.prof"
+		fi
 	if test $GRADE != $DEFAULT_GRADE; then
+			if test "$enable_nogc_grades" = yes; then
 		GRADE_NOGC="`echo $GRADE | sed 's/\.gc$//'`"
 		LIBGRADES="$LIBGRADES $GRADE.prof $GRADE_NOGC.prof"
+			else
+				LIBGRADES="$LIBGRADES $GRADE.prof"
+			fi
+		fi
 	fi
+	LIBGRADES="$LIBGRADES $DEFAULT_GRADE.memprof"
 fi
-LIBGRADES="$LIBGRADES $DEFAULT_GRADE.memprof"
 
-# add `.tr' (--trailing) grades
-LIBGRADES="$LIBGRADES $DEFAULT_GRADE.tr"
-if test "$enable_all_grades" = yes; then
+if test "$enable_trail_grades" = yes; then
+	# add `.tr' (--trailing) grades
+	LIBGRADES="$LIBGRADES $DEFAULT_GRADE.tr"
+	if test "$enable_all_grades" = yes; then
+		if test "$enable_nogc_grades" = yes; then
 	DEFAULT_GRADE_NOGC="`echo $DEFAULT_GRADE | sed 's/\.gc$//'`"
 	LIBGRADES="$LIBGRADES $DEFAULT_GRADE_NOGC.tr"
-	if test $mercury_cv_profiling = yes; then
+		else
+			LIBGRADES="$LIBGRADES"
+		fi
+		if test $mercury_cv_profiling = yes -a "$enable_prof_grades" = yes; then
 		LIBGRADES="$LIBGRADES $DEFAULT_GRADE.prof.tr"
 	fi
+	fi
 fi
 
 # add `.debug' (--debug) grades
@@ -1851,21 +1911,48 @@
 # add `hlc' (--high-level-code, i.e. MLDS back-end) grades
 LIBGRADES="$LIBGRADES hlc.gc"
 
-AC_ARG_ENABLE(all-hlc-grades,
-[  --enable-all-hlc-grades install all the hlc grades],
-enable_all_hlc_grades=yes,enable_all_hlc_grades=no)
-
 if test $enable_all_hlc_grades = "yes" -o $ac_microsoft = "yes"; then
 	# add `.prof' (--profiling) grades, if time profiling is supported,
 	# and a `.memprof' (--memory-profiling) grade.
-	if test $mercury_cv_profiling = yes; then
+	if test $mercury_cv_profiling = yes -a "$enable_prof_grades" = yes; then
 		LIBGRADES="$LIBGRADES hlc.gc.prof"
 	fi
 	LIBGRADES="$LIBGRADES hlc.gc.memprof"
 fi
+
+if test "$enable_par_grades" = yes; then
+	# Add the .par grade
+	LIBGRADES="$LIBGRADES hlc.par.gc"
+fi
 
-# Add the .par grade
-LIBGRADES="$LIBGRADES hlc.par.gc"
+if test "$enable_libgrades" = "no"; then
+	MERCURY_MSG("--enable-lib-grades requires a comma-separated list of grades as argument")
+elif test "$enable_libgrades" = "yes"; then
+	MERCURY_MSG("--enable-lib-grades requires a comma-separated list of grades as argument")
+else
+	# Generate only the grades specified by the user.
+	raw_grades=`echo $enable_libgrades | sed 's/,/ /g'`
+	canonical_grades=""
+	all_grades_ok=true
+	for raw_grade in $raw_grades
+	do
+		if scripts/canonical_grade --grade $raw_grade > .confgrade
+		then
+			canonical_grades="$canonical_grades `cat .confgrade`"
+		else
+			MERCURY_MSG("--enable-lib-grades: $raw_grade is not a grade")
+			all_grades_ok=false
+		fi
+	done
+
+	rm .confgrade > /dev/null 2>&1
+	if $all_grades_ok
+	then
+		LIBGRADES=$canonical_grades
+	else
+		MERCURY_MSG("using autoconfigured LIBGRADES")
+	fi
+fi
 
 # If we are using the Microsoft compiler then use hlc.gc as the default
 # grade.
@@ -1885,6 +1972,7 @@
 MERCURY_MSG("using \`LIBGRADES=$LIBGRADES' as the set of library grades to install")
 
 AC_SUBST(LIBGRADES)
+
 #-----------------------------------------------------------------------------#
 #
 # Add an option that disables declarative debugging support in the internal
@@ -2264,9 +2352,11 @@
 INIT_GRADE_OPTIONS=$top/scripts/init_grade_options.sh-subr
 PARSE_GRADE_OPTIONS=$top/scripts/parse_grade_options.sh-subr
 FINAL_GRADE_OPTIONS=$top/scripts/final_grade_options.sh-subr
+CANONICAL_GRADE=$top/scripts/canonical_grade.sh-subr
 AC_SUBST_FILE(INIT_GRADE_OPTIONS)
 AC_SUBST_FILE(PARSE_GRADE_OPTIONS)
 AC_SUBST_FILE(FINAL_GRADE_OPTIONS)
+AC_SUBST_FILE(CANONICAL_GRADE)
 
 #-----------------------------------------------------------------------------#
 #
cvs diff: Diffing bindist
Index: bindist/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/bindist/Mmakefile,v
retrieving revision 1.27
diff -u -b -r1.27 Mmakefile
--- bindist/Mmakefile	2000/09/06 05:30:07	1.27
+++ bindist/Mmakefile	2000/12/06 04:08:56
@@ -34,6 +34,7 @@
 
 SCRIPT_FILES	= ../scripts/*.in ../scripts/*.sh-subr \
 		  ../scripts/Mmake.rules \
+		  ../scripts/canonical_grade \
 		  ../scripts/gud.el
 
 CONFIG_FILES	= ../config.sub ../config.guess ../install-sh
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/include
cvs diff: Diffing boehm_gc/include/private
cvs diff: Diffing browser
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
cvs diff: Diffing compiler/notes
cvs diff: Diffing debian
cvs diff: Diffing doc
cvs diff: Diffing extras
cvs diff: Diffing extras/aditi
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/concurrency
cvs diff: Diffing extras/curses
cvs diff: Diffing extras/curses/sample
cvs diff: Diffing extras/dynamic_linking
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/mercury_opengl
cvs diff: Diffing extras/graphics/mercury_tcltk
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing extras/graphics/samples/pent
cvs diff: Diffing extras/lazy_evaluation
cvs diff: Diffing extras/logged_output
cvs diff: Diffing extras/moose
cvs diff: Diffing extras/moose/samples
cvs diff: Diffing extras/morphine
cvs diff: Diffing extras/morphine/non-regression-tests
cvs diff: Diffing extras/morphine/scripts
cvs diff: Diffing extras/morphine/source
cvs diff: Diffing extras/odbc
cvs diff: Diffing extras/posix
cvs diff: Diffing extras/references
cvs diff: Diffing extras/references/samples
cvs diff: Diffing extras/references/tests
cvs diff: Diffing extras/stream
cvs diff: Diffing extras/trailed_update
cvs diff: Diffing extras/trailed_update/samples
cvs diff: Diffing extras/trailed_update/tests
cvs diff: Diffing extras/xml
cvs diff: Diffing extras/xml/samples
cvs diff: Diffing library
cvs diff: Diffing profiler
cvs diff: Diffing robdd
cvs diff: Diffing runtime
cvs diff: Diffing runtime/GETOPT
cvs diff: Diffing runtime/machdeps
cvs diff: Diffing samples
cvs diff: Diffing samples/c_interface
cvs diff: Diffing samples/c_interface/c_calls_mercury
cvs diff: Diffing samples/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/mercury_calls_c
cvs diff: Diffing samples/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/diff
cvs diff: Diffing samples/muz
cvs diff: Diffing samples/rot13
cvs diff: Diffing samples/solutions
cvs diff: Diffing samples/tests
cvs diff: Diffing samples/tests/c_interface
cvs diff: Diffing samples/tests/c_interface/c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/tests/c_interface/mercury_calls_c
cvs diff: Diffing samples/tests/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/tests/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/tests/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/tests/diff
cvs diff: Diffing samples/tests/muz
cvs diff: Diffing samples/tests/rot13
cvs diff: Diffing samples/tests/solutions
cvs diff: Diffing samples/tests/toplevel
cvs diff: Diffing scripts
Index: scripts/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/Mmakefile,v
retrieving revision 1.20
diff -u -b -r1.20 Mmakefile
--- scripts/Mmakefile	2000/02/01 22:08:37	1.20
+++ scripts/Mmakefile	2000/12/04 02:24:14
@@ -16,7 +16,7 @@
 
 SCRIPTS = mmake mmc mdb c2init mgnuc ml mprof mprof_merge_runs \
 	  sicstus_conv mtags vpath_find mercury_update_interface \
-	  mkfifo_using_mknod mercury_cleanup_install
+	  mkfifo_using_mknod mercury_cleanup_install canonical_grade
 DEBUGGER_SCRIPTS = mdbrc
 EMACS_SCRIPTS = gud.el
 
@@ -37,9 +37,10 @@
 
 #-----------------------------------------------------------------------------#
 
-ml mgnuc: init_grade_options.sh-subr
-ml mgnuc: parse_grade_options.sh-subr 
-ml mgnuc: final_grade_options.sh-subr 
+ml mgnuc canonical_grade: init_grade_options.sh-subr
+ml mgnuc canonical_grade: parse_grade_options.sh-subr 
+ml mgnuc canonical_grade: final_grade_options.sh-subr 
+ml canonical_grade: canonical_grade.sh-subr 
 
 #-----------------------------------------------------------------------------#
 
Index: scripts/canonical_grade.in
===================================================================
RCS file: canonical_grade.in
diff -N canonical_grade.in
--- /dev/null	Thu Sep  2 15:00:04 1999
+++ canonical_grade.in	Wed Dec  6 12:46:10 2000
@@ -0,0 +1,55 @@
+#! /bin/sh
+#---------------------------------------------------------------------------#
+# Copyright (C) 2000 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.
+#---------------------------------------------------------------------------#
+#
+# canonical_grade --grade <grade-to-be-canonicalized>
+#
+# This script is meant to be used mainly during the autoconfiguration process.
+# It is meant to be invoked with a --grade <grade> option, whose value should
+# be a possibly noncanonical grade name given by a human as part of an argument
+# to the configure script. The job of this script is to print the canonical
+# name of the grade. The script fails after printing an error message if the
+# purported "grade" given is not a grade at all, not even a non-canonical one.
+
+# include the file `init_grade_options.sh-subr'
+ at INIT_GRADE_OPTIONS@
+
+usage="Usage: canonical_grade --grade <actual>"
+
+while : ; do
+    case "$1" in
+	# include the file `parse_grade_options.sh-subr'
+	@PARSE_GRADE_OPTIONS@
+
+	--)
+		shift
+		break ;;
+	*)
+		break ;;
+    esac
+    shift
+done
+
+if test $# -ne 0
+then
+	echo "$usage"
+	exit 1
+fi
+
+# include the file `final_grade_options.sh-subr'
+ at FINAL_GRADE_OPTIONS@
+
+# include the file `canonical_grade.sh-subr'
+ at CANONICAL_GRADE@
+
+if test "$errormsgs" = ""
+then
+	echo $GRADE
+	exit 0
+else
+	echo "$errormsgs"
+	exit 1
+fi
Index: scripts/canonical_grade.sh-subr
===================================================================
RCS file: canonical_grade.sh-subr
diff -N canonical_grade.sh-subr
--- /dev/null	Thu Sep  2 15:00:04 1999
+++ canonical_grade.sh-subr	Wed Dec  6 14:16:12 2000
@@ -0,0 +1,108 @@
+#---------------------------------------------------------------------------#
+# Copyright (C) 2000 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.
+#---------------------------------------------------------------------------#
+#
+# canonical_grade.sh-subr:
+#	An `sh' subroutine for computing a canonical grade string based on
+#	the values of grade-related options.
+#	It is used by the `ml' and `canonical_grade' scripts.
+#
+#	The code here should be inserted after init_grade_options.sh-subr,
+#	parse_grade_options.sh-subr and final_grade_options.sh-subr, which
+#	together define a set of shell variables giving the values of the
+#	various grade options.
+#
+#	Canonical_grade.sh-subr defines the variable GRADE, which will contain
+#	the canonical string for the grade implied by the option values.
+#
+#	If the option values are inconsistent, this script fragment will
+#	print an error message and exit with failure.
+#
+# IMPORTANT: any changes to the handling of grades here may also require
+# changes to all the files indicated by runtime/mercury_grade.h.
+
+case $non_local_gotos,$global_regs in
+	true,true) 	GRADE="fast" ;;
+	true,false)  	GRADE="jump" ;;
+	false,true)  	GRADE="reg" ;;
+	false,false)   	GRADE="none" ;;
+esac
+
+case $asm_labels in
+	true)		GRADE="asm_$GRADE" ;;
+	false)		;;
+esac
+
+case $highlevel_code,$highlevel_data,$GRADE in
+	true,true,none)		
+		GRADE="hl" ;;
+	true,false,none)	
+		GRADE="hlc" ;;
+	false,false,*)
+		# GRADE was set above
+		;;
+	false,true,*)
+		progname=`basename $0`
+		echo "$progname: error: \`--high-level-data' requires \`--high-level-code'" 1>&2
+		exit 1
+		;;
+	*)
+		echo "$progname: error: \`--high-level-code' is incompatible with the use of" 1>&2
+		echo "$progname: error: low-level gcc extensions implied by grade \`$GRADE'" 1>&2
+		exit 1
+		;;
+esac
+
+case $gcc_nested_functions,$highlevel_code in
+	true,true)	GRADE="${GRADE}_nest" ;;
+	*)		;;
+esac
+	
+case $thread_safe in
+	true)	GRADE="$GRADE.par" ;;
+	false)	;;
+esac
+
+case $gc_method in
+	conservative)	GRADE="$GRADE.gc" ;;
+	accurate)	GRADE="$GRADE.agc" ;;
+esac
+
+case $profile_time,$profile_calls,$profile_memory in
+	true,true,false)	GRADE="$GRADE.prof" ;;
+	true,false,false)	GRADE="$GRADE.proftime" ;;
+	false,true,false)	GRADE="$GRADE.profcalls" ;;
+	true,true,true)		GRADE="$GRADE.profall" ;;
+	false,true,true)	GRADE="$GRADE.memprof" ;;
+	false,false,false)	;;
+	*)			progname=`basename $0`
+				echo "$progname: error: invalid combination of profiling options." 1>&2
+				exit 1
+				;;
+esac
+
+case $use_trail in
+	true)		GRADE="$GRADE.tr" ;;
+	false)		;;
+esac
+
+case $use_minimal_model in
+	true)	GRADE="$GRADE.mm" ;;
+	false)	;;
+esac
+
+# We ignore the value of $picreg in computing the name of the grade
+# that we will use as a directory name in the Mercury linker.
+# case $picreg in
+# 	true)	GRADE="$GRADE.picreg" ;;
+# 	false)	;;
+# esac
+
+case $stack_trace,$require_tracing in
+	true,true)	GRADE="$GRADE.debug" ;;
+	false,true)	GRADE="$GRADE.trace" ;;
+	true,false)	GRADE="$GRADE.strce" ;;
+	false,false)	;;
+esac
Index: scripts/ml.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/ml.in,v
retrieving revision 1.87
diff -u -b -r1.87 ml.in
--- scripts/ml.in	2000/12/01 03:22:21	1.87
+++ scripts/ml.in	2000/12/06 03:16:01
@@ -415,83 +415,11 @@
 esac
 
 #
-# compute the grade from the options settings
+# compute the canonical grade name from the options settings
 #
 
-case $non_local_gotos,$global_regs in
-	true,true) 	GRADE="fast" ;;
-	true,false)  	GRADE="jump" ;;
-	false,true)  	GRADE="reg" ;;
-	false,false)   	GRADE="none" ;;
-esac
-case $asm_labels in
-	true)		GRADE="asm_$GRADE" ;;
-	false)		;;
-esac
-case $highlevel_code,$highlevel_data,$GRADE in
-	true,true,none)		
-		GRADE="hl" ;;
-	true,false,none)	
-		GRADE="hlc" ;;
-	false,false,*)
-		# GRADE was set above
-		;;
-	false,true,*)
-		echo "\`--high-level-data' requires \`--high-level-code'" 1>&2
-		exit 1
-		;;
-	*)
-		echo "\`--high-level-code' is incompatible with the use of" 1>&2
-		echo "low-level gcc extensions implied by grade \`$GRADE'" 1>&2
-		exit 1
-		;;
-esac
-case $gcc_nested_functions,$highlevel_code in
-	true,true)	GRADE="${GRADE}_nest" ;;
-	*)		;;
-esac
-	
-case $thread_safe in
-	true)	GRADE="$GRADE.par" ;;
-	false)	;;
-esac
-case $gc_method in
-	conservative)	GRADE="$GRADE.gc" ;;
-	accurate)	GRADE="$GRADE.agc" ;;
-esac
-case $profile_time,$profile_calls,$profile_memory in
-	true,true,false)	GRADE="$GRADE.prof" ;;
-	true,false,false)	GRADE="$GRADE.proftime" ;;
-	false,true,false)	GRADE="$GRADE.profcalls" ;;
-	true,true,true)		GRADE="$GRADE.profall" ;;
-	false,true,true)	GRADE="$GRADE.memprof" ;;
-	false,false,false)	;;
-	*)			progname=`basename $0`
-				echo \
-	"$progname: Error: invalid combination of profiling options." 1>&2
-				exit 1
-			;;
-esac
-case $use_trail in
-	true)		GRADE="$GRADE.tr" ;;
-	false)		;;
-esac
-case $use_minimal_model in
-	true)	GRADE="$GRADE.mm" ;;
-	false)	;;
-esac
-# We ignore the value of $picreg in computing the name of the grade
-# that we will use as a directory name below.
-# case $picreg in
-# 	true)	GRADE="$GRADE.picreg" ;;
-# 	false)	;;
-# esac
-case $stack_trace,$require_tracing in
-	true,true)	GRADE="$GRADE.debug" ;;
-	false,true)	GRADE="$GRADE.trace" ;;
-	true,false)	GRADE="$GRADE.strce" ;;
-	false,false)	;;
-esac
+# include the file `canonical_grade.sh-subr'
+ at CANONICAL_GRADE@
 
 # if the --print-grade option is specified,
 # then all we do is print the grade and then exit
cvs diff: Diffing tests
cvs diff: Diffing tests/benchmarks
cvs diff: Diffing tests/debugger
cvs diff: Diffing tests/debugger/declarative
cvs diff: Diffing tests/dppd
cvs diff: Diffing tests/general
cvs diff: Diffing tests/general/accumulator
cvs diff: Diffing tests/hard_coded
cvs diff: Diffing tests/hard_coded/exceptions
cvs diff: Diffing tests/hard_coded/purity
cvs diff: Diffing tests/hard_coded/sub-modules
cvs diff: Diffing tests/hard_coded/typeclasses
cvs diff: Diffing tests/invalid
cvs diff: Diffing tests/invalid/purity
cvs diff: Diffing tests/misc_tests
cvs diff: Diffing tests/tabling
cvs diff: Diffing tests/term
cvs diff: Diffing tests/valid
cvs diff: Diffing tests/warnings
cvs diff: Diffing tools
cvs diff: Diffing trace
cvs diff: Diffing trial
cvs diff: Diffing util
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------



More information about the developers mailing list