#---------------------------------------------------------------------------# # Copyright (C) 1998-2002, 2004-2007, 2009-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. #---------------------------------------------------------------------------# # # final_grade_options.sh-subr: # An `sh' subroutine for handling implications between grade-related # options. Used by the `ml', `mgnuc' and `c2init' scripts. # # The code here should be inserted after a script's option-parsing # loop. # # IMPORTANT: any changes to the handling of grades here may also require # changes to compiler/handle_options.m. # # This file should only use the shell variables initialized by # init_grade_options.sh-subr. # #---------------------------------------------------------------------------# use_minimal_model=false case $use_minimal_model_stack_copy in true) use_minimal_model=true ;; esac case $use_minimal_model_own_stacks in true) use_minimal_model=true ;; esac # # .tr grade is not compatible with .*mm* # (see comment in runtime/mercury_tabling.c for rationale) # case $use_trail,$use_minimal_model in true,true) echo "trailing and minimal model tabling are not compatible" 1>&2 exit 1 ;; esac # # .exts grade is not compatible with .stseg # (they are alternative ways of doing the same thing) # case $extend_stacks,$stack_segments in true,true) echo "--extend-stacks-when-needed and --stack-segments are not compatible" 1>&2 exit 1 ;; esac # # --decl-debug implies --debug # case $decl_debug in true) debug=true ;; esac # # --target IL, C#, Java, Erlang implies --high-level-code # case $target in il|csharp|java|erlang) highlevel_code=true ;; esac # # --target IL, C#, Java, Erlang implies --high-level-data # case $target in il|csharp|java|erlang) highlevel_data=true ;; esac # # --target IL, C#, Java, Erlang implies --gc automatic # case $target in il|csharp|java|erlang) gc_method=automatic ;; esac # # --high-level-code disables the use of low-level gcc extensions # case $highlevel_code in true) non_local_gotos=false asm_labels=false global_regs=false ;; esac # # --use-regions-debug and --use-regions-profiling aren't meaningful # without --use-regions # case $use_regions in false) use_regions_debug=false use_regions_profiling=false ;; esac # # threadscope doesn't make sense in non-parallel grades. # case $thread_safe in false) threadscope=false ;; esac #---------------------------------------------------------------------------#