home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / mac / 1000 / CCE_1024.ZIP / CCE_1024 / SOZBIN07.LZH / SOZDISTR / DOC / CC.MAN < prev    next >
Text File  |  1994-10-20  |  20KB  |  501 lines

  1. CC(1)                    USER COMMANDS                    CC(1)
  2.  
  3. NAME
  4.  
  5.      cc - Sozobon C Compiler Driver (eXtended version)
  6.  
  7. SYNOPSIS
  8.  
  9.      cc [options] files
  10.  
  11.      cc [-h][-cOSPEvVnpgft]]+P] [-o <file> ][-W<n> ][-{T|s} <file> ]
  12.       [-L<path> ][-I<path> ][-D<sym> ][-U<sym> ][-X[n][func] ][-F <file> ]
  13.       [-W<any_text> ][-mshort ][-mlong ][-e[fs] ][-u <sym> ][-l <name> ]
  14.       [--version ][--help ][--nostdlibs ][--sdir <path> ][--odir <path> ]
  15.       [--mint ][--c68 ][--dlibs ][--stdbinaries ][--libc <file> ]
  16.       [+P<opstr> ][+C<opstr> ][+O<opstr> ][+A<opstr> ][+L<opstr> ]
  17.       [<file>] [<file> ...]
  18.  
  19. DESCRIPTION
  20.  
  21.      This eXtended version of Sozobon compiler driver uses a command syntax
  22.      like that of a many "C" compilers.
  23.  
  24.      The cc command runs the passes of the compiler as needed to process
  25.      files given on the command line.  Various options exist to control the
  26.      execution of cc or the compiler passes it runs.  When you invoke cc, it
  27.      normally does compilation, assembly and linking, but not preprocessing.
  28.      Sozobon has an internal preprocessor.  Filenames which end in '.c' are
  29.      taken as "C" source to be compiled or preprocessed; filenames ending in
  30.      .i are taken as preprocessor output to be compiled; compiler output
  31.      files and any input files with names ending in .s are assembled;  then
  32.      the resulting object files, and any other input files, are linked
  33.      together to produce an executable.  Command line options allow you to 
  34.      stop this process at any intermediate stage. 
  35.  
  36.      cc recognizes file names with the following extensions: 
  37.  
  38.             .c     C Source File
  39.             .i     Preprocessor Output File (made from C source file)
  40.             .tmp   Assembly Language Input For Optimizer 
  41.             .cpp   Assembly Language Input For Preprocessor
  42.             .spp   Assembly Language Input For Preprocessor
  43.             .s     Assembly Language Input For Assembler
  44.             .o     Relocatable Object Module
  45.             .a     Library Module
  46.             .lib   Library Module
  47.  
  48.       If a filename has no extension, it is assumed to be a library or
  49.       object module.
  50.       
  51.       The  name  of the executable is based on the first file name on
  52.       the command line.  If the first filename was "foobar.c", the
  53.       resulting executable would be named "foobar.out".  
  54.  
  55.       When a file generated during a compilation pass is no longer needed
  56.       (the next level of output has been generated from it) then it is
  57.       deleted.  Only '.o' and executables are exempt from this; they are
  58.       deleted only if the compilation pass that generates them fails.
  59.       If an executable is created in one compilation pass, however, the
  60.       '.o' file will be deleted (since it is not needed).
  61.  
  62.       There are many optionss that allow you to control cc, and there are
  63.       other optionss available to allow other compiler tools to be
  64.       controlled. 
  65.  
  66.       Cause the hcc's commanline syntax changed a little bit you can use
  67.       this cc now for Thorsten Roskowetz's port of the c68 compiler, too.
  68.  
  69.  
  70. OPTIONS
  71.  
  72.      The first options to be discussed will be the options that control the
  73.      overall compilation process.
  74.  
  75.      -c   Compile or assemble the source files, but do not link them.
  76.           Object files produced by this option will be named exactly like
  77.           the source files from which they were generated, but with a
  78.           '.o' extension instead of a '.s' or '.c' extension.  Object files
  79.           specified as input will be ignored.
  80.  
  81.      -O   Execute the assembly optimizer between the compiler stage and the
  82.           assembler stage.  The '.s' files generated during the compiler
  83.           stage will be renamed to '.tmp' files, and new (optimized) '.s'
  84.           files will be created.
  85.  
  86.      -S   Compile the source files, but do not assemble them.  The assembler
  87.           files produced by this option will be named exactly like the source
  88.           files from which they were generated, but with a '.s' extension
  89.           instead of a '.c' extension.  Object files and assembler source
  90.           files specified as input will be ignored.  If specified, the
  91.           assembly optimizer will be executed.  If cc is invoked with the
  92.           '-c' option following this option, an executable will be created,
  93.           but the '.s' files and '.tmp' files will not be deleted.
  94.  
  95.      -P   Execute the "C" preprocessor only.  All specified source files will
  96.           be preprocessed.  The output files produced by this option will
  97.           be given a '.i' extension.  Since Sozobon "C" has no stand-alone
  98.           'cpp', this option is provided for compatability and to enable
  99.           the easy generation of preprocessed '.c' files as input for other
  100.           tools.
  101.  
  102.      -E   Same as -P, but output of ccp goes to stdout.
  103.  
  104.  
  105.      +P
  106.           Run the preprocessor on c files first. This is useful if there
  107.           are preprocessor statements hcc doesn't know in the source, or
  108.       you make use of another compiler with $CC1 variable.
  109.  
  110.  
  111.      machine dependency options (-m...)
  112.  
  113.      -mshort
  114.           Does actually nothing cause short int is default in SOZOBONX
  115.  
  116.      -mlong
  117.           Ints are 32 Bit values (longs), this is passed to hcc, and special
  118.       libraries - which don't exist yet - get linked (<lib>32)
  119.  
  120.  
  121.      The following switches control cc itself, the output files, and the
  122.      linker:
  123.  
  124.      -v   The compiler driver program will display the commands it executes
  125.           as it performs preprocessing, compilation, assembling, and
  126.           linking.
  127.  
  128.      -V   Same as above, but the verbose option is also given to each
  129.           tool.
  130.  
  131.      -h   This switch will cause a help page to be displayed.
  132.  
  133.      -n   This option (which is verbose) will show you how cc would react
  134.           to the command line given.  It will also create a link file, so
  135.           that you can see what would be done with a special command line
  136.           you typed.  No actual work is done, though.
  137.       This is not standard, so this switch may change in future.
  138.  
  139.      -o <file> 
  140.           This option (passed to the linker) specifies to which file ld
  141.           output will be written.  By default, ld output is written to
  142.           a file with the same filename as the first input filename, but
  143.           with a '.out' extension.  If there is no input filename (-F) then
  144.           the output will be written to a file called 'a.out'.  When used
  145.           with the options '-c' or '-S', 'file' is taken as the name of the
  146.           assembler output file.
  147.  
  148.      -g   This option is passed to assembler and linker, so that all symbols
  149.           will be kept in the outputfiles. The optimizer is told not to
  150.       produce code, that may confuse a debugger.
  151.  
  152.      -p   This option enables runtime execution profiling.  It is
  153.           passed to the compiler as '-P', and forces the linker to
  154.           use a different startup code and a special runtime library. 
  155.  
  156.      -f   This option tells ld to use a library including some floating 
  157.           point functions 'libc.a' and not the integer only lib 'libci.a'.
  158.           If there is no 'libci.a' in the selected library directory
  159.       'libc.a' is used always.
  160.       With the math library option '-lm' specified you won't need an
  161.       extra '-f' option.
  162.  
  163.      -X[<n>][<function>]   This option forces the compiler and the "C"
  164.           preprocessor to generate debug code.  The optional <function> is
  165.           only valid for hcc.  The way the debug code works is of course
  166.           compiler dependant, and will (still) differ for cpp and hcc.
  167.           This option tells the linker to make use of a special startup
  168.           module ('debug_s.o').
  169.  
  170.      handling of error mesages (-e...)
  171.  
  172.      -e   Every program called by cc is forced to write error messages to
  173.           a file having the name of the program, with a '.err' extension.
  174.           Before every execution, the error file is removed so that it
  175.           will always contain the correct information.  You will be warned
  176.           by cc if the error file is not empty after an execution.  If the
  177.           error file is empty, it is simply deleted.
  178.  
  179.      -ef  This switch is the same as the '-e' switch, but the error file
  180.           is given the same filename as the source file, with a '.x_e'
  181.           extension, where 'x' is the one letter extension of the
  182.           source file.  For example, hcc would write error messages to
  183.           'foobar.c_e', and jas would write error messages to 'foobar.s_e'.
  184.  
  185.      -es  This switch is the same as the '-e' switch, but the error files
  186.           are "saved" (copied to the files 'compile.err', 'assemble.err',
  187.           and 'link.err'.  There will soon be an options (-ec) that will
  188.           gather all error files into a file called 'compiler.err'.
  189.  
  190.      -B<binaryprefix>
  191.           The string <binaryprefix> and the binary name are concatenated
  192.       before cc tries to find and call the binary.
  193.  
  194.  
  195.      some options for the linker pass
  196.  
  197.      -F <file>
  198.           By default, cc creates a link file to tell ld which files to link.
  199.           This file is written to '$TMPDIR\ldfile.tmp' and removed if the
  200.           linker was successfull.  It contains libraries and objects
  201.           according to the information found on the command line.  If you
  202.           want to control what the linker will link together, you can write
  203.           a linkfile and force it to be used using the -F option.
  204.  
  205.      -T <file>
  206.      -s <file>
  207.           This switch allows you to specify a startup module to be used
  208.           instead of the default startup module.  Various options (-p, -X,
  209.           -f) cause different startup modules to be used.
  210.  
  211.      -l <name>
  212.           Add library 'lib<name>.a' to linking list.
  213.  
  214.      --libc <file>
  215.           This switch is similiar to the '-s' switch, but it affects which
  216.           standard library is used.
  217.  
  218.      -L<path>
  219.           This switch will cause <path> to be added to the search list for
  220.           libraries.
  221.  
  222.      -t
  223.           This switch will cause the linker to generate a symbol table.
  224.  
  225.      +L-p
  226.           This switch will cause the linker to rescan the libraries for
  227.           unsatisfied external declarations.
  228.  
  229.      Some multiletter options are to prefix by '--':
  230.  
  231.      --stdbinaries
  232.           The deafult builtin binary names or the ones from the environment
  233.       are replaced by the default C compiler system names:
  234.       cc1, as, opt and ld. The calling conventions follow the deafult
  235.       modes, too: 'cc1 <options> infile outfile', etc...
  236.  
  237.      --nostdlibs
  238.           This switch inhibits the use of any standard library files
  239.           (or startup modules), except those specified with the '-s'
  240.           and '-l' switches.  Nothing not on the command line will be
  241.           linked.
  242.  
  243.      --sdir <path>
  244.           This switch causes the generated assembler files and all following
  245.           files are written to the <path> directory.
  246.  
  247.      --odir <path> 
  248.           This switch causes the generated object code files to be written
  249.           to the <path> directory.
  250.  
  251.       --mint
  252.       --MiNT
  253.           The startup code and libraries to link are the MiNT libs:
  254.           (crt0.o, libc.a from directory 'mntlib')
  255.  
  256.       --c68
  257.           cc is switched to 'c68' mode, which is another compiler you can
  258.       use with the SozobonX distribution. 'cpp' is always used in this
  259.       mode, the compiler binary is assumed as 'c68.ttp', the libraries
  260.       are searched in SozobonX's 'c68' library directory.
  261.       The header files default to be the MiNT lib ones cause it's a Mint
  262.       lib. To make use of 'c68' slightely better error messages,
  263.       warnings and prototype tests for function arguments you may want
  264.       to run it on all your sources. So a commandline like 
  265.       'cc --c68 --xdlibs +C-nocode <file>' will produce what you expect.
  266.       
  267.       --dlibs
  268.       --DLibs
  269.           The startup code and libraries to link are the original DLibs:
  270.           (libc.a and crt0.o from directory 'dlibs')
  271.  
  272.  
  273.      Some options (which are not of interest in cc) are passed directly
  274.      to the tools executed by cc.  The following options are passed to
  275.      the preprocessor and the compiler:
  276.  
  277.      -I<path>
  278.           Add directory <path> to the header search list.
  279.  
  280.      -D<sym>
  281.           Define the preprocessor symbol 'sym' as 1.
  282.  
  283.      -D<sym=val>
  284.           Define the preprocessor symbol 'sym' as 'val'.
  285.  
  286.      -U<sym>
  287.           Undefine the built-in symbol 'sym'.
  288.  
  289.  
  290.      -W<n>   With this option set, the compiler is told to stop
  291.           compiling after n error messages or warnings.
  292.  
  293.      -W<any_text> This argument is passed to preprocessor and compiler
  294.           without any changes. It is used to switch on/off warning messages.
  295.  
  296.      The following option is passed to the linker:
  297.  
  298.      -u <sym>
  299.           This switch tells ld to undefine the symbol <sym>, so it is linked
  300.           from the library. 
  301.  
  302.       The following options allow you to pass commands directly to the
  303.       various compiler tools.  These options are prefixed with a '+'
  304.       sign.  They may contain any characters, but no whitespace.  You can,
  305.       of course, pass more than one options string to a compiler tool
  306.       using the '+?' option.
  307.  
  308.       +P<optstring>
  309.           The string <optstring> is passed to cpp.
  310.           Example:  '+P-C' will force cpp to write all comments to an ouput
  311.           file.  cpp will get this as '-C' in the command line. 
  312.  
  313.       +C<optstring>
  314.           The string <optstring> is passed to hcc.
  315.  
  316.       +O<optstring>
  317.           The string <optstring> is passed to top.
  318.  
  319.       +A<optstring>
  320.           The string <optstring> is passed to jas.
  321.  
  322.       +L<optstring>
  323.           The string <optstring> is passed to ld.
  324.  
  325. ENVIRONMENT
  326.  
  327.      cc assumes that it will find files in the paths declared in the
  328.      following environment variables. Some locations are predefined with
  329.      annotated definitions:
  330.  
  331.      $PATH    \bin,\sozobon\bin          (path of executables)
  332.                                  variable replaces builtin ones
  333.      $LIBDIR  \usr\lib                   (standard library path)
  334.             This variable replaces builtin one. cc expects to find in this
  335.         directory the 'sozobox' directory with the different library
  336.         directories to select with --mint option for example. 
  337.  
  338.      $LIB                        
  339.             If this variable exists The libraries and object modules are
  340.             searched here and in cwd. $LIBDIR is ignored.
  341.  
  342.      $INCLDUEDIR    '\usr\include'
  343.             cc wil construct the $INLCLUDE variable using this path and
  344.         the options like --mint. It is expected to keep the include
  345.         directories for the different libraries there (xdlibs, mntinc,
  346.         dlibs)
  347.  
  348.      $INCLUDE
  349.         With this variable existing no new $INCLDUE is built by cc.
  350.  
  351.      $TMPDIR .\ 
  352.  
  353.      $SOZLIBS 
  354.             A list of additional libraries and objects to the standard
  355.             libraries and objects to find in $LIBDIR or with $LIB
  356.  
  357.      $SOZBIN                             (path of executables)
  358.  
  359.      Each directory should be separated by a ',' or ';'. The current
  360.      directory is always searched first.  $LIBDIR is the path of /usr/lib in
  361.      standard filesystems.  cc will try to find a directory called 'sozobonx'
  362.      there, because $LIBDIR i.e. "\usr\lib" is used by other programs too.
  363.      This is the place for standard libraries:
  364.      \usr\lib\sozobonx
  365.                       any common libraries here
  366.      \usr\lib\sozobonx\xdlibs
  367.      \usr\lib\sozobonx\mntlib
  368.      \usr\lib\sozobonx\dlibs
  369.  
  370.      In your shell:
  371.  
  372.          export LIBDIR=\\usr\\lib
  373.  
  374.      or in the makefile or your shell:
  375.  
  376.          LIB=\usr\otherlib,anypath\anylib
  377.  
  378.      All files will be searched only in $LIB and '-L' argument pathes,
  379.      if specified, and in e.g. in:
  380.                 $LIBDIR\sozobonx\xdlibs,$LIBDIR\sozobonx 
  381.      if $LIB isn't specified.
  382.  
  383.      $TMPDIR is only used for the linkfile. If not set the current directory
  384.      is used.
  385.  
  386.      $SOZLIBS may contain a list of libraries (and object files) to use
  387.      as additional standard libraries.  This feature/variable was added
  388.      for all those who do not use make, where you can specify a variable
  389.      $(LIBS) or $(LOADLIBES) which does the same.  Example: 
  390.  
  391.          setenv SOZLIBS "aesfast,vdifast"
  392.  
  393.      The files from $SOZLIB are ignored with the --nostdlibs switch, too.
  394.  
  395.      $SOZBIN may contain a single path or a list of directories, in which
  396.      the executables (hcc, top, jas, ld) will be found. You need not set
  397.      this environment variable if the excutables are found in the $PATH
  398.      environment variable.  If you keep your Sozobon binaries in a special
  399.      directory, though, you should set this environment variable.  It is 
  400.      used instead of $PATH if set; the default location is only used if
  401.      $PATH is not set!
  402.  
  403.      Some environment variables may contain the names of the binaries to
  404.      execute, and the standard library - if not the default ones should get
  405.      used (just export the variables in the makefile): 
  406.      $CPP      cpp                      Preprocessor
  407.      $CC1      hcc                      Compiler
  408.      $OPT      top                      Optimizer
  409.      $AS       jas                      Assembler
  410.      $LD       ld                       Linker
  411.      $CRT0     crt0.o                   Startup Code
  412.      $LIBC     libc[32].a               standard runtime library
  413.  
  414.      If $STDERR ist set all output will go to filehandle 2, if not
  415.      and cc isn't called with ARGV method all this is printed to 'CON:',
  416.      filehandle -1.
  417.  
  418. FILES
  419.  
  420.      Libraries:
  421.         Startup Codes
  422.          crt0.o    pcrt0.o   dcrt0.o     (normal, -p and -X option)
  423.         Standard Runtime Library  (suffix .a)
  424.          libc       libcp  (with -p option)
  425.         math library  (with -f option)
  426.          libm       libmp   (with -p options)  
  427.  
  428.        With the -mlong option the string "32" is added to the above
  429.        filename (e.g.: libc32)
  430.  
  431.        These libraries are searched in the library directory 'sozobonx'.
  432.        There are different directories expected (xdlibs, mntlib dlibs),
  433.        all containing the above files.
  434.        Which one is used, depends on different cc options:
  435.      --xdlibs(default)  --mint     --dlibs
  436.     
  437.      Filename Extensions:
  438.  
  439.          .app, .ttp, .prg, .tos, .gtp, .c, .i, .tmp, .cpp, .spp, .s, .o,
  440.      .a, .lib
  441.  
  442.      Filenames:
  443.  
  444.          $TMPDIR\ldfile.tmp    Linkfile (generated)
  445.             The order in the linkfile is:
  446.  
  447.             1) The startup module.
  448.             2) The specified input files (same order as on the command line).
  449.             3) The files from $SOZLIB (same order).
  450.             4) The built-in standard libraries.
  451.  
  452.          FILE.c         Source Code
  453.  
  454.      Generated Files:
  455.  
  456.          cpp: FILE.c -> FILE.i
  457.               FILE.cpp -> FILE.s
  458.               FILE.spp -> FILE.s
  459.  
  460.          hcc: FILE.c -> FILE.s
  461.  
  462.          top: FILE.tmp -> FILE.s (during a pass FILE.s is first moved to 
  463.                                   FILE.tmp, so FILE.s is always the valid
  464.                                   assembly language file)
  465.  
  466.          jas: FILE.s -> FILE.o
  467.  
  468.          ld:  
  469.               a.out          Linker Output (generated)
  470.  
  471.          FILE may contain path specifications, but $CWD is always assumed.
  472.  
  473. LIMITS
  474.  
  475.      Maximum number of options to pass to a program:        16
  476.      Maximum libraries from environment variable $STDLIBS:  30
  477.                                                    in cml:  30
  478.     (These limitations will be removed in a future version.)
  479.  
  480.  
  481. COPYING
  482.  
  483.      This is cc x1.9, an eXtended version, May 94 by Jerry G. Geiger.
  484.      I modified version 1.01, Copyright (c)1988 by Sozobon, Limited, to
  485.      produce this compiler, to work with eXended versions of Sozobon C by
  486.      Holger Weets, Christian Wempe und Frank Specht.
  487.  
  488.  
  489. BUGS
  490.  
  491.      No doubt, there are some bugs. If you find one, please report it to me:
  492.  
  493.          Maus:  Jerry Geiger @B
  494.      Internet:  jerry@zelator.de.
  495.  
  496.  
  497. SEE ALSO
  498.  
  499.      make(1), cpp(1), hcc(1), top(1), jas(1), ld(1).
  500.  
  501.