mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-11-27 07:30:33 +08:00
took out fortran API, made some documentation changes
This commit is contained in:
parent
32619fe8e9
commit
9212be6606
62
Makefile.am
62
Makefile.am
@ -1,5 +1,5 @@
|
||||
## This is a automake file, part of Unidata's netCDF package.
|
||||
# Copyright 2005, see the COPYRIGHT file for more information.
|
||||
# Copyright 2005-2011, see the COPYRIGHT file for more information.
|
||||
|
||||
# This is the main automake file for netCDF. It builds the different
|
||||
# netcdf directories. Not all directories are built, depending on the
|
||||
@ -9,22 +9,11 @@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
# These files get added to the distribution.
|
||||
EXTRA_DIST = README COPYRIGHT RELEASE_NOTES test_prog.c test_prog.F \
|
||||
test_prog.f90 lib_flags.am
|
||||
EXTRA_DIST = README COPYRIGHT RELEASE_NOTES test_prog.c lib_flags.am
|
||||
|
||||
pkgconfigdir=$(libdir)/pkgconfig
|
||||
pkgconfig_DATA = netcdf.pc
|
||||
|
||||
# If the user wants the F77 API this will cause it to be built and
|
||||
# tested.
|
||||
if BUILD_F77
|
||||
F77_DIR = fortran
|
||||
F77_TEST = nf_test
|
||||
endif
|
||||
|
||||
LIBSRC_DIR = libsrc
|
||||
NC_TEST_DIR = nc_test
|
||||
|
||||
# Does the user want to build the V2 API?
|
||||
if BUILD_V2
|
||||
V2_TEST = nctest
|
||||
@ -49,11 +38,6 @@ LIBSRC4_DIR = libsrc4
|
||||
NC_TEST4 = nc_test4
|
||||
endif
|
||||
|
||||
# Does the user want F90 API?
|
||||
if BUILD_F90
|
||||
F90_DIR = f90
|
||||
endif
|
||||
|
||||
# Build the opendap client?
|
||||
if BUILD_DAP
|
||||
OCLIB = oc
|
||||
@ -72,11 +56,10 @@ endif
|
||||
|
||||
# This is the list of subdirs for which Makefiles will be constructed
|
||||
# and run. ncgen must come before ncdump, because their tests
|
||||
# depend on it. nf_test depends upon ncgen as well.
|
||||
# depend on it.
|
||||
SUBDIRS = include $(H5_TEST_DIR) libdispatch $(OCLIB) libsrc \
|
||||
$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) liblib $(V2_TEST) nc_test $(F90_DIR) \
|
||||
$(F77_DIR) $(NCGEN3) $(NCGEN) $(NCDUMP) $(F77_TEST) $(NC_TEST4) \
|
||||
$(NCDAPTESTDIR) man4 $(EXAMPLES)
|
||||
$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) liblib $(V2_TEST) nc_test $(NCGEN3) \
|
||||
$(NCGEN) $(NCDUMP) $(NC_TEST4) $(NCDAPTESTDIR) man4 $(EXAMPLES)
|
||||
|
||||
# Remove these generated files, for a distclean.
|
||||
DISTCLEANFILES = VERSION comps.txt test_prog
|
||||
@ -96,37 +79,11 @@ ZIPBINFILES += ${prefix}/bin/ncgen3$(EXEEXT) ${prefix}/bin/ncgen$(EXEEXT) ${pref
|
||||
${prefix}/share/man/man1/ncgen.1 ${prefix}/share/man/man1/ncdump.1
|
||||
endif
|
||||
|
||||
if BUILD_F77
|
||||
BINFILES += include/netcdf.inc share/man/man3/netcdf_f77.3 \
|
||||
lib/libnetcdff.a
|
||||
ZIPBINFILES += ${prefix}/include/netcdf.inc ${prefix}/share/man/man3/netcdf_f77.3 \
|
||||
${prefix}/lib/libnetcdff.a
|
||||
endif
|
||||
|
||||
if BUILD_F90
|
||||
if UPPER_CASE_MOD
|
||||
BINFILES += include/NETCDF.mod include/TYPESIZES.mod
|
||||
ZIPBINFILES += ${prefix}/include/NETCDF.mod ${prefix}/include/TYPESIZES.mod
|
||||
else
|
||||
BINFILES += include/netcdf.mod include/typesizes.mod
|
||||
ZIPBINFILES += ${prefix}/include/netcdf.mod ${prefix}/include/typesizes.mod
|
||||
endif
|
||||
BINFILES += share/man/man3/netcdf_f90.3
|
||||
ZIPBINFILES += ${prefix}/share/man/man3/netcdf_f90.3
|
||||
endif
|
||||
|
||||
if BUILD_DLL
|
||||
BINFILES += bin/libnetcdf-7.dll lib/libnetcdf.dll.a lib/libnetcdf.a \
|
||||
lib/libnetcdf.la lib/netcdfdll.def
|
||||
ZIPBINFILES += ${prefix}/bin/libnetcdf-7.dll ${prefix}/lib/libnetcdf.dll.a ${prefix}/lib/libnetcdf.a \
|
||||
${prefix}/lib/libnetcdf.la ${prefix}/lib/netcdfdll.def
|
||||
if BUILD_F77
|
||||
BINFILES += bin/libnetcdff-5.dll lib/libnetcdff.dll.a \
|
||||
lib/libnetcdff.la lib/netcdffdll.def
|
||||
ZIPBINFILES += ${prefix}/bin/libnetcdff-5.dll \
|
||||
${prefix}/lib/libnetcdff.dll.a ${prefix}/lib/libnetcdff.la \
|
||||
${prefix}/lib/netcdffdll.def
|
||||
endif # BUILD_F77
|
||||
endif # BUILD_DLL
|
||||
|
||||
# At Unidata, package up binaries.
|
||||
@ -134,7 +91,7 @@ ftpbin: install
|
||||
echo "Getting binaries from ${prefix}"
|
||||
ls -l ${prefix}
|
||||
echo "These are the binaries for netCDF @PACKAGE_VERSION@." > ${prefix}/README_BINARIES.txt
|
||||
echo "For this build: CC=$(CC) CXX=$(CXX) FC=$(FC) F77=$(F77) $F90=$(F90)" >> ${prefix}/README_BINARIES.txt
|
||||
echo "For this build: CC=$(CC) CXX=$(CXX)" >> ${prefix}/README_BINARIES.txt
|
||||
echo "CFLAGS=$(CFLAGS) CXXFLAGS=$(CXXFLAGS)" >> ${prefix}/README_BINARIES.txt
|
||||
echo "FCFLAGS=$(FCFLAGS) F77FLAGS=$(F77FLAGS) $F90FLAGS=$(F90FLAGS)" >> ${prefix}/README_BINARIES.txt
|
||||
which tar
|
||||
@ -146,17 +103,10 @@ ftpbin: install
|
||||
check_nc_config:
|
||||
$(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs`
|
||||
./test_prog
|
||||
$(F77) `./nc-config --fflags` test_prog.F -o test_prog `./nc-config --libs`
|
||||
./test_prog
|
||||
$(FC) `./nc-config --fflags` test_prog.f90 -o test_prog `./nc-config --libs`
|
||||
./test_prog
|
||||
|
||||
install-data-hook:
|
||||
if BUILD_DLL
|
||||
cp liblib/netcdfdll.def ${prefix}/lib
|
||||
if BUILD_F77
|
||||
cp fortran/netcdffdll.def ${prefix}/lib
|
||||
endif # BUILD_F77
|
||||
endif # BUILD_DLL
|
||||
@echo ''
|
||||
@echo '+-------------------------------------------------------------+'
|
||||
|
188
configure.ac
188
configure.ac
@ -33,11 +33,7 @@ AC_CANONICAL_HOST
|
||||
# Find out about the target we're building for.
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
# We will output a config.h for the C library, and a fortran inc file,
|
||||
# nfconfig.inc.
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_HEADERS([fortran/nfconfig1.inc:fortran/nfconfig.in],
|
||||
[sed '1d;s%^/\* \(.*\) \*/%\1%' fortran/nfconfig1.inc >conftest.tmp && mv conftest.tmp fortran/nfconfig.inc])
|
||||
|
||||
# This call is required by automake.
|
||||
AM_INIT_AUTOMAKE([foreign dist-tarZ subdir-objects])
|
||||
@ -359,44 +355,6 @@ test "x$enable_examples" = xno && nc_build_examples=no
|
||||
AC_MSG_RESULT($nc_build_examples)
|
||||
AM_CONDITIONAL(BUILD_EXAMPLES, [test x$nc_build_examples = xyes])
|
||||
|
||||
# Do we want to build the fortran 77 API? Check for --disable-f77.
|
||||
AC_MSG_CHECKING([whether F77 API is desired])
|
||||
AC_ARG_ENABLE([f77],
|
||||
[AS_HELP_STRING([--disable-f77],
|
||||
[don't try to build the netCDF Fortran 77 (or \
|
||||
Fortran 90) API])])
|
||||
test "x$enable_f77" = "xno" && nc_build_f77=no
|
||||
test "x$nc_null_fc" = xyes && nc_build_f77=no
|
||||
AC_MSG_RESULT([$nc_build_f77])
|
||||
|
||||
# Do we want to build the fortran 77 API? Check for --disable-fortran
|
||||
# for Russ, who can never remember --disable-f77..
|
||||
AC_MSG_CHECKING([whether any Fortran API is desired])
|
||||
AC_ARG_ENABLE([fortran],
|
||||
[AS_HELP_STRING([--disable-fortran],
|
||||
[don't try to build the netCDF Fortran 77 or \
|
||||
Fortran 90 APIs (same effect as --disable-f77)])])
|
||||
test "x$enable_fortran" = "xno" && nc_build_f77=no
|
||||
AC_MSG_RESULT([$nc_build_f77])
|
||||
|
||||
# Do we want to build the fortran 90 API?
|
||||
AC_MSG_CHECKING([whether F90 API is desired])
|
||||
AC_ARG_ENABLE([f90],
|
||||
[AS_HELP_STRING([--disable-f90],
|
||||
[don't try to build the netCDF Fortran 90 API])])
|
||||
test "x$enable_f90" = xno && nc_build_f90=no
|
||||
test "x$nc_null_fc" = xyes || test "x$nc_null_f90" = xyes || \
|
||||
test "x$nc_build_f77" = xno && nc_build_f90=no
|
||||
AC_MSG_RESULT([$nc_build_f90])
|
||||
|
||||
# Does the user want to check into fortran type information?
|
||||
AC_MSG_CHECKING([whether fortran type sizes should be checked])
|
||||
AC_ARG_ENABLE([fortran-type-check],
|
||||
[AS_HELP_STRING([--disable-fortran-type-check],
|
||||
[cause the Fortran type sizes checks to be skipped])])
|
||||
test "x$enable_fortran_type_check" = xno || enable_fortran_type_check=yes
|
||||
AC_MSG_RESULT($enable_fortran_type_check)
|
||||
|
||||
# Does the user want to disable the V2 API?
|
||||
AC_MSG_CHECKING([whether v2 netCDF API should be built])
|
||||
AC_ARG_ENABLE([v2],
|
||||
@ -521,82 +479,6 @@ if test $havekeypassword = yes; then
|
||||
fi
|
||||
CFLAGS="$SAVECFLAGS"
|
||||
|
||||
# If the user set environment var FC, but not F77, then set F77=FC
|
||||
if test "x${FC+set}" = xset -a "x${F77+set}" != xset; then
|
||||
F77=${FC}
|
||||
fi
|
||||
|
||||
# If F90 is set, and FC isn't, then set FC to whatever F90 was set to.
|
||||
if test "${F90+set}" = set -a "${FC+set}" != set; then
|
||||
FC=$F90
|
||||
fi
|
||||
|
||||
# If F77 is set, and FC (still) isn't, then set FC to whatever F77 was
|
||||
# set to.
|
||||
if test "${F77+set}" = set -a "${FC+set}" != set; then
|
||||
FC=$F77
|
||||
fi
|
||||
|
||||
# Find fortran compiler. If FC isn't set after AC_PROG_FC, we couldn't
|
||||
# find a fortran compiler. If the user requested the fortran API, and
|
||||
# has told us not to recover from a missing compiler, then bail out
|
||||
# right here.
|
||||
AC_MSG_NOTICE([finding Fortran compiler (will not be used if Fortran API is not desired)])
|
||||
AC_PROG_FC
|
||||
|
||||
# If we couldn't find an F90 compiler, deal with it.
|
||||
if test "${FC+set}" = set && test "x$FC" = x; then
|
||||
if test "x$enable_compiler_recover" = xno && test "x$nc_build_f90" = xyes; then
|
||||
AC_MSG_ERROR([Can't find F90 compiler, and compiler recovery disabled.])
|
||||
fi
|
||||
AC_MSG_WARN([No F90 compiler found. F90 API will not be built.])
|
||||
nc_build_f90=no
|
||||
fi
|
||||
|
||||
AC_PROG_F77($FC)
|
||||
|
||||
# Handle missing f77 compiler.
|
||||
if test "${F77+set}" = set && test "x$F77" = x; then
|
||||
if test "x$enable_compiler_recover" = xno && test "x$nc_build_f77" = xyes; then
|
||||
AC_MSG_ERROR([Can't find F77 compiler, and compiler recovery disabled.])
|
||||
fi
|
||||
AC_MSG_WARN([No F77 compiler found. F77 API will not be built.])
|
||||
nc_build_f77=no
|
||||
nc_build_f90=no
|
||||
fi
|
||||
|
||||
# See if the fortran 90 build is desired. If so, set some stuff
|
||||
if test "x$nc_build_f90" = xyes; then
|
||||
AC_MSG_NOTICE([setting up Fortran 90])
|
||||
if test "${F90+set}" != set; then
|
||||
F90=$FC
|
||||
fi
|
||||
AC_MSG_CHECKING([what FC is set to])
|
||||
AC_MSG_RESULT([$FC])
|
||||
|
||||
# Some f90 compilers change the case of the mod file names. Others
|
||||
# require special flags to be set to dea with .f90 files. Find out
|
||||
# about this compiler.
|
||||
AC_LANG_PUSH(Fortran)
|
||||
AC_FC_SRCEXT(f90)
|
||||
AC_LANG_POP(Fortran)
|
||||
AX_F90_MODULE_FLAG
|
||||
AC_SUBST(MOD_FLAG, ${ax_cv_f90_modflag})
|
||||
|
||||
# Set the FCLIBS flag to help with shared libraries.
|
||||
# AC_FC_LIBRARY_LDFLAGS
|
||||
# AC_F77_LIBRARY_LDFLAGS
|
||||
fi
|
||||
|
||||
# Set these conditionals for automake. For some reason, it can't keep
|
||||
# it's SUBDIR order straight if I use BUILD_F77 to attach the nf_test
|
||||
# directory, so also define an automake conditional TEST_F77 every
|
||||
# time BUILD_F77 is defined, and set it to the same value.
|
||||
AM_CONDITIONAL(BUILD_C, [test "x$nc_build_c" = xyes])
|
||||
AM_CONDITIONAL(BUILD_F77, [test "x$nc_build_f77" = xyes])
|
||||
AM_CONDITIONAL(TEST_F77, [test "x$nc_build_f77" = xyes])
|
||||
AM_CONDITIONAL(BUILD_F90, [test "x$nc_build_f90" = xyes])
|
||||
|
||||
# Set up libtool.
|
||||
AC_MSG_NOTICE([setting up libtool])
|
||||
LT_PREREQ([2.2])
|
||||
@ -642,37 +524,6 @@ AM_COND_IF([HAVE_DOXYGEN], [AC_SUBST(NETCDF_DOC_ONLY_FILES, ${NETCDF_DOC_ONLY_FI
|
||||
# Find the install program.
|
||||
AC_PROG_INSTALL
|
||||
|
||||
if test "x$nc_build_f77" = xyes; then
|
||||
AC_MSG_NOTICE([trying to set fortran flags for this platform])
|
||||
# Set fortran flag if the user has not already set it in CPPFLAGS.
|
||||
case "$CPPFLAGS" in
|
||||
*pgiFortran*|*NAGf90Fortran*|*f2cFortran*|*hpuxFortran*|*apolloFortran*|*sunFortran*|*IBMR2Fortran*|*CRAYFortran*|*PATHSCALE_COMPILER*|*gFortran*|*mipsFortran*|*DECFortran*|*vmsFortran*|*CONVEXFortran*|*PowerStationFortran*|*AbsoftUNIXFortran*|*AbsoftProFortran*|*SXFortran*)
|
||||
;;
|
||||
*)
|
||||
case "$FC" in
|
||||
pgf95|pgf90|pgf77|ifort*|lf90|lf95)
|
||||
AC_DEFINE(pgiFortran, [1], [Turned on by netCDF configure.])
|
||||
;;
|
||||
*gfortran)
|
||||
if (gfortran --version | grep '(GCC 4.1.' || gfortran --version | grep '(GCC 4.0.'); then
|
||||
AC_DEFINE(gFortran, [1], [Turned on by netCDF configure.])
|
||||
else
|
||||
AC_DEFINE(pgiFortran, [1], [Turned on by netCDF configure.])
|
||||
fi
|
||||
;;
|
||||
*g77)
|
||||
AC_DEFINE(f2cFortran, [1], [Turned on by netCDF configure.])
|
||||
;;
|
||||
*)
|
||||
# If it's a gnu compiler, guess f2c.
|
||||
if test "x$ac_cv_fc_compiler_gnu" = xyes; then
|
||||
AC_DEFINE(f2cFortran, [1], [Turned on by netCDF configure.])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
fi
|
||||
|
||||
# Check to see if any macros must be set to enable large (>2GB) files.
|
||||
AC_SYS_LARGEFILE
|
||||
|
||||
@ -683,36 +534,7 @@ AC_MSG_NOTICE([displaying some results])
|
||||
UD_DISPLAY_RESULTS
|
||||
|
||||
# For nightly build testing, output CC, FC, etc.
|
||||
echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS CXX=$CXX CXXFLAGS=$CXXFLAGS FC=$FC FCFLAGS=$FCFLAGS F77=$F77 FFLAGS=$FFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS FLIBS=$FLIBS F90LIBS=$F90LIBS" >> comps.txt
|
||||
|
||||
ac_cv_prog_f90_uppercase_mod=no
|
||||
|
||||
# This will test the f77 compiler, as well as check some fortran types.
|
||||
if test "x$nc_build_f77" = xyes; then
|
||||
|
||||
if test "$enable_fortran_type_check" = yes; then
|
||||
UD_FORTRAN_TYPES
|
||||
if test "x$ud_fc_failed" = xyes -a "x$enable_compiler_recover" = xno -a "x$nc_build_f77" = xyes; then
|
||||
AC_MSG_ERROR([F77 compiler doesn't work, and compiler recovery disabled.])
|
||||
fi
|
||||
else
|
||||
AC_DEFINE(NCBYTE_T, byte)
|
||||
AC_DEFINE(NCSHORT_T, integer*2)
|
||||
AC_DEFINE(NF_INT1_T, byte)
|
||||
AC_DEFINE(NF_INT2_T, integer*2)
|
||||
AC_DEFINE(NF_INT1_IS_C_SIGNED_CHAR, 1, [default])
|
||||
AC_DEFINE(NF_INT2_IS_C_SHORT, 1, [default])
|
||||
AC_DEFINE(NF_INT_IS_C_INT, 1, [default])
|
||||
AC_DEFINE(NF_REAL_IS_C_FLOAT, 1, [default])
|
||||
AC_DEFINE(NF_DOUBLEPRECISION_IS_C_DOUBLE, 1, [default])
|
||||
fi
|
||||
|
||||
# Test whether F90 module names get capitalized.
|
||||
if test "x$nc_build_f90" = xyes; then
|
||||
AC_PROG_FC_UPPERCASE_MOD
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(UPPER_CASE_MOD, [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
|
||||
echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> comps.txt
|
||||
|
||||
AC_MSG_NOTICE([checking types, headers, and functions])
|
||||
|
||||
@ -952,15 +774,12 @@ esac
|
||||
NC_FLIBS="-lnetcdff $NC_LIBS"
|
||||
|
||||
AC_SUBST(NC_LIBS,[$NC_LIBS])
|
||||
AC_SUBST(NC_FLIBS,[$NC_FLIBS])
|
||||
AC_SUBST(HAS_DAP,[$enable_dap])
|
||||
AC_SUBST(HAS_NC2,[$nc_build_v2])
|
||||
AC_SUBST(HAS_NC4,[$enable_netcdf_4])
|
||||
AC_SUBST(HAS_HDF4,[$enable_hdf4])
|
||||
AC_SUBST(HAS_PNETCDF,[$enable_pnetcdf])
|
||||
AC_SUBST(HAS_HDF5,[$enable_netcdf_4])
|
||||
AC_SUBST(HAS_F77,[$nc_build_f77])
|
||||
AC_SUBST(HAS_F90,[$nc_build_f90])
|
||||
AC_SUBST(HAS_SZLIB,[$nc_has_szlib])
|
||||
|
||||
# Access netcdf specific version of config.h
|
||||
@ -979,7 +798,6 @@ AC_CONFIG_FILES([Makefile
|
||||
h5_test/Makefile
|
||||
man4/Makefile
|
||||
man4/images/Makefile
|
||||
fortran/Makefile
|
||||
libsrc/Makefile
|
||||
libsrc4/Makefile
|
||||
nctest/Makefile
|
||||
@ -988,13 +806,9 @@ AC_CONFIG_FILES([Makefile
|
||||
ncdump/Makefile
|
||||
ncgen3/Makefile
|
||||
ncgen/Makefile
|
||||
nf_test/Makefile
|
||||
f90/Makefile
|
||||
examples/Makefile
|
||||
examples/C/Makefile
|
||||
examples/CDL/Makefile
|
||||
examples/F90/Makefile
|
||||
examples/F77/Makefile
|
||||
oc/Makefile
|
||||
libdap2/Makefile
|
||||
libcdmr/Makefile
|
||||
|
@ -5,27 +5,10 @@
|
||||
# netcdf directories. Not all directories are built, depending on the
|
||||
# options selected during configure.
|
||||
|
||||
# $Id: Makefile.am,v 1.9 2007/06/06 20:26:42 ed Exp $
|
||||
|
||||
# If the user is building the C API, build the C examples.
|
||||
if BUILD_C
|
||||
C_DIR = C
|
||||
endif
|
||||
|
||||
# If the user is building the F77 API, build the F77 examples.
|
||||
if BUILD_F77
|
||||
F77_DIR = F77
|
||||
endif
|
||||
|
||||
# If the user is building the F90 API, build the F90 examples.
|
||||
if BUILD_F90
|
||||
F90_DIR = F90
|
||||
endif
|
||||
|
||||
# Build ncgen/ncdump.
|
||||
if BUILD_UTILITIES
|
||||
CDL_DIR = CDL
|
||||
endif
|
||||
|
||||
# These are the subdirectories that will be built.
|
||||
SUBDIRS = $(C_DIR) $(CDL_DIR) $(F77_DIR) $(F90_DIR)
|
||||
SUBDIRS = C $(CDL_DIR)
|
||||
|
@ -2948,4 +2948,12 @@ nc_exit()
|
||||
}
|
||||
#endif /* EXTRA_TESTS */
|
||||
|
||||
#ifdef USE_PARALLEL
|
||||
int
|
||||
nc_use_parallel_enabled()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* USE_PARALLEL */
|
||||
|
||||
|
||||
|
@ -9,40 +9,13 @@
|
||||
# The "install" target installs the documentation in a directory
|
||||
# called $(prefix)/doc/$(PACKAGE)-$(VERSION).
|
||||
|
||||
# These are the source files for all the netcdf manuals.
|
||||
info_TEXINFOS = netcdf-f77.texi netcdf-f90.texi
|
||||
|
||||
# Get lists of the coresponding ps, info, and pdf files.
|
||||
html_docs = ${info_TEXINFOS:.texi=.html}
|
||||
html_dirs = ${info_TEXINFOS:.texi=}
|
||||
ps_docs = ${info_TEXINFOS:.texi=.ps}
|
||||
dvi_docs = ${info_TEXINFOS:.texi=.dvi}
|
||||
pdf_docs = ${info_TEXINFOS:.texi=.pdf}
|
||||
info_docs= ${info_TEXINFOS:.texi=.info}
|
||||
txt_docs= ${info_TEXINFOS:.texi=.txt}
|
||||
|
||||
# These are html versions of the man pages.
|
||||
html_mans = ncdump-man-1.html ncgen-man-1.html netcdf_f77-man.html \
|
||||
netcdf-man-3.html netcdf_f90-man.html ncgen3-man-1.html \
|
||||
nccopy-man-1.html
|
||||
html_mans = ncdump-man-1.html ncgen-man-1.html netcdf-man-3.html \
|
||||
ncgen3-man-1.html nccopy-man-1.html
|
||||
|
||||
# These files will be included with the dist.
|
||||
EXTRA_DIST = netcdf.m4 $(pdf_docs) $(html_mans) $(txt_docs) \
|
||||
$(dvi_docs) $(ps_docs) $(info_docs) $(html_docs) netcdf_f77.3 \
|
||||
DoxygenLayout.xml Doxyfile.in @NETCDF_DOC_ONLY_FILES@ footer.html
|
||||
|
||||
#doc_DATA = $(pdf_docs) $(html_mans) $(txt_docs) $(ps_docs) \
|
||||
#$(info_docs) $(html_docs)
|
||||
|
||||
# All the documents depend on defines.texi for some common
|
||||
# definitions.
|
||||
netcdf_f77_TEXINFOS = defines.texi
|
||||
netcdf_f90_TEXINFOS = defines.texi
|
||||
|
||||
# Get texi2dvi to shut the hell up, and work better for parallel
|
||||
# builds. The --tidy option may be useful getting parallel builds to
|
||||
# work someday.
|
||||
TEXI2DVI = texi2dvi -s
|
||||
EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in \
|
||||
@NETCDF_DOC_ONLY_FILES@ footer.html
|
||||
|
||||
# Turn off parallel builds in this directory.
|
||||
.NOTPARALLEL:
|
||||
@ -50,25 +23,10 @@ TEXI2DVI = texi2dvi -s
|
||||
# To build documentation you must have M4 in their path.
|
||||
M4=m4
|
||||
|
||||
# Rule to generate the text copies of the documentation.
|
||||
.texi.txt:
|
||||
makeinfo -o $*.txt --no-headers $(srcdir)/$<
|
||||
|
||||
# Generate the HTML version of the netcdf-3 C man page.
|
||||
netcdf-man-3.html: $(top_srcdir)/libsrc/netcdf.3
|
||||
groff -man -Thtml $? > $@
|
||||
|
||||
# Generate the HTML version of the netcdf-3 F77 man page.
|
||||
netcdf_f77.3: netcdf.m4
|
||||
m4 $(M4FLAGS) $(ARGS_MANPAGE) $? >$@ || rm $@
|
||||
|
||||
netcdf_f77-man.html: netcdf_f77.3
|
||||
groff -man -Thtml $? > $@
|
||||
|
||||
# Generate the HTML version of the netcdf-3 F90 man page.
|
||||
netcdf_f90-man.html: $(top_srcdir)/f90/netcdf_f90.3
|
||||
groff -man -Thtml $? > $@
|
||||
|
||||
# Generate the HTML version of the ncgen man page.
|
||||
ncgen-man-1.html: $(top_srcdir)/ncgen/ncgen.1
|
||||
groff -man -Thtml $? > $@
|
||||
@ -85,31 +43,11 @@ ncdump-man-1.html: $(top_srcdir)/ncdump/ncdump.1
|
||||
nccopy-man-1.html: $(top_srcdir)/ncdump/nccopy.1
|
||||
groff -man -Thtml $? > $@
|
||||
|
||||
netcdf-f77.html:
|
||||
$(MAKEINFO) --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f77.texi
|
||||
$(MAKEINFO) --no-split --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f77.texi
|
||||
|
||||
netcdf-f90.html:
|
||||
$(MAKEINFO) --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f90.texi
|
||||
$(MAKEINFO) --no-split --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f90.texi
|
||||
|
||||
# This builds the docs from source, if necessary, and tars up
|
||||
# everything needed for the website. Run this and copy the resulting
|
||||
# tarball to the /contents/netcdf/docs directory to update the on-line
|
||||
# docs.
|
||||
web-tarball: $(pdf_docs) $(html_mans) $(txt_docs) $(dvi_docs) $(ps_docs) $(info_docs) $(html_docs)
|
||||
tar cf netcdf_info.tar *.info*
|
||||
gzip -f netcdf_info.tar
|
||||
zip netcdf_info *.info
|
||||
tar cf netcdf_pdf.tar *.pdf
|
||||
gzip -f netcdf_pdf.tar
|
||||
zip netcdf_pdf *.pdf
|
||||
tar cf netcdf_html.tar *.html $(html_dirs)
|
||||
gzip -f netcdf_html.tar
|
||||
zip netcdf_html *.html $(html_dirs)
|
||||
tar cf netcdf_txt.tar *.txt
|
||||
gzip -f netcdf_txt.tar
|
||||
zip netcdf_txt *.txt
|
||||
web-tarball:
|
||||
cp $(top_srcdir)/ncdump/ncdump.1 .
|
||||
cp $(top_srcdir)/ncgen/ncgen.1 .
|
||||
cp $(top_srcdir)/ncdump/nccopy.1 .
|
||||
@ -120,15 +58,11 @@ web-tarball: $(pdf_docs) $(html_mans) $(txt_docs) $(dvi_docs) $(ps_docs) $(info_
|
||||
tar cf netcdf_man.tar netcdf.3 netcdf_f77.3 netcdf_f90.3 ncdump.1 ncgen.1 ncgen3.1
|
||||
gzip -f netcdf_man.tar
|
||||
zip netcdf_man netcdf.3 netcdf_f77.3 netcdf_f90.3 ncdump.1 ncgen.1 ncgen3.1
|
||||
tar cf netcdf_docs.tar $(html_dirs) *.pdf *.txt *.html *.tar.gz *.zip
|
||||
gzip -f netcdf_docs.tar
|
||||
|
||||
# Clean up all the junk we created!
|
||||
MAINTAINERCLEANFILES = $(ps_docs) $(pdf_docs) $(txt_docs) $(info_docs) \
|
||||
$(html_docs) $(man_MANS) ${c_examples} ${f77_examples} ${f90_examples} \
|
||||
${cxx_examples} ${cdl_examples} *.1 *.3 ncdump-man-1.html \
|
||||
ncgen-man-1.html ncgen3-man-1.html netcdf_f77-man.html netcdf-man-3.html \
|
||||
netcdf_f90-man.html stamp-* version* netcdf_f77.3 nccopy-man-1.html
|
||||
MAINTAINERCLEANFILES = $(man_MANS) ${c_examples} ${cdl_examples} *.1 \
|
||||
*.3 ncdump-man-1.html ncgen-man-1.html ncgen3-man-1.html \
|
||||
netcdf-man-3.html stamp-* version* nccopy-man-1.html
|
||||
|
||||
SUBDIRS = images
|
||||
|
||||
|
@ -3,7 +3,17 @@ NetCDF Users Guide
|
||||
|
||||
\page user_guide The NetCDF Users Guide
|
||||
|
||||
\section Summary
|
||||
- \ref netcdf_summary
|
||||
- \ref netcdf_interface
|
||||
- \ref netcdf_format
|
||||
- \ref creating_self
|
||||
- \ref limitations
|
||||
- \ref data_model
|
||||
- \ref performance
|
||||
- \ref attribute_conventions
|
||||
- \ref remote_client
|
||||
|
||||
\page netcdf_summary Summary
|
||||
|
||||
The purpose of the Network Common Data Form (netCDF) interface is to
|
||||
allow you to create, access, and share array-oriented data in a form
|
||||
@ -50,7 +60,7 @@ http://www.unidata.ucar.edu/software/netcdf-java.
|
||||
For installation and porting information See The NetCDF Installation
|
||||
and Porting Guide.
|
||||
|
||||
\section netcdf_interface The NetCDF Interface
|
||||
\page netcdf_interface The NetCDF Interface
|
||||
|
||||
The Network Common Data Form, or netCDF, is an interface to a library
|
||||
of data access functions for storing and retrieving data in the form
|
||||
@ -209,7 +219,7 @@ better).
|
||||
|
||||
For more discussion of format issues see The NetCDF Tutorial.
|
||||
|
||||
\section performance What about Performance?
|
||||
\page performance What about Performance?
|
||||
|
||||
One of the goals of netCDF is to support efficient access to small
|
||||
subsets of large datasets. To support this goal, netCDF uses direct
|
||||
@ -238,7 +248,7 @@ operations, less so in data access operations. We continue to study
|
||||
the challenge of implementing netCDF-4/HDF5 format without
|
||||
compromising performance.
|
||||
|
||||
\section creating_self Creating Self-Describing Data conforming to Conventions
|
||||
\page creating_self Creating Self-Describing Data conforming to Conventions
|
||||
|
||||
The mere use of netCDF is not sufficient to make data
|
||||
"self-describing" and meaningful to both humans and machines. The
|
||||
@ -262,7 +272,7 @@ conventions are often needed for local use. These should be
|
||||
contributed to the above netCDF conventions site if likely to interest
|
||||
other users in similar areas.
|
||||
|
||||
\section limitations Limitations of NetCDF
|
||||
\page limitations Limitations of NetCDF
|
||||
|
||||
The netCDF classic data model is widely applicable to data that can be
|
||||
organized into a collection of named array variables with named
|
||||
|
@ -18,8 +18,8 @@ Hartnett, and Dennis Heimbigner
|
||||
<p>Learn more about netCDF:
|
||||
- \ref getting
|
||||
- \ref building
|
||||
- \ref user_guide
|
||||
- \ref tutorial
|
||||
- \ref user_guide
|
||||
|
||||
Unidata provides data and software tools for use in geoscience
|
||||
education and research. For more information see the web sites of <a
|
||||
|
@ -26,7 +26,7 @@ available, you may get an error from a layer below the netCDF library,
|
||||
but the resulting write error will still be reflected in the returned
|
||||
status value.
|
||||
|
||||
\section ignored_if_null Ignored if NULL
|
||||
\page ignored_if_null Ignored if NULL
|
||||
|
||||
Many of the argurments of netCDF functions are pointers. For example,
|
||||
the nc_inq() functions takes four pointers:
|
||||
|
@ -3,27 +3,29 @@ The tutorial document.
|
||||
|
||||
\page tutorial Tutorial
|
||||
|
||||
\section what_is_netcdf What is NetCDF?
|
||||
To learn more about netCDF:
|
||||
- \ref what_is_netcdf
|
||||
- \ref classic_model
|
||||
- \ref enhanced_model
|
||||
- \ref unlimited_dims
|
||||
- \ref error_handling
|
||||
- \ref examples1
|
||||
|
||||
\page what_is_netcdf What is NetCDF?
|
||||
|
||||
NetCDF is a set of data formats, programming interfaces, and software
|
||||
libraries that help read and write scientific data files.
|
||||
|
||||
NetCDF was developed and is maintained at Unidata, part of the
|
||||
University Corporation for Atmospheric Research (UCAR) Office of
|
||||
Programs (UOP). Unidata is funded primarily by the National Science
|
||||
Foundation.
|
||||
NetCDF was developed and is maintained at <a
|
||||
href="http://www.unidata.ucar.edu">Unidata</a>. Unidata provides data
|
||||
and software tools for use in geoscience education and research.
|
||||
|
||||
Unidata provides data and software tools for use in geoscience
|
||||
education and research. For more information see the web sites of <a
|
||||
href="http://www.unidata.ucar.edu">Unidata</a>, <a
|
||||
href="http://www.uop.ucar.edu">UOP</a>, and <a
|
||||
href="http://www.ucar.edu">UCAR</a>.
|
||||
Unidata is part of the University Corporation for Atmospheric Research
|
||||
(<a href="http://www.ucar.edu">UCAR</a>) Office of Programs (<a
|
||||
href="http://www.uop.ucar.edu">UOP</a>). Unidata is funded primarily
|
||||
by the National Science Foundation.
|
||||
|
||||
This tutorial may serve as an introduction to netCDF. See the <a
|
||||
href="http://www.unidata.ucar.edu/software/netcdf/docs/">netCDF
|
||||
documentation page</a> for more information.
|
||||
|
||||
\section classic_model The Classic Model
|
||||
\page classic_model The Classic Model
|
||||
|
||||
The classic netCDF data model consists of variables, dimensions, and
|
||||
attributes. This way of thinking about data was introduced with the
|
||||
@ -61,6 +63,7 @@ small.
|
||||
|
||||
</table>
|
||||
|
||||
<p>
|
||||
\image html nc-classic-uml.png "NetCDF Classic Data Model"
|
||||
|
||||
\section met_example Meteorological Example
|
||||
@ -96,11 +99,11 @@ Attributes are always single values or one-dimensional arrays. (This
|
||||
works out well for a string, which is a one-dimensional array of ASCII
|
||||
characters.)
|
||||
|
||||
The pres_temp_4D example in this tutorial shows how to write and read
|
||||
a file containing some four-dimensional pressure and temperature data,
|
||||
including all the metadata needed.
|
||||
The pres_temp_4D_wr.c/pres_temp_4D_rd.c examples show
|
||||
how to write and read a file containing some four-dimensional pressure
|
||||
and temperature data, including all the metadata needed.
|
||||
|
||||
\section enhanced_model The Common Data Model and NetCDF-4
|
||||
\page enhanced_model The Enhanced Data Model
|
||||
|
||||
With netCDF-4, the netCDF data model has been extended, in a backwards
|
||||
compatible way.
|
||||
@ -124,9 +127,9 @@ opaque types.
|
||||
|
||||
These features may only be used when working with a netCDF-4/HDF5
|
||||
file. Files created in classic or 64-bit offset format cannot support
|
||||
groups or user-defined types.
|
||||
groups or user-defined types (see \ref netcdf_format).
|
||||
|
||||
\image html nc4-model.png
|
||||
<p>\image html nc4-model.png
|
||||
|
||||
With netCDF-4/HDF5 files, the user may define groups, which may
|
||||
contain variables, dimensions, and attributes. In this way, a group
|
||||
@ -151,7 +154,7 @@ model. That is, these files are in HDF5, but will not support multiple
|
||||
unlimited dimensions, user-defined types, groups, etc. They act just
|
||||
like a classic netCDF file.
|
||||
|
||||
\section error_handling NetCDF Error Handling
|
||||
\page error_handling NetCDF Error Handling
|
||||
|
||||
Each netCDF function in the C, Fortran 77, and Fortran 90 APIs returns
|
||||
0 on success, in the tradition of C.
|
||||
@ -176,7 +179,7 @@ range. This may yield bad data, but the netCDF library just returns
|
||||
NC_ERANGE and leaves it up to the user to handle. (For more
|
||||
information about type conversion see Type Conversion).
|
||||
|
||||
\section unlimited_dims Unlimited Dimensions
|
||||
\page unlimited_dims Unlimited Dimensions
|
||||
|
||||
Sometimes you don't know the size of all dimensions when you create a
|
||||
file, or you would like to arbitrarily extend the file along one of
|
||||
@ -208,12 +211,29 @@ In netCDF-4/HDF5 files, any number of unlimited dimensions may be
|
||||
used, and there is no restriction as to where they appear in a
|
||||
variable's list of dimension IDs.
|
||||
|
||||
\example pres_temp_4D_wr.c
|
||||
\example pres_temp_4D_rd.c
|
||||
\example sfc_pres_temp_wr.c
|
||||
\example sfc_pres_temp_rd.c
|
||||
\page examples1 NetCDF Example Programs
|
||||
|
||||
The following example programs illustrate the use of the netCDF
|
||||
library.
|
||||
- simple_xy_wr.c
|
||||
- simple_xy_rd.c
|
||||
- sfc_pres_temp_wr.c
|
||||
- sfc_pres_temp_rd.c
|
||||
- pres_temp_4D_wr.c
|
||||
- pres_temp_4D_rd.c
|
||||
|
||||
These are the netCDF-4 examples.
|
||||
- simple_nc4_wr.c
|
||||
- simple_nc4_rd.c
|
||||
- simple_xy_nc4_wr.c
|
||||
- simple_xy_nc4_rd.c
|
||||
|
||||
\example simple_xy_wr.c
|
||||
\example simple_xy_rd.c
|
||||
\example sfc_pres_temp_wr.c
|
||||
\example sfc_pres_temp_rd.c
|
||||
\example pres_temp_4D_wr.c
|
||||
\example pres_temp_4D_rd.c
|
||||
\example simple_nc4_wr.c
|
||||
\example simple_nc4_rd.c
|
||||
\example simple_xy_nc4_wr.c
|
||||
|
Loading…
Reference in New Issue
Block a user