]>
Commit | Line | Data |
---|---|---|
415dddc8 RK |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- U S A G E -- | |
6 | -- -- | |
7 | -- B o d y -- | |
415dddc8 | 8 | -- -- |
a397db96 | 9 | -- Copyright (C) 1992-2004, Free Software Foundation, Inc. -- |
415dddc8 RK |
10 | -- -- |
11 | -- GNAT is free software; you can redistribute it and/or modify it under -- | |
12 | -- terms of the GNU General Public License as published by the Free Soft- -- | |
13 | -- ware Foundation; either version 2, or (at your option) any later ver- -- | |
14 | -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- | |
15 | -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- | |
16 | -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- | |
17 | -- for more details. You should have received a copy of the GNU General -- | |
18 | -- Public License distributed with GNAT; see file COPYING. If not, write -- | |
19 | -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- | |
20 | -- MA 02111-1307, USA. -- | |
21 | -- -- | |
22 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
71ff80dc | 23 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
415dddc8 RK |
24 | -- -- |
25 | ------------------------------------------------------------------------------ | |
26 | ||
27 | with Hostparm; | |
28 | with Namet; use Namet; | |
29 | with Osint; use Osint; | |
30 | with Output; use Output; | |
31 | with System.WCh_Con; use System.WCh_Con; | |
32 | ||
33 | procedure Usage is | |
34 | ||
35 | procedure Write_Switch_Char (Sw : String; Prefix : String := "gnat"); | |
07fc65c4 | 36 | -- Output two spaces followed by the switch character minus followed |
415dddc8 RK |
37 | -- Prefix, followed by the string given as the argument, and then |
38 | -- enough blanks to tab to column 13, i.e. assuming Sw is not longer | |
39 | -- than 5 characters, the maximum allowed, Write_Switch_Char will | |
40 | -- always output exactly 12 characters. | |
41 | ||
42 | procedure Write_Switch_Char (Sw : String; Prefix : String := "gnat") is | |
43 | begin | |
07fc65c4 | 44 | Write_Str (" -"); |
415dddc8 RK |
45 | Write_Str (Prefix); |
46 | Write_Str (Sw); | |
47 | ||
48 | for J in 1 .. 12 - 3 - Prefix'Length - Sw'Length loop | |
49 | Write_Char (' '); | |
50 | end loop; | |
51 | end Write_Switch_Char; | |
52 | ||
53 | -- Start of processing for Usage | |
54 | ||
55 | begin | |
56 | Find_Program_Name; | |
57 | ||
58 | -- For gnatmake, we are appending this information to the end of | |
59 | -- the normal gnatmake output, so generate appropriate header | |
60 | ||
61 | if Name_Len >= 8 | |
62 | and then (Name_Buffer (Name_Len - 7 .. Name_Len) = "gnatmake" | |
63 | or else | |
64 | Name_Buffer (Name_Len - 7 .. Name_Len) = "GNATMAKE") | |
65 | then | |
66 | Write_Eol; | |
67 | Write_Line ("Compiler switches (passed to the compiler by gnatmake):"); | |
68 | ||
69 | else | |
70 | -- Usage line | |
71 | ||
72 | Write_Str ("Usage: "); | |
73 | Write_Program_Name; | |
74 | Write_Char (' '); | |
75 | Write_Str ("switches sfile"); | |
76 | Write_Eol; | |
77 | Write_Eol; | |
78 | ||
79 | -- Line for sfile | |
80 | ||
81 | Write_Line (" sfile Source file name"); | |
82 | end if; | |
83 | ||
84 | Write_Eol; | |
85 | ||
86 | -- Common GCC switches not available in JGNAT | |
87 | ||
88 | if not Hostparm.Java_VM then | |
89 | Write_Switch_Char ("fstack-check ", ""); | |
90 | Write_Line ("Generate stack checking code"); | |
91 | ||
92 | Write_Switch_Char ("fno-inline ", ""); | |
93 | Write_Line ("Inhibit all inlining (makes executable smaller)"); | |
94 | end if; | |
95 | ||
96 | -- Common switches available to both GCC and JGNAT | |
97 | ||
98 | Write_Switch_Char ("g ", ""); | |
99 | Write_Line ("Generate debugging information"); | |
100 | ||
101 | Write_Switch_Char ("Idir ", ""); | |
102 | Write_Line ("Specify source files search path"); | |
103 | ||
104 | Write_Switch_Char ("I- ", ""); | |
105 | Write_Line ("Do not look for sources in current directory"); | |
106 | ||
107 | Write_Switch_Char ("O[0123] ", ""); | |
108 | Write_Line ("Control the optimization level"); | |
109 | ||
110 | Write_Eol; | |
111 | ||
112 | -- Individual lines for switches. Write_Switch_Char outputs fourteen | |
113 | -- characters, so the remaining message is allowed to be a maximum | |
114 | -- of 65 characters to be comfortable on an 80 character device. | |
115 | -- If the Write_Str fits on one line, it is short enough! | |
116 | ||
117 | -- Line for -gnata switch | |
118 | ||
119 | Write_Switch_Char ("a"); | |
120 | Write_Line ("Assertions enabled. Pragma Assert/Debug to be activated"); | |
121 | ||
122 | -- Line for -gnatA switch | |
123 | ||
124 | Write_Switch_Char ("A"); | |
125 | Write_Line ("Avoid processing gnat.adc, if present file will be ignored"); | |
126 | ||
127 | -- Line for -gnatb switch | |
128 | ||
129 | Write_Switch_Char ("b"); | |
130 | Write_Line ("Generate brief messages to stderr even if verbose mode set"); | |
131 | ||
132 | -- Line for -gnatc switch | |
133 | ||
134 | Write_Switch_Char ("c"); | |
135 | Write_Line ("Check syntax and semantics only (no code generation)"); | |
136 | ||
137 | Write_Switch_Char ("C"); | |
138 | Write_Line ("Compress names in external names and debug info tables"); | |
139 | ||
140 | -- Line for -gnatd switch | |
141 | ||
142 | Write_Switch_Char ("d?"); | |
fbf5a39b | 143 | Write_Line ("Compiler debug option ? ([.]a-z,A-Z,0-9), see debug.adb"); |
415dddc8 RK |
144 | |
145 | -- Line for -gnatD switch | |
146 | ||
147 | Write_Switch_Char ("D"); | |
148 | Write_Line ("Debug expanded generated code rather than source code"); | |
149 | ||
150 | -- Line for -gnatec switch | |
151 | ||
fbf5a39b AC |
152 | Write_Switch_Char ("ec=?"); |
153 | Write_Line ("Specify configuration pragmas file, e.g. -gnatec=/x/f.adc"); | |
154 | ||
155 | -- Line for -gnateD switch | |
156 | ||
157 | Write_Switch_Char ("eD?"); | |
158 | Write_Line ("Define or redefine preprocessing symbol, e.g. -gnateDsym=val"); | |
159 | ||
160 | -- Line for -gnatef switch | |
161 | ||
162 | Write_Switch_Char ("ef"); | |
163 | Write_Line ("Full source path in brief error messages"); | |
415dddc8 | 164 | |
6510f4c9 GB |
165 | -- Line for -gnatem switch |
166 | ||
fbf5a39b AC |
167 | Write_Switch_Char ("em=?"); |
168 | Write_Line ("Specify mapping file, e.g. -gnatem=mapping"); | |
169 | ||
170 | -- Line for -gnatep switch | |
171 | ||
172 | Write_Switch_Char ("ep=?"); | |
173 | Write_Line ("Specify preprocessing data file, e.g. -gnatep=prep.data"); | |
6510f4c9 | 174 | |
415dddc8 RK |
175 | -- Line for -gnatE switch |
176 | ||
177 | Write_Switch_Char ("E"); | |
178 | Write_Line ("Dynamic elaboration checking mode enabled"); | |
179 | ||
180 | -- Line for -gnatf switch | |
181 | ||
182 | Write_Switch_Char ("f"); | |
183 | Write_Line ("Full errors. Verbose details, all undefined references"); | |
184 | ||
185 | -- Line for -gnatF switch | |
186 | ||
187 | Write_Switch_Char ("F"); | |
188 | Write_Line ("Force all import/export external names to all uppercase"); | |
189 | ||
190 | -- Line for -gnatg switch | |
191 | ||
192 | Write_Switch_Char ("g"); | |
193 | Write_Line ("GNAT implementation mode (used for compiling GNAT units)"); | |
194 | ||
195 | -- Line for -gnatG switch | |
196 | ||
197 | Write_Switch_Char ("G"); | |
198 | Write_Line ("Output generated expanded code in source form"); | |
199 | ||
200 | -- Line for -gnath switch | |
201 | ||
202 | Write_Switch_Char ("h"); | |
203 | Write_Line ("Output this usage (help) information"); | |
204 | ||
205 | -- Line for -gnati switch | |
206 | ||
207 | Write_Switch_Char ("i?"); | |
07fc65c4 | 208 | Write_Line ("Identifier char set (?=1/2/3/4/5/8/9/p/f/n/w)"); |
415dddc8 RK |
209 | |
210 | -- Line for -gnatk switch | |
211 | ||
212 | Write_Switch_Char ("k"); | |
213 | Write_Line ("Limit file names to nnn characters (k = krunch)"); | |
214 | ||
215 | -- Line for -gnatl switch | |
216 | ||
217 | Write_Switch_Char ("l"); | |
218 | Write_Line ("Output full source listing with embedded error messages"); | |
219 | ||
220 | -- Line for -gnatL switch | |
221 | ||
222 | Write_Switch_Char ("L"); | |
223 | Write_Line ("Use longjmp/setjmp for exception handling"); | |
224 | ||
225 | -- Line for -gnatm switch | |
226 | ||
227 | Write_Switch_Char ("mnnn"); | |
fbf5a39b | 228 | Write_Line ("Limit number of detected errors to nnn (1-999999)"); |
415dddc8 RK |
229 | |
230 | -- Line for -gnatn switch | |
231 | ||
232 | Write_Switch_Char ("n"); | |
233 | Write_Line ("Inlining of subprograms (apply pragma Inline across units)"); | |
234 | ||
235 | -- Line for -gnatN switch | |
236 | ||
237 | Write_Switch_Char ("N"); | |
19f0526a | 238 | Write_Line ("Full (frontend) inlining of subprograms"); |
415dddc8 RK |
239 | |
240 | -- Line for -gnato switch | |
241 | ||
242 | Write_Switch_Char ("o"); | |
243 | Write_Line ("Enable overflow checking (off by default)"); | |
244 | ||
245 | -- Line for -gnatO switch | |
246 | ||
247 | Write_Switch_Char ("O nm "); | |
248 | Write_Line ("Set name of output ali file (internal switch)"); | |
249 | ||
250 | -- Line for -gnatp switch | |
251 | ||
252 | Write_Switch_Char ("p"); | |
253 | Write_Line ("Suppress all checks"); | |
254 | ||
255 | -- Line for -gnatP switch | |
256 | ||
257 | Write_Switch_Char ("P"); | |
258 | Write_Line ("Generate periodic calls to System.Polling.Poll"); | |
259 | ||
260 | -- Line for -gnatq switch | |
261 | ||
262 | Write_Switch_Char ("q"); | |
263 | Write_Line ("Don't quit, try semantics, even if parse errors"); | |
264 | ||
265 | -- Line for -gnatQ switch | |
266 | ||
267 | Write_Switch_Char ("Q"); | |
268 | Write_Line ("Don't quit, write ali/tree file even if compile errors"); | |
269 | ||
270 | -- Line for -gnatR switch | |
271 | ||
272 | Write_Switch_Char ("R?"); | |
273 | Write_Line ("List rep inf (?=0/1/2/3 for none/types/all/variable)"); | |
274 | ||
275 | -- Lines for -gnats switch | |
276 | ||
277 | Write_Switch_Char ("s"); | |
278 | Write_Line ("Syntax check only"); | |
279 | ||
9596236a AC |
280 | -- Lines for -gnatS switch |
281 | ||
282 | Write_Switch_Char ("S"); | |
283 | Write_Line ("Print listing of package Standard"); | |
284 | ||
415dddc8 RK |
285 | -- Lines for -gnatt switch |
286 | ||
287 | Write_Switch_Char ("t"); | |
288 | Write_Line ("Tree output file to be generated"); | |
289 | ||
290 | -- Line for -gnatT switch | |
291 | ||
292 | Write_Switch_Char ("Tnnn"); | |
293 | Write_Line ("All compiler tables start at nnn times usual starting size"); | |
294 | ||
295 | -- Line for -gnatu switch | |
296 | ||
297 | Write_Switch_Char ("u"); | |
298 | Write_Line ("List units for this compilation"); | |
299 | ||
300 | -- Line for -gnatU switch | |
301 | ||
302 | Write_Switch_Char ("U"); | |
303 | Write_Line ("Enable unique tag for error messages"); | |
304 | ||
305 | -- Line for -gnatv switch | |
306 | ||
307 | Write_Switch_Char ("v"); | |
308 | Write_Line ("Verbose mode. Full error output with source lines to stdout"); | |
309 | ||
310 | -- Line for -gnatV switch | |
311 | ||
9a5621d7 | 312 | Write_Switch_Char ("Vxx"); |
415dddc8 | 313 | Write_Line |
9a5621d7 RD |
314 | ("Enable selected validity checking mode, xx = list of parameters:"); |
315 | Write_Line (" a turn on all validity checking options"); | |
07fc65c4 GB |
316 | Write_Line (" c turn on checking for copies"); |
317 | Write_Line (" C turn off checking for copies"); | |
318 | Write_Line (" d turn on default (RM) checking"); | |
319 | Write_Line (" D turn off default (RM) checking"); | |
320 | Write_Line (" f turn on checking for floating-point"); | |
321 | Write_Line (" F turn off checking for floating-point"); | |
322 | Write_Line (" i turn on checking for in params"); | |
323 | Write_Line (" I turn off checking for in params"); | |
324 | Write_Line (" m turn on checking for in out params"); | |
325 | Write_Line (" M turn off checking for in out params"); | |
326 | Write_Line (" o turn on checking for operators/attributes"); | |
327 | Write_Line (" O turn off checking for operators/attributes"); | |
fbf5a39b AC |
328 | Write_Line (" p turn on checking for parameters"); |
329 | Write_Line (" P turn off checking for parameters"); | |
07fc65c4 GB |
330 | Write_Line (" r turn on checking for returns"); |
331 | Write_Line (" R turn off checking for returns"); | |
332 | Write_Line (" s turn on checking for subscripts"); | |
333 | Write_Line (" S turn off checking for subscripts"); | |
334 | Write_Line (" t turn on checking for tests"); | |
335 | Write_Line (" T turn off checking for tests"); | |
9a5621d7 | 336 | Write_Line (" n turn off all validity checks (including RM)"); |
415dddc8 RK |
337 | |
338 | -- Lines for -gnatw switch | |
339 | ||
340 | Write_Switch_Char ("wxx"); | |
341 | Write_Line ("Enable selected warning modes, xx = list of parameters:"); | |
a397db96 | 342 | Write_Line (" a turn on all optional warnings (except d,h,l)"); |
415dddc8 | 343 | Write_Line (" A turn off all optional warnings"); |
fbf5a39b AC |
344 | Write_Line (" c turn on warnings for constant conditional"); |
345 | Write_Line (" C* turn off warnings for constant conditional"); | |
346 | Write_Line (" d turn on warnings for implicit dereference"); | |
347 | Write_Line (" D* turn off warnings for implicit dereference"); | |
415dddc8 | 348 | Write_Line (" e treat all warnings as errors"); |
fbf5a39b AC |
349 | Write_Line (" f turn on warnings for unreferenced formal"); |
350 | Write_Line (" F* turn off warnings for unreferenced formal"); | |
351 | Write_Line (" g* turn on warnings for unrecognized pragma"); | |
352 | Write_Line (" G turn off warnings for unrecognized pragma"); | |
353 | Write_Line (" h turn on warnings for hiding variable "); | |
354 | Write_Line (" H* turn off warnings for hiding variable"); | |
355 | Write_Line (" i* turn on warnings for implementation unit"); | |
356 | Write_Line (" I turn off warnings for implementation unit"); | |
357 | Write_Line (" j turn on warnings for obsolescent " & | |
358 | "(annex J) feature"); | |
359 | Write_Line (" J* turn off warnings for obsolescent " & | |
360 | "(annex J) feature"); | |
361 | Write_Line (" k turn on warnings on constant variable"); | |
362 | Write_Line (" K* turn off warnings on constant variable"); | |
363 | Write_Line (" l turn on warnings for missing " & | |
364 | "elaboration pragma"); | |
365 | Write_Line (" L* turn off warnings for missing " & | |
366 | "elaboration pragma"); | |
367 | Write_Line (" m turn on warnings for variable assigned " & | |
368 | "but not read"); | |
369 | Write_Line (" M* turn off warnings for variable assigned " & | |
370 | "but not read"); | |
371 | Write_Line (" n* normal warning mode (cancels -gnatws/-gnatwe)"); | |
372 | Write_Line (" o* turn on warnings for address clause overlay"); | |
373 | Write_Line (" O turn off warnings for address clause overlay"); | |
415dddc8 RK |
374 | Write_Line (" p turn on warnings for ineffective pragma inline"); |
375 | Write_Line (" P* turn off warnings for ineffective pragma inline"); | |
fbf5a39b AC |
376 | Write_Line (" r turn on warnings for redundant construct"); |
377 | Write_Line (" R* turn off warnings for redundant construct"); | |
415dddc8 | 378 | Write_Line (" s suppress all warnings"); |
fbf5a39b AC |
379 | Write_Line (" u turn on warnings for unused entity"); |
380 | Write_Line (" U* turn off warnings for unused entity"); | |
381 | Write_Line (" v* turn on warnings for unassigned variable"); | |
382 | Write_Line (" V turn off warnings for unassigned variable"); | |
383 | Write_Line (" x* turn on warnings for export/import"); | |
384 | Write_Line (" X* turn off warnings for export/import"); | |
385 | Write_Line (" z* turn on size/align warnings for " & | |
386 | "unchecked conversion"); | |
387 | Write_Line (" Z turn off size/align warnings for " & | |
388 | "unchecked conversion"); | |
415dddc8 RK |
389 | Write_Line (" * indicates default in above list"); |
390 | ||
391 | -- Line for -gnatW switch | |
392 | ||
393 | Write_Switch_Char ("W"); | |
394 | Write_Str ("Wide character encoding method ("); | |
395 | ||
396 | for J in WC_Encoding_Method loop | |
397 | Write_Char (WC_Encoding_Letters (J)); | |
398 | ||
399 | if J = WC_Encoding_Method'Last then | |
400 | Write_Char (')'); | |
401 | else | |
402 | Write_Char ('/'); | |
403 | end if; | |
404 | end loop; | |
405 | ||
406 | Write_Eol; | |
407 | ||
408 | -- Line for -gnatx switch | |
409 | ||
410 | Write_Switch_Char ("x"); | |
411 | Write_Line ("Suppress output of cross-reference information"); | |
412 | ||
413 | -- Line for -gnatX switch | |
414 | ||
415 | Write_Switch_Char ("X"); | |
416 | Write_Line ("Language extensions permitted"); | |
417 | ||
418 | -- Lines for -gnaty switch | |
419 | ||
420 | Write_Switch_Char ("y"); | |
1753e0ad | 421 | Write_Line ("Enable all style checks except 'o', indent=3"); |
415dddc8 RK |
422 | |
423 | Write_Switch_Char ("yxx"); | |
424 | Write_Line ("Enable selected style checks xx = list of parameters:"); | |
425 | Write_Line (" 1-9 check indentation"); | |
426 | Write_Line (" a check attribute casing"); | |
427 | Write_Line (" b check no blanks at end of lines"); | |
428 | Write_Line (" c check comment format"); | |
429 | Write_Line (" e check end/exit labels present"); | |
430 | Write_Line (" f check no form feeds/vertical tabs in source"); | |
431 | Write_Line (" h check no horizontal tabs in source"); | |
432 | Write_Line (" i check if-then layout"); | |
fbf5a39b | 433 | Write_Line (" k check casing rules for keywords"); |
415dddc8 RK |
434 | Write_Line (" l check reference manual layout"); |
435 | Write_Line (" m check line length <= 79 characters"); | |
436 | Write_Line (" n check casing of package Standard identifiers"); | |
437 | Write_Line (" Mnnn check line length <= nnn characters"); | |
438 | Write_Line (" o check subprogram bodies in alphabetical order"); | |
439 | Write_Line (" p check pragma casing"); | |
fbf5a39b | 440 | Write_Line (" r check casing for identifier references"); |
415dddc8 RK |
441 | Write_Line (" s check separate subprogram specs present"); |
442 | Write_Line (" t check token separation rules"); | |
443 | ||
444 | -- Lines for -gnatz switch | |
445 | ||
446 | Write_Switch_Char ("z"); | |
fbf5a39b | 447 | Write_Line ("Distribution stub generation (r/c for receiver/caller stubs)"); |
415dddc8 RK |
448 | |
449 | -- Line for -gnatZ switch | |
450 | ||
451 | Write_Switch_Char ("Z"); | |
452 | Write_Line ("Use zero cost exception handling"); | |
453 | ||
454 | -- Line for -gnat83 switch | |
455 | ||
456 | Write_Switch_Char ("83"); | |
457 | Write_Line ("Enforce Ada 83 restrictions"); | |
458 | ||
459 | end Usage; |