]>
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 | -- -- |
448f2610 | 9 | -- Copyright (C) 1992-2005, 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 | ||
415dddc8 RK |
137 | -- Line for -gnatd switch |
138 | ||
139 | Write_Switch_Char ("d?"); | |
fbf5a39b | 140 | Write_Line ("Compiler debug option ? ([.]a-z,A-Z,0-9), see debug.adb"); |
415dddc8 RK |
141 | |
142 | -- Line for -gnatD switch | |
143 | ||
144 | Write_Switch_Char ("D"); | |
145 | Write_Line ("Debug expanded generated code rather than source code"); | |
146 | ||
147 | -- Line for -gnatec switch | |
148 | ||
fbf5a39b AC |
149 | Write_Switch_Char ("ec=?"); |
150 | Write_Line ("Specify configuration pragmas file, e.g. -gnatec=/x/f.adc"); | |
151 | ||
152 | -- Line for -gnateD switch | |
153 | ||
154 | Write_Switch_Char ("eD?"); | |
155 | Write_Line ("Define or redefine preprocessing symbol, e.g. -gnateDsym=val"); | |
156 | ||
157 | -- Line for -gnatef switch | |
158 | ||
159 | Write_Switch_Char ("ef"); | |
160 | Write_Line ("Full source path in brief error messages"); | |
415dddc8 | 161 | |
6b6fcd3e AC |
162 | -- Line for -gnateI switch |
163 | ||
164 | Write_Switch_Char ("eInnn"); | |
165 | Write_Line ("Index in multi-unit source, e.g. -gnateI2"); | |
166 | ||
6510f4c9 GB |
167 | -- Line for -gnatem switch |
168 | ||
fbf5a39b AC |
169 | Write_Switch_Char ("em=?"); |
170 | Write_Line ("Specify mapping file, e.g. -gnatem=mapping"); | |
171 | ||
172 | -- Line for -gnatep switch | |
173 | ||
174 | Write_Switch_Char ("ep=?"); | |
175 | Write_Line ("Specify preprocessing data file, e.g. -gnatep=prep.data"); | |
6510f4c9 | 176 | |
415dddc8 RK |
177 | -- Line for -gnatE switch |
178 | ||
179 | Write_Switch_Char ("E"); | |
180 | Write_Line ("Dynamic elaboration checking mode enabled"); | |
181 | ||
182 | -- Line for -gnatf switch | |
183 | ||
184 | Write_Switch_Char ("f"); | |
185 | Write_Line ("Full errors. Verbose details, all undefined references"); | |
186 | ||
187 | -- Line for -gnatF switch | |
188 | ||
189 | Write_Switch_Char ("F"); | |
190 | Write_Line ("Force all import/export external names to all uppercase"); | |
191 | ||
192 | -- Line for -gnatg switch | |
193 | ||
194 | Write_Switch_Char ("g"); | |
195 | Write_Line ("GNAT implementation mode (used for compiling GNAT units)"); | |
196 | ||
197 | -- Line for -gnatG switch | |
198 | ||
199 | Write_Switch_Char ("G"); | |
200 | Write_Line ("Output generated expanded code in source form"); | |
201 | ||
202 | -- Line for -gnath switch | |
203 | ||
204 | Write_Switch_Char ("h"); | |
205 | Write_Line ("Output this usage (help) information"); | |
206 | ||
207 | -- Line for -gnati switch | |
208 | ||
209 | Write_Switch_Char ("i?"); | |
07fc65c4 | 210 | Write_Line ("Identifier char set (?=1/2/3/4/5/8/9/p/f/n/w)"); |
415dddc8 RK |
211 | |
212 | -- Line for -gnatk switch | |
213 | ||
214 | Write_Switch_Char ("k"); | |
215 | Write_Line ("Limit file names to nnn characters (k = krunch)"); | |
216 | ||
217 | -- Line for -gnatl switch | |
218 | ||
219 | Write_Switch_Char ("l"); | |
220 | Write_Line ("Output full source listing with embedded error messages"); | |
221 | ||
222 | -- Line for -gnatL switch | |
223 | ||
224 | Write_Switch_Char ("L"); | |
225 | Write_Line ("Use longjmp/setjmp for exception handling"); | |
226 | ||
227 | -- Line for -gnatm switch | |
228 | ||
229 | Write_Switch_Char ("mnnn"); | |
fbf5a39b | 230 | Write_Line ("Limit number of detected errors to nnn (1-999999)"); |
415dddc8 RK |
231 | |
232 | -- Line for -gnatn switch | |
233 | ||
234 | Write_Switch_Char ("n"); | |
235 | Write_Line ("Inlining of subprograms (apply pragma Inline across units)"); | |
236 | ||
237 | -- Line for -gnatN switch | |
238 | ||
239 | Write_Switch_Char ("N"); | |
19f0526a | 240 | Write_Line ("Full (frontend) inlining of subprograms"); |
415dddc8 RK |
241 | |
242 | -- Line for -gnato switch | |
243 | ||
244 | Write_Switch_Char ("o"); | |
245 | Write_Line ("Enable overflow checking (off by default)"); | |
246 | ||
247 | -- Line for -gnatO switch | |
248 | ||
249 | Write_Switch_Char ("O nm "); | |
250 | Write_Line ("Set name of output ali file (internal switch)"); | |
251 | ||
252 | -- Line for -gnatp switch | |
253 | ||
254 | Write_Switch_Char ("p"); | |
255 | Write_Line ("Suppress all checks"); | |
256 | ||
257 | -- Line for -gnatP switch | |
258 | ||
259 | Write_Switch_Char ("P"); | |
260 | Write_Line ("Generate periodic calls to System.Polling.Poll"); | |
261 | ||
262 | -- Line for -gnatq switch | |
263 | ||
264 | Write_Switch_Char ("q"); | |
265 | Write_Line ("Don't quit, try semantics, even if parse errors"); | |
266 | ||
267 | -- Line for -gnatQ switch | |
268 | ||
269 | Write_Switch_Char ("Q"); | |
270 | Write_Line ("Don't quit, write ali/tree file even if compile errors"); | |
271 | ||
aa720a54 | 272 | -- Lines for -gnatR switch |
415dddc8 RK |
273 | |
274 | Write_Switch_Char ("R?"); | |
aa720a54 AC |
275 | Write_Line ("List rep info (?=0/1/2/3 for none/types/all/variable)"); |
276 | Write_Switch_Char ("R?s"); | |
277 | Write_Line ("List rep info to file.rep instead of standard output"); | |
415dddc8 RK |
278 | |
279 | -- Lines for -gnats switch | |
280 | ||
281 | Write_Switch_Char ("s"); | |
282 | Write_Line ("Syntax check only"); | |
283 | ||
9596236a AC |
284 | -- Lines for -gnatS switch |
285 | ||
286 | Write_Switch_Char ("S"); | |
287 | Write_Line ("Print listing of package Standard"); | |
288 | ||
415dddc8 RK |
289 | -- Lines for -gnatt switch |
290 | ||
291 | Write_Switch_Char ("t"); | |
292 | Write_Line ("Tree output file to be generated"); | |
293 | ||
294 | -- Line for -gnatT switch | |
295 | ||
296 | Write_Switch_Char ("Tnnn"); | |
297 | Write_Line ("All compiler tables start at nnn times usual starting size"); | |
298 | ||
299 | -- Line for -gnatu switch | |
300 | ||
301 | Write_Switch_Char ("u"); | |
302 | Write_Line ("List units for this compilation"); | |
303 | ||
304 | -- Line for -gnatU switch | |
305 | ||
306 | Write_Switch_Char ("U"); | |
307 | Write_Line ("Enable unique tag for error messages"); | |
308 | ||
309 | -- Line for -gnatv switch | |
310 | ||
311 | Write_Switch_Char ("v"); | |
312 | Write_Line ("Verbose mode. Full error output with source lines to stdout"); | |
313 | ||
314 | -- Line for -gnatV switch | |
315 | ||
9a5621d7 | 316 | Write_Switch_Char ("Vxx"); |
415dddc8 | 317 | Write_Line |
9a5621d7 RD |
318 | ("Enable selected validity checking mode, xx = list of parameters:"); |
319 | Write_Line (" a turn on all validity checking options"); | |
07fc65c4 GB |
320 | Write_Line (" c turn on checking for copies"); |
321 | Write_Line (" C turn off checking for copies"); | |
322 | Write_Line (" d turn on default (RM) checking"); | |
323 | Write_Line (" D turn off default (RM) checking"); | |
324 | Write_Line (" f turn on checking for floating-point"); | |
325 | Write_Line (" F turn off checking for floating-point"); | |
326 | Write_Line (" i turn on checking for in params"); | |
327 | Write_Line (" I turn off checking for in params"); | |
328 | Write_Line (" m turn on checking for in out params"); | |
329 | Write_Line (" M turn off checking for in out params"); | |
330 | Write_Line (" o turn on checking for operators/attributes"); | |
331 | Write_Line (" O turn off checking for operators/attributes"); | |
fbf5a39b AC |
332 | Write_Line (" p turn on checking for parameters"); |
333 | Write_Line (" P turn off checking for parameters"); | |
07fc65c4 GB |
334 | Write_Line (" r turn on checking for returns"); |
335 | Write_Line (" R turn off checking for returns"); | |
336 | Write_Line (" s turn on checking for subscripts"); | |
337 | Write_Line (" S turn off checking for subscripts"); | |
338 | Write_Line (" t turn on checking for tests"); | |
339 | Write_Line (" T turn off checking for tests"); | |
9a5621d7 | 340 | Write_Line (" n turn off all validity checks (including RM)"); |
415dddc8 RK |
341 | |
342 | -- Lines for -gnatw switch | |
343 | ||
344 | Write_Switch_Char ("wxx"); | |
345 | Write_Line ("Enable selected warning modes, xx = list of parameters:"); | |
a397db96 | 346 | Write_Line (" a turn on all optional warnings (except d,h,l)"); |
415dddc8 | 347 | Write_Line (" A turn off all optional warnings"); |
fbf5a39b AC |
348 | Write_Line (" c turn on warnings for constant conditional"); |
349 | Write_Line (" C* turn off warnings for constant conditional"); | |
350 | Write_Line (" d turn on warnings for implicit dereference"); | |
351 | Write_Line (" D* turn off warnings for implicit dereference"); | |
415dddc8 | 352 | Write_Line (" e treat all warnings as errors"); |
fbf5a39b AC |
353 | Write_Line (" f turn on warnings for unreferenced formal"); |
354 | Write_Line (" F* turn off warnings for unreferenced formal"); | |
355 | Write_Line (" g* turn on warnings for unrecognized pragma"); | |
356 | Write_Line (" G turn off warnings for unrecognized pragma"); | |
357 | Write_Line (" h turn on warnings for hiding variable "); | |
358 | Write_Line (" H* turn off warnings for hiding variable"); | |
359 | Write_Line (" i* turn on warnings for implementation unit"); | |
360 | Write_Line (" I turn off warnings for implementation unit"); | |
361 | Write_Line (" j turn on warnings for obsolescent " & | |
362 | "(annex J) feature"); | |
363 | Write_Line (" J* turn off warnings for obsolescent " & | |
364 | "(annex J) feature"); | |
365 | Write_Line (" k turn on warnings on constant variable"); | |
366 | Write_Line (" K* turn off warnings on constant variable"); | |
367 | Write_Line (" l turn on warnings for missing " & | |
368 | "elaboration pragma"); | |
369 | Write_Line (" L* turn off warnings for missing " & | |
370 | "elaboration pragma"); | |
371 | Write_Line (" m turn on warnings for variable assigned " & | |
372 | "but not read"); | |
373 | Write_Line (" M* turn off warnings for variable assigned " & | |
374 | "but not read"); | |
375 | Write_Line (" n* normal warning mode (cancels -gnatws/-gnatwe)"); | |
376 | Write_Line (" o* turn on warnings for address clause overlay"); | |
377 | Write_Line (" O turn off warnings for address clause overlay"); | |
6fd459bb TQ |
378 | Write_Line (" p turn on warnings for ineffective pragma Inline"); |
379 | Write_Line (" P* turn off warnings for ineffective pragma Inline"); | |
fbf5a39b AC |
380 | Write_Line (" r turn on warnings for redundant construct"); |
381 | Write_Line (" R* turn off warnings for redundant construct"); | |
415dddc8 | 382 | Write_Line (" s suppress all warnings"); |
fbf5a39b AC |
383 | Write_Line (" u turn on warnings for unused entity"); |
384 | Write_Line (" U* turn off warnings for unused entity"); | |
385 | Write_Line (" v* turn on warnings for unassigned variable"); | |
386 | Write_Line (" V turn off warnings for unassigned variable"); | |
387 | Write_Line (" x* turn on warnings for export/import"); | |
388 | Write_Line (" X* turn off warnings for export/import"); | |
389 | Write_Line (" z* turn on size/align warnings for " & | |
390 | "unchecked conversion"); | |
391 | Write_Line (" Z turn off size/align warnings for " & | |
392 | "unchecked conversion"); | |
415dddc8 RK |
393 | Write_Line (" * indicates default in above list"); |
394 | ||
395 | -- Line for -gnatW switch | |
396 | ||
397 | Write_Switch_Char ("W"); | |
398 | Write_Str ("Wide character encoding method ("); | |
399 | ||
400 | for J in WC_Encoding_Method loop | |
401 | Write_Char (WC_Encoding_Letters (J)); | |
402 | ||
403 | if J = WC_Encoding_Method'Last then | |
404 | Write_Char (')'); | |
405 | else | |
406 | Write_Char ('/'); | |
407 | end if; | |
408 | end loop; | |
409 | ||
410 | Write_Eol; | |
411 | ||
412 | -- Line for -gnatx switch | |
413 | ||
414 | Write_Switch_Char ("x"); | |
415 | Write_Line ("Suppress output of cross-reference information"); | |
416 | ||
417 | -- Line for -gnatX switch | |
418 | ||
419 | Write_Switch_Char ("X"); | |
420 | Write_Line ("Language extensions permitted"); | |
421 | ||
422 | -- Lines for -gnaty switch | |
423 | ||
424 | Write_Switch_Char ("y"); | |
448f2610 | 425 | Write_Line ("Enable default style checks (same as -gnaty3abcefhiklmnprst)"); |
415dddc8 RK |
426 | Write_Switch_Char ("yxx"); |
427 | Write_Line ("Enable selected style checks xx = list of parameters:"); | |
428 | Write_Line (" 1-9 check indentation"); | |
429 | Write_Line (" a check attribute casing"); | |
430 | Write_Line (" b check no blanks at end of lines"); | |
431 | Write_Line (" c check comment format"); | |
432 | Write_Line (" e check end/exit labels present"); | |
433 | Write_Line (" f check no form feeds/vertical tabs in source"); | |
434 | Write_Line (" h check no horizontal tabs in source"); | |
435 | Write_Line (" i check if-then layout"); | |
fbf5a39b | 436 | Write_Line (" k check casing rules for keywords"); |
415dddc8 | 437 | Write_Line (" l check reference manual layout"); |
0da2c8ac | 438 | Write_Line (" Lnnn check max nest level < nnn"); |
415dddc8 RK |
439 | Write_Line (" m check line length <= 79 characters"); |
440 | Write_Line (" n check casing of package Standard identifiers"); | |
441 | Write_Line (" Mnnn check line length <= nnn characters"); | |
442 | Write_Line (" o check subprogram bodies in alphabetical order"); | |
443 | Write_Line (" p check pragma casing"); | |
fbf5a39b | 444 | Write_Line (" r check casing for identifier references"); |
415dddc8 RK |
445 | Write_Line (" s check separate subprogram specs present"); |
446 | Write_Line (" t check token separation rules"); | |
bc202b70 | 447 | Write_Line (" x check extra parens around conditionals"); |
415dddc8 | 448 | |
2e071734 AC |
449 | -- Lines for -gnatyN switch |
450 | ||
451 | Write_Switch_Char ("yN"); | |
452 | Write_Line ("Cancel all previously set style checks"); | |
453 | ||
415dddc8 RK |
454 | -- Lines for -gnatz switch |
455 | ||
456 | Write_Switch_Char ("z"); | |
fbf5a39b | 457 | Write_Line ("Distribution stub generation (r/c for receiver/caller stubs)"); |
415dddc8 RK |
458 | |
459 | -- Line for -gnatZ switch | |
460 | ||
461 | Write_Switch_Char ("Z"); | |
462 | Write_Line ("Use zero cost exception handling"); | |
463 | ||
464 | -- Line for -gnat83 switch | |
465 | ||
466 | Write_Switch_Char ("83"); | |
467 | Write_Line ("Enforce Ada 83 restrictions"); | |
468 | ||
448f2610 AC |
469 | -- Line for -gnat05 switch |
470 | ||
471 | Write_Switch_Char ("05"); | |
472 | Write_Line ("Allow Ada 2005 extensions"); | |
473 | ||
415dddc8 | 474 | end Usage; |