Files
mercury/scripts/parse_grade_options.sh-subr
Zoltan Somogyi cd72d000a8 Remove support for the MPS garbage collector.
As Tomas By's recent emails suggest, this support is doing more harm than good,
by falsely implying to people that MPS is a viable alternative to the Boehm
collector. The MPS collector was only ever experimental, and never performed
as well as Boehm. MPS isn't even in the git repository on git hub. It was
stored in a separate CVS repository on mundula, and (as far as I know)
wasn't carried over to github. The code of MPS was last touched a long time
ago; I would be surprised if it worked on today's systems without changes.

Mmake.common.in:
Mmake.workspace:
RESERVED_MACRO_NAMES:
boehm_gc/Mmakefile:
compiler/add_pragma.m:
compiler/compile_target_code.m:
compiler/globals.m:
compiler/handle_options.m:
compiler/mercury_compile_mlds_back_end.m:
compiler/mlds_to_c.m:
compiler/options.m:
compiler/peephole.m:
doc/user_guide.texi:
library/benchmarking.m:
runtime/Mmakefile.m:
runtime/mercury.h:
runtime/mercury_conf_param.h:
runtime/mercury_grade.h:
runtime/mercury_heap.h:
runtime/mercury_init.h:
runtime/mercury_memory.h:
runtime/mercury_wrapper.[ch]:
scripts/canonical_grade.sh-subr:
scripts/init_grade_options.sh-subr:
scripts/mgnuc.in:
scripts/ml.in:
scripts/parse_grade_options.sh-subr:
util/mkinit.c:
    Remove all references to MPS.
2014-08-05 15:45:33 +02:00

604 lines
17 KiB
Plaintext

