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 / HCC.MAN < prev    next >
Text File  |  1994-10-20  |  10KB  |  274 lines

  1. HCC(1)                  User Commands                           HCC(1)
  2.  
  3. NAME
  4.  
  5.         hcc   -  Hans' C compiler - the SOZOBON(X) compiler
  6.  
  7. SYNOPSIS            
  8.  
  9.         hcc [options] file [ file ... ]
  10.  
  11.         hcc [options] <inputfile> [<outputfile> [<errorfile>]]
  12.  
  13.         hcc [options] --inputfiles <inputfile> <inputfile> ...
  14.  
  15.         hcc [-VvhPNSLTQ] [-M<n>] [-I<path>] [-D<sym>[=<val>]] [-U<sym>]
  16.             [-W{all|{+|-}{PTR|CMP|DIF|PMR|RDF|BRV|CUS}}] [-O<file>]
  17.             [-E<file>][-X<n>[<func>]] <file> [<file> ...]
  18.  
  19.  
  20. DESCRIPTION            
  21.  
  22.       The hcc command accepts C source files and generates assembly language
  23.       output to the corresponding '.s' files.  The pre-processor and all
  24.       phases of the compiler are included within this program. 
  25.  
  26.       There are different ways to specify the filenames with different
  27.       results: After the '--inputfiles' option you can specify a list of
  28.       inputfiles to compile. This may be usefull to get a list of all errors
  29.       and no output, e.g.:
  30.           hcc -O\dev\null -Eallmsgs --inputfiles file1.c file2.c ...
  31.  
  32.       The usual way to handle arguments now is the same as top and jas
  33.       handle it:
  34.             hcc <options> <inputfile> <outputfile> <errorfile>
  35.  
  36.       After the '<errorfile>' you can specify more <inputfile> <outputfile>
  37.       pairs, with new <options> between the pairs. This goes not for top and
  38.       jas. So the synopsis would be correctly:
  39.  
  40.       hcc [<options>] <infile> [<outfile> [<errfile> 
  41.                         [[<options>] <infile> <outfile>]... ]]
  42.       and:
  43.  
  44.       hcc [options] --inputfiles <inputfile> [[options] <inputfile>]...
  45.  
  46.       Of course there is a third way, mixing up these both schemes:
  47.       
  48.       hcc [options] <infile> [<outfile> [<errfile>]] 
  49.                        --inputfiles <inpfile> [[options] <inpfile>]...
  50.  
  51.       This seems all a little bit complicated, but it isn't at all.
  52.       The most of it are features, I didn't plan.
  53.  
  54.  
  55.       You can specify '-' as <inputfile>, hcc will read from stdin than,
  56.       and specify '-' as <outputfile> or <errorfile>, output goes to
  57.       stdout. With no files specified hcc reads from stdin and writes
  58.       to stdout. 
  59.  
  60.  
  61.       The following options are accepted by hcc: 
  62.  
  63.         --version
  64.         -V      (Version)
  65.            Print version information to stdout and exit.
  66.  
  67.         -v      (verbose)
  68.            Display a short version info and include filenames to stderr.
  69.            And though an error file is written, print the messages to
  70.            stderr, too.
  71.  
  72.         -h      (help)
  73.            Print a short info about commandline options.
  74.  
  75.         -N      (nested)
  76.            Allow nested comments.
  77.  
  78.         -M<n>   (Messages)
  79.            Stop compiling after <n> warning/error messages.
  80.  
  81.         -L      (Long)
  82.            Make 'int' a long type (32 Bits). Default an int is a short
  83.            integer, and __MSHORT__ is defined.
  84.            (this option is buggy, and not even tested)
  85.  
  86.         -S      (Strings)
  87.            Do not merge strings.
  88.  
  89.         -Q      (Quick)
  90.            Prefer generating of faster code to shorter code.
  91.  
  92.         -P      (Profiling)
  93.           Instructs  the compiler to generate modified function
  94.           entry  code that will call a function 
  95.                 'void _prolog(char funcname[])'
  96.           to count the number of calls to each function. And generate
  97.           a function call of
  98.                 'void _epilog(char funcname[])'
  99.           To time the called function. You have to call function 
  100.                 'void _saveprof()'
  101.           in the program on exit or use the prof_s.o startup code.
  102.           (see Sozobon.Doc for more details)
  103.  
  104.         -T      (Traps)
  105.           Disable trap generation. By default hcc generates the trap
  106.           instructions for OS calls whenever a OS call is identified.
  107.  
  108.         -I<path>
  109.           Include  <path>  in  the  list  of  directories  to  be
  110.           searched for header files (e.g. "-I\usr\include\myheader").  
  111.  
  112.         -D<name>
  113.         -D<name>=<value>
  114.           Define  the  pre-processor macro <name>. If no value is
  115.           given the macro is defined as 1.  
  116.  
  117.         -U<name> 
  118.           Un-define one of the built-in macros.  
  119.  
  120.         -X<n>[<function>]       (Sorce Level Debugging Option)
  121.           Instructs the compiler to generate some code for saving the
  122.           line number for each source code line, and the module name
  123.           for each function call.  You will have to use a special
  124.           startup module with his option, that tells you with which
  125.           source code line and module an exception occured (cc will do this
  126.           for you with this option).
  127.           If you specify a function <function> for source level debugging,
  128.           ('_debug' exists therefore in the library) you can tell hcc to
  129.           call this function on every line of soucecode (level <n> = 2) or
  130.           just at begin of every function and in some loops (level <n> = 1).
  131.           (see Sozobon.Doc for more details)
  132.  
  133.         -O<file>
  134.           Write output to file <file>.
  135.  
  136.         -E<file>
  137.           Write error output (messages, warnings) to file <file>.
  138.  
  139.         -Wall
  140.           switch on all warning messages and inhibit switching them off
  141.           with #pragma statements in source text.
  142.  
  143.         -W{+|-}<OPT>
  144.           switch on or off printing of warning messages:
  145.                 PTR     pointer types mismatch (default on)
  146.                 CMP     cmp of diff ptrs (default on)
  147.                 DIF     diff ptrs (default on)
  148.                 RDF     redefined symbol (default on)
  149.                 PMR     probably missinig return (default off)
  150.         BRV     bad return value/type (default on)
  151.         CUS     comparing unsigned and signed types (default on)
  152.  
  153.         --inputfiles
  154.       All arguments following are inputfiles, except the ones
  155.       prefixed with a '-'. If not already defined, the <outputfile>
  156.       and the <errorfile> are not taken from the argument list,
  157.       except by the options '-O' and '-E'.
  158.  
  159.  
  160.  
  161.         Handling of include/header files / ipc
  162.  
  163.         (some text is missing here)
  164.         If an '*.pre' file exits it is included, if it's timestamp is
  165.         newer then the original filename. If the original file's timestamp
  166.         is younger, a message is printed.
  167.  
  168.  
  169.         The Builtin Prepocessor
  170.  
  171.         Macros
  172.  
  173.         Several  macros  are  normally  pre-defined. These are just
  174.         int values, and you can '#undef' them:
  175.         simply TRUE (1) are
  176.                 MC68000, mc68000, ATARI_ST, 
  177.                 TOS, __TOS__
  178.         a significant int value (BCD) have:
  179.                 SOZOBON         val: 0x200), 
  180.                 __SOZOBONX__    val: (0x200 + X version level)
  181.  
  182.         __MSHORT__ (TRUE if -L option was not given, ints are shorts)
  183.  
  184.         Some macros you can't touch with usual cpp statements:
  185.         __BASE_FILE__, __FILE__, __LINE__, 
  186.         __TIME__, __DATE__, __VERSION__,
  187.         __SDATE__, __STIME__, __GDATE__
  188.         But you can use them in your source code.
  189.  
  190.         The following strings are unchange-able at all:
  191.         __BASE_FILE__   (the name of the input file)
  192.         __TIME__        (compile time string hh:mm:ss)
  193.         __DATE__        (compile date string 'Mmm dd yyyy')
  194.         __SDATE__       (compile date string, short format: YY/MM/DD)
  195.         __STIME__       (compile time string, short format hh:mm)
  196.         __GDATE__       (compile date string, german format: DD.MM.YY)
  197.         __VERSION__     (compiler identification string: e.g.:
  198.                                 "SOZOBONx hcc V2.00x16")
  199.         The macros
  200.         __FILE__        (string, current file - maybe a included one)
  201.         __LINE__        (int, line number in current file)
  202.         can be changed by using the cpp statement
  203.         #line <lineno> ["<filename>"]
  204.         An external cpp will generate those statements in it's output
  205.         file to make the compiler print the real input filenames and
  206.         line numbers in error messages.
  207.  
  208.  
  209.         Known '#pragma' statements
  210.  
  211.         #pragma echo [anything]
  212.                 prints the rest of the line to stderr
  213.  
  214.         #pragma OPT "<string>" prints <string> in outputfile,
  215.                 format: ';opt <string>'
  216.                 For top/jas commands/options; You can pass a option
  217.                 string to top to switch top's optimizing switches.
  218.                 (see top.man)
  219.  
  220.         #pragma {+|-}<option>
  221.         Switch the compiler option <option> on '+' or off '-'.
  222.         print warnings?:
  223.                 PTR     pointer types mismatch
  224.                 CMP     cmp of diff ptrs
  225.                 DIF     diff ptrs
  226.                 RDF     redefined symbols
  227.                 PMR     probably missinig return
  228.         BRV     bad return value/type
  229.         CUS     comparing unsigned and signed types
  230.         code generating options:
  231.                 STR     concat strings?
  232.                 PRO     Profiling  (cmdln '-P'
  233.                 FST     Quick-Flag (cmdln '-Q')
  234.                 TOP     switch off/on Optimizer for this function
  235.  
  236.  
  237. ENVIRONMENT
  238.  
  239.         INCLUDEDIR    path to reset default include dir path
  240.             ("\usr\include", where dir 'xdlibs' is expected)
  241.             A pathlist is generated from this variable, like:
  242.             \usr\include\xdlibs,\usr\include
  243.  
  244.         INCLUDE        list of pathes where include files can be found
  245.  
  246.         Directories listed in the "INCLUDE" environment variable 
  247.     replace the builtin ones. $INCLUDEDIR is ignored if $INCLDUE
  248.     is set. cc always generates a $INCLDUE variable if $INCLUDEDIR is
  249.     set. C-Desk will generate a $INCLDUE variable from the selected
  250.     header file pathes, I think.
  251.  
  252.  
  253.         STDERR
  254.  
  255.  
  256. COPYRIGHT
  257.  
  258.         hcc V2.00 Copyright (c) 1988-1992 by Sozobon, Ltd.
  259.         for eXtended Version by C. Wempe & H. Weets, 
  260.         and J. Geiger 1992-1994
  261.  
  262.  
  263. BUGREPORTS
  264.  
  265.     Maintainer is now Volker Seebode. Please send bugreports using
  266.     the 'bugform' to:
  267.     seebode@plesnik.bonsai.de (Volker Seebode)
  268.     or in MausNet:
  269.     Volker Seebode @ AC3 
  270.  
  271. SEE ALSO
  272.  
  273.         cc(1), cpp(1), ipc(1)
  274.