Commit | Line | Data |
---|---|---|
34e49164 C |
1 | (*****************************************************************************) |
2 | (* convenient globals to pass to parse_c.init_defs *) | |
3 | (*****************************************************************************) | |
485bce71 C |
4 | let path = ref |
5 | (try (Sys.getenv "YACFE_HOME") | |
6 | with Not_found-> "/home/pad/c-yacfe" | |
7 | ) | |
8 | let std_h = ref (Filename.concat !path "data/standard.h") | |
9 | let common_h = ref (Filename.concat !path "data/common_macros.h") | |
10 | ||
34e49164 C |
11 | |
12 | let cmdline_flags_macrofile () = | |
13 | [ | |
14 | "-macro_file", Arg.Set_string std_h, | |
15 | " <file> (default=" ^ !std_h ^ ")"; | |
485bce71 C |
16 | ] |
17 | ||
18 | ||
19 | (*****************************************************************************) | |
20 | (* used only by cpp_ast_c, not by the parser *) | |
21 | (*****************************************************************************) | |
22 | let cpp_i_opts = ref [] | |
23 | let cpp_d_opts = ref [] | |
24 | ||
25 | let cmdline_flags_cpp () = [ | |
26 | "-D", Arg.String (fun s -> Common.push2 s cpp_d_opts), | |
27 | " <x=y>"; | |
28 | "-I", Arg.String (fun s -> Common.push2 s cpp_i_opts), | |
29 | " <dir>" | |
34e49164 C |
30 | ] |
31 | ||
32 | (*****************************************************************************) | |
33 | (* verbose *) | |
34 | (*****************************************************************************) | |
35 | ||
36 | let verbose_lexing = ref true | |
37 | let verbose_parsing = ref true | |
38 | let verbose_type = ref true | |
39 | ||
40 | let filter_msg = ref false | |
485bce71 C |
41 | let filter_msg_define_error = ref false |
42 | ||
34e49164 | 43 | let filter_define_error = ref false |
485bce71 C |
44 | |
45 | let filter_passed_level = ref 0 | |
34e49164 C |
46 | |
47 | let pretty_print_type_info = ref false | |
48 | ||
49 | (* cocci specific *) | |
50 | let show_flow_labels = ref true | |
51 | ||
52 | ||
53 | let cmdline_flags_verbose () = | |
54 | [ | |
55 | "-no_parse_error_msg", Arg.Clear verbose_parsing, " "; | |
56 | "-no_verbose_parsing", Arg.Clear verbose_parsing , " "; | |
57 | "-no_verbose_lexing", Arg.Clear verbose_lexing , " "; | |
58 | "-no_type_error_msg", Arg.Clear verbose_type, " "; | |
59 | ||
60 | ||
61 | "-filter_msg", Arg.Set filter_msg , | |
62 | " filter some cpp message when the macro is a \"known\" cpp construct"; | |
485bce71 C |
63 | "-filter_msg_define_error",Arg.Set filter_msg_define_error, |
64 | " filter the error msg"; | |
65 | ||
66 | "-filter_define_error",Arg.Set filter_define_error, | |
67 | " filter the error, which will not be added in the stat"; | |
68 | "-filter_passed_level",Arg.Set_int filter_passed_level," "; | |
34e49164 C |
69 | ] |
70 | ||
71 | ||
72 | (*****************************************************************************) | |
73 | (* debugging *) | |
74 | (*****************************************************************************) | |
75 | ||
76 | let debug_lexer = ref false | |
77 | let debug_etdt = ref false | |
78 | let debug_typedef = ref false | |
79 | let debug_cpp = ref false | |
80 | ||
81 | let debug_unparsing = ref false | |
82 | ||
83 | let debug_cfg = ref false | |
84 | ||
85 | (* "debug C parsing/unparsing", "" *) | |
86 | let cmdline_flags_debugging () = | |
87 | [ | |
88 | "-debug_cpp", Arg.Set debug_cpp, " "; | |
89 | "-debug_lexer", Arg.Set debug_lexer , " "; | |
90 | "-debug_etdt", Arg.Set debug_etdt , " "; | |
91 | "-debug_typedef", Arg.Set debug_typedef, " "; | |
92 | ||
93 | "-debug_cfg", Arg.Set debug_cfg , " "; | |
94 | "-debug_unparsing", Arg.Set debug_unparsing, " "; | |
95 | ] | |
96 | ||
97 | (*****************************************************************************) | |
98 | (* change algo *) | |
99 | (*****************************************************************************) | |
100 | ||
34e49164 C |
101 | (* cocci specific *) |
102 | let label_strategy_2 = ref false | |
103 | ||
104 | let cmdline_flags_algos () = | |
105 | [ | |
485bce71 C |
106 | "-l1", Arg.Clear label_strategy_2, " "; |
107 | ] | |
108 | ||
109 | (*****************************************************************************) | |
110 | (* Disable parsing feature (for CC09 and also to see if useful) *) | |
111 | (*****************************************************************************) | |
112 | ||
113 | let cpp_directive_passing = ref false | |
114 | let ifdef_directive_passing = ref false | |
115 | ||
116 | let disable_two_pass = ref false | |
117 | let disable_add_typedef = ref false | |
118 | ||
119 | let if0_passing = ref true | |
120 | let add_typedef_root = ref true | |
121 | ||
122 | let cmdline_flags_parsing_algos () = [ | |
123 | ||
124 | "-directive_passing", Arg.Set cpp_directive_passing, | |
125 | " pass most cpp directives, especially when inside function"; | |
126 | "-ifdef_passing", Arg.Set ifdef_directive_passing, | |
127 | " pass ifdef directives "; | |
128 | ||
34e49164 C |
129 | "-noif0_passing", Arg.Clear if0_passing, |
130 | " "; | |
131 | "-noadd_typedef_root", Arg.Clear add_typedef_root, " "; | |
485bce71 | 132 | "-noadd_typedef", Arg.Set disable_add_typedef, " "; |
34e49164 | 133 | |
485bce71 C |
134 | "-disable_two_pass", Arg.Set disable_two_pass, " "; |
135 | ] | |
34e49164 C |
136 | |
137 | (*****************************************************************************) | |
138 | (* other *) | |
139 | (*****************************************************************************) | |
140 | ||
141 | (* for compare_c *) | |
142 | let diff_lines = ref (None : string option) (* number of lines of context *) | |
143 | ||
144 | (* for parse_c *) | |
145 | let use_cache = ref false | |
146 | ||
147 | let cmdline_flags_other () = | |
148 | [ | |
149 | "-U", Arg.Int (fun n -> diff_lines := Some (Common.i_to_s n)), | |
150 | " set number of diff context lines"; | |
151 | ||
152 | "-use_cache", Arg.Set use_cache, | |
153 | " use .ast_raw pre-parsed cached C file"; | |
154 | ] | |
155 | ||
156 | ||
157 | (*****************************************************************************) | |
158 |