#! /bin/sh # @configure_input@ #---------------------------------------------------------------------------# # Copyright (C) 1995-2008 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. #---------------------------------------------------------------------------# # C2INIT - Convert *.c to *_init.c # # This script outputs an appropriate init.c, given the .c files. # Type `c2init --help' for usage message. # # ************************************************************************* # *** IMPORTANT NOTE: any changes to this file may also require similar *** # *** changes to compiler/compile_target_code.m *** # ************************************************************************* 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', which in turn includes # the sh-subr files dealing with grades @PARSE_ML_OPTIONS@ # include the file `canonical_grade.sh-subr' @CANONICAL_GRADE@ # If you change one of these, or if you add a new one, you will also need # to check the following files to see if corresponding changes are needed # there as well: # # Mmake.workspace # Mmakefile # compiler/compile_target_code.m # scripts/c2init.in # scripts/ml.in # scripts/Mercury.config.in # scripts/Mercury.config.bootstrap.in # tools/bootcheck, # tools/binary # tools/binary_step # tools/linear # tools/lmc.in # tools/lml RT_LIB_NAME=mer_rt STD_LIB_NAME=mer_std TRACE_LIB_NAME=mer_trace EVENTSPEC_LIB_NAME=mer_eventspec BROWSER_LIB_NAME=mer_browser MDBCOMP_LIB_NAME=mer_mdbcomp SSDB_LIB_NAME=mer_ssdb MKINIT=${MERCURY_MKINIT=mkinit} case $debug in true) trace_opt="-t" ;; esac case $debug in true) init_opt="-i" ;; esac case $profile_deep in true) init_opt="-i" ;; esac if test "$experimental_complexity" != "" then experimental_complexity_opt="-X $experimental_complexity" else experimental_complexity_opt="" fi if test "$mercury_stdlib_dir" != "" then MERCURY_MOD_LIB_MODS="\ $mercury_stdlib_dir/modules/$GRADE/$RT_LIB_NAME.init \ $mercury_stdlib_dir/modules/$GRADE/$STD_LIB_NAME.init" MERCURY_TRACE_LIB_MODS="\ $mercury_stdlib_dir/modules/$GRADE/$BROWSER_LIB_NAME.init \ $mercury_stdlib_dir/modules/$GRADE/$MDBCOMP_LIB_NAME.init" MERCURY_SSDB_LIB_MODS="\ $mercury_stdlib_dir/modules/$GRADE/$SSDB_LIB_NAME.init" fi MERCURY_TRACE_LIB_MODS="$MERCURY_TRACE_LIB_MODS $trace_init_files" MERCURY_SSDB_LIB_MODS="$MERCURY_SSDB_LIB_MODS $ssdb_init_files" MERCURY_ALL_LIB_MODS="$MERCURY_MOD_LIB_MODS" # XXX why does this test $trace_opt instead of $trace? case "$trace_opt" in -t) init_opt="-i" MERCURY_ALL_LIB_MODS="$MERCURY_ALL_LIB_MODS\ $MERCURY_TRACE_LIB_MODS" ;; esac case $ss_debug in true) ssdb=true ;; esac case $ssdb in true) MERCURY_ALL_LIB_MODS="$MERCURY_ALL_LIB_MODS\ $MERCURY_SSDB_LIB_MODS" ;; esac # XXX: $EXTRA_INIT_FILES is not set or used anywhere by our code, and users # can't set it since it is not documented anywhere, so its value should # always be the empty string. case $# in 0) exec $MKINIT -c"$maxcalls" $init_opt $trace_opt \ $library_opt $defentry_opt $extra_inits_opt \ -g "$GRADE" -o "$init_c_file" $experimental_complexity_opt \ $extra_init_dirs $always_exec_init_opts \ $EXTRA_INIT_FILES $MERCURY_ALL_LIB_MODS ;; *) exec $MKINIT -c"$maxcalls" $init_opt $trace_opt \ $library_opt $defentry_opt $extra_inits_opt \ -g "$GRADE" -o "$init_c_file" $experimental_complexity_opt \ -r "$runtime_flags" \ $extra_init_dirs $always_exec_init_opts \ "$@" \ $EXTRA_INIT_FILES $MERCURY_ALL_LIB_MODS ;; esac