Provided by: tinyos-tools_1.4.2-3build1_amd64 bug


       ncc - nesC compiler for TinyOS


       ncc [-target=pc|mica|mica2|mica2dot|...] [-tossim]
           [-tosdir=dir] [-tosscheduler=...] [-nostdinc]
           [--version] [-print-tosdir] [-print-platforms] [-print-target]
           [any nescc option] [any gcc option] files...


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

       ncc   just   invokes  nescc  with  extra  options  based  on  the  selected  platform  and
       sensorboard(s). And nescc itself just invokes gcc.  Thus,  for  a  full  understanding  of
       possible ncc options you should read the nescc and gcc man pages.


       ncc accepts all gcc and nescc options, and some additional TinyOS specific options:

              Specify the target architecture for this compilation. If -tossim is also specified,
              the compilation uses the tossim environment and produces a locally executable file.
              The  default  target  is  specified  in  the  .default-platform file in your TinyOS
              directory (see -tosdir option), and defaults to mica if  that  file  is  absent.  A
              platform  that  is  not  in the TinyOS distribution can be used if its directory is
              specified with an explicit -I directive  (the  platform  name  is  taken  from  the
              directory's  name,  platform  directories  are  recognised  by  the  presence  of a
              .platform file).

              Specify the location of TinyOS. This location can also be specified with the TOSDIR
              environment  variable.  If the variable and the option are both given, ncc uses the
              value specified with the option. If neither the environment variable or option  are
              specified, ncc uses its compiled-in TinyOS directory.

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

              If  this  option  is  not  set explicity, its parameters are assigned by default as


              Compile  for  the TOSSIM environment rather than a native platform. Every directory
              in the search path will be duplicated, with the first copy having /sim appended  to

              Print  the  TinyOS  directory  to be used and exit, taking into account the -tosdir
              option and TOSDIR environment variable. No compilation occurs when -print-tosdir is

              Print  the  valid  TinyOS  platforms, including those made available by explicit -I
              directives (see -target option).

              Print the name of the selected target. Most useful when -target is not specified.

              Do not automatically include the TinyOS directories in the  search  path.  See  the
              discussion of search paths below for more details.

              Specify  one (or more) sensor boards. This effects the search path and preprocessor
              symbols.  The  set  of  boards  is  set  by  the  TinyOS  distribution   (see   the
              tos/sensorboards  directory).  As with targets, a sensorboard directory can be made
              available via an explicit -I directive (sensorboard directories are  recognised  by
              the presence of a .sensor file).

              Print  the  version  of  ncc,  nescc  and of the gcc compiler used for the selected


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

              ncc -c -o /dev/null -fnesc-cfile=Bar.c


       ncc performs the following substitutions on the directories specified with the -I  option:
       %T  is  replaced  by  the  TinyOS  directory, %p is replaced by the selected target, %P is
       replaced by the target's platform directory, %% is replaced by %.

       Except when -nostdinc is specified, the search path for nesC  components  is  as  follows,
       where tosdir is the TinyOS directory requested and target is the selected target:

       *      The current directory

       *      -I directives (in option order)

       *      %T/sensorboards/boardname,  for  each  -board=boardname option specified (in option
              order) - except if the sensorboard was found via an explicit -I directive

       *      %T/platform/%p  - except if the platform was found via an explicit -I directive

       *      Additional directories requested by the selected target (e.g.,  %T/platform/avrmote
              for the mica target)

       *      %T/interfaces

       *      %T/system

       *      %T/lib

       *      NESCPATH  environment  variable directories (note that %T and %p subsitution is not
              performed on these directories).

       When -nostdinc is specified, the search path is simply:

       *      The current directory

       *      -I directives

       *      NESCPATH environment variable directories


       In addition to the preprocessor symbols defined by gcc and nescc, ncc defines:

              where target is the selected target name, converted to upper case

              for each -board=boardname option (the boardname is converted to upper case)


       TOSDIR If the -tosdir=dir option is not used, the TOSDIR  environment  variable  specifies
              the location of TinyOS.


       gcc(1), platform-specific gcc, nescc(1)


       ncc is built over nescc, which handles the non-TinyOS-specific functionality of ncc. Users
       of nesC in a non-TinyOS context may prefer to use nescc (see the source code  of  ncc  and
       nescc for details).

                                          April 27, 2004                                   ncc(1)