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)