File : makeusg.adb


   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-2014, 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 
  26 with Makeutl;
  27 with Osint;   use Osint;
  28 with Output;  use Output;
  29 with Switch;  use Switch;
  30 with Usage;
  31 
  32 procedure Makeusg is
  33 
  34 --  Start of processing for Makeusg
  35 
  36 begin
  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 (Makeutl.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 (Makeutl.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 
 396 end Makeusg;