1 | % (c) 2009-2019 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, | |
2 | % Heinrich Heine Universitaet Duesseldorf | |
3 | % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) | |
4 | ||
5 | :- module(compile_time_flags, | |
6 | [compile_time_flag/1, | |
7 | compile_time_flags/1, | |
8 | relevant_prolog_flags/1 | |
9 | ]). | |
10 | ||
11 | % compile time flags can be set from the command line for SICStus Prolog | |
12 | % e.g., -Dprob_safe_mode=true when starting ProB from source or when generating the .sav file in the Makefile | |
13 | ||
14 | :- use_module(module_information,[module_info/2]). | |
15 | ||
16 | :- module_info(group,infrastructure). | |
17 | :- module_info(description,'This module describes the possible compile-time flags of ProB.'). | |
18 | ||
19 | compile_time_flags(list(Flags)) :- % list wrapper for Tcl | |
20 | findall(Flag, compile_time_flag(Flag), Flags). | |
21 | ||
22 | ||
23 | :- load_files(library(system), [when(compile_time), imports([environ/2])]). | |
24 | :- if(environ(prob_release,true)). | |
25 | compile_time_flag(prob_release). | |
26 | % set when building an official build of probcli or ProB Tcl/Tk | |
27 | % excludes Tcl benchmarks, unit tests | |
28 | :- endif. | |
29 | :- if(environ(prob_safe_mode,true)). | |
30 | compile_time_flag(prob_safe_mode). | |
31 | % perform additional checks | |
32 | % check_ast: check AST ground, check used_id infos for quantifiers...) | |
33 | % check typing in equal_object, variable clashes in comprehension_set, call_residue check in my_findall,... | |
34 | :- endif. | |
35 | :- if(environ(prob_data_validation_mode,true)). | |
36 | compile_time_flag(prob_data_validation_mode). | |
37 | % prevent certain instantiations of sets on the assumption that we do not need powerful constraint solving | |
38 | :- endif. | |
39 | :- if(environ(no_wd_checking,true)). | |
40 | compile_time_flag(no_wd_checking). | |
41 | % disable Well-Definedness checking for function applications | |
42 | :- endif. | |
43 | :- if(environ(prob_profile,true)). | |
44 | compile_time_flag(prob_profile). | |
45 | % store profile information for operations and invariant checking | |
46 | :- endif. | |
47 | :- if(environ(prob_logging_mode,true)). | |
48 | compile_time_flag(prob_logging_mode). | |
49 | % automatically log probcli (add -ll command-line switch) | |
50 | :- endif. | |
51 | :- if(environ(prob_observe_runtime,true)). | |
52 | compile_time_flag(prob_observe_runtime). | |
53 | % observe runtime of closure expansions and print message when this takes long | |
54 | :- endif. | |
55 | :- if(environ(no_terminal_colors,true)). | |
56 | compile_time_flag(no_terminal_colors). | |
57 | % disable terminal colors, can also be influence by setting NOCOLOR environment variable | |
58 | :- endif. | |
59 | :- if(environ(partially_evaluate,true)). | |
60 | compile_time_flag(partially_evaluate). | |
61 | :- endif. | |
62 | :- if(environ(partially_evaluate_compile,true)). | |
63 | compile_time_flag(partially_evaluate_compile). | |
64 | :- endif. | |
65 | :- if(environ(use_pe_cache,true)). | |
66 | compile_time_flag(use_pe_cache). | |
67 | :- endif. | |
68 | :- if(environ(no_interrupts,true)). | |
69 | compile_time_flag(no_interrupts). | |
70 | % do not treat CTRL-C user_interrupts | |
71 | :- endif. | |
72 | :- if(environ('SP_JIT',disabled)). | |
73 | compile_time_flag('SP_JIT=disabled'). | |
74 | :- endif. | |
75 | :- if(environ('SP_JIT',yes)). | |
76 | compile_time_flag('SP_JIT=yes'). % this is the default | |
77 | :- endif. | |
78 | :- if(environ('SP_JIT',no)). | |
79 | compile_time_flag('SP_JIT=no'). | |
80 | :- endif. | |
81 | :- if(environ('SP_JIT_COUNTER_LIMIT',_)). | |
82 | compile_time_flag('SP_JIT_COUNTER_LIMIT_SET'). % default is 0 | |
83 | :- endif. | |
84 | :- if(environ('SP_JIT_CLAUSE_LIMIT',_)). | |
85 | compile_time_flag('SP_JIT_CLAUSE_LIMIT_SET'). % default is 1024 | |
86 | :- endif. | |
87 | :- if(environ('SP_SPTI_PATH',verbose)). | |
88 | compile_time_flag('SP_SPTI_PATH=verbose'). % can be set to verbose | |
89 | :- endif. | |
90 | :- if(environ('SP_TIMEOUT_IMPLEMENTATON',legacy)). | |
91 | compile_time_flag('SP_TIMEOUT_IMPLEMENTATON=legacy'). % can be set to verbose | |
92 | :- endif. | |
93 | ||
94 | compile_time_flag(_) :- fail. | |
95 | ||
96 | ||
97 | relevant_prolog_flags(Flags) :- | |
98 | findall(Flag/Val, (relevant_flag(Flag),current_prolog_flag(Flag,Val)), Flags). | |
99 | ||
100 | relevant_flag(dialect). | |
101 | relevant_flag(version_data). | |
102 | relevant_flag(profiling). |