#---------------------------------------------------------------------------# # Copyright (C) 2001-2003 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 common options mercury_config_dir=${MERCURY_STDLIB_DIR-@CONFIG_LIBDIR@} mercury_config_dir=${MERCURY_CONFIG_DIR=$mercury_config_dir} mercury_stdlib_dir=${MERCURY_STDLIB_DIR=@LIBDIR@} # 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 print_link_command=false print_shared_lib_link_command=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="" trace_init_files="" init_c_file="-" runtime_flags="" # include the file `init_grade_options.sh-subr' @INIT_GRADE_OPTIONS@ Help="\ $Usage Options: -h, --help Print this help message. Diagnostics options: -v, --verbose Print each command 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). --print-link-command Print the command used to link executables. --print-shared-lib-link-command Print the command used to link shared libraries. 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: --mercury-standard-library-directory --mercury-stdlib-dir The directory in which to find the Mercury standard library. --no-mercury-standard-library-directory, --no-mercury-stdlib-dir Same as \`--mercury-libs none'. --mercury-config-directory --mercury-config-dir The location of an alternative configuration (created with mercury_config) to use. -L , --lib-dir Include in the list of directories that the linker will use to search for libraries. -R , --shared-lib-dir Include 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: --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 , --init-file-directory Include in the list of directories searched to locate \`.init' files. -w