Files
mercury/scripts/c2init.in
Peter Wang ef81b66625 Move the intermodule analysis framework into the `compiler' directory, in
Estimated hours taken: 2
Branches: main

Move the intermodule analysis framework into the `compiler' directory, in
preparation for making it specific to the Mercury compiler, rather than having
it generic in case some fictional being might want to use it with a .NET
compiler one day.  This will make it easier to use and modify.

compiler/analysis.file.m:
compiler/analysis.m:
	Copy these files from the `analysis' directory.

compiler/top_level.m:
	Include analysis.m as a new package.

compiler/Mercury.options:
	Add a bug workaround line from analysis/Mercury.options.

analysis/Mercury.options:
analysis/Mmakefile:
analysis/analysis.file.m:
analysis/analysis.m:
analysis/mer_analysis.m:
	Replace the contents of these files with comments that the analysis
	framework is now in the `compiler' directory.  We don't actually
	delete them so their histories remain easily accessible.

analysis/README:
	Mention that the code has been moved.

compiler/notes/compiler_design.html:
compiler/notes/overall_design.html:
	Update documentation.

Mmake.workspace:
Mmakefile:
configure.in:
compiler/.mgnuc_copts:
compiler/COMP_FLAGS.in:
compiler/Mmakefile:
deep_profiler/.mgnuc_copts:
scripts/Mmake.vars.in:
scripts/c2init.in:
scripts/mercury_config.in:
scripts/prepare_tmp_dir_fixed_part.in:
tools/binary:
tools/binary_step:
tools/bootcheck:
tools/lmc.in:
tools/make_arena:
compiler/notes/coding_standards.html:
	Remove references to the `analysis' directory and `libmer_analysis'.
2008-02-20 03:10:00 +00:00

138 lines
3.7 KiB
Bash
Executable File

#! /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