PCC(1)                                                     PCC(1)

     NAME
          pcc - APE C compiler driver

     SYNOPSIS
          pcc [ option ... ] [ name ... ]

     DESCRIPTION
          Pcc compiles and loads C programs, using APE (ANSI C/POSIX)
          include files and libraries.  Named files ending with .c are
          preprocessed with cpp(1), then compiled with one of the com-
          pilers described in 8c(1), as specified by the environment
          variable $objtype.  The object files are then loaded using
          one of the loaders described in 8l(1). The options are:

          -+      Accept C++ // comments.

          -o out  Place loader output in file out instead of the
                  default 8.out, v.out, etc.

          -P      Omit the compilation and loading phases; leave the
                  result of preprocessing name.c in name.i.

          -E      Like -P, but send the result to standard output.

          -c      Omit the loading phase.

          -p      Insert profiling code into the executable output.

          -w      Print compiler warning messages.

          -W      Print all the messages that -w would print as warn-
                  ings, but make them errors.

          -llib   Include /$objtype/lib/ape/liblib.a as a library dur-
                  ing the linking phase.

          -B      Don't complain about functions used without ANSI
                  function prototypes.

          -V      Enable void* conversion warnings, as in 8c(1).

          -v      Echo the preprocessing, compiling, and loading com-
                  mands before they are executed.

          -x file Produce an export file in the executable, as
                  described in 8l(1).

          -Dname=def
          -Dname  Define the name to the preprocessor, as if by
                  `#define'.  If no definition is given, the name is

     Page 1                       Plan 9             (printed 3/28/24)

     PCC(1)                                                     PCC(1)

                  defined as `1'.

          -Uname  Undefine the name to the preprocessor, as if by
                  `#undef'.

          -Idir   `#include' files whose names do not begin with `/'
                  are always sought first in the directory of the file
                  argument, then in directories named in -I options,
                  then in /$objtype/include/ape.

          -N      Don't optimize compiled code.

          -S      Print an assembly language version of the object
                  code on standard output.

          -T      Pass type signatures on all external and global
                  entities.  The signature is based on the C signof
                  operator.  See dynld(2).

          -a      Instead of compiling, print on standard output acid
                  functions (see acid(1)) for examining structures
                  declared in the source files.

          -aa     Like -a except that functions for structures
                  declared in included header files are omitted.

          -F      Enable vararg type checking as described in 8c(1).
                  This is of limited use without the appropriate
                  #pragma definitions.

          -f      (ARM only) Generate VFP hardware floating point
                  instructions.

          The APE environment contains all of the include files and
          library routines specified in the ANSI C standard (X3.159-
          1989), as well as those specified in the IEEE Portable Oper-
          ating System Interface standard (POSIX, 1003.1-1990, ISO
          9945-1).  In order to access the POSIX routines, source pro-
          grams should define the preprocessor constant _POSIX_SOURCE.

     FILES
          /sys/include/ape           directory for machine-independent
                                     #include files.
          /$objtype/include/ape      directory for machine-dependent
                                     #include files.
          /$objtype/lib/ape/libap.a  ANSI C/POSIX library.

     SEE ALSO
          cpp(1), 8c(1), 8a(1), 8l(1), mk(1), nm(1), acid(1), db(1),
          prof(1)
          Howard Trickey, ``APE - The ANSI/POSIX Environment''

     Page 2                       Plan 9             (printed 3/28/24)

     PCC(1)                                                     PCC(1)

     SOURCE
          /sys/src/cmd/pcc.c

     BUGS
          The locale manipulation functions are minimal.  Signal func-
          tions and terminal characteristic handlers are only mini-
          mally implemented.  Link always fails, because Plan 9
          doesn't support multiple links to a file.  The functions
          related to setting effective user and group ids cannot be
          implemented because the concept doesn't exist in Plan 9.

     Page 3                       Plan 9             (printed 3/28/24)