1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT COMPILER COMPONENTS                         --
4--                                                                          --
5--                              M A K E U S G                               --
6--                                                                          --
7--                                 B o d y                                  --
8--                                                                          --
9--          Copyright (C) 1992-2019, 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 Make_Util;
27with Osint;
28with Output;  use Output;
29with Switch;  use Switch;
30with Usage;
31
32procedure Makeusg is
33
34--  Start of processing for Makeusg
35
36begin
37   --  Usage line
38
39   Write_Str ("Usage: ");
40   Osint.Write_Program_Name;
41   Write_Str ("  opts  name  ");
42   Write_Str ("{[-cargs opts] [-bargs opts] [-largs opts] [-margs opts]}");
43   Write_Eol;
44   Write_Eol;
45   Write_Str ("  name is one or more file name from which you");
46   Write_Str (" can omit the .adb or .ads suffix");
47   Write_Eol;
48   Write_Eol;
49
50   --  GNATMAKE switches
51
52   Write_Str ("gnatmake switches:");
53   Write_Eol;
54
55   Display_Usage_Version_And_Help;
56
57   --  Line for -a
58
59   Write_Str ("  -a       Consider all files, even readonly ali files");
60   Write_Eol;
61
62   --  Line for -b
63
64   Write_Str ("  -b       Bind only");
65   Write_Eol;
66
67   --  Line for -B
68
69   Write_Str ("  -B       Build, bind and link full project");
70   Write_Eol;
71
72   --  Line for -c
73
74   Write_Str ("  -c       Compile only");
75   Write_Eol;
76
77   --  Line for -C
78
79   Write_Str ("  -C       Cache source mappings: " &
80              "invoke compiler with temp mapping file");
81   Write_Eol;
82
83   --  Line for -C=<mapping file>
84
85   Write_Str ("  -C=mapp  Cache source mappings: " &
86              "invoke compiler with mapping file mapp");
87   Write_Eol;
88
89   --  Line for -d
90
91   Write_Str ("  -d       Display compilation progress");
92   Write_Eol;
93
94   --  Line for -D
95
96   Write_Str ("  -D dir   Specify dir as the object directory");
97   Write_Eol;
98
99   --  Line for -eI
100
101   Write_Str ("  -eI      Index of unit in multi-unit source file");
102   Write_Eol;
103
104   --  Line for -eL
105
106   Write_Str ("  -eL      Follow symbolic links when processing " &
107              "project files");
108   Write_Eol;
109
110   --  Line for -eS
111
112   Write_Str ("  -eS      Echo commands to stdout instead of stderr");
113   Write_Eol;
114
115   --  Line for -f
116
117   Write_Str ("  -f       Force recompilations of non predefined units");
118   Write_Eol;
119
120   --  Line for -F
121
122   Write_Str ("  -F       Full project path name in brief error messages");
123   Write_Eol;
124
125   --  Line for -i
126
127   Write_Str ("  -i       In place. Replace existing ali file, ");
128   Write_Str ("or put it with source");
129   Write_Eol;
130
131   --  Line for -jnnn
132
133   Write_Str ("  -jnum    Use nnn processes to compile");
134   Write_Eol;
135
136   --  Line for -k
137
138   Write_Str ("  -k       Keep going after compilation errors");
139   Write_Eol;
140
141   --  Line for -l
142
143   Write_Str ("  -l       Link only");
144   Write_Eol;
145
146   --  Line for -m
147
148   Write_Str ("  -m       Minimal recompilation");
149   Write_Eol;
150
151   --  Line for -M
152
153   Write_Str ("  -M       List object file dependences for Makefile");
154   Write_Eol;
155
156   --  Line for -n
157
158   Write_Str ("  -n       Check objects up to date, output next file ");
159   Write_Str ("to compile if not");
160   Write_Eol;
161
162   --  Line for -o
163
164   Write_Str ("  -o name  Choose an alternate executable name");
165   Write_Eol;
166
167   --  Line for -p
168
169   Write_Str ("  -p       Create missing obj, lib and exec dirs");
170   Write_Eol;
171
172   --  Line for -P
173
174   Write_Str ("  -Pproj   Use GNAT Project File proj");
175   Write_Eol;
176
177   --  Line for -q
178
179   Write_Str ("  -q       Be quiet/terse");
180   Write_Eol;
181
182   --  Line for -R
183
184   Write_Str ("  -R       Do not use a run_path_option when linking");
185   Write_Eol;
186
187   --  Line for -s
188
189   Write_Str ("  -s       Recompile if compiler switches have changed");
190   Write_Eol;
191
192   --  Line for -u
193
194   Write_Str ("  -u       Unique compilation, only compile the given files");
195   Write_Eol;
196
197   --  Line for -U
198
199   Write_Str ("  -U       Unique compilation for all sources of all projects");
200   Write_Eol;
201
202   --  Line for -v
203
204   Write_Str ("  -v       Display reasons for all (re)compilations");
205   Write_Eol;
206
207   --  Line for -vl
208
209   Write_Str ("  -vl      Verbose output (low verbosity)");
210   Write_Eol;
211
212   --  Line for -vm
213
214   Write_Str ("  -vm      Verbose output (medium verbosity)");
215   Write_Eol;
216
217   --  Line for -vh
218
219   Write_Str ("  -vh      Equivalent to -v (high verbosity)");
220   Write_Eol;
221
222   --  Line for -vPx
223
224   Write_Str ("  -vPx     Specify verbosity when parsing GNAT Project Files");
225   Write_Eol;
226
227   --  Line for -we
228
229   Write_Str ("  -we      Treat all warnings as errors");
230   Write_Eol;
231
232   --  Line for -wn
233
234   Write_Str ("  -wn      Normal warning mode (cancels -we/-ws)");
235   Write_Eol;
236
237   --  Line for -ws
238
239   Write_Str ("  -ws      Suppress all warnings");
240   Write_Eol;
241
242   --  Line for -x
243
244   Write_Str ("  -x       " &
245              "Allow compilation of needed units external to the projects");
246   Write_Eol;
247
248   --  Line for -X
249
250   Write_Str ("  -Xnm=val Specify an external reference for GNAT " &
251              "Project Files");
252   Write_Eol;
253
254   --  Line for -z
255
256   Write_Str ("  -z       No main subprogram (zero main)");
257   Write_Eol;
258   Write_Eol;
259
260   Write_Str ("  --create-map-file   Create map file mainprog.map");
261   Write_Eol;
262
263   Write_Str ("  --create-map-file=mapfile");
264   Write_Eol;
265   Write_Str ("                      Create map file mapfile");
266   Write_Eol;
267
268   Write_Str ("  --keep-temp-files   Keep temporary files");
269   Write_Eol;
270
271   Write_Str ("  --GCC=command       Use this gcc command");
272   Write_Eol;
273
274   Write_Str ("  --GNATBIND=command  Use this gnatbind command");
275   Write_Eol;
276
277   Write_Str ("  --GNATLINK=command  Use this gnatlink command");
278   Write_Eol;
279   Write_Eol;
280
281   --  Source and Library search path switches
282
283   Write_Str ("Project, Source and Library search path switches:");
284   Write_Eol;
285
286   --  Line for -aP
287
288   Write_Str ("  -aPdir    Add directory dir to project search path");
289   Write_Eol;
290
291   --  Line for -aL
292
293   Write_Str ("  -aLdir    Skip missing library sources if ali in dir");
294   Write_Eol;
295
296   --  Line for -A
297
298   Write_Str ("  -Adir     like -aLdir -aIdir");
299   Write_Eol;
300
301   --  Line for -aO switch
302
303   Write_Str ("  -aOdir    Specify library/object files search path");
304   Write_Eol;
305
306   --  Line for -aI switch
307
308   Write_Str ("  -aIdir    Specify source files search path");
309   Write_Eol;
310
311   --  Line for -I switch
312
313   Write_Str ("  -Idir     Like -aIdir -aOdir");
314   Write_Eol;
315
316   --  Line for -I- switch
317
318   Write_Str ("  -I-       Don't look for sources & library files");
319   Write_Str (" in the default directory");
320   Write_Eol;
321
322   --  Line for -L
323
324   Write_Str ("  -Ldir     Look for program libraries also in dir");
325   Write_Eol;
326
327   --  Line for -nostdinc
328
329   Write_Str ("  -nostdinc Don't look for sources");
330   Write_Str (" in the system default directory");
331   Write_Eol;
332
333   --  Line for -nostdlib
334
335   Write_Str ("  -nostdlib Don't look for library files");
336   Write_Str (" in the system default directory");
337   Write_Eol;
338
339   --  Line for --RTS
340
341   Write_Str ("  --RTS=dir specify the default source and object search"
342              & " path");
343   Write_Eol;
344
345   --  Line for --subdirs=
346
347   Write_Str ("  --subdirs=dir real obj/lib/exec dirs are subdirs");
348   Write_Eol;
349
350   --  Line for --source-info=
351
352   Write_Str ("  ");
353   Write_Str (Make_Util.Source_Info_Option);
354   Write_Str ("file specify a source info file");
355   Write_Eol;
356
357   --  Line for --unchecked-shared-lib-imports
358
359   Write_Str ("  ");
360   Write_Str (Make_Util.Unchecked_Shared_Lib_Imports);
361   Write_Eol;
362   Write_Str ("            Allow shared libraries to import static libraries");
363   Write_Eol;
364   Write_Eol;
365
366   --  General Compiler, Binder, Linker switches
367
368   Write_Str ("To pass an arbitrary switch to the Compiler, ");
369   Write_Str ("Binder or Linker:");
370   Write_Eol;
371
372   --  Line for -cargs
373
374   Write_Str ("  -cargs opts   opts are passed to the compiler");
375   Write_Eol;
376
377   --  Line for -bargs
378
379   Write_Str ("  -bargs opts   opts are passed to the binder");
380   Write_Eol;
381
382   --  Line for -largs
383
384   Write_Str ("  -largs opts   opts are passed to the linker");
385   Write_Eol;
386
387   --  Line for -margs
388
389   Write_Str ("  -margs opts   opts are passed to gnatmake");
390   Write_Eol;
391
392   --  Add usage information for gcc
393
394   Usage;
395
396end Makeusg;
397