Provided by: nescc_1.3.4-2_amd64 bug

NAME

       nescc - nesC compiler

SYNOPSIS

       nescc [-gcc=gcc-name] [-mingw-gcc] [-fnesc-target=architecture]
           [-docdir=dir] [-topdir=dir] [-graphviz=y|n]
           [-fnesc-simulate]
           [-fnesc-nido-tosnodes=n] [-fnesc-nido-motenumber=expression]
           [-conly] [-fnesc-cfile=file] [-fnesc-gccize]
           [-fnesc-cppdir=directory] [-fnesc-separator=separator]
           [-fnesc-no-inline] [-fnesc-optimize-atomic]
           [--version] [-fnesc-verbose] [-Wnesc-...]
           [-fnesc-dump=specification] [-fnesc-dumpfile=file]
           [-fnesc-scheduler=specification]
           [any gcc option] files...

DESCRIPTION

       nescc  is an extension to gcc that knows how to compile nesC applications. If invoked on regular C files,
       it behaves exactly like gcc. When invoked on a nesC  component  or  interface  (.nc  extension)  file  it
       compiles  and  links  (except if the -c, -S, -conly, -E or -fsyntax-only options are used) that component
       with the other files specified on the command line.

OPTIONS

       nescc accepts all gcc options, and some additional nesC specific options:

       -gcc=gcc-name
              Specify which gcc compiler to use to compile and link any C files, either explicitly specified, or
              generated as the output of the nesC-to-C compiler.  This option supports cross-compilation of nesC
              code (the usual mode of operation...).

       -mingw-gcc
              Pass this option if the gcc version specified  with  -gcc=...  was  compiled  for  Window's  mingw
              environment, and hence expects Windows-style rather than Unix-style paths.

       -fnesc-target=architecture
              Specify  the  target architecture to compile for. Currently supported platforms are avr (the Atmel
              AVR family), msp430 (the TI MSP430 family) and self (the machine the nesC compiler is running on).
              If  you  use  the  env target, the architecture details are read from the NESC_MACHINE environment
              variable. See the separate env target documentation for details.

       -docdir=dir
              Generate documentation for the compiled component in directory dir.

       -topdir=dir
              Specify directory paths that should be  stripped  from  the  source  file  names  when  generating
              "package names" for the documentation files.

       -graphviz=y|n
              Explicitly  enable or disable the use of the graphviz tool in the generated documentation. Without
              this option, graphviz is enabled iff the dot program is found in the current path. Use of graphviz
              requires  dot.   The  documentation generation tool checks the version of dot, and enables client-
              side image maps, if supported.

       -fnesc-simulate
              Compile for a simulation environment.

       -fnesc-nido-tosnodes=n, -fnesc-nido-motenumber=expression
              When -fnesc-simulate is specified, the nesC program is  compiled  for  a  simulation  environment,
              where  a single executable will simulate n nodes. Specifically, in the generated code, each global
              variable becomes an n element array, and  all  accesses  to  global  variables  are  indexed  with
              expression.

       -conly Just  compile  to  C,  leaving the generated source code for top-level-component comp.nc in C file
              comp.c (except if the -fnesc-cfile option is specified).

       -fnesc-cfile=file
              Specify a file in which to save the C code generated when compiling  a  component.  Note:  if  you
              specify two components on the command line, then the C code from the second one will overwrite the
              C code from the first.

       -fnesc-gccize
              Output target-specific extensions as gcc-style attributes rather than using the target's  original
              syntax. Can help if using -conly and sending the nesC output from some other tool that understands
              gcc attributes but not the target-specific extensions.

       -fnesc-cppdir=directory
              Save all preprocessing results in directory. The directory is created if it  doesn't  exist.  This
              can  be  helpful  to  track  down  preprocessor-related compilation problems. You probably want to
              ensure that directory is empty when  you  call  nescc,  to  make  it  obvious  which  files  where
              preprocessed as part of the current compilation.

       -fnesc-separator=separator
              Set separator used to create symbol names in the generated C code (default $).  The compiler needs
              to generate unique names to denote, e.g., a module variable. It does this by concatenating various
              symbol  names  to  ensure that it generates unique names. For instance, variable bar in module Maz
              becomes a global C variable Maz$bar in the compiler output.  Some C compilers do  not  like  $  in
              symbol  names,  so  you  can specify a different separator, e.g., __ (leading to generated symbols
              like Maz__bar).

              You will get a compile-time warning if any symbol in  the  program  being  compiled  contains  the
              separator  you  specify (the presence of the separator in a symbol could lead to the generation of
              incorrect code).  The separator can however start or end a symbol.

       -fnesc-no-inline
              Disabled the automatic inlining of all small functions, and of all functions with  a  single  call
              site.

       -fnesc-optimize-atomic
              Optimize  atomic  statements [EXPERIMENTAL]: reduce or remove the overhead of atomic statements in
              simple cases (e.g., single-byte reads).

       --version
              Print the version of nescc and of the selected gcc compiler (see -gcc).

       -fnesc-include=header-file
              Include the specified file before compiling a nesC component. Behaves as if includes  header-file;
              was included at the start of that component.

       -fnesc-dump=specification
              Output  information  on  the  compiled  programs  structure,  and in particular its user-specified
              attributes. For more details, see the separate nesC dump documentation.

       -fnesc-dumpfile=file
              Where to output the information requested by -fnesc-dump. Defaults to stdout.

       -fnesc-verbose
              Be more verbose than -v.

       -fnesc-scheduler=component,unique-string,interface-name,interface-definition,run-event,post-command
              By default, nesC compiles uses of task void taskname() ... to void taskname(), and post taskname()
              to TOS_post(taskname).

              With  this  option, each task gets its own interface-definition interface, the task implementation
              is transformed into a run-event event and posts becomes a call to the post-command  command.  This
              per-task  interface  is  automatically  connected to the parameterised interface-name interface of
              scheduler component component. The parameter id for the connection is chosen with  unique("unique-
              string").

       There  are  a  number of warnings specific to nesC, specified with -Wnesc- (all these warnings are off by
       default):

       -Wnesc-fnptr
              Warn when function pointers are used (use of function pointers is deprecated in nesC and leads  to
              inaccurate data race detection).

       -Wnesc-async
              Warn when interrupt handlers call commands or events not annotated with async.

       -Wnesc-data-race
              Warn about potential data races.

       -Wnesc-combine
              Warn  when  configuration  wiring  leads to "fan-out" and the function return type does not have a
              combining function defined.

       -Wnesc-docstring
              Warn when unexpected documentation strings (starting with /**) are seen.

       -Wnesc-all
              Turns on -Wnesc-fnptr, -Wnesc-async, -Wnesc-combine and-Wnesc-data-race.

       -Wnesc-error
              Turns the -Wnesc-fnptr, -Wnesc-async, -Wnesc-combine and -Wnesc-data-race warnings into errors.

       When compiling a nesC component, the nesC compiler recognizes the gcc  C  language  (-f...)  and  warning
       (-W...)  options.  The  -S,  -c  and  -o options work as usual, the -x option accepts nesc. The -v option
       causes the nesC compiler to print out the paths  of  all  components  and  interfaces  that  are  loaded.
       Directories can be added to nesCs search path with -I.

EXAMPLES

       If you wish to compile a component Bar.nc to a C file, you can do:

              nescc -c -o /dev/null -fnesc-cfile=Bar.c Bar.nc

PREPROCESSOR SYMBOLS

       nescc defines the following preprocessor symbol:

       NESC (since v1.1)
              set to XYZ where x.yz is the nesC version

ENVIRONMENT VARIABLES

       NESCPATH
              A colon separated list of additional search directories for nesC components.

SEE ALSO

       gcc(1), platform-specific gcc

NOTES

       The  warnings for the new nesC 1.1 features (see -Wnesc-all) are off by default to increase compatibility
       with nesC 1.0 code. To match the language specification in the nesC  1.1  reference  manual,  you  should
       compile with -Wnesc-all and -Wnesc-error. These options will become the default in future releases.

                                                 April 27, 2004                                         nescc(1)