mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-19 15:54:18 +00:00
Combine the options for ml and c2init. Once mmake has been
Estimated hours taken: 1 Branches: main 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. This change requires an installed compiler which uses `--init-c-file' rather than `-o' to name c2init's output file. This is difficult to test for in configure.in. Bootstrap CVS tag: bootstrap_20011203_init_c_file_c2init_option 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.
This commit is contained in:
@@ -2563,10 +2563,12 @@ top=`pwd`
|
|||||||
INIT_GRADE_OPTIONS=$top/scripts/init_grade_options.sh-subr
|
INIT_GRADE_OPTIONS=$top/scripts/init_grade_options.sh-subr
|
||||||
PARSE_GRADE_OPTIONS=$top/scripts/parse_grade_options.sh-subr
|
PARSE_GRADE_OPTIONS=$top/scripts/parse_grade_options.sh-subr
|
||||||
FINAL_GRADE_OPTIONS=$top/scripts/final_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
|
CANONICAL_GRADE=$top/scripts/canonical_grade.sh-subr
|
||||||
AC_SUBST_FILE(INIT_GRADE_OPTIONS)
|
AC_SUBST_FILE(INIT_GRADE_OPTIONS)
|
||||||
AC_SUBST_FILE(PARSE_GRADE_OPTIONS)
|
AC_SUBST_FILE(PARSE_GRADE_OPTIONS)
|
||||||
AC_SUBST_FILE(FINAL_GRADE_OPTIONS)
|
AC_SUBST_FILE(FINAL_GRADE_OPTIONS)
|
||||||
|
AC_SUBST_FILE(PARSE_ML_OPTIONS)
|
||||||
AC_SUBST_FILE(CANONICAL_GRADE)
|
AC_SUBST_FILE(CANONICAL_GRADE)
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------#
|
#-----------------------------------------------------------------------------#
|
||||||
@@ -2939,8 +2941,9 @@ if test "$BOOTSTRAP_MC" != "" ; then
|
|||||||
fi
|
fi
|
||||||
#-----------------------------------------------------------------------------#
|
#-----------------------------------------------------------------------------#
|
||||||
AC_OUTPUT(Mmake.common scripts/Mmake.vars scripts/mmc scripts/mercury.bat
|
AC_OUTPUT(Mmake.common scripts/Mmake.vars scripts/mmc scripts/mercury.bat
|
||||||
scripts/mprof scripts/mercury_update_interface scripts/mgnuc scripts/ml
|
scripts/mprof scripts/mercury_update_interface scripts/mgnuc
|
||||||
scripts/mmake scripts/c2init scripts/mdb scripts/mdbrc scripts/mdprof
|
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
|
scripts/sicstus_conv scripts/mkfifo_using_mknod bindist/bindist.build_vars
|
||||||
,
|
,
|
||||||
for header in $CONFIG_HEADERS ; do
|
for header in $CONFIG_HEADERS ; do
|
||||||
|
|||||||
@@ -39,9 +39,10 @@ all: Mmake.vars
|
|||||||
|
|
||||||
#-----------------------------------------------------------------------------#
|
#-----------------------------------------------------------------------------#
|
||||||
|
|
||||||
ml mgnuc canonical_grade: init_grade_options.sh-subr
|
parse_ml_options.sh-subr mgnuc canonical_grade: init_grade_options.sh-subr
|
||||||
ml mgnuc canonical_grade: parse_grade_options.sh-subr
|
parse_ml_options.sh-subr 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: final_grade_options.sh-subr
|
||||||
|
ml c2init: parse_ml_options.sh-subr
|
||||||
ml canonical_grade: canonical_grade.sh-subr
|
ml canonical_grade: canonical_grade.sh-subr
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------#
|
#-----------------------------------------------------------------------------#
|
||||||
|
|||||||
@@ -12,6 +12,17 @@
|
|||||||
# Type `c2init --help' for usage message.
|
# 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'
|
||||||
|
@PARSE_ML_OPTIONS@
|
||||||
|
|
||||||
|
|
||||||
# If you change these, you will also need to change Mmake.common.in,
|
# If you change these, you will also need to change Mmake.common.in,
|
||||||
# scripts/ml.in, tools/bootcheck, tools/binary, tools/binary_step and
|
# scripts/ml.in, tools/bootcheck, tools/binary, tools/binary_step and
|
||||||
# tools/linear.
|
# tools/linear.
|
||||||
@@ -24,133 +35,6 @@ MERCURY_MOD_LIB_DIR=${MERCURY_MOD_LIB_DIR=@LIBDIR@/modules}
|
|||||||
MERCURY_TRACE_LIB_DIR=${MERCURY_TRACE_LIB_DIR=@LIBDIR@/modules}
|
MERCURY_TRACE_LIB_DIR=${MERCURY_TRACE_LIB_DIR=@LIBDIR@/modules}
|
||||||
MKINIT=${MERCURY_MKINIT=mkinit}
|
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'
|
|
||||||
@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'
|
|
||||||
@FINAL_GRADE_OPTIONS@
|
|
||||||
|
|
||||||
case $require_tracing in
|
case $require_tracing in
|
||||||
true)
|
true)
|
||||||
trace_opt="-t" ;;
|
trace_opt="-t" ;;
|
||||||
@@ -182,12 +66,12 @@ esac
|
|||||||
case $# in
|
case $# in
|
||||||
0) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
|
0) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
|
||||||
$library_opt $defentry_opt $extra_inits_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
|
$extra_init_dirs $EXTRA_INIT_FILES $MERCURY_ALL_LIB_MODS
|
||||||
;;
|
;;
|
||||||
*) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
|
*) exec $MKINIT $aditi_opt -c"$maxcalls" $init_opt $trace_opt \
|
||||||
$library_opt $defentry_opt $extra_inits_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
|
$extra_init_dirs "$@" $EXTRA_INIT_FILES $MERCURY_ALL_LIB_MODS
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
281
scripts/ml.in
281
scripts/ml.in
@@ -14,11 +14,20 @@
|
|||||||
#
|
#
|
||||||
# Environment variables: MERCURY_C_LIB_DIR, MERCURY_DEFAULT_GRADE, ...
|
# Environment variables: MERCURY_C_LIB_DIR, MERCURY_DEFAULT_GRADE, ...
|
||||||
|
|
||||||
|
Usage="\
|
||||||
|
Name: ml - Mercury Linker
|
||||||
|
Usage: ml [<ml options>] [-- <gcc options>] files..."
|
||||||
|
|
||||||
FULLARCH=@FULLARCH@
|
FULLARCH=@FULLARCH@
|
||||||
|
DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
|
||||||
|
|
||||||
|
# include the file `parse_ml_options.sh-subr'
|
||||||
|
@PARSE_ML_OPTIONS@
|
||||||
|
|
||||||
|
|
||||||
NONSHARED_LIB_DIR=${MERCURY_NONSHARED_LIB_DIR=@NONSHARED_LIB_DIR@}
|
NONSHARED_LIB_DIR=${MERCURY_NONSHARED_LIB_DIR=@NONSHARED_LIB_DIR@}
|
||||||
DEFAULT_LIBDIR=@LIBDIR@/lib
|
DEFAULT_LIBDIR=@LIBDIR@/lib
|
||||||
LIBDIR=${MERCURY_C_LIB_DIR=$DEFAULT_LIBDIR}
|
LIBDIR=${MERCURY_C_LIB_DIR=$DEFAULT_LIBDIR}
|
||||||
DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
|
|
||||||
# DEMANGLER=${MERCURY_DEMANGLER=@LIBDIR@/bin/@FULLARCH@/mdemangle}
|
# DEMANGLER=${MERCURY_DEMANGLER=@LIBDIR@/bin/@FULLARCH@/mdemangle}
|
||||||
DEMANGLER=${MERCURY_DEMANGLER=mdemangle}
|
DEMANGLER=${MERCURY_DEMANGLER=mdemangle}
|
||||||
CC=${MERCURY_C_COMPILER="@CC@"}
|
CC=${MERCURY_C_COMPILER="@CC@"}
|
||||||
@@ -82,277 +91,7 @@ STD_LIB_NAME=mer_std
|
|||||||
TRACE_LIB_NAME=mer_trace
|
TRACE_LIB_NAME=mer_trace
|
||||||
BROWSER_LIB_NAME=mer_browser
|
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=""
|
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'
|
|
||||||
@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 (*.@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'
|
|
||||||
@FINAL_GRADE_OPTIONS@
|
|
||||||
|
|
||||||
# --require-tracing (which is implied by --debug) implies --trace
|
# --require-tracing (which is implied by --debug) implies --trace
|
||||||
case $require_tracing in
|
case $require_tracing in
|
||||||
|
|||||||
384
scripts/parse_ml_options.sh-subr.in
Normal file
384
scripts/parse_ml_options.sh-subr.in
Normal file
@@ -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'
|
||||||
|
@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 (*.@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'
|
||||||
|
@FINAL_GRADE_OPTIONS@
|
||||||
|
|
||||||
Reference in New Issue
Block a user