#---------------------------------------------------------------------------#
# vim: ts=4 sw=4 expandtab
#---------------------------------------------------------------------------#
# Copyright (C) 1997-2007, 2010 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_grade_options.sh-subr:
# An `sh' subroutine for parsing grade-related options.
# Used by the `ml', `mgnuc' and `c2init' scripts.
#
# The code here should be inserted in the case statement in a script's
# option-parsing loop.
#
# IMPORTANT: any changes to the handling of grades here may also require
# changes to all the files indicated by runtime/mercury_grade.h.
#
# This file should handle the setting of all the shell variables defined by
# init_grade_options.sh-subr.
#
#---------------------------------------------------------------------------#
--target)
shift
case "$1" in
c|C)
target=c ;;
il|IL)
target=il ;;
csharp|'C#')
target=csharp ;;
java|Java)
target=java ;;
erlang|Erlang)
target=erlang ;;
*)
echo "$0: invalid target \`$1'" 1>&2
exit 1
;;
esac
;;
--il|--IL|--il-only|--IL-only)
target=il ;;
--csharp|'--C#'|--csharp-only|'--C#-only')
target=csharp ;;
--java|--Java|--java-only|--Java-only)
target=java ;;
--erlang|--Erlang|--erlang-only|--Erlang-only)
target=erlang ;;
--high-level-code|-H)
highlevel_code=true ;;
--no-high-level-code|-H-)
highlevel_code=false ;;
--high-level-data)
highlevel_data=true ;;
--no-high-level-data)
highlevel_data=false ;;
--gcc-nested-functions)
gcc_nested_functions=true ;;
--no-gcc-nested-functions)
gcc_nested_functions=false ;;
--asm-labels)
asm_labels=true ;;
--no-asm-labels)
asm_labels=false ;;
--gcc-non-local-gotos)
non_local_gotos=true ;;
--no-gcc-non-local-gotos)
non_local_gotos=false ;;
--gcc-global-registers)
global_regs=true ;;
--no-gcc-global-registers)
global_regs=false ;;
--gc)
shift
case "$1" in
accurate|conservative|boehm|boehm_debug|hgc|none|automatic)
gc_method=$1 ;;
*)
echo "$0: invalid gc method \`$1'" 1>&2
exit 1
;;
esac
;;
--parallel)
thread_safe=true ;;
-p|--profiling|--time-profiling)
profile_time=true
profile_calls=true
profile_memory=false
profile_deep=false
;;
--memory-profiling)
profile_time=false
profile_calls=true
profile_memory=true
profile_deep=false
;;
--deep-profiling)
profile_time=false
profile_calls=false
profile_memory=false
profile_deep=true
;;
-p-|--no-profiling)
profile_time=false
profile_calls=false
profile_memory=false
profile_deep=false
;;
--profile-time)
profile_time=true ;;
--no-profile-time)
profile_time=false ;;
--profile-calls)
profile_calls=true ;;
--no-profile-calls)
profile_calls=false ;;
--profile-memory)
profile_memory=true ;;
--no-profile-memory)
profile_memory=false ;;
--profile-deep)
profile_deep=true ;;
--no-profile-deep)
profile_deep=false ;;
--record-term-sizes-as-words)
record_term_sizes_as_words=true ;;
--no-record-term-sizes-as-words)
record_term_sizes_as_words=false ;;
--record-term-sizes-as-cells)
record_term_sizes_as_cells=true ;;
--no-record-term-sizes-as-cells)
record_term_sizes_as_cells=false ;;
--use-trail)
use_trail=true ;;
--no-use-trail)
use_trail=false ;;
--trail-segments)
trail_segments=true ;;
--no-trail-segments)
trail_segments=false ;;
--use-minimal-model-stack-copy)
use_minimal_model_stack_copy=true ;;
--no-use-minimal-model-stack-copy)
use_minimal_model_stack_copy=false ;;
--use-minimal-model-own-stacks)
use_minimal_model_own_stacks=true ;;
--no-use-minimal-model-own-stacks)
use_minimal_model_own_stacks=false ;;
--minimal-model-debug)
minimal_model_debug=true ;;
--no-minimal-model-debug)
minimal_model_debug=false ;;
--pregenerated-dist)
pregenerated_dist=true ;;
--no-pregenerated-dist)
pregenerated_dist=false ;;
--single-prec-float)
single_prec_float=true ;;
--no-single-prec-float)
single_prec_float=false ;;
--pic-reg)
pic_reg=true ;;
--no-pic-reg)
pic_reg=false ;;
--debug)
debug=true ;;
--no-debug)
debug=false ;;
--decl-debug)
decl_debug=true ;;
--no-decl-debug)
decl_debug=false ;;
--ss-debug)
ss_debug=true ;;
--no-ss-debug)
ss_debug=false ;;
--low-level-debug)
ll_debug= true ;;
--no-low-level-debug)
ll_debug= false ;;
--extend-stacks-when-needed)
extend_stacks=true ;;
--no-extend-stacks-when-needed)
extend_stacks=false ;;
--stack-segments)
stack_segments=true ;;
--no-stack-segments)
stack_segments=false ;;
--use-regions)
use_regions=true;;
--no-use-regions)
use_regions=false ;;
--use-regions-debug)
use_regions_debug=true;;
--no-use-regions-debug)
use_regions_debug=false ;;
--use-regions-profiling)
use_regions_profiling=true;;
--no-use-regions-profiling)
use_regions_profiling=false ;;
-s|--grade)
shift
grade="$1";
# Convert a grade to a set of options.
#
# IMPORTANT: any changes to the handling of grades here
# may also require changes to all the files indicated by
# runtime/mercury_grade.h.
target=c
highlevel_code=false
gcc_nested_functions=false
highlevel_data=false
asm_labels=false
non_local_gotos=false
global_regs=false
thread_safe=false
gc_method=none
profile_time=false
profile_calls=false
profile_memory=false
profile_deep=false
record_term_sizes_as_words=false
record_term_sizes_as_cells=false
use_trail=false
trail_segments=false
use_minimal_model_stack_copy=false
use_minimal_model_own_stacks=false
minimal_model_debug=false
pregenerated_dist=false
single_prec_float=false
pic_reg=false
debug=false
decl_debug=false
ss_debug=false
ll_debug=false
extend_stacks=false
stack_segments=false
use_regions=false
use_regions_debug=false
use_regions_profiling=false
grade_pieces=`echo $grade | tr '.' ' '`
for grade_piece in $grade_pieces
do
case "$grade_piece" in
il)
target=il
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=false
highlevel_data=true
;;
ilc)
target=il
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=false
highlevel_data=false
;;
csharp)
target=csharp
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=false
highlevel_data=true
;;
java)
target=java
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=false
highlevel_data=true
;;
erlang)
target=erlang
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=false
highlevel_data=true
;;
hl)
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=false
highlevel_data=true
;;
hlc)
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=false
highlevel_data=false
;;
hl_nest)
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=true
highlevel_data=true
;;
hlc_nest)
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=true
gcc_nested_functions=true
highlevel_data=false
;;
asm_fast)
target=c
asm_labels=true
non_local_gotos=true
global_regs=true
highlevel_code=false
gcc_nested_functions=false
highlevel_data=false
;;
asm_jump)
target=c
asm_labels=true
non_local_gotos=true
global_regs=false
highlevel_code=false
gcc_nested_functions=false
highlevel_data=false
;;
fast)
target=c
asm_labels=false
non_local_gotos=true
global_regs=true
highlevel_code=false
gcc_nested_functions=false
highlevel_data=false
;;
jump)
target=c
asm_labels=false
non_local_gotos=true
global_regs=false
highlevel_code=false
gcc_nested_functions=false
highlevel_data=false
;;
reg)
target=c
asm_labels=false
non_local_gotos=false
global_regs=true
highlevel_code=false
gcc_nested_functions=false
highlevel_data=false
;;
none)
target=c
asm_labels=false
non_local_gotos=false
global_regs=false
highlevel_code=false
gcc_nested_functions=false
highlevel_data=false
;;
par)
thread_safe=true
;;
threadscope)
threadscope=true
;;
agc)
gc_method=accurate
;;
gc)
gc_method=boehm
;;
hgc)
gc_method=hgc
;;
gcd)
gc_method=boehm_debug
;;
nogc)
gc_method=none
;;
memprof)
profile_time=false
profile_calls=true
profile_memory=true
profile_deep=false
;;
prof)
profile_time=true
profile_calls=true
profile_memory=false
profile_deep=false
;;
proftime)
profile_time=true
profile_calls=false
profile_memory=false
profile_deep=false
;;
profcalls)
profile_time=false
profile_calls=true
profile_memory=false
profile_deep=false
;;
profall)
profile_time=true
profile_calls=true
profile_memory=true
profile_deep=false
;;
profdeep)
profile_time=false
profile_calls=false
profile_memory=false
profile_deep=true
;;
tsw)
record_term_sizes_as_words=true
record_term_sizes_as_cells=false
;;
tsc)
record_term_sizes_as_words=false
record_term_sizes_as_cells=true
;;
tr)
use_trail=true
trail_segments=false
;;
trseg)
use_trail=true
trail_segments=true
;;
mm)
use_minimal_model_stack_copy=true
minimal_model_debug=false
;;
dmm)
use_minimal_model_stack_copy=true
minimal_model_debug=true
;;
mmsc)
use_minimal_model_stack_copy=true
minimal_model_debug=false
;;
dmmsc)
use_minimal_model_stack_copy=true
minimal_model_debug=true
;;
mmos)
use_minimal_model_own_stacks=true
minimal_model_debug=false
;;
dmmos)
use_minimal_model_own_stacks=true
minimal_model_debug=true
;;
pregen)
pregenerated_dist=true
;;
spf)
single_prec_float=true
;;
picreg)
pic_reg=true
;;
debug)
debug=true
;;
decldebug)
decl_debug=true
;;
ssdebug)
ss_debug=true
;;
ll_debug)
ll_debug=true
;;
exts)
extend_stacks=true
;;
stseg)
stack_segments=true
;;
rbmm)
use_regions=true
use_regions_debug=false
use_regions_profiling=false
;;
rbmmd)
use_regions=true
use_regions_debug=true
use_regions_profiling=false
;;
rbmmp)
use_regions=true
use_regions_debug=false
use_regions_profiling=true
;;
rbmmdp)
use_regions=true
use_regions_debug=true
use_regions_profiling=true
;;
*)
echo "$0: unknown grade component \`$grade_piece'" 1>&2
exit 1
;;
esac
done
;;
-s*)
grade="` expr $1 : '-s\(.*\)' `"
# just insert it as `--grade $grade' and then reparse it
shift
case $# in
0) set - x --grade "$grade" ;;
*) set - x --grade "$grade" "$@" ;;
esac
;;