1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT COMPILER COMPONENTS                         --
4--                                                                          --
5--                             B I N D U S G                                --
6--                                                                          --
7--                                 B o d y                                  --
8--                                                                          --
9--          Copyright (C) 1992-2020, Free Software Foundation, Inc.         --
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 3,  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 COPYING3.  If not, go to --
19-- http://www.gnu.org/licenses for a complete copy of the license.          --
20--                                                                          --
21-- GNAT was originally developed  by the GNAT team at  New York University. --
22-- Extensive contributions were provided by Ada Core Technologies Inc.      --
23--                                                                          --
24------------------------------------------------------------------------------
25
26with Osint;  use Osint;
27with Output; use Output;
28with Switch; use Switch;
29
30with System.WCh_Con; use System.WCh_Con;
31
32package body Bindusg is
33
34   Already_Displayed : Boolean := False;
35   --  Set True if Display called, used to avoid showing usage information
36   --  more than once.
37
38   -------------
39   -- Display --
40   -------------
41
42   procedure Display is
43   begin
44      if Already_Displayed then
45         return;
46      else
47         Already_Displayed := True;
48      end if;
49
50      --  Usage line
51
52      Write_Str ("Usage: ");
53      Write_Program_Name;
54      Write_Char (' ');
55      Write_Str ("switches lfile");
56      Write_Eol;
57      Write_Eol;
58
59      Display_Usage_Version_And_Help;
60
61      --  Line for @response_file
62
63      Write_Line
64        ("  @<resp_file> Get arguments from response file");
65      Write_Eol;
66
67      --  Line for -aO switch
68
69      Write_Line
70        ("  -aOdir    Specify library files search path");
71
72      --  Line for -aI switch
73
74      Write_Line
75        ("  -aIdir    Specify source files search path");
76
77      --  Line for a switch
78
79      Write_Line
80        ("  -a        Automatically initialize elaboration procedure");
81
82      --  Lines for -A switch
83
84      Write_Line
85        ("  -A        Give list of ALI files in partition");
86      Write_Line
87        ("  -A=file   Write ALI file list to named file");
88
89      --  Line for -b switch
90
91      Write_Line
92        ("  -b        Generate brief messages to stderr even if verbose mode "
93         & "set");
94
95      --  Line for -c switch
96
97      Write_Line
98        ("  -c        Check only, no generation of binder output file");
99
100      --  Line for -d switch
101
102      Write_Line
103        ("  -dnn[k|m] Default primary stack size = nn [kilo|mega] bytes");
104
105      --  Line for D switch
106
107      Write_Line
108        ("  -Dnn[k|m] Default secondary stack size = nn [kilo|mega] bytes");
109
110      --  Line for -e switch
111
112      Write_Line
113        ("  -e        Output complete list of elaboration order dependencies");
114
115      --  Line for -E switch
116
117      Write_Line
118        ("  -Ea       Store tracebacks in exception occurrences");
119      Write_Line
120        ("  -Es       Store tracebacks in exception occurrences,");
121      Write_Line
122        ("            and enable symbolic tracebacks");
123      Write_Line
124        ("  -E        Same as -Ea");
125
126      --  Line for -f switch
127
128      Write_Line
129        ("  -ffile    Force elaboration order from given file");
130
131      --  Line for -F switch
132
133      Write_Line
134        ("  -F        Force checking of elaboration Flags");
135
136      --  Line for -G switch
137
138      Write_Line
139        ("  -G        Generate binder file suitable for CCG");
140
141      --  Line for -h switch
142
143      Write_Line
144        ("  -h        Output this usage (help) information");
145
146      --  Line for -H switch
147
148      Write_Line
149        ("  -H        Legacy elaboration order model enabled");
150
151      --  Lines for -I switch
152
153      Write_Line
154        ("  -Idir     Specify library and source files search path");
155      Write_Line
156        ("  -I-       Don't look for sources & library files in default "
157         & "directory");
158
159      --  Line for -K switch
160
161      Write_Line
162        ("  -K        Give list of linker options specified for link");
163
164      --  Line for -l switch
165
166      Write_Line
167        ("  -l        Output chosen elaboration order");
168
169      --  Line of -L switch
170
171      Write_Line
172        ("  -Lxyz     Library build: adainit/final renamed to xyzinit/final, "
173         & "implies -n");
174
175      --  Line for -m switch
176
177      Write_Line
178        ("  -mnnn     Limit number of detected errors/warnings to nnn "
179         & "(1-999999)");
180
181      --  Line for -minimal switch
182
183      Write_Line
184        ("  -minimal  Generate binder file suitable for space-constrained "
185         & "applications");
186
187      --  Line for -M switch
188
189      Write_Line
190        ("  -Mxyz     Rename generated main program from main to xyz");
191
192      --  Line for -n switch
193
194      Write_Line
195        ("  -n        No Ada main program (foreign main routine)");
196
197      --  Line for -nostdinc
198
199      Write_Line
200        ("  -nostdinc Don't look for source files in the system default "
201         & "directory");
202
203      --  Line for -nostdlib
204
205      Write_Line
206        ("  -nostdlib Don't look for library files in the system default "
207         & "directory");
208
209      --  Line for -o switch
210
211      Write_Line
212        ("  -o file   Give the output file name (default is b~xxx.adb)");
213
214      --  Line for -O switch
215
216      Write_Line
217        ("  -O        Give list of objects required for link");
218
219      --  Line for -p switch
220
221      Write_Line
222        ("  -p        Pessimistic (worst-case) elaboration order");
223
224      --  Line for -P switch
225
226      Write_Line
227        ("  -P        Generate binder file suitable for CodePeer");
228
229      --  Line for Q switch
230
231      Write_Line
232        ("  -Qnnn     Generate nnn default-sized secondary stacks");
233
234      --  Line for -r switch
235
236      Write_Line
237        ("  -r        List restrictions that could be applied to this "
238         & "partition");
239
240      --  Line for -R switch
241
242      Write_Line
243        ("  -R        List sources referenced in closure");
244
245      --  Line for -s switch
246
247      Write_Line
248        ("  -s        Require all source files to be present");
249
250      --  Line for -S?? switch
251
252      Write_Line
253        ("  -S??      Sin/lo/hi/xx/ev Initialize_Scalars "
254         & "invalid/low/high/hex/env var");
255
256      --  Line for -static
257
258      Write_Line
259        ("  -static   Link against a static GNAT run time");
260
261      --  Line for -shared
262
263      Write_Line
264        ("  -shared   Link against a shared GNAT run time");
265
266      --  Line for -t switch
267
268      Write_Line
269        ("  -t        Tolerate time stamp and other consistency errors");
270
271      --  Line for -T switch
272
273      Write_Line
274        ("  -Tn       Set time slice value to n milliseconds (n >= 0)");
275
276      --  Line for -u switch
277
278      Write_Line
279        ("  -un       Enable dynamic stack analysis, with n results stored");
280
281      --  Line for -v switch
282
283      Write_Line
284        ("  -v        Verbose mode. Error messages, header, summary output to "
285         & "stdout");
286
287      --  Line for -V switch
288
289      Write_Line
290        ("  -Vkey=val Record bind-time variable key with value val");
291      --  Line for -w switch
292
293      Write_Line
294        ("  -wx       Warning mode. (x=s/e for suppress/treat as error)");
295
296      --  Line for -W switch
297
298      Write_Str
299        ("  -W?       Wide character encoding method (");
300
301      for J in WC_Encoding_Method loop
302         Write_Char (WC_Encoding_Letters (J));
303
304         if J = WC_Encoding_Method'Last then
305            Write_Char (')');
306         else
307            Write_Char ('/');
308         end if;
309      end loop;
310
311      Write_Eol;
312
313      --  Line for -x switch
314
315      Write_Line
316        ("  -x        Exclude source files (check object consistency only)");
317
318      --  Line for -xdr switch
319
320      Write_Line
321        ("  -xdr      Use the XDR protocol for streaming");
322
323      --  Line for -X switch
324
325      Write_Line
326        ("  -Xnnn     Default exit status value = nnn");
327
328      --  Line for -y switch
329
330      Write_Line
331        ("  -y        Enable leap seconds");
332
333      --  Line for -z switch
334
335      Write_Line
336        ("  -z        No main subprogram (zero main)");
337
338      --  Line for -Z switch
339
340      Write_Line
341        ("  -Z        Zero formatting in auxiliary outputs (-e, -K, -l, -R)");
342
343      --  Line for --RTS
344
345      Write_Line
346        ("  --RTS=dir Specify the default source and object search path");
347
348      --  Line for sfile
349
350      Write_Line
351        ("  lfile     Library file names");
352   end Display;
353
354end Bindusg;
355