Provided by: nescc_1.3.5-1.1build1_amd64 bug

NAME

       nescc - nesC compiler

SYNOPSIS

       nescc [-gcc=gcc-name] [-fnesc-gcc=gcc-name] [-fnesc-mingw-gcc]
           [-fnesc-target=architecture] [-fnesc-docdir=dir]
           [-fnesc-topdir=dir] [-fnesc-docs-use-graphviz] [-fnesc-is-app]
           [-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-include=file] [-fnesc-verbose] [-Wnesc-...]
           [-fnesc-dump=specification] [-fnesc-dumpfile=file]
           [-fnesc-scheduler=specification] [-fnesc-path=path]
           [-fnesc-no-debug]
           [-fnesc-deputy] [-fnesc-no-deputy]
           [-fnesc-default-safe] [-fnesc-default-unsafe]
           [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 -fnesc-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...).

       -fnesc-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.

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

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

       -fnesc-docs-use-graphviz
              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-is-app
              Tell nescc that the source being compiled is an application, and to generate  an  app  description
              page for the entire application.

       -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").

       -fnesc-path=path
              Add colon separated directories to the nescc search path.

       -fnesc-no-debug
              Remove the functions dbg(), dbg_clear(), dbg_active() from the source code.

       -fnesc-deputy
              Compile with the deputy compiler.

       -fnesc-no-deputy
              Do not use the deputy compiler. This is the default.

       -fnesc-default-safe
              Make modules default to having the @safe() attribute. Has no effect if -fnesc-deputy is not set.

       -fnesc-default-unsafe
              Make modules default to having the @unsafe() attribute. Has no effect if -fnesc-deputy is not set.

       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-implicit-conn
              Warn when implicit connections between components are used.

       -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.

                                                  May 22, 2013                                          nescc(1)