[m-rev.] for review: combine ml and c2init options
Simon Taylor
stayl at cs.mu.OZ.AU
Fri Nov 30 02:26:53 AEDT 2001
Estimated hours taken: 1
Combine the options for ml and c2init. Once mmake has been
altered to pass MLFLAGS to c2init users will be able to
mostly ignore the existence of c2init.
scripts/parse_ml_options.sh-subr.in:
Parse the combined options for ml and c2init.
The `-o' and `--output' options for c2init have been removed
(`-o' conflicts with a linker option), use `--init-c-file' instead.
configure.in:
Add parse_ml_options.sh-subr.in to the list of files to substitute.
scripts/ml.in:
scripts/c2init.in:
Include parse_ml_options.sh-subr.
scripts/Mmakefile:
ml and c2init depend on parse_ml_options.sh-subr.
Index: configure.in
===================================================================
RCS file: /home/mercury1/repository/mercury/configure.in,v
retrieving revision 1.283
diff -u -u -r1.283 configure.in
--- configure.in 19 Nov 2001 07:25:00 -0000 1.283
+++ configure.in 28 Nov 2001 18:29:21 -0000
@@ -2563,10 +2563,12 @@
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
+PARSE_ML_OPTIONS=$top/scripts/parse_ml_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(PARSE_ML_OPTIONS)
AC_SUBST_FILE(CANONICAL_GRADE)
#-----------------------------------------------------------------------------#
@@ -2939,8 +2941,9 @@
fi
#-----------------------------------------------------------------------------#
AC_OUTPUT(Mmake.common scripts/Mmake.vars scripts/mmc scripts/mercury.bat
-scripts/mprof scripts/mercury_update_interface scripts/mgnuc scripts/ml
-scripts/mmake scripts/c2init scripts/mdb scripts/mdbrc scripts/mdprof
+scripts/mprof scripts/mercury_update_interface scripts/mgnuc
+scripts/parse_ml_options.sh-subr scripts/ml scripts/c2init
+scripts/mmake scripts/mdb scripts/mdbrc scripts/mdprof
scripts/sicstus_conv scripts/mkfifo_using_mknod bindist/bindist.build_vars
,
for header in $CONFIG_HEADERS ; do
Index: scripts/Mmakefile
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/Mmakefile,v
retrieving revision 1.24
diff -u -u -r1.24 Mmakefile
--- scripts/Mmakefile 16 Jul 2001 08:08:47 -0000 1.24
+++ scripts/Mmakefile 29 Nov 2001 15:02:52 -0000
@@ -39,9 +39,10 @@
#-----------------------------------------------------------------------------#
-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
+parse_ml_options.sh-subr mgnuc canonical_grade: init_grade_options.sh-subr
+parse_ml_options.sh-subr mgnuc canonical_grade: parse_grade_options.sh-subr
+parse_ml_options.sh-subr mgnuc canonical_grade: final_grade_options.sh-subr
+ml c2init: parse_ml_options.sh-subr
ml canonical_grade: canonical_grade.sh-subr
#-----------------------------------------------------------------------------#
Index: scripts/c2init.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/c2init.in,v
retrieving revision 1.32
diff -u -u -r1.32 c2init.in
--- scripts/c2init.in 13 Nov 2001 08:28:05 -0000 1.32
+++ scripts/c2init.in 28 Nov 2001 19:07:53 -0000
@@ -12,6 +12,17 @@
# Type `c2init --help' for usage message.
#
+Usage="\
+Name: c2init - Create Mercury initialization file.
+Usage: c2init [options] *.c *.init ..."
+
+FULLARCH=@FULLARCH@
+DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
+
+# include the file `parse_ml_options.sh-subr'
+ at PARSE_ML_OPTIONS@
+
+
# If you change these, you will also need to change Mmake.common.in,
# scripts/ml.in, tools/bootcheck, tools/binary, tools/binary_step and
# tools/linear.
@@ -24,133 +35,6 @@
MERCURY_TRACE_LIB_DIR=${MERCURY_TRACE_LIB_DIR=@LIBDIR@/modules}
MKINIT=${MERCURY_MKINIT=mkinit}
-# maximum number of calls to put in a single function
-maxcalls=40
-defentry_opt=""
-init_opt=""
-trace_opt=""
-library_opt=""
-extra_inits_opt=""
-aditi_opt=""
-extra_init_dirs=""
-output_file="-"
-
-# include the file `init_grade_options.sh-subr'
- at INIT_GRADE_OPTIONS@
-
-# 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: c2init - Create Mercury initialization file.
-Usage: c2init [options] *.c *.init ...
-Options:
- -a, --aditi
- Generate a function to upload Aditi-RL data to a database.
- -c <n>, --max-calls <n>
- Break up the initialization into groups of at most <n> function
- calls. (Default value of <n> is 40.)
- -i, --include-initialization-code
- Always include code that calls the initialization functions
- of the various modules. With this option, the debugger can use
- information from any modules that were compiled with execution
- tracing to print (partial) stack traces, and to print the
- values of variables in ancestors of the current call, even
- in grades in which this not normally possible.
- -t, --trace
- Enable execution tracing in the generated executable.
- Implies -i.
- --no-main, --library
- Don't generate a \`main()' function.
- Instead, generate a function
- mercury_main(int argc, char **argv);
- (declared in \"init.h\") that can be called from C code.
- (A more fine-grained interface is also available;
- see \"init.h\" for details.)
- -I <directory>, --init-file-directory <directory>
- Include <directory> in the list of directories searched to
- locate \`.init' files.
- --init-c-file <filename>, -o <filename>, --output <filename>
- Output the generated C initialization program to the
- specified file, rather than sending it to the standard
- output.
- -w <label>, --entry-point <label>
- Set entry point to <label>.
- (Default value corresponds to main/2.)
- -x, --extra-inits
- Search \`.c' files for extra initialization functions.
- (This may be necessary if the C files contain
- hand-coded C code with \`INIT' comments, rather than
- containing only C code that was automatically generated
- by the Mercury compiler.)
-
-$grade_usage
-
-Environment variables:
- MERCURY_MOD_LIB_DIR, MERCURY_MOD_LIB_MODS,
- MERCURY_TRACE_LIB_DIR, MERCURY_TRACE_LIB_MODS, MERCURY_MKINIT.
-"
-
-while true; do
- case "$1" in
- -a|--aditi)
- aditi_opt="-a";;
- -a-|--no-aditi)
- aditi_opt="";;
- -c|--max-calls)
- maxcalls="$2"; shift;;
-
- -i|--include-initialization-code)
- init_opt="-i";;
-
- -t|--trace)
- trace_opt="-t";;
-
- --no-main|--library)
- library_opt="-l";;
-
- --main|--no-library)
- library_opt="";;
-
- -I|--init-file-directory)
- extra_init_dirs="$extra_init_dirs -I $2"; shift;;
-
- --init-c-file|-o|--output)
- output_file="$2"; shift;;
-
- -w|--entry-point)
- defentry_opt="-w$2"; shift;;
-
- -x|--extra-inits)
- extra_inits_opt="-x";;
-
- -x-|--no-extra-inits)
- extra_inits_opt="";;
-
- -h|--help|"-?")
- echo "$Help"
- exit 0;;
-
- # include the file `parse_grade_options.sh-subr'
- @PARSE_GRADE_OPTIONS@
-
- --)
- break;;
-
- -*)
- echo "`basename $0`: invalid option \`$1'" 1>&2;
- echo "Try \`$0 --help' for help." 1>&2;
- exit 1;;
-
- *)
- break;;
- esac
- shift
-done
-
-# include the file `final_grade_options.sh-subr'
- at FINAL_GRADE_OPTIONS@
-
case $require_tracing in
true)
trace_opt="-t" ;;
@@ -182,12 +66,12 @@
case $# in
0) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
$library_opt $defentry_opt $extra_inits_opt \
- -o "$output_file" \
+ -o "$init_c_file" \
$extra_init_dirs $EXTRA_INIT_FILES $MERCURY_ALL_LIB_MODS
;;
*) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
$library_opt $defentry_opt $extra_inits_opt \
- -o "$output_file" \
+ -o "$init_c_file" \
$extra_init_dirs "$@" $EXTRA_INIT_FILES $MERCURY_ALL_LIB_MODS
;;
esac
Index: scripts/ml.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/ml.in,v
retrieving revision 1.92
diff -u -u -r1.92 ml.in
--- scripts/ml.in 16 Apr 2001 09:34:21 -0000 1.92
+++ scripts/ml.in 29 Nov 2001 15:26:19 -0000
@@ -14,11 +14,20 @@
#
# Environment variables: MERCURY_C_LIB_DIR, MERCURY_DEFAULT_GRADE, ...
+Usage="\
+Name: ml - Mercury Linker
+Usage: ml [<ml options>] [-- <gcc options>] files..."
+
FULLARCH=@FULLARCH@
+DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
+
+# include the file `parse_ml_options.sh-subr'
+ at PARSE_ML_OPTIONS@
+
+
NONSHARED_LIB_DIR=${MERCURY_NONSHARED_LIB_DIR=@NONSHARED_LIB_DIR@}
DEFAULT_LIBDIR=@LIBDIR@/lib
LIBDIR=${MERCURY_C_LIB_DIR=$DEFAULT_LIBDIR}
-DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
# DEMANGLER=${MERCURY_DEMANGLER=@LIBDIR@/bin/@FULLARCH@/mdemangle}
DEMANGLER=${MERCURY_DEMANGLER=mdemangle}
CC=${MERCURY_C_COMPILER="@CC@"}
@@ -82,277 +91,7 @@
TRACE_LIB_NAME=mer_trace
BROWSER_LIB_NAME=mer_browser
-verbose=false
-allow_undef=false
-trace=false
-readline=true
-case $FULLARCH in
- *-win95|*-winnt|*-win32|*-cygwin32|*-cygwin)
- # `gcc -s' is broken in gnu-win32
- strip=false
- ;;
- *-darwin*)
- # `gcc -s' doesn't seem to do the right thing on Mac OS X
- strip=false
- ;;
- *)
- strip=true
- ;;
-esac
-mercury_libs=default
-all_libs=default
-demangle=true
MAYBE_STATIC_OPT=""
-make_shared_lib=false
-leave_shlib_dirs_relative=false
-user_shlib_dirs=""
-use_thread_libs=false
-print_grade=false
-print_gc_grade=false
-
-# include the file `init_grade_options.sh-subr'
- at INIT_GRADE_OPTIONS@
-
-Help="\
-Name: ml - Mercury Linker
-Usage: ml [<ml options>] [-- <gcc options>] files...
-Options:
- -h, --help
- Print this help message.
-
-Diagnostics options:
- -v, --verbose
- Echo the gcc command line before executing it.
- --no-demangle
- Don't pipe the output of the linker through the Mercury
- demangler.
- --allow-undef
- --allow-undefined
- Don't report an error if there are unresolved symbols.
- This option is only used if you are building a shared
- library (with \`--make-shared-lib); when building
- executables, unresolved symbols are always errors.
- This option is useful when building shared libraries
- that are not intended to be self-contained.
- --print-grade
- Compute the grade of the Mercury libraries to link with based
- on the command line options, print it to the standard output,
- and then exit (don't actually link anything).
- --print-gc-grade
- Compute the base name of the garbage collection library to
- link with based on the command line options, print it to the
- standard output, and then exit (don't actually link anything).
-
-Dynamic/static linking options:
- --mercury-libs {shared, static, none}
- Specify which version of the standard Mercury libraries to
- link with:
- --mercury-libs shared
- Link with the shared libraries (*.so),
- if possible, otherwise with the static ones.
- --mercury-libs static
- Link with the static libraries (*. at LIB_SUFFIX@).
- --mercury-libs none
- Don't link in the Mercury standard libraries.
- -shared, --shared
- Similar to \`--mercury-libs shared', but applies to all
- libraries, not just the standard Mercury libraries.
- -static, --static
- Similar to \`--mercury-libs static', but applies to all
- libraries, not just the standard Mercury libraries.
- --make-shared-lib
- Produce a shared library, rather than an executable.
-
-Directory options:
- -L <directory>, --lib-dir <directory>
- Include <directory> in the list of directories that the
- linker will use to search for libraries.
- -R <directory>, --shared-lib-dir <directory>
- Include <directory> in the list of directories that the
- dynamic linker will use to search for shared libraries.
- --leave-shared-lib-dirs-relative
- Don't convert relative shared library directory names
- into absolute paths.
- --no-leave-shared-lib-dirs-relative
- Convert relative shared library directory names into
- absolute paths. This is the default.
-
-Debugging options:
- -t, --trace
- Link in the Mercury debugging libraries.
- This option is needed if any of the modules being linked
- were compiled with tracing enabled. However, \`--debug'
- implies \`--trace', so if you're using \`--debug',
- then you don't need to explicitly specify \`--trace'.
- Note that \`--trace' is incompatible with \`--static'
- on some platforms (e.g. sparc-sun-solaris2.6).
- -r-, --no-readline
- Don't link in the GPL'd GNU Readline Library.
- -g, --c-debug, --no-strip
- Do not strip C debugging information.
-
-Threads options:
- --use-thread-libs
- Link with the POSIX thread libraries. This option is useful
- if a C library being linked with uses threads, but the
- Mercury code being linked doesn't.
-
-$grade_usage"
-
-while : ; do
- case "$1" in
- -h|--help|"-?")
- echo "$Help"
- exit 0
- ;;
- -v|--verbose)
- verbose=true
- ;;
- --demangle)
- demangle=true
- ;;
- --no-demangle)
- demangle=false
- ;;
- --allow-undef|--allow-undefined)
- allow_undef=true
- ;;
- --no-allow-undef|--no-allow-undefined)
- allow_undef=false
- ;;
- -t|--trace)
- trace=true
- ;;
- -t-|--no-trace)
- trace=false
- ;;
- -r|--readline)
- readline=true
- ;;
- -r-|--no-readline)
- readline=false
- ;;
- -g-|--no-c-debug|--strip)
- strip=true
- ;;
- -g|--c-debug|--no-strip)
- strip=false
- ;;
- --make-shared-lib)
- make_shared_lib=true
- # on some targets, stripping shared libraries will
- # make them unusable, I think, so don't strip
- strip=false
- ;;
- --no-libs)
- progname=`basename $0`
- cat 1>&2 << EOF
-$progname: Warning: option \`--no-libs' is deprecated --
-$progname: please use the new option \`--mercury-libs none' instead.
-$progname: Support for \`--no-libs' may be removed in a future release.
-EOF
- mercury_libs=none
- ;;
- --mercury-libs)
- case "$2" in
- shared|static|none|default)
- mercury_libs="$2"
- shift ;;
- *)
- progname=`basename $0`
- cat 1>&2 << EOF
-$progname: Error: parameter to \`--mercury-libs' option should be either
-$progname: \`shared', \`static', \`none', or \`default', not \`$2'.
-$progname: Try \`$0 --help' for help.
-EOF
- exit 1
- ;;
- esac
- ;;
- -shared|--shared)
- all_libs=shared
- case $mercury_libs in static|default)
- mercury_libs=shared ;;
- esac
- ;;
- -static|--static)
- all_libs=static
- case $mercury_libs in shared|default)
- mercury_libs=static ;;
- esac
- ;;
- -L|--lib-dir)
- dir="$2"
- user_libdir_opts="$user_libdir_opts @LIB_LIBPATH@$dir"
- shift
- ;;
- -L*)
- user_libdir_opts="$user_libdir_opts $1"
- ;;
- --leave-shared-lib-dirs-relative)
- leave_shlib_dirs_relative=true
- ;;
- --no-leave-shared-lib-dirs-relative)
- leave_shlib_dirs_relative=false
- ;;
- -R|--shared-lib-dir)
- dir="$2"
- case $leave_shlib_dirs_relative in false)
- case "$dir" in
- /*) ;;
- *) dir="`pwd`/$dir" ;;
- esac
- ;;
- esac
- user_shlib_dirs="$user_shlib_dirs $dir"
- shift
- ;;
- -R*)
- dir="` expr $1 : '-R\(.*\)' `"
- case $leave_shlib_dirs_relative in false)
- case "$dir" in
- /*) ;;
- *) dir="`pwd`/$dir" ;;
- esac
- ;;
- esac
- user_shlib_dirs="$user_shlib_dirs $dir"
- ;;
-
- --use-thread-libs)
- use_thread_libs=true
- ;;
- --no-use-thread-libs)
- use_thread_libs=false
- ;;
-
- --print-grade)
- print_grade=true
- ;;
- --no-print-grade)
- print_grade=false
- ;;
- --print-gc-grade)
- print_gc_grade=true
- ;;
- --no-print-gc-grade)
- print_gc_grade=false
- ;;
-
- # include the file `parse_grade_options.sh-subr'
- @PARSE_GRADE_OPTIONS@
-
- --)
- shift
- break ;;
- *)
- break ;;
- esac
- shift
-done
-
-# include the file `final_grade_options.sh-subr'
- at FINAL_GRADE_OPTIONS@
# --require-tracing (which is implied by --debug) implies --trace
case $require_tracing in
Index: scripts/parse_ml_options.sh-subr.in
===================================================================
RCS file: scripts/parse_ml_options.sh-subr.in
diff -N scripts/parse_ml_options.sh-subr.in
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ scripts/parse_ml_options.sh-subr.in 28 Nov 2001 18:33:24 -0000
@@ -0,0 +1,384 @@
+#---------------------------------------------------------------------------#
+# Copyright (C) 2001 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.
+#---------------------------------------------------------------------------#
+#
+# parse_ml_options.sh-subr:
+# An `sh' subroutine for parsing the options for the `ml' and `c2init'
+# scripts. `ml' and `c2init' share the same set of options so that
+# users can mostly ignore the existence of `c2init'.
+#
+# The invoking script must set the shell variable `Usage' to a string
+# containing the name and description of the script and the general
+# format of the command line.
+#
+# The invoking script must also define FULLARCH and DEFAULT_GRADE.
+#---------------------------------------------------------------------------#
+
+# initialize ml options
+verbose=false
+allow_undef=false
+trace=false
+readline=true
+case $FULLARCH in
+ *-win95|*-winnt|*-win32|*-cygwin32|*-cygwin)
+ # `gcc -s' is broken in gnu-win32
+ strip=false
+ ;;
+ *-darwin*)
+ # `gcc -s' doesn't seem to do the right thing on Mac OS X
+ strip=false
+ ;;
+ *)
+ strip=true
+ ;;
+esac
+mercury_libs=default
+all_libs=default
+demangle=true
+make_shared_lib=false
+leave_shlib_dirs_relative=false
+user_shlib_dirs=""
+use_thread_libs=false
+print_grade=false
+print_gc_grade=false
+
+# initialize c2init options
+maxcalls=40 # maximum number of calls to put in a single function
+defentry_opt=""
+init_opt=""
+trace_opt=""
+library_opt=""
+extra_inits_opt=""
+aditi_opt=""
+extra_init_dirs=""
+init_c_file="-"
+
+# include the file `init_grade_options.sh-subr'
+ at INIT_GRADE_OPTIONS@
+
+Help="\
+$Usage
+Options:
+ -h, --help
+ Print this help message.
+
+Diagnostics options:
+ -v, --verbose
+ Echo the gcc command line before executing it.
+ --no-demangle
+ Don't pipe the output of the linker through the Mercury
+ demangler.
+ --allow-undef
+ --allow-undefined
+ Don't report an error if there are unresolved symbols.
+ This option is only used if you are building a shared
+ library (with \`--make-shared-lib); when building
+ executables, unresolved symbols are always errors.
+ This option is useful when building shared libraries
+ that are not intended to be self-contained.
+ --print-grade
+ Compute the grade of the Mercury libraries to link with based
+ on the command line options, print it to the standard output,
+ and then exit (don't actually link anything).
+ --print-gc-grade
+ Compute the base name of the garbage collection library to
+ link with based on the command line options, print it to the
+ standard output, and then exit (don't actually link anything).
+
+Dynamic/static linking options:
+ --mercury-libs {shared, static, none}
+ Specify which version of the standard Mercury libraries to
+ link with:
+ --mercury-libs shared
+ Link with the shared libraries (*.so),
+ if possible, otherwise with the static ones.
+ --mercury-libs static
+ Link with the static libraries (*. at LIB_SUFFIX@).
+ --mercury-libs none
+ Don't link in the Mercury standard libraries.
+ -shared, --shared
+ Similar to \`--mercury-libs shared', but applies to all
+ libraries, not just the standard Mercury libraries.
+ -static, --static
+ Similar to \`--mercury-libs static', but applies to all
+ libraries, not just the standard Mercury libraries.
+ --make-shared-lib
+ Produce a shared library, rather than an executable.
+
+Directory options:
+ -L <directory>, --lib-dir <directory>
+ Include <directory> in the list of directories that the
+ linker will use to search for libraries.
+ -R <directory>, --shared-lib-dir <directory>
+ Include <directory> in the list of directories that the
+ dynamic linker will use to search for shared libraries.
+ --leave-shared-lib-dirs-relative
+ Don't convert relative shared library directory names
+ into absolute paths.
+ --no-leave-shared-lib-dirs-relative
+ Convert relative shared library directory names into
+ absolute paths. This is the default.
+
+Debugging options:
+ -t, --trace
+ Link in the Mercury debugging libraries.
+ This option is needed if any of the modules being linked
+ were compiled with tracing enabled. However, \`--debug'
+ implies \`--trace', so if you're using \`--debug',
+ then you don't need to explicitly specify \`--trace'.
+ Note that \`--trace' is incompatible with \`--static'
+ on some platforms (e.g. sparc-sun-solaris2.6).
+ Implies \`--include-initialization-code'.
+ -r-, --no-readline
+ Don't link in the GPL'd GNU Readline Library.
+ -g, --c-debug, --no-strip
+ Do not strip C debugging information.
+
+Initialization options:
+ -a, --aditi
+ Generate a function to upload Aditi-RL data to a database.
+ -c <n>, --max-calls <n>
+ Break up the initialization into groups of at most <n> function
+ calls. (Default value of <n> is 40.)
+ -i, --include-initialization-code
+ Always include code that calls the initialization functions
+ of the various modules. With this option, the debugger can use
+ information from any modules that were compiled with execution
+ tracing to print (partial) stack traces, and to print the
+ values of variables in ancestors of the current call, even
+ in grades in which this not normally possible.
+ --no-main, --library
+ Don't generate a \`main()' function.
+ Instead, generate a function
+ mercury_main(int argc, char **argv);
+ (declared in \"mercury_init.h\") that can be called
+ from C code.
+ (A more fine-grained interface is also available;
+ see \"mercury_init.h\" for details.)
+ -I <directory>, --init-file-directory <directory>
+ Include <directory> in the list of directories searched to
+ locate \`.init' files.
+ --init-c-file <filename>
+ Output the generated C initialization program to the
+ specified file, rather than sending it to the standard
+ output.
+ -w <label>, --entry-point <label>
+ Set entry point to <label>.
+ (Default value corresponds to main/2.)
+ -x, --extra-inits
+ Search \`.c' files for extra initialization functions.
+ (This may be necessary if the C files contain
+ hand-coded C code with \`INIT' comments, rather than
+ containing only C code that was automatically generated
+ by the Mercury compiler.)
+
+ Environment variables:
+ MERCURY_MOD_LIB_DIR, MERCURY_MOD_LIB_MODS,
+ MERCURY_TRACE_LIB_DIR, MERCURY_TRACE_LIB_MODS,
+ MERCURY_MKINIT.
+
+Threads options:
+ --use-thread-libs
+ Link with the POSIX thread libraries. This option is useful
+ if a C library being linked with uses threads, but the
+ Mercury code being linked doesn't.
+
+$grade_usage"
+
+while : ; do
+ case "$1" in
+ -h|--help|"-?")
+ echo "$Help"
+ exit 0
+ ;;
+ -v|--verbose)
+ verbose=true
+ ;;
+
+ #
+ # ml options.
+ #
+ --demangle)
+ demangle=true
+ ;;
+ --no-demangle)
+ demangle=false
+ ;;
+ --allow-undef|--allow-undefined)
+ allow_undef=true
+ ;;
+ --no-allow-undef|--no-allow-undefined)
+ allow_undef=false
+ ;;
+ -t|--trace)
+ trace=true
+ trace_opt="-t"
+ ;;
+ -t-|--no-trace)
+ trace=false
+ trace_opt=""
+ ;;
+ -r|--readline)
+ readline=true
+ ;;
+ -r-|--no-readline)
+ readline=false
+ ;;
+ -g-|--no-c-debug|--strip)
+ strip=true
+ ;;
+ -g|--c-debug|--no-strip)
+ strip=false
+ ;;
+ --make-shared-lib)
+ make_shared_lib=true
+ # on some targets, stripping shared libraries will
+ # make them unusable, I think, so don't strip
+ strip=false
+ ;;
+ --no-libs)
+ progname=`basename $0`
+ cat 1>&2 << EOF
+$progname: Warning: option \`--no-libs' is deprecated --
+$progname: please use the new option \`--mercury-libs none' instead.
+$progname: Support for \`--no-libs' may be removed in a future release.
+EOF
+ mercury_libs=none
+ ;;
+ --mercury-libs)
+ case "$2" in
+ shared|static|none|default)
+ mercury_libs="$2"
+ shift ;;
+ *)
+ progname=`basename $0`
+ cat 1>&2 << EOF
+$progname: Error: parameter to \`--mercury-libs' option should be either
+$progname: \`shared', \`static', \`none', or \`default', not \`$2'.
+$progname: Try \`$0 --help' for help.
+EOF
+ exit 1
+ ;;
+ esac
+ ;;
+ -shared|--shared)
+ all_libs=shared
+ case $mercury_libs in static|default)
+ mercury_libs=shared ;;
+ esac
+ ;;
+ -static|--static)
+ all_libs=static
+ case $mercury_libs in shared|default)
+ mercury_libs=static ;;
+ esac
+ ;;
+ -L|--lib-dir)
+ dir="$2"
+ user_libdir_opts="$user_libdir_opts @LIB_LIBPATH@$dir"
+ shift
+ ;;
+ -L*)
+ user_libdir_opts="$user_libdir_opts $1"
+ ;;
+ --leave-shared-lib-dirs-relative)
+ leave_shlib_dirs_relative=true
+ ;;
+ --no-leave-shared-lib-dirs-relative)
+ leave_shlib_dirs_relative=false
+ ;;
+ -R|--shared-lib-dir)
+ dir="$2"
+ case $leave_shlib_dirs_relative in false)
+ case "$dir" in
+ /*) ;;
+ *) dir="`pwd`/$dir" ;;
+ esac
+ ;;
+ esac
+ user_shlib_dirs="$user_shlib_dirs $dir"
+ shift
+ ;;
+ -R*)
+ dir="` expr $1 : '-R\(.*\)' `"
+ case $leave_shlib_dirs_relative in false)
+ case "$dir" in
+ /*) ;;
+ *) dir="`pwd`/$dir" ;;
+ esac
+ ;;
+ esac
+ user_shlib_dirs="$user_shlib_dirs $dir"
+ ;;
+
+ --use-thread-libs)
+ use_thread_libs=true
+ ;;
+ --no-use-thread-libs)
+ use_thread_libs=false
+ ;;
+
+ --print-grade)
+ print_grade=true
+ ;;
+ --no-print-grade)
+ print_grade=false
+ ;;
+ --print-gc-grade)
+ print_gc_grade=true
+ ;;
+ --no-print-gc-grade)
+ print_gc_grade=false
+ ;;
+
+ #
+ # c2init options.
+ #
+ -a|--aditi)
+ aditi_opt="-a";;
+ -a-|--no-aditi)
+ aditi_opt="";;
+ -c|--max-calls)
+ maxcalls="$2"; shift;;
+
+ -i|--include-initialization-code)
+ init_opt="-i";;
+
+ --no-main|--library)
+ library_opt="-l";;
+
+ --main|--no-library)
+ library_opt="";;
+
+ -I|--init-file-directory)
+ extra_init_dirs="$extra_init_dirs -I $2"; shift;;
+
+ --init-c-file)
+ init_c_file="$2"; shift;;
+
+ -w|--entry-point)
+ defentry_opt="-w$2"; shift;;
+
+ -x|--extra-inits)
+ extra_inits_opt="-x";;
+
+ -x-|--no-extra-inits)
+ extra_inits_opt="";;
+
+ # include the file `parse_grade_options.sh-subr'
+ @PARSE_GRADE_OPTIONS@
+
+ --)
+ shift
+ break ;;
+ *)
+ break ;;
+ esac
+ shift
+done
+
+# include the file `final_grade_options.sh-subr'
+ at FINAL_GRADE_OPTIONS@
+
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list