# $Header$ -*-text-*-

# Purpose: NCO README file

What is NCO?
The netCDF Operators, NCO, are a suite of programs known as operators. 
The operators facilitate manipulation and analysis of self-describing
data stored in the freely available netCDF and HDF formats 
(http://www.unidata.ucar.edu/packages/netcdf and
http://hdfgroup.org, respectively). 
Each NCO operator (e.g., ncks) takes netCDF or HDF input file(s),
performs an operation (e.g., averaging, hyperslabbing, or renaming),
and outputs information, usually a processed netCDF file  
Although most users of netCDF and HDF data are involved in scientific
research, these data formats, and thus NCO, are generic and are
equally useful in fields from agriculture to zoology.
The NCO Users Guide illustrates NCO use with examples from the field
of climate modeling and analysis. 
The NCO homepage is http://nco.sf.net.

Installation:
NCO runs on all major UNIX systems and MS Windows.
NCO (except ncap2) requires only an ANSI-compliant C99 compiler.
NCO can be built and installed with the standard GNU autotools
./configure mechanism or with a custom Makefile.
ncap2 requires an C++ compiler and can be hard to build.
Please submit patches to help simplify the build system!

Newer Autotools Configure Build Procedure:
Try the newer ./configure mechanism first by using the configure
command in the top-level NCO directory:

`cd ~/nco;./configure;make;make install'

or 

`cd ~/nco;./configure;make;make install-strip'

if you to strip the executables and libraries. In this case, NCO
will run at the same speed, but consume less memory and only about
half the disk space since all debugging information is "stripped". 

If autotools do not work, please look at the slightly more complex
(and realistic) examples that we use to test your machine architecture.
These are in the configure.eg file in the top-level NCO directory. 
The output of these commands from our test machines is available at 

http://dust.ess.uci.edu/nco/rgr

Please send us any modifications to the configure.ac script that 
might benefit other NCO users. 

Older Manual Makefile Build Procedure:
If configure does not work for you, try the older build mechanism:

`cd ~/nco/bld;make dir;make'
`cd ~/nco/src/nco_c++;make -f Makefile.old dir;make -f Makefile.old'

You must use GNU make, which reads `Makefile' by default.
Makefile has some hardcoded switches which may be only valid at UCI
or NCAR, but which can serve as a template for your environment. 
First, be sure to define NETCDF_INC and NETCDF_LIB variables either 
within your environment, or at the top of Makefile. 
Within Makefile, locate the block of code which corresponds
to your machine type as defined by $PVM_ARCH and the pvmgetarch command.
Within this block you may need to edit the CC, CPPFLAGS, and LDFLAGS
arguments so they reflect the names of the compilers and linkers.  

Read ./bld/Makefile for useful user-specified switches.
Compile with `make OPTS=D' to build debugging versions.  
Environment variables MY_OBJ_DIR, MY_INC_DIR, MY_LIB_DIR and
MY_BIN_DIR control locations of object files, include files,
libraries, and executables. 

Documentation and Bug Reports:
Please read the NCO manual before you submit a bug report!  
It is supplied in many formats: Postscript (nco.ps), Texinfo
(nco.texi), Info (nco.info), HTML (nco.html), and DVI (nco.dvi).
If you got NCO from a CVS snapshot, you must generate these formats
yourself with 'make nco.html', 'make nco.pdf', 'make nco.ps',
etc. from within the doc/ directory.
Sending me questions whose answers aren't in the manual is the best
way to motivate me to write more documentation.  
Let me also accentuate the contrapositive of that suggestion.

Good luck!
Charlie
