[netcdf] 01/01: update to netCDF-4.3.3-rc3
Nico Schlömer
nschloe-guest at moszumanska.debian.org
Thu Jan 15 00:08:56 UTC 2015
This is an automated email from the git hooks/post-receive script.
nschloe-guest pushed a commit to branch upstream
in repository netcdf.
commit ed3902934c1d2de125a3a0574bdd7e9ff3186ed9
Author: Nico Schlömer <nico.schloemer at gmail.com>
Date: Thu Jan 15 01:05:19 2015 +0100
update to netCDF-4.3.3-rc3
---
BRANCH-STATUS | 5 +
CMakeInstallation.cmake | 130 +
CMakeLists.txt | 910 +-
COPYRIGHT | 4 -
CTestConfig.cmake | 17 -
CTestConfig.cmake.in | 2 +-
Doxyfile | 1934 ---
docs/Doxyfile.guide.in => Doxyfile.developer | 322 +-
Make0 | 35 +-
Makefile.am | 53 +-
Makefile.in | 1177 ++
PostInstall.cmake | 1 +
README.md | 8 +-
RELEASE_NOTES.md | 128 +-
aclocal.m4 | 1194 ++
autom4te.cache/output.0 | 9959 ---------------
autom4te.cache/requests | 77 -
autom4te.cache/traces.0 | 939 --
cf | 30 +-
cf.cmake | 14 +
compile | 347 +
config.guess | 1421 +++
config.h.cmake.in | 18 +-
config.h.in | 516 +
config.sub | 1807 +++
configure | 12627 +++++++++++++++++--
configure.ac | 164 +-
depcomp | 791 ++
docs/CMakeLists.txt | 85 +-
COPYRIGHT => docs/COPYRIGHT.dox | 11 +-
docs/Doxyfile.in | 177 +-
docs/Doxyfile.tutorial.in | 2344 ----
docs/DoxygenLayout.xml | 12 +-
docs/FAQ.md | 1952 +++
docs/Makefile.am | 11 +-
docs/Makefile.in | 726 ++
docs/all-error-codes.md | 117 +-
docs/building-with-cmake.md | 2 +-
docs/cdl.dox | 44 +-
docs/cmake_faq.md | 4 -
docs/credits.md | 120 +
docs/docmap.pdf | Bin 0 -> 64347 bytes
docs/errors.dox.old | 51 -
docs/guide.dox | 310 +-
docs/images/InstallTreeWindows.jpg | Bin 61966 -> 0 bytes
docs/images/InstallTreeWindows.png | Bin 291971 -> 44671 bytes
docs/images/Makefile.am | 2 +-
docs/images/Makefile.in | 487 +
docs/install-fortran.md | 47 +
docs/install.dox | 18 +-
docs/install.md | 54 +-
docs/internal.dox | 26 +-
docs/mainpage.dox | 25 +-
docs/notes.dox | 37 +-
docs/tutorial.dox | 86 +-
docs/types.dox | 22 +-
docs/windows-binaries.md | 52 +-
examples/C/Makefile.in | 1207 ++
examples/CDL/Makefile.in | 883 ++
examples/Makefile.in | 675 +
h5_test/CMakeLists.txt | 6 +-
h5_test/Makefile.in | 1499 +++
include/.gitignore | 1 +
include/Makefile.am | 11 +-
include/Makefile.in | 625 +
include/nc4internal.h | 11 +-
include/ncconfigure.h | 20 +-
include/ncdispatch.h | 4 +-
include/nctime.h | 4 +-
include/netcdf.h | 440 +-
include/netcdf_meta.h.in | 52 +
install-sh | 501 +
libdap2/Make0 | 2 +-
libdap2/Makefile.in | 855 ++
libdap2/cache.c | 45 +-
libdap2/cdf.c | 41 +-
libdap2/constraints.c | 61 +-
libdap2/constraints.h | 36 +-
libdap2/dapdebug.h | 1 -
libdap2/dapdump.c | 2 +-
libdap2/dcelex.c | 18 +-
libdap2/dceparse.c | 30 +-
libdap2/env | 18 +-
libdap2/getvara.c | 113 +-
libdap2/ncd2dispatch.c | 107 +-
libdap2/ncdap.h | 2 +-
libdap2/ncdaperr.c | 2 +-
libdispatch/Makefile.am | 108 +-
libdispatch/Makefile.in | 998 ++
libdispatch/dcopy.c | 10 +-
libdispatch/ddim.c | 41 +-
libdispatch/ddispatch.c | 53 +-
libdispatch/defcheck.c | 12 +-
libdispatch/derror.c | 34 +-
libdispatch/dfile.c | 123 +-
libdispatch/dgroup.c | 90 +-
libdispatch/dtype.c | 41 +-
libdispatch/dv2i.c | 2 +-
libdispatch/dvarget.c | 198 +-
libdispatch/dvarput.c | 7 +-
libdispatch/ncaux.c | 7 +-
libdispatch/ncsettings.hdr | 245 +
libdispatch/nctime.c | 6 +-
libdispatch/ncuri.c | 112 +-
liblib/CMakeLists.txt | 36 +-
liblib/Makefile.in | 770 ++
libncdap.tar.gz | Bin 0 -> 316361 bytes
libnetcdf.settings.in | 55 +-
libsrc/Makefile.am | 2 +-
libsrc/Makefile.in | 898 ++
libsrc/attr.c | 339 +
libsrc/nc3dispatch.c | 2 +-
libsrc/ncx.c | 6159 ++++++++-
libsrc/ncx.m4 | 6 +-
libsrc/posixio.c | 130 +-
libsrc/putget.c | 3959 ++++++
libsrc/var.c | 72 +-
libsrc4/Makefile.in | 753 ++
libsrc4/nc4attr.c | 132 +-
libsrc4/nc4dim.c | 15 +-
libsrc4/nc4file.c | 358 +-
libsrc4/nc4grp.c | 2 +-
libsrc4/nc4hdf.c | 6043 ++++-----
libsrc4/nc4internal.c | 158 +-
libsrc4/nc4type.c | 17 +-
libsrc4/nc4var.c | 17 +-
libsrc5/Makefile.in | 669 +
libsrc5/nc5dispatch.c | 59 +-
ltmain.sh | 11088 ++++++++++++++++
m4/libtool.m4 | 8318 ++++++++++++
m4/ltoptions.m4 | 437 +
m4/ltsugar.m4 | 124 +
m4/ltversion.m4 | 23 +
m4/lt~obsolete.m4 | 99 +
missing | 215 +
nc_test/CMakeLists.txt | 24 +-
nc_test/Make0 | 5 +-
nc_test/Makefile.am | 16 +-
nc_test/Makefile.in | 1560 +++
nc_test/large_files.c | 4 +
nc_test/run_diskless.sh | 2 +-
nc_test/run_pnetcdf_test.sh | 3 +-
nc_test/test_get.c | 6233 ++++++++-
nc_test/test_get.m4 | 9 +-
nc_test/test_put.c | 7206 +++++++++++
nc_test/tst_diskless.c | 8 +-
nc_test/tst_diskless4.c | 1 +
nc_test/tst_meta.c | 34 +
nc_test/tst_norm.c | 8 +-
nc_test4/CMakeLists.txt | 19 +-
nc_test4/Makefile.am | 2 +-
nc_test4/Makefile.in | 2457 ++++
nc_test4/renamegroup.c | 2 +
nc_test4/run_get_hdf4_files.sh | 2 +-
nc_test4/run_grp_rename.sh | 2 +-
nc_test4/tst_dims.c | 20 +-
nc_test4/tst_parallel3.c | 3 -
nc_test4/tst_rename.c | 161 +
ncdap_test/CMakeLists.txt | 6 +-
ncdap_test/Makefile.am | 16 +-
ncdap_test/Makefile.in | 1391 ++
ncdap_test/expected3/Makefile.am | 1 +
ncdap_test/expected3/Makefile.in | 520 +
ncdap_test/expected3/testData.nc.dmp | 81 +
ncdap_test/expected4/Makefile.in | 518 +
ncdap_test/expectremote3/Makefile.in | 514 +
ncdap_test/expectremote4/Makefile.in | 513 +
ncdap_test/nctestserver.c | 32 +-
ncdap_test/t_auth.c | 205 +-
ncdap_test/t_misc.c | 14 +-
ncdap_test/test_nstride_cached.c | 155 +-
ncdap_test/test_partvar.c | 12 +-
ncdap_test/test_partvar2.c | 12 +-
ncdap_test/test_varm3.c | 31 +-
ncdap_test/testauth.sh | 197 +
ncdap_test/testdata3/Makefile.in | 580 +
ncdap_test/testurl.sh | 110 +
ncdap_test/tst_formatx.sh | 8 +-
ncdap_test/tst_ncdap.sh | 3 +-
ncdap_test/tst_remote.sh | 10 +-
ncdap_test/tst_remote3.sh | 1 -
ncdump/CMakeLists.txt | 8 +-
ncdump/Makefile.am | 20 +-
ncdump/Makefile.in | 1909 +++
ncdump/{cdl4 => cdl}/CMakeLists.txt | 0
ncdump/{cdl4 => cdl}/Makefile.am | 1 +
ncdump/cdl/Makefile.in | 510 +
ncdump/{cdl4 => cdl}/bigf1.cdl | 0
ncdump/{cdl4 => cdl}/bigf2.cdl | 0
ncdump/{cdl4 => cdl}/bigf3.cdl | 0
ncdump/{cdl4 => cdl}/bigr1.cdl | 0
ncdump/{cdl4 => cdl}/bigr2.cdl | 0
ncdump/{cdl4 => cdl}/bigr3.cdl | 0
ncdump/{cdl4 => cdl}/c0.cdl | 0
ncdump/{cdl4 => cdl}/c0.jdl | 0
ncdump/{cdl4 => cdl}/example_good.cdl | 0
ncdump/{cdl4 => cdl}/fills.cdl | 0
ncdump/{cdl4 => cdl}/gfs1.cdl | 0
ncdump/{cdl4 => cdl}/n3time.cdl | 0
ncdump/{cdl4 => cdl}/nc_enddef.cdl | 0
ncdump/{cdl4 => cdl}/nc_sync.cdl | 0
ncdump/{cdl4 => cdl}/pres_temp_4D.cdl | 0
ncdump/{cdl4 => cdl}/ref_const_test.cdl | 0
ncdump/{cdl4 => cdl}/ref_ctest1_nc4.cdl | 0
ncdump/{cdl4 => cdl}/ref_ctest1_nc4.jdl | 0
ncdump/{cdl4 => cdl}/ref_ctest1_nc4c.cdl | 0
ncdump/{cdl4 => cdl}/ref_ctest1_nc4c.jdl | 0
ncdump/{cdl4 => cdl}/ref_dimscope.cdl | 0
ncdump/{cdl4 => cdl}/ref_nctst.cdl | 0
ncdump/{cdl4 => cdl}/ref_nctst_64bit_offset.cdl | 0
ncdump/{cdl4 => cdl}/ref_nctst_netcdf4.cdl | 0
ncdump/{cdl4 => cdl}/ref_nctst_netcdf4_classic.cdl | 0
ncdump/{cdl4 => cdl}/ref_niltest.cdl | 0
ncdump/{cdl4 => cdl}/ref_solar.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_chardata.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_comp.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_comp2.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_comp3.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_econst.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_enum_data.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_group_data.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_h_scalar.cdl | 0
ncdump/cdl/ref_tst_long_charconst.cdl | 9 +
ncdump/{cdl4 => cdl}/ref_tst_names.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_nans.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_nul3.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_nul4.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_opaque_data.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_small.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_solar_1.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_solar_2.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_special_atts.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_special_atts3.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_string_data.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_unicode.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_unlim2.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_utf8.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_vlen_data.cdl | 0
ncdump/{cdl4 => cdl}/ref_tst_vlen_data2.cdl | 0
ncdump/{cdl4 => cdl}/ref_typescope.cdl | 0
ncdump/{cdl4 => cdl}/sfc_pres_temp.cdl | 0
ncdump/{cdl4 => cdl}/simple_xy.cdl | 0
ncdump/{cdl4 => cdl}/small.cdl | 0
ncdump/{cdl4 => cdl}/small2.cdl | 0
ncdump/{cdl4 => cdl}/test0.cdl | 0
ncdump/cdl/tst_chararray.cdl | 24 +
ncdump/{cdl4 => cdl}/tst_ncml.cdl | 0
ncdump/{cdl4 => cdl}/unlimtest1.cdl | 0
ncdump/{cdl4 => cdl}/unlimtest2.cdl | 0
ncdump/ctests.sh | 4 +-
ncdump/env | 14 +-
ncdump/{expected4 => expected}/CMakeLists.txt | 0
ncdump/{expected4 => expected}/Makefile.am | 5 +-
ncdump/expected/Makefile.in | 509 +
ncdump/{expected4 => expected}/c0.dmp | 0
ncdump/{expected4 => expected}/example_good.dmp | 0
ncdump/{expected4 => expected}/fills.dmp | 0
ncdump/{expected4 => expected}/n3time.dmp | 0
ncdump/{expected4 => expected}/nc_enddef.dmp | 0
ncdump/{expected4 => expected}/nc_sync.dmp | 0
ncdump/{expected4 => expected}/pres_temp_4D.dmp | 0
ncdump/{expected4 => expected}/ref_const_test.dmp | 0
ncdump/{expected4 => expected}/ref_ctest1_nc4.dmp | 0
ncdump/{expected4 => expected}/ref_ctest1_nc4c.dmp | 0
ncdump/{expected4 => expected}/ref_dimscope.dmp | 0
ncdump/{expected4 => expected}/ref_nctst.dmp | 0
.../ref_nctst_64bit_offset.dmp | 0
.../{expected4 => expected}/ref_nctst_netcdf4.dmp | 0
.../ref_nctst_netcdf4_classic.dmp | 0
ncdump/{expected4 => expected}/ref_niltest.dmp | 0
ncdump/{expected4 => expected}/ref_solar.dmp | 0
.../{expected4 => expected}/ref_tst_chardata.dmp | 0
ncdump/{expected4 => expected}/ref_tst_comp.dmp | 0
ncdump/{expected4 => expected}/ref_tst_comp2.dmp | 0
ncdump/{expected4 => expected}/ref_tst_comp3.dmp | 0
ncdump/{expected4 => expected}/ref_tst_econst.dmp | 0
.../{expected4 => expected}/ref_tst_enum_data.dmp | 0
.../{expected4 => expected}/ref_tst_group_data.dmp | 0
.../{expected4 => expected}/ref_tst_h_scalar.dmp | 0
ncdump/expected/ref_tst_long_charconst.dmp | 9 +
ncdump/{expected4 => expected}/ref_tst_names.dmp | 0
ncdump/{expected4 => expected}/ref_tst_nans.dmp | 0
ncdump/{expected4 => expected}/ref_tst_nul3.dmp | 0
ncdump/{expected4 => expected}/ref_tst_nul4.dmp | 0
.../ref_tst_opaque_data.dmp | 0
ncdump/{expected4 => expected}/ref_tst_small.dmp | 0
ncdump/{expected4 => expected}/ref_tst_solar_1.dmp | 0
ncdump/{expected4 => expected}/ref_tst_solar_2.dmp | 0
.../ref_tst_special_atts.dmp | 0
.../ref_tst_special_atts3.dmp | 0
.../ref_tst_string_data.dmp | 0
ncdump/{expected4 => expected}/ref_tst_unicode.dmp | 0
ncdump/{expected4 => expected}/ref_tst_unlim2.dmp | 0
ncdump/{expected4 => expected}/ref_tst_utf8.dmp | 0
.../{expected4 => expected}/ref_tst_vlen_data.dmp | 0
.../{expected4 => expected}/ref_tst_vlen_data2.dmp | 0
ncdump/{expected4 => expected}/ref_typescope.dmp | 0
ncdump/{expected4 => expected}/sfc_pres_temp.dmp | 0
ncdump/{expected4 => expected}/simple_xy.dmp | 0
ncdump/{expected4 => expected}/small.dmp | 0
ncdump/{expected4 => expected}/small2.dmp | 0
ncdump/{expected4 => expected}/test0.dmp | 0
ncdump/expected/tst_chararray.dmp | 27 +
ncdump/{expected4 => expected}/tst_ncml.dmp | 0
ncdump/{expected4 => expected}/unlimtest1.dmp | 0
ncdump/{expected4 => expected}/unlimtest2.dmp | 0
ncdump/nccopy.1 | 155 +-
ncdump/nccopy.c | 121 +-
ncdump/ncdump.1 | 3 +-
ncdump/nciter.c | 28 +-
ncdump/ref_tst_mud4_chars.cdl | 114 +
ncdump/run_back_comp_tests.sh | 4 +-
ncdump/run_tests.sh | 5 +
ncdump/tst_bom.sh | 4 +-
ncdump/tst_bug321.cdl | 40 +
ncdump/tst_formatx3.sh | 4 +-
ncdump/tst_formatx4.sh | 4 +-
ncdump/tst_grp_spec.sh | 2 +-
ncdump/tst_h_scalar.sh | 2 +-
ncdump/tst_iter.sh | 2 +-
ncdump/tst_mud.sh | 12 +-
ncdump/tst_nans.c | 8 +-
ncdump/tst_nccopy4.sh | 5 +
ncdump/tst_ncgen4.sh | 2 +-
ncdump/tst_ncgen4_cycle.sh | 2 +-
ncdump/tst_ncgen4_diff.sh | 2 +-
.../{tst_ncgen4_shared.sh => tst_ncgen_shared.sh} | 23 +-
ncdump/tst_netcdf4.sh | 6 +-
ncdump/tst_output.sh | 16 +-
ncdump/vardata.c | 82 +-
ncgen/CMakeLists.txt | 6 +-
ncgen/Make0 | 2 +-
ncgen/Makefile.am | 2 +-
ncgen/Makefile.in | 1200 ++
ncgen/bytebuffer.c | 43 +-
ncgen/ctests.sh | 4 +-
ncgen/data.c | 91 +-
ncgen/data.h | 36 +-
ncgen/env | 24 +-
ncgen/escapes.c | 4 +-
ncgen/ftests.sh | 4 +-
ncgen/genbin.c | 69 +-
ncgen/genchar.c | 345 +-
ncgen/generate.c | 529 +-
ncgen/generr.c | 3 +-
ncgen/genf77.c | 1 -
ncgen/jdata.c | 12 +-
ncgen/jtests.sh | 4 +-
ncgen/main.c | 137 +-
ncgen/ncgen.1 | 69 +-
ncgen/ncgen.h | 2 +-
ncgen/ncgen.l | 4 +-
ncgen/ncgenyy.c | 108 +-
ncgen/odom.c | 23 +
ncgen/odom.h | 4 +-
ncgen/run_nc4_tests.sh | 6 +-
ncgen/semantics.c | 18 +-
ncgen/util.c | 162 +-
ncgen/util.h | 12 +-
ncgen3/Makefile.in | 1161 ++
ncgen3/load.c | 31 +-
ncgen3/ncgen3.1 | 2 +-
nctest/Makefile.in | 1106 ++
nctest/driver.c | 2 +-
netCDFConfig.cmake.in | 40 +
netcdf-config-version.cmake.in | 10 -
netcdf-config.cmake.in | 15 -
oc2/CMakeLists.txt | 4 +-
oc2/Make0 | 16 +-
oc2/Makefile.am | 3 +-
oc2/Makefile.in | 874 ++
oc2/oc.c | 257 +-
oc2/oc.h | 51 +-
oc2/occompile.c | 35 +-
oc2/occonstraints.h | 6 +-
oc2/occurlflags.c | 316 +
oc2/occurlfunctions.c | 570 +-
oc2/occurlfunctions.h | 30 +-
oc2/ocdata.c | 2 +-
oc2/ocdebug.c | 17 +-
oc2/ocdebug.h | 53 +-
oc2/ocdump.c | 44 +-
oc2/ochttp.c | 71 +-
oc2/ochttp.h | 3 +
oc2/ocinternal.c | 372 +-
oc2/ocinternal.h | 117 +-
oc2/oclist.c | 8 +-
oc2/ocrc.c | 795 +-
oc2/ocrc.h | 33 -
oc2/ocread.c | 1 -
oc2/ocuri.c | 216 +-
oc2/ocuri.h | 6 +-
oc2/ocutil.c | 69 +-
oc2/ocutil.h | 9 +-
oc2/xxdr.c | 12 +-
postinstall.sh.in | 133 +
test-driver | 148 +
wjna | 4 +-
398 files changed, 103477 insertions(+), 24261 deletions(-)
diff --git a/BRANCH-STATUS b/BRANCH-STATUS
new file mode 100644
index 0000000..9dc4cd7
--- /dev/null
+++ b/BRANCH-STATUS
@@ -0,0 +1,5 @@
+In middle of fixing Jira NCF-314.
+TODO: Finish setting global option for output type for -3 -4 -6 -7
+ Add short (two-letter) strings for output type
+ Change all man-page docs
+ Do same fixes for ncgen as ncdump
diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake
new file mode 100644
index 0000000..4ee9df9
--- /dev/null
+++ b/CMakeInstallation.cmake
@@ -0,0 +1,130 @@
+#####
+# Contains variables and settings used
+# by the CMake build system in order to
+# build binary installers.
+#####
+
+SET(CPACK_PACKAGE_VENDOR "Unidata")
+
+##
+# Declare exclusions list used when building a source file.
+# NOTE!! This list uses regular expressions, NOT wildcards!!
+##
+SET(CPACK_SOURCE_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}"
+ "/expecttds3/"
+ "/nocacheremote3/"
+ "/nocacheremote4/"
+ "/special3/"
+ "${CMAKE_BINARY_DIR}/*"
+ "/myhtml/*"
+ "/.svn/"
+ "my.*\\\\.sh"
+ "/.deps/"
+ "/.libs"
+ "/html/"
+ ".*\\\\.jar"
+ ".*\\\\.jdl"
+ ".*\\\\.sed"
+ ".*\\\\.proto"
+ ".*\\\\.texi"
+ ".*\\\\.example"
+ "Make0"
+ "/obsolete/"
+ "/unknown/"
+ ".*~"
+ )
+
+###
+# Set options specific to the
+# Nullsoft Installation System (NSIS)
+###
+
+SET(CPACK_PACKAGE_CONTACT "NetCDF Support <support-netcdf at unidata.ucar.edu>")
+
+IF(WIN32)
+ SET(CPACK_NSIS_MODIFY_PATH ON)
+ SET(CPACK_NSIS_DISPLAY_NAME "NetCDF ${netCDF_VERSION}")
+ SET(CPACK_NSIS_PACKAGE_NAME "NetCDF ${netCDF_VERSION}")
+ SET(CPACK_NSIS_HELP_LINK "http://www.unidata.ucar.edu/netcdf")
+ SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.unidata.ucar.edu/netcdf")
+ SET(CPACK_NSIS_CONTACT "support-netcdf at unidata.ucar.edu")
+ SET(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
+ SET(CPACK_NSIS_MENU_LINKS
+ "http://www.unidata.ucar.edu/netcdf" "Unidata Website"
+ "http://www.unidata.ucar.edu/netcdf/docs" "NetCDF Stable Documentation"
+ "http://www.unidata.ucar.edu/netcdf/docs_rc" "NetCDF Unstable Documentation")
+
+ENDIF()
+
+###
+# Set debian-specific options used when
+# creating .deb.
+#
+# http://www.cmake.org/Wiki/CMake:CPackPackageGenerators
+###
+
+# This should be set using the output of dpkg --print-architecture.
+FIND_PROGRAM(NC_DPKG NAMES dpkg)
+IF(NC_DPKG)
+ # Define a macro for getting the dpkg architecture.
+ MACRO(getdpkg_arch arch)
+ exec_program("${NC_DPKG}" ARGS "--print-architecture" OUTPUT_VARIABLE "${arch}")
+ ENDMACRO(getdpkg_arch)
+ getdpkg_arch(dpkg_arch)
+
+ SET(CPACK_DEBIAN_PACKAGE_NAME "netcdf4-dev")
+ SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${dpkg_arch}")
+ SET(CPACK_DEBIAN_PACKAGE_DEPENDS "zlib1g (>= 1:1.2.3.4), libhdf5-7 (>= 1.8.11), libcurl4-openssl-dev (>= 7.22.0)")
+ENDIF()
+
+
+##
+# Set Copyright, License info for CPack.
+##
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/COPYRIGHT
+ ${CMAKE_CURRENT_BINARY_DIR}/COPYRIGHT.txt
+ @ONLY
+ )
+
+SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYRIGHT.txt")
+IF(NOT CPACK_PACK_VERSION)
+ SET(CPACK_PACKAGE_VERSION ${VERSION})
+ENDIF()
+
+IF(UNIX)
+ SET(CPACK_GENERATOR "STGZ" "TBZ2" "DEB" "ZIP")
+ENDIF()
+
+IF(APPLE)
+ SET(CPACK_SOURCE_GENERATOR "TGZ")
+ SET(CPACK_GENERATOR "PackageMaker" "STGZ" "TBZ2" "TGZ" "ZIP")
+ENDIF()
+
+##
+# Create an 'uninstall' target.
+##
+CONFIGURE_FILE(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE @ONLY)
+
+
+ADD_CUSTOM_TARGET(uninstall
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+
+##
+# Customize some of the package component descriptions
+##
+
+set(CPACK_COMPONENT_UTILITIES_DESCRIPTION
+ "The NetCDF-C Utilities")
+set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION
+ "The NetCDF-C Libraries")
+set(CPACK_COMPONENT_HEADERS_DESCRIPTION
+ "Header files for use with NetCDF-C")
+set(CPACK_COMPONENT_DEPENDENCIES_DESCRIPTION
+ "Dependencies for this build of NetCDF-C")
+set(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION
+ "The NetCDF-C user documentation.")
+
+INCLUDE(CPack)
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 887d35a..9bd4101 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,16 +1,17 @@
## This is a CMake file, part of Unidata's netCDF package.
-# Copyright 2012-2013, see the COPYRIGHT file for more information.
+# Copyright 2012-2014, see the COPYRIGHT file for more information.
##################################
# Set Project Properties
##################################
#Minimum required CMake Version
-cmake_minimum_required(VERSION 2.8.9)
+cmake_minimum_required(VERSION 2.8.12)
#Project Name
project(netCDF C)
set(PACKAGE "netCDF" CACHE STRING "")
+
#####
# Version Info:
#
@@ -22,12 +23,13 @@ set(PACKAGE "netCDF" CACHE STRING "")
# http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning
#####
-SET(netCDF_VERSION_MAJOR 4)
-SET(netCDF_VERSION_MINOR 3)
-SET(netCDF_VERSION_PATCH 3)
-SET(netCDF_VERSION_NOTE "-rc1")
-SET(netCDF_VERSION ${netCDF_VERSION_MAJOR}.${netCDF_VERSION_MINOR}.${netCDF_VERSION_PATCH}${netCDF_VERSION_NOTE})
+SET(NC_VERSION_MAJOR 4)
+SET(NC_VERSION_MINOR 3)
+SET(NC_VERSION_PATCH 3)
+SET(NC_VERSION_NOTE "-rc3")
+SET(netCDF_VERSION ${NC_VERSION_MAJOR}.${NC_VERSION_MINOR}.${NC_VERSION_PATCH}${NC_VERSION_NOTE})
SET(VERSION ${netCDF_VERSION})
+SET(NC_VERSION ${netCDF_VERSION})
SET(netCDF_LIB_VERSION 7.2.0)
SET(netCDF_SO_VERSION 7)
SET(PACKAGE_VERSION ${VERSION})
@@ -44,13 +46,6 @@ IF(UNAME)
getuname(cpu -m)
set(BUILDNAME "${osname}-${osrel}-${cpu}" CACHE STRING "Build name variable for CDash")
ENDIF()
-
-# Determine if DOXYGEN and DOT are available. These will be used
-# when building the documentation.
-
-FIND_PACKAGE(Doxygen)
-FIND_PROGRAM(NC_DOT NAMES dot)
-
# For CMAKE_INSTALL_LIBDIR
INCLUDE(GNUInstallDirs)
@@ -99,8 +94,19 @@ ENDIF()
STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
# Determine the configure date.
-EXECUTE_PROCESS(COMMAND date
- OUTPUT_VARIABLE CONFIG_DATE)
+
+EXECUTE_PROCESS(
+ COMMAND date
+ OUTPUT_VARIABLE CONFIG_DATE
+ )
+IF(CONFIG_DATE)
+ string(STRIP ${CONFIG_DATE} CONFIG_DATE)
+ENDIF()
+##
+# Allow for extra dependencies.
+##
+
+SET(EXTRA_DEPS "")
################################
# End Project Properties
@@ -143,12 +149,13 @@ IF(BUILD_SHARED_LIBS)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
ENDIF()
+OPTION(FIND_SHARED_LIBS "Find shared variants of dependent libraries" ${BUILD_SHARED_LIBS})
+
# Set some default linux gcc & apple compiler options for
# debug builds.
IF(CMAKE_COMPILER_IS_GNUCC OR APPLE)
OPTION(ENABLE_COVERAGE_TESTS "Enable compiler flags needed to perform coverage tests." OFF)
OPTION(ENABLE_CONVERSION_WARNINGS "Enable warnings for implicit conversion from 64 to 32-bit datatypes." ON)
- OPTION(ENABLE_USED_VAR_PAR_WARNINGS "Enable warnings for unused parameters and variables. Creates very noisy output." OFF)
OPTION(ENABLE_LARGE_FILE_TESTS "Enable large file tests." OFF)
# Debugging flags
@@ -169,14 +176,7 @@ IF(CMAKE_COMPILER_IS_GNUCC OR APPLE)
MESSAGE(STATUS "Coverage Tests: On.")
ENDIF()
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O2")
-
- # Unused var and parameter warnings create a lot of noise.
- IF(NOT ENABLE_UNUSED_VAR_PAR_WARNINGS)
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-variable -Wno-unused-parameter")
- ENDIF()
-
- # Warnings for 64-to-32 bit conversions.
+ # Warnings for 64-to-32 bit conversions.
IF(ENABLE_CONVERSION_WARNINGS)
CHECK_C_COMPILER_FLAG(-Wconversion CC_HAS_WCONVERSION)
CHECK_C_COMPILER_FLAG(-Wshorten-64-to-32 CC_HAS_SHORTEN_64_32)
@@ -207,220 +207,6 @@ ENDIF()
################################
-################################
-# Define Utility Macros
-################################
-
-# Macro to append files to the EXTRA_DIST files.
-SET(EXTRA_DIST "")
-MACRO(ADD_EXTRA_DIST files)
- FOREACH(F ${files})
- SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_CURRENT_SOURCE_DIR}/${F})
- SET(EXTRA_DIST ${EXTRA_DIST} PARENT_SCOPE)
- ENDFOREACH()
-ENDMACRO()
-
-# A basic script used to convert m4 files
-FIND_PROGRAM(NC_M4 NAMES m4)
-MACRO(GEN_m4 filename)
- IF(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c)
- ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c
- COMMAND ${NC_M4}
- ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.m4 > ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c
- VERBATIM
- )
- ENDIF()
-ENDMACRO(GEN_m4)
-
-# Binary tests, but ones which depend on value of 'TEMP_LARGE' being defined.
-MACRO(add_bin_env_temp_large_test prefix F)
- ADD_EXECUTABLE(${prefix}_${F} ${F}.c)
- TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf)
- IF(MSVC)
- SET_TARGET_PROPERTIES(${prefix}_${F}
- PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
- )
- ENDIF()
-
- ADD_TEST(${prefix}_${F} bash "-c" "TEMP_LARGE=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}")
- IF(MSVC)
- SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests")
- ENDIF()
-ENDMACRO()
-
-
-# Tests which are binary, but depend on a particular environmental variable.
-MACRO(add_bin_env_test prefix F)
- ADD_EXECUTABLE(${prefix}_${F} ${F}.c)
- TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf)
- IF(MSVC)
- SET_TARGET_PROPERTIES(${prefix}_${F}
- PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
- )
- ENDIF()
-
- ADD_TEST(${prefix}_${F} bash "-c" "TOPSRCDIR=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}")
- IF(MSVC)
- SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests")
- ENDIF()
-ENDMACRO()
-
-# Build a binary used by a script, but don't make a test out of it.
-MACRO(build_bin_test F)
- ADD_EXECUTABLE(${F} ${F}.c)
- TARGET_LINK_LIBRARIES(${F} netcdf)
- IF(MSVC)
- SET_TARGET_PROPERTIES(${F}
- PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
- )
- ENDIF()
-ENDMACRO()
-
-# Binary tests which are used by a script looking for a specific name.
-MACRO(add_bin_test_no_prefix F)
- build_bin_test(${F})
- ADD_TEST(${F} ${EXECUTABLE_OUTPUT_PATH}/${F})
- IF(MSVC)
- SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/")
- ENDIF()
-ENDMACRO()
-
-# Binary tests which are used by a script looking for a specific name.
-MACRO(build_bin_test_no_prefix F)
- build_bin_test(${F})
- ADD_TEST(${F} ${EXECUTABLE_OUTPUT_PATH}/${F})
- IF(MSVC)
- SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/")
- ENDIF()
-ENDMACRO()
-
-MACRO(add_bin_test prefix F)
- ADD_EXECUTABLE(${prefix}_${F} ${F}.c)
- TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf)
- IF(MSVC)
- SET_TARGET_PROPERTIES(${prefix}_${F}
- PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
- )
- ENDIF()
- ADD_TEST(${prefix}_${F} ${EXECUTABLE_OUTPUT_PATH}/${prefix}_${F})
- IF(MSVC)
- SET_PROPERTY(TEST ${prefix}_${F} PROPERTY FOLDER "tests/")
- ENDIF()
-ENDMACRO()
-
-# A cmake script to print out information at the end of the configuration step.
-MACRO(print_conf_summary)
- MESSAGE("")
- MESSAGE("")
- MESSAGE("Configuration Summary:")
- MESSAGE("")
- MESSAGE(STATUS "Building Shared Libraries: ${BUILD_SHARED_LIBS}")
- MESSAGE(STATUS "Building netCDF-4: ${ENABLE_NETCDF_4}")
- MESSAGE(STATUS "Building DAP Support: ${ENABLE_DAP}")
- MESSAGE(STATUS "Building Utilities: ${BUILD_UTILITIES}")
- IF(CMAKE_PREFIX_PATH)
- MESSAGE(STATUS "CMake Prefix Path: ${CMAKE_PREFIX_PATH}")
- ENDIF()
- MESSAGE("")
-
- IF(${STATUS_PNETCDF} OR ${STATUS_PARALLEL})
- MESSAGE("Building Parallel NetCDF")
- MESSAGE(STATUS "Using pnetcdf: ${STATUS_PNETCDF}")
- MESSAGE(STATUS "Using Parallel IO: ${STATUS_PARALLEL}")
- MESSAGE("")
- ENDIF()
-
- MESSAGE("Tests Enabled: ${ENABLE_TESTS}")
- IF(ENABLE_TESTS)
- MESSAGE(STATUS "DAP Remote Tests: ${ENABLE_DAP_REMOTE_TESTS}")
- MESSAGE(STATUS "DAP AUTH Tests: ${ENABLE_DAP_AUTH_TESTS}")
- MESSAGE(STATUS "Extra Tests: ${ENABLE_EXTRA_TESTS}")
- MESSAGE(STATUS "Coverage Tests: ${ENABLE_COVERAGE_TESTS}")
- MESSAGE(STATUS "Parallel Tests: ${ENABLE_PARALLEL_TESTS}")
- MESSAGE(STATUS "Large File Tests: ${ENABLE_LARGE_FILE_TESTS}")
- ENDIF()
-
- MESSAGE("")
- MESSAGE("Compiler:")
- MESSAGE("")
- MESSAGE(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
- MESSAGE(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}")
- MESSAGE(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
- IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
- MESSAGE(STATUS "CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG}")
- ENDIF()
- IF("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE")
- MESSAGE(STATUS "CMAKE_C_FLAGS_RELEASE: ${CMAKE_C_FLAGS_RELEASE}")
- ENDIF()
-
- MESSAGE(STATUS "Linking against: ${ALL_TLL_LIBS}")
-
- MESSAGE("")
-ENDMACRO()
-
-# Shell script Macro
-MACRO(add_sh_test prefix F)
- IF(NOT MSVC)
- ADD_TEST(${prefix}_${F} bash "-c" "export srcdir=${CMAKE_CURRENT_SOURCE_DIR};export TOPSRCDIR=${CMAKE_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}/${F}.sh")
- ENDIF()
-ENDMACRO()
-
-# Macro for replacing '/MD' with '/MT'.
-# Used only on Windows, /MD tells VS to use the shared
-# CRT libs, MT tells VS to use the static CRT libs.
-#
-# Taken From:
-# http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F
-#
-MACRO(specify_static_crt_flag)
- SET(vars
- CMAKE_C_FLAGS
- CMAKE_C_FLAGS_DEBUG
- CMAKE_C_FLAGS_MINSIZEREL
- CMAKE_C_FLAGS_RELWITHDEBINFO
- CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG
- CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL
- CMAKE_CXX_FLAGS_RELWITHDEBINFO)
-
- FOREACH(flag_var ${vars})
- IF(${flag_var} MATCHES "/MD")
- STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
- ENDIF()
- ENDFOREACH()
-
- FOREACH(flag_var ${vars})
- MESSAGE(STATUS " '${flag_var}': ${${flag_var}}")
- ENDFOREACH()
- MESSAGE(STATUS "")
-ENDMACRO()
-
-# A function used to create autotools-style 'yes/no' definitions.
-# If a variable is set, it 'yes' is returned. Otherwise, 'no' is
-# returned.
-FUNCTION(is_enabled feature ret_val)
- IF(${feature})
- SET(${ret_val} "yes" PARENT_SCOPE)
- ELSE()
- SET(${ret_val} "no" PARENT_SCOPE)
- ENDIF(${feature})
-ENDFUNCTION()
-
-# A function used to create autotools-style 'yes/no' definitions.
-# If a variable is set, it 'yes' is returned. Otherwise, 'no' is
-# returned.
-FUNCTION(is_disabled feature ret_val)
- IF(${feature})
- SET(${ret_val} "no" PARENT_SCOPE)
- ELSE()
- SET(${ret_val} "yes" PARENT_SCOPE)
- ENDIF(${feature})
-ENDFUNCTION()
-
-################################
-# End Macro Definitions
-################################
-
##
# Configuration for post-install RPath
@@ -434,24 +220,21 @@ IF(NOT MSVC)
# (but later on when installing)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
- # Stanza for Apple RPATH.
- # See: http://www.cmake.org/pipermail/cmake/2011-April/043826.html
- #
- IF(APPLE)
- SET(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
- ENDIF(APPLE)
-
- SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ if(APPLE)
+ set(CMAKE_MACOSX_RPATH ON)
+ endif(APPLE)
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
- # the RPATH to be used when installing, but only if it's not a system directory
+ # the RPATH to be used when installing,
+ # but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
ENDIF("${isSystemDir}" STREQUAL "-1")
+
ENDIF()
##
@@ -504,7 +287,7 @@ OPTION(BUILD_UTILITIES "Build ncgen, ncgen3, ncdump." ON)
OPTION(ENABLE_MMAP "Use MMAP." OFF)
IF(ENABLE_MMAP)
IF(NOT HAVE_MREMAP)
- MESSAGE(STATUS "mremap not found: disabling MMAP support.")
+ MESSAGE(WARNING "mremap not found: disabling MMAP support.")
SET(ENABLE_MMAP OFF)
ELSE()
SET(HAVE_MMAP ON)
@@ -528,6 +311,31 @@ OPTION(ENABLE_LOGGING "Enable Logging." OFF)
IF(ENABLE_LOGGING)
SET(LOGGING ON)
ENDIF()
+
+# Option to automatically build netcdf-fortran.
+IF(NOT MSVC)
+ OPTION(ENABLE_REMOTE_FORTRAN_BOOTSTRAP "Download and build netcdf-fortran automatically (EXPERIMENTAL)." OFF)
+ IF(ENABLE_REMOTE_FORTRAN_BOOTSTRAP)
+ SET(BUILD_FORTRAN ON)
+ ENDIF()
+ IF(BUILD_FORTRAN)
+ CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/postinstall.sh.in"
+ "${CMAKE_BINARY_DIR}/postinstall.sh"
+ @ONLY)
+
+ ADD_CUSTOM_TARGET(build-netcdf-fortran
+ COMMAND sh -c "${CMAKE_BINARY_DIR}/postinstall.sh -t cmake -a build"
+ DEPENDS netcdf
+ )
+
+ ADD_CUSTOM_TARGET(install-netcdf-fortran
+ COMMAND sh -c "${CMAKE_BINARY_DIR}/postinstall.sh -t cmake -a install"
+ DEPENDS build-netcdf-fortran
+ )
+
+ ENDIF(BUILD_FORTRAN)
+ENDIF()
+
# Option to use HDF4
OPTION(ENABLE_HDF4 "Build netCDF-4 with HDF5 read capability(HDF4, HDF5 and Zlib required)." OFF)
IF(ENABLE_HDF4)
@@ -575,13 +383,13 @@ IF(ENABLE_HDF4)
MESSAGE(STATUS "Found JPEG libraries: ${JPEG_LIB}")
# Option to enable HDF4 file tests.
- OPTION(ENABLE_HDF4_FILE_TESTS "Run HDF4 file tests. This fetches sample HDF4 files from the Unidata ftp site to test with(requires wget)." ON)
+ OPTION(ENABLE_HDF4_FILE_TESTS "Run HDF4 file tests. This fetches sample HDF4 files from the Unidata ftp site to test with (requires curl)." ON)
IF(ENABLE_HDF4_FILE_TESTS)
- FIND_PROGRAM(PROG_WGET NAMES wget)
- IF(PROG_WGET)
+ FIND_PROGRAM(PROG_CURL NAMES curl)
+ IF(PROG_CURL)
SET(USE_HDF4_FILE_TESTS ON)
ELSE()
- MESSAGE(STATUS "Unable to locate 'wget'. Disabling hdf4 file tests.")
+ MESSAGE(STATUS "Unable to locate 'curl'. Disabling hdf4 file tests.")
SET(USE_HDF4_FILE_TESTS OFF)
ENDIF()
ENDIF()
@@ -608,7 +416,7 @@ IF(ENABLE_NETCDF_4)
ENDIF()
# Option for building RPC
-OPTION(ENABLE_RPC OFF "Enable RPC Client and Server.")
+OPTION(ENABLE_RPC "Enable RPC Client and Server." OFF)
IF(ENABLE_RPC)
SET(BUILD_RPC ON CACHE BOOL "")
ENDIF()
@@ -626,23 +434,28 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
# specify HDF5_HL_LIB, HDF5_LIB, HDF5_INCLUDE_DIR manually.
IF(HDF5_LIB AND HDF5_HL_LIB AND HDF5_INCLUDE_DIR)
SET(HDF5_LIBRARIES ${HDF5_LIB} ${HDF5_HL_LIB})
- SET(HDF5_C_LIBRARY ${HDF5_LIB})
- SET(HDF5_HL_LIBRARY ${HDF5_HL_LIB})
+ SET(HDF5_C_LIBRARIES ${HDF5_LIB})
+ SET(HDF5_HL_LIBRARIES ${HDF5_HL_LIB})
MESSAGE(STATUS "Using HDF5 Library: ${HDF5_LIB}")
MESSAGE(STATUS "Using HDF5_HL LIbrary: ${HDF5_HL_LIB}")
ELSE()
+ IF(FIND_SHARED_LIBS)
+ SET(HDF5_USE_STATIC_LIBRARIES OFF)
+ ELSE()
+ SET(HDF5_USE_STATIC_LIBRARIES ON)
+ ENDIF()
IF(MSVC)
FIND_PACKAGE(HDF5 COMPONENTS C HL NO_MODULE REQUIRED)
ELSE()
FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED)
ENDIF()
ENDIF()
-
+
IF(NOT MSVC)
# Depending on the install, either HDF5_hdf_library or
- # HDF5_C_LIBRARY may be defined. We must check for either.
- IF(HDF5_C_LIBRARY)
- SET(HDF5_hdf5_LIBRARY ${HDF5_C_LIBRARY})
+ # HDF5_C_LIBRARIES may be defined. We must check for either.
+ IF(HDF5_C_LIBRARIES)
+ SET(HDF5_hdf5_LIBRARY ${HDF5_C_LIBRARIES})
ENDIF()
# Find out if HDF5 was built with parallel support.
@@ -671,11 +484,17 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
ENDIF(NOT MSVC)
# Assert HDF5 version.
- SET(HDF5_VERSION_REQUIRED 1.8.6)
- execute_process(COMMAND sh -c "h5cc -showconfig | grep -i \"HDF5 version\" | sed 's/^.*[^0-9]\\([0-9]*\\.[0-9]*\\.[0-9]*\\).*$/\\1/'"
- OUTPUT_VARIABLE HDF5_VERSION
- ERROR_QUIET
- )
+ SET(HDF5_VERSION_REQUIRED 1.8.10)
+
+ IF(HDF5_IS_PARALLEL)
+ SET(HDF5_CC h5pcc)
+ ELSE()
+ SET(HDF5_CC h5cc)
+ ENDIF()
+
+ execute_process(COMMAND sh -c "${HDF5_CC} -showconfig | grep -i 'HDF5 version' | cut -d: -f2 | tr -d ' '"
+ OUTPUT_VARIABLE HDF5_VERSION
+ ERROR_QUIET)
# It cannot be assumed that libhdf5.settings exists. If it doesn't,
# the call to h5cc will have failed. At this point we will have to
@@ -687,6 +506,8 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
MESSAGE(FATAL_ERROR
"netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
+ ELSE()
+ MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}")
ENDIF()
ENDIF()
@@ -711,7 +532,7 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
#Check to see if H5Z_SZIP exists in HDF5_Libraries. If so, we must use szip.
IF(USE_SZIP)
- FIND_PACKAGE(SZIP NO_MODULE)
+ FIND_PACKAGE(SZIP NO_MODULE REQUIRED)
INCLUDE_DIRECTORIES(${SZIP_INCLUDE_DIR})
ENDIF()
@@ -765,6 +586,15 @@ IF(ENABLE_DAP)
CHECK_C_SOURCE_COMPILES("
#include <curl/curl.h>
int main() {int x = CURLINFO_RESPONSE_CODE;}" HAVE_CURLINFO_RESPONSE_CODE)
+
+ # Check to see if CURLOPT_CHUNK_BGN_FUNCTION is defined.
+ # It showed up in curl 7.21.0.
+ CHECK_C_SOURCE_COMPILES("
+ #include <curl/curl.h>
+ int main() {int x = CURLOPT_CHUNK_BGN_FUNCTION;}" HAVE_CURLOPT_CHUNK_BGN_FUNCTION)
+
+
+
ENDIF()
# Check to see if libtool supports
@@ -837,8 +667,34 @@ IF(ENABLE_TESTS)
ENDIF()
-# Enable Large file tests
-IF(ENABLE_LARGE_FILE_TESTS)
+###
+# Allow the user to specify libraries
+# to link against, similar to automakes 'LIBS' variable.
+###
+SET(NC_EXTRA_DEPS "" CACHE STRING "Additional libraries to link against.")
+IF(NC_EXTRA_DEPS)
+ STRING(REPLACE " " ";" DEPS_LIST ${NC_EXTRA_DEPS})
+ FOREACH(_DEP ${DEPS_LIST})
+ STRING(REGEX REPLACE "^-l" "" _LIB ${_DEP})
+ FIND_LIBRARY("${_LIB}_DEP" NAMES "${_LIB}" "lib${_LIB}")
+ MESSAGE(${${_LIB}_DEP})
+ IF(NOT "${_LIB}_DEP")
+ MESSAGE(FATAL_ERROR "Error finding ${_LIB}.")
+ ELSE()
+ MESSAGE(STATUS "Found ${_LIB}: ${${_LIB}_DEP}")
+ ENDIF()
+ SET(EXTRA_DEPS ${EXTRA_DEPS} "${${_LIB}_DEP}")
+ ENDFOREACH()
+ MESSAGE("Extra deps: ${EXTRA_DEPS}")
+ LIST(REMOVE_DUPLICATES EXTRA_DEPS)
+ENDIF()
+###
+# End user-specified dependent libraries.
+###
+
+
+# Enable Large file tests
+IF(ENABLE_LARGE_FILE_TESTS)
SET(LARGE_FILE_TESTS ON)
ENDIF()
@@ -850,7 +706,7 @@ IF(ENABLE_FSYNC)
SET(USE_FSYNC ON)
ENDIF()
-# Temporary
+# Temporary
OPTION (ENABLE_JNA "Enable jna bug fix code." OFF)
IF(ENABLE_JNA)
SET(JNA ON)
@@ -907,6 +763,7 @@ IF(ENABLE_PNETCDF)
SET(HAVE_LIBPNETCDF ON)
# pnetcdf => parallel
SET(STATUS_PARALLEL "ON")
+ SET(USE_PARALLEL ON)
ENDIF()
# Enable Parallel Tests.
@@ -916,36 +773,46 @@ IF(ENABLE_PARALLEL_TESTS AND USE_PARALLEL)
ENDIF()
# Determine whether or not to generate documentation.
-OPTION(ENABLE_DOXYGEN "Enable generation of doxygen." OFF)
+OPTION(ENABLE_DOXYGEN "Enable generation of doxygen-based documentation." OFF)
IF(ENABLE_DOXYGEN)
- IF(DOXYGEN_FOUND)
- # Offer the option to build internal documentation.
- OPTION(ENABLE_INTERNAL_DOCS "Build internal documentation. This is of interest to developers only." OFF)
- IF(ENABLE_INTERNAL_DOCS)
- SET(BUILD_INTERNAL_DOCS YES CACHE STRING "")
- ELSE()
- SET(BUILD_INTERNAL_DOCS NO CACHE STRING "")
- ENDIF()
-
- # Option to turn on the TODO list in the doxygen-generated documentation.
- OPTION(ENABLE_DOXYGEN_TASKS "Turn on test, todo, bug lists in documentation. This is of interest to developers only." OFF)
- IF(ENABLE_DOXYGEN_TASKS)
- SET(SHOW_DOXYGEN_TAG_LIST YES CACHE STRING "")
- ELSE(ENABLE_DOXYGEN_TASKS)
- SET(SHOW_DOXYGEN_TODO_LIST NO CACHE STRING "")
- ENDIF(ENABLE_DOXYGEN_TASKS)
-
- # Specify whether or not 'dot' was found on the system path.
- IF(NC_DOT)
- SET(HAVE_DOT YES CACHE STRING "")
- ELSE(NC_DOT)
- SET(HAVE_DOT NO CACHE_STRING "")
- ENDIF(NC_DOT)
-
- ELSE(DOXYGEN_FOUND)
- MESSAGE(STATUS "Unable to build internal documentation. Doxygen does not appear to be on your executable path. Install doxygen and configure the project again.")
- SET(ENABLE_DOXYGEN OFF)
- ENDIF(DOXYGEN_FOUND)
+ FIND_PACKAGE(Doxygen REQUIRED)
+ # Offer the option to build internal documentation.
+ OPTION(ENABLE_INTERNAL_DOCS "Build internal documentation. This is of interest to developers only." OFF)
+ IF(ENABLE_INTERNAL_DOCS)
+ SET(BUILD_INTERNAL_DOCS YES CACHE STRING "")
+ ELSE()
+ SET(BUILD_INTERNAL_DOCS NO CACHE STRING "")
+ ENDIF()
+
+ OPTION(DOXYGEN_ENABLE_SERVER_SIDE_SEARCH "Enable doxygen server-side search. This is of interest to developers only." OFF)
+ IF(DOXYGEN_ENABLE_SERVER_SIDE_SEARCH)
+ SET(SERVER_SIDE_SEARCH YES CACHE STRING "")
+ ELSE()
+ SET(SERVER_SIDE_SEARCH NO CACHE STRING "")
+ ENDIF()
+ # Option to turn on the TODO list in the doxygen-generated documentation.
+ OPTION(DOXYGEN_ENABLE_TASKS "Turn on test, todo, bug lists in documentation. This is of interest to developers only." OFF)
+ IF(DOXYGEN_ENABLE_TASKS)
+ SET(SHOW_DOXYGEN_TAG_LIST YES CACHE STRING "")
+ ELSE(DOXYGEN_ENABLE_TASKS)
+ SET(SHOW_DOXYGEN_TODO_LIST NO CACHE STRING "")
+ ENDIF(DOXYGEN_ENABLE_TASKS)
+
+ OPTION(ENABLE_DOXYGEN_PDF_OUTPUT "[EXPERIMENTAL] Turn on PDF output for Doxygen-generated documentation." OFF)
+
+ IF(ENABLE_DOXYGEN_PDF_OUTPUT)
+ SET(NC_ENABLE_DOXYGEN_PDF_OUTPUT "YES" CACHE STRING "")
+ ELSE()
+ SET(NC_ENABLE_DOXYGEN_PDF_OUTPUT "NO" CACHE STRING "")
+ ENDIF()
+
+ FIND_PROGRAM(NC_DOT NAMES dot)
+ # Specify whether or not 'dot' was found on the system path.
+ IF(NC_DOT)
+ SET(HAVE_DOT YES CACHE STRING "")
+ ELSE(NC_DOT)
+ SET(HAVE_DOT NO CACHE STRING "")
+ ENDIF(NC_DOT)
ENDIF()
# By default, MSVC has a stack size of 1000000.
@@ -964,7 +831,7 @@ ENDIF()
# Set some of the options as advanced.
MARK_AS_ADVANCED(ENABLE_INTERNAL_DOCS VALGRIND_TESTS ENABLE_PNETCDF ENABLE_COVERAGE_TESTS)
MARK_AS_ADVANCED(ENABLE_DAP_REMOTE_TESTS ENABLE_DAP_LONG_TESTS USE_REMOTE_CDASH)
-
+MARK_AS_ADVANCED(DOXYGEN_ENABLE_SERVER_SIDE_SEARCH DOXYGEN_ENABLE_TASKS)
################################
# Option checks
################################
@@ -1019,6 +886,7 @@ CHECK_INCLUDE_FILE("BaseTsd.h" HAVE_BASETSD_H)
CHECK_INCLUDE_FILE("stddef.h" HAVE_STDDEF_H)
# Type checks
+CHECK_TYPE_SIZE("void*" SIZEOF_VOIDSTAR)
CHECK_TYPE_SIZE("char" SIZEOF_CHAR)
CHECK_TYPE_SIZE("double" SIZEOF_DOUBLE)
CHECK_TYPE_SIZE("float" SIZEOF_FLOAT)
@@ -1062,6 +930,7 @@ CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR)
CHECK_FUNCTION_EXISTS(strcat HAVE_STRCAT)
CHECK_FUNCTION_EXISTS(strcpy HAVE_STRCPY)
CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
+CHECK_FUNCTION_EXISTS(strndup HAVE_STRNDUP)
CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
CHECK_FUNCTION_EXISTS(strtod HAVE_STRTOD)
CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL)
@@ -1083,6 +952,243 @@ CHECK_FUNCTION_EXISTS(_filelengthi64 HAVE_FILE_LENGTH_I64)
# End system inspection checks.
#####
+################################
+# Define Utility Macros
+################################
+
+# Macro to append files to the EXTRA_DIST files.
+SET(EXTRA_DIST "")
+MACRO(ADD_EXTRA_DIST files)
+ FOREACH(F ${files})
+ SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_CURRENT_SOURCE_DIR}/${F})
+ SET(EXTRA_DIST ${EXTRA_DIST} PARENT_SCOPE)
+ ENDFOREACH()
+ENDMACRO()
+
+# A basic script used to convert m4 files
+FIND_PROGRAM(NC_M4 NAMES m4)
+IF(NOT MSVC)
+ IF(NOT NC_M4)
+ MESSAGE(FATAL "Cannot find 'm4' utility. Install m4 and try again.")
+ ENDIF(NOT NC_M4)
+ENDIF(NOT MSVC)
+
+MACRO(GEN_m4 filename)
+ IF(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c
+ COMMAND ${NC_M4}
+ ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.m4 > ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c
+ VERBATIM
+ )
+ ENDIF()
+ENDMACRO(GEN_m4)
+
+# Binary tests, but ones which depend on value of 'TEMP_LARGE' being defined.
+MACRO(add_bin_env_temp_large_test prefix F)
+ ADD_EXECUTABLE(${prefix}_${F} ${F}.c)
+ TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf)
+ IF(MSVC)
+ SET_TARGET_PROPERTIES(${prefix}_${F}
+ PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
+ )
+ ENDIF()
+
+ ADD_TEST(${prefix}_${F} bash "-c" "TEMP_LARGE=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}")
+ IF(MSVC)
+ SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests")
+ ENDIF()
+ENDMACRO()
+
+
+# Tests which are binary, but depend on a particular environmental variable.
+MACRO(add_bin_env_test prefix F)
+ ADD_EXECUTABLE(${prefix}_${F} ${F}.c)
+ TARGET_LINK_LIBRARIES(${prefix}_${F} netcdf)
+ IF(MSVC)
+ SET_TARGET_PROPERTIES(${prefix}_${F}
+ PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
+ )
+ ENDIF()
+
+ ADD_TEST(${prefix}_${F} bash "-c" "TOPSRCDIR=${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${prefix}_${F}")
+ IF(MSVC)
+ SET_PROPERTY(TARGET ${prefix}_${F} PROPERTY FOLDER "tests")
+ ENDIF()
+ENDMACRO()
+
+# Build a binary used by a script, but don't make a test out of it.
+MACRO(build_bin_test F)
+ ADD_EXECUTABLE(${F} ${F}.c)
+ TARGET_LINK_LIBRARIES(${F} netcdf)
+ IF(MSVC)
+ SET_TARGET_PROPERTIES(${F}
+ PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
+ )
+ ENDIF()
+ENDMACRO()
+
+# Binary tests which are used by a script looking for a specific name.
+MACRO(add_bin_test_no_prefix F)
+ build_bin_test(${F})
+ ADD_TEST(${F} ${EXECUTABLE_OUTPUT_PATH}/${F})
+ IF(MSVC)
+ SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/")
+ ENDIF()
+ENDMACRO()
+
+# Binary tests which are used by a script looking for a specific name.
+MACRO(build_bin_test_no_prefix F)
+ build_bin_test(${F})
+ ADD_TEST(${F} ${EXECUTABLE_OUTPUT_PATH}/${F})
+ IF(MSVC)
+ SET_PROPERTY(TEST ${F} PROPERTY FOLDER "tests/")
+ ENDIF()
+ENDMACRO()
+
+MACRO(add_bin_test prefix F)
+ ADD_EXECUTABLE(${prefix}_${F} ${F}.c)
+ # Some tests explicitly depend on HDF5, e.g., ncdump_tst_h_scalar.
+ # Some others depend on HDF5_HL, e.g., nc_test4_tst_interops.
+ # Hence, we have to link the tests against those libraries.
+ # TODO see if we can implement a more fine-grained approach
+ TARGET_LINK_LIBRARIES(${prefix}_${F}
+ netcdf
+ ${HDF5_C_LIBRARIES}
+ ${HDF5_HL_LIBRARIES}
+ )
+ IF(MSVC)
+ SET_TARGET_PROPERTIES(${prefix}_${F}
+ PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
+ )
+ ENDIF()
+ ADD_TEST(${prefix}_${F} ${EXECUTABLE_OUTPUT_PATH}/${prefix}_${F})
+ IF(MSVC)
+ SET_PROPERTY(TEST ${prefix}_${F} PROPERTY FOLDER "tests/")
+ ENDIF()
+ENDMACRO()
+
+# A cmake script to print out information at the end of the configuration step.
+MACRO(print_conf_summary)
+ MESSAGE("")
+ MESSAGE("")
+ MESSAGE("Configuration Summary:")
+ MESSAGE("")
+ MESSAGE(STATUS "Building Shared Libraries: ${BUILD_SHARED_LIBS}")
+ MESSAGE(STATUS "Building netCDF-4: ${ENABLE_NETCDF_4}")
+ MESSAGE(STATUS "Building DAP Support: ${ENABLE_DAP}")
+ MESSAGE(STATUS "Building Utilities: ${BUILD_UTILITIES}")
+ IF(CMAKE_PREFIX_PATH)
+ MESSAGE(STATUS "CMake Prefix Path: ${CMAKE_PREFIX_PATH}")
+ ENDIF()
+ MESSAGE("")
+
+ IF(${STATUS_PNETCDF} OR ${STATUS_PARALLEL})
+ MESSAGE("Building Parallel NetCDF")
+ MESSAGE(STATUS "Using pnetcdf: ${STATUS_PNETCDF}")
+ MESSAGE(STATUS "Using Parallel IO: ${STATUS_PARALLEL}")
+ MESSAGE("")
+ ENDIF()
+
+ MESSAGE("Tests Enabled: ${ENABLE_TESTS}")
+ IF(ENABLE_TESTS)
+ MESSAGE(STATUS "DAP Remote Tests: ${ENABLE_DAP_REMOTE_TESTS}")
+ MESSAGE(STATUS "DAP AUTH Tests: ${ENABLE_DAP_AUTH_TESTS}")
+ MESSAGE(STATUS "Extra Tests: ${ENABLE_EXTRA_TESTS}")
+ MESSAGE(STATUS "Coverage Tests: ${ENABLE_COVERAGE_TESTS}")
+ MESSAGE(STATUS "Parallel Tests: ${ENABLE_PARALLEL_TESTS}")
+ MESSAGE(STATUS "Large File Tests: ${ENABLE_LARGE_FILE_TESTS}")
+ ENDIF()
+
+ MESSAGE("")
+ MESSAGE("Compiler:")
+ MESSAGE("")
+ MESSAGE(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
+ MESSAGE(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}")
+ MESSAGE(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
+ IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
+ MESSAGE(STATUS "CMAKE_C_FLAGS_DEBUG: ${CMAKE_C_FLAGS_DEBUG}")
+ ENDIF()
+ IF("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE")
+ MESSAGE(STATUS "CMAKE_C_FLAGS_RELEASE: ${CMAKE_C_FLAGS_RELEASE}")
+ ENDIF()
+
+ MESSAGE(STATUS "Linking against: ${ALL_TLL_LIBS}")
+
+ MESSAGE("")
+ENDMACRO()
+
+# Shell script Macro
+MACRO(add_sh_test prefix F)
+ IF(NOT MSVC)
+ ADD_TEST(${prefix}_${F} bash "-c" "export srcdir=${CMAKE_CURRENT_SOURCE_DIR};export TOPSRCDIR=${CMAKE_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}/${F}.sh")
+ ENDIF()
+ENDMACRO()
+
+# Macro for replacing '/MD' with '/MT'.
+# Used only on Windows, /MD tells VS to use the shared
+# CRT libs, MT tells VS to use the static CRT libs.
+#
+# Taken From:
+# http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F
+#
+MACRO(specify_static_crt_flag)
+ SET(vars
+ CMAKE_C_FLAGS
+ CMAKE_C_FLAGS_DEBUG
+ CMAKE_C_FLAGS_MINSIZEREL
+ CMAKE_C_FLAGS_RELWITHDEBINFO
+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG
+ CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL
+ CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+
+ FOREACH(flag_var ${vars})
+ IF(${flag_var} MATCHES "/MD")
+ STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+ ENDIF()
+ ENDFOREACH()
+
+ FOREACH(flag_var ${vars})
+ MESSAGE(STATUS " '${flag_var}': ${${flag_var}}")
+ ENDFOREACH()
+ MESSAGE(STATUS "")
+ENDMACRO()
+
+# A function used to create autotools-style 'yes/no' definitions.
+# If a variable is set, it 'yes' is returned. Otherwise, 'no' is
+# returned.
+#
+# Also creates a version of the ret_val prepended with 'NC',
+# when feature is true, which is used to generate netcdf_meta.h.
+FUNCTION(is_enabled feature ret_val)
+ IF(${feature})
+ SET(${ret_val} "yes" PARENT_SCOPE)
+ SET("NC_${ret_val}" 1 PARENT_SCOPE)
+ ELSE()
+ SET(${ret_val} "no" PARENT_SCOPE)
+ SET("NC_${ret_val}" 0 PARENT_SCOPE)
+ ENDIF(${feature})
+ENDFUNCTION()
+
+# A function used to create autotools-style 'yes/no' definitions.
+# If a variable is set, it 'yes' is returned. Otherwise, 'no' is
+# returned.
+#
+# Also creates a version of the ret_val prepended with 'NC',
+# when feature is true, which is used to generate netcdf_meta.h.
+FUNCTION(is_disabled feature ret_val)
+ IF(${feature})
+ SET(${ret_val} "no" PARENT_SCOPE)
+ ELSE()
+ SET(${ret_val} "yes" PARENT_SCOPE)
+ SET("NC_${ret_val}" 1 PARENT_SCOPE)
+ ENDIF(${feature})
+ENDFUNCTION()
+
+################################
+# End Macro Definitions
+################################
+
# Create config.h file.
configure_file("${netCDF_SOURCE_DIR}/config.h.cmake.in"
"${netCDF_BINARY_DIR}/config.h")
@@ -1163,26 +1269,45 @@ ENDIF()
# Build doxygen documentation, if need be.
#####
ADD_SUBDIRECTORY(docs)
+
#####
# Moving on to CPack, install packages.
#####
INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf.h
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ COMPONENT headers)
+
+INSTALL(FILES ${netCDF_BINARY_DIR}/include/netcdf_meta.h
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT headers)
IF(ENABLE_PNETCDF OR ENABLE_PARALLEL)
INSTALL(FILES ${netCDF_SOURCE_DIR}/include/netcdf_par.h
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT headers)
ENDIF()
-# Install the dependencies. This is Windows/Visual studio only,
-# and mirrors the configuration used on the build system. It is
-# a less-than-optimal system, but it's what we currently have, and
-# the only way to avoid making the user build all the dependencies
-# themselves.
+##
+# Brute force, grab all of the dlls from the depency directory,
+# install them in the binary dir. Grab all of the .libs, put them
+# in the libdir.
+##
IF(MSVC)
- INSTALL(DIRECTORY ${CMAKE_PREFIX_PATH} DESTINATION "deps" COMPONENT dependencies)
+ FILE(GLOB COPY_FILES ${CMAKE_PREFIX_PATH}/lib/*.lib)
+ INSTALL(FILES ${COPY_FILES}
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ COMPONENT dependencies)
+
+ FILE(GLOB COPY_FILES ${CMAKE_PREFIX_PATH}/bin/*.dll)
+ STRING(REGEX REPLACE "msv[.*].dll" "" COPY_FILES "${COPY_FILES}")
+ INSTALL(FILES ${COPY_FILES}
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT dependencies)
+
+ #INSTALL(DIRECTORY ${CMAKE_PREFIX_PATH} DESTINATION "deps" COMPONENT dependencies)
+ # INSTALL(FILES ${ALL_TLL_LIBS}
+ # DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ # COMPONENT dependencies)
ENDIF()
# Subdirectory CMakeLists.txt files should specify their own
@@ -1194,27 +1319,6 @@ CONFIGURE_FILE(
${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake
@ONLY
)
-#INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake)
-
-# Create CMake package configuration files. With these, other packages using
-# cmake should be able to find netcdf using find_package and find_library.
-# This call is paired with one in liblib.
-install(EXPORT netcdf-targets
- DESTINATION share/cmake
- COMPONENT documentation)
-
-configure_file(
- ${netCDF_SOURCE_DIR}/netcdf-config.cmake.in
- ${netCDF_BINARY_DIR}/netcdf-config.cmake @ONLY)
-
-configure_file(
- ${netCDF_SOURCE_DIR}/netcdf-config-version.cmake.in
- ${netCDF_BINARY_DIR}/netcdf-config-version.cmake @ONLY)
-
-install(FILES ${netCDF_BINARY_DIR}/netcdf-config.cmake
- ${netCDF_BINARY_DIR}/netcdf-config-version.cmake
- DESTINATION share/cmake/netcdf)
-
###
# Create pkgconfig files.
@@ -1228,7 +1332,7 @@ ENDIF(NOT DEFINED CMAKE_INSTALL_LIBDIR)
SET(prefix ${CMAKE_INSTALL_PREFIX})
SET(exec_prefix ${CMAKE_INSTALL_PREFIX})
SET(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
-SET(includedir ${CMAKE_INSTALL_PREFIX}/include)
+SET(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR})
SET(CC ${CMAKE_C_COMPILER})
# Process all dependency libraries and create a string
@@ -1265,7 +1369,7 @@ INSTALL(FILES ${netCDF_BINARY_DIR}/netcdf.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
COMPONENT utilities)
-INSTALL(PROGRAMS ${netCDF_BINARY_DIR}/nc-config
+INSTALL(PROGRAMS ${netCDF_BINARY_DIR}/nc-config
DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT utilities)
@@ -1273,81 +1377,9 @@ INSTALL(PROGRAMS ${netCDF_BINARY_DIR}/nc-config
# End pkgconfig, nc-config file creation.
###
-####
-# End CMake package configuration files.
-#####
-# Various options for CPACK
-#####
-
##
-# Declare exclusions list used when building a source file.
-# NOTE!! This list uses regular expressions, NOT wildcards!!
+# Print the configuration summary
##
-SET(CPACK_SOURCE_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}"
- "/expecttds3/"
- "/nocacheremote3/"
- "/nocacheremote4/"
- "/special3/"
- "${CMAKE_BINARY_DIR}/*"
- "/myhtml/*"
- "/.svn/"
- "my.*\\\\.sh"
- "/.deps/"
- "/.libs"
- "/html/"
- ".*\\\\.jar"
- ".*\\\\.jdl"
- ".*\\\\.sed"
- ".*\\\\.proto"
- ".*\\\\.texi"
- ".*\\\\.example"
- "Make0"
- "/obsolete/"
- "/unknown/"
- ".*~"
- )
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/COPYRIGHT
- ${CMAKE_CURRENT_BINARY_DIR}/COPYRIGHT.txt
- @ONLY
- )
-
-SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYRIGHT.txt")
-IF(NOT CPACK_PACK_VERSION)
- SET(CPACK_PACKAGE_VERSION ${VERSION})
-ENDIF()
-
-IF(APPLE)
- SET(CPACK_SOURCE_GENERATOR "TGZ")
- SET(CPACK_GENERATOR "PackageMaker" "STGZ" "TBZ2" "TGZ" "ZIP")
-ENDIF()
-
-# Create an 'uninstall' target.
-CONFIGURE_FILE(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
- "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
- IMMEDIATE @ONLY)
-
-ADD_CUSTOM_TARGET(uninstall
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
-
-## Customize some of the package component descriptions
-set(CPACK_COMPONENT_UTILITIES_DISPLAY_NAME "netCDF Utilities")
-set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "netCDF Libraries")
-set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "netCDF Headers")
-set(CPACK_COMPONENT_DEPENDENCIES_DISPLAY_NAME "netCDF Dependencies")
-set(CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "netCDF Documentation")
-
-
-set (CPACK_COMPONENT_UTILITIES_DESCRIPTION
- "The netCDF Utilities")
-set (CPACK_COMPONENT_LIBRARIES_DESCRIPTION
- "The netCDF Libraries")
-set (CPACK_COMPONENT_HEADERS_DESCRIPTION
- "C header files for use with netCDF")
-set (CPACK_COMPONENT_DEPENDENCIES_DESCRIPTION
- "Dependencies for this build of netCDF")
-set (CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION
- "The netCDF user documentation.")
print_conf_summary()
# Enable Makedist files.
@@ -1384,6 +1416,7 @@ is_enabled(ENABLE_V2_API HAS_NC2)
is_enabled(ENABLE_NETCDF_4 HAS_NC4)
is_enabled(ENABLE_HDF4 HAS_HDF4)
is_enabled(ENABLE_NETCDF_4 HAS_HDF5)
+is_enabled(USE_SZIP HAS_SZIP)
is_enabled(STATUS_PNETCDF HAS_PNETCDF)
is_enabled(STATUS_PARALLEL HAS_PARALLEL)
is_enabled(USE_DAP HAS_DAP)
@@ -1392,11 +1425,9 @@ is_enabled(USE_MMAP HAS_MMAP)
is_enabled(JNA HAS_JNA)
# Generate file from template.
-
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libnetcdf.settings.in"
"${CMAKE_CURRENT_BINARY_DIR}/libnetcdf.settings"
- @ONLY
- )
+ @ONLY)
# Read in settings file, print out.
# Avoid using system-specific calls so that this
@@ -1408,12 +1439,75 @@ MESSAGE(${LIBNETCDF_SETTINGS})
# Install libnetcdf.settings file into same location
# as the libraries.
INSTALL(FILES "${netCDF_BINARY_DIR}/libnetcdf.settings"
- DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}"
COMPONENT libraries)
#####
# End libnetcdf.settings section.
#####
+#####
+# Create 'netcdf_meta.h' include file.
+#####
+configure_file(
+ ${netCDF_SOURCE_DIR}/include/netcdf_meta.h.in
+ ${netCDF_SOURCE_DIR}/include/netcdf_meta.h @ONLY)
+
+FILE(COPY ${netCDF_SOURCE_DIR}/include/netcdf_meta.h
+ DESTINATION ${netCDF_BINARY_DIR}/include/)
+
+####
+# Export files
+####
+
+# Create CMake package configuration files. With these, other packages using
+# cmake should be able to find netcdf using find_package and find_library.
+# The EXPORT call is paired with one in liblib.
+set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/netCDF)
+
+install(EXPORT netCDFTargets
+ DESTINATION ${ConfigPackageLocation}
+ COMPONENT headers
+ )
+
+include(CMakePackageConfigHelpers)
+CONFIGURE_PACKAGE_CONFIG_FILE(
+ "${CMAKE_CURRENT_SOURCE_DIR}/netCDFConfig.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake"
+ INSTALL_DESTINATION "${ConfigPackageLocation}"
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
+ PATH_VARS
+ CMAKE_INSTALL_PREFIX
+ CMAKE_INSTALL_INCLUDEDIR
+ CMAKE_INSTALL_LIBDIR
+ )
+
+INSTALL(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/netCDFConfig.cmake"
+ DESTINATION "${ConfigPackageLocation}"
+ COMPONENT headers
+ )
+
+# Create export configuration
+write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake"
+ VERSION ${netCDF_VERSION}
+ COMPATIBILITY SameMajorVersion
+ )
+
+install(
+ FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFConfigVersion.cmake"
+ DESTINATION ${ConfigPackageLocation}
+ COMPONENT headers
+ )
+
+####
+# End export files
+####
+
+
+
# CPack inclusion must come last.
-INCLUDE(CPack)
+# INCLUDE(CPack)
+INCLUDE(CMakeInstallation.cmake)
diff --git a/COPYRIGHT b/COPYRIGHT
index 6ed26bc..a7df829 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,8 +1,5 @@
-/*! \file
The NetCDF Copyright.
-\page copyright Copyright
-
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
University Corporation for Atmospheric Research/Unidata.
@@ -36,7 +33,6 @@ INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
diff --git a/CTestConfig.cmake b/CTestConfig.cmake
deleted file mode 100644
index 84fa0fb..0000000
--- a/CTestConfig.cmake
+++ /dev/null
@@ -1,17 +0,0 @@
-## This file should be placed in the root directory of your project.
-## Then modify the CMakeLists.txt file in the root directory of your
-## project to incorporate the testing dashboard.
-##
-## # The following are required to submit to the CDash dashboard:
-## ENABLE_TESTING()
-## INCLUDE(CTest)
-
-set(DART_TESTING_TIMEOUT "4800")
-
-set(CTEST_PROJECT_NAME "netcdf-c")
-set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
-
-set(CTEST_DROP_METHOD "http")
-set(CTEST_DROP_SITE "my.cdash.org")
-set(CTEST_DROP_LOCATION "/submit.php?project=netcdf-c")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/CTestConfig.cmake.in b/CTestConfig.cmake.in
index c2f7e09..fef7980 100644
--- a/CTestConfig.cmake.in
+++ b/CTestConfig.cmake.in
@@ -9,7 +9,7 @@
set(DART_TESTING_TIMEOUT "4800")
set(CTEST_PROJECT_NAME "@NC_CTEST_PROJECT_NAME@")
-set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
+set(CTEST_NIGHTLY_START_TIME "02:00:00 EDT")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "@NC_CTEST_DROP_SITE@")
diff --git a/Doxyfile b/Doxyfile
deleted file mode 100755
index 64c7e1e..0000000
--- a/Doxyfile
+++ /dev/null
@@ -1,1934 +0,0 @@
-# Doxyfile 1.8.4
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or sequence of words) that should
-# identify the project. Note that if you do not use Doxywizard you need
-# to put quotes around the project name if it contains spaces.
-
-PROJECT_NAME = netCDF-C
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = 4.3.3-rc1
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer
-# a quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF = "The netCDF C libraries"
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is
-# included in the documentation. The maximum height of the logo should not
-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
-# Doxygen will copy the logo to the output directory.
-
-PROJECT_LOGO = ./docs/unidata_logo_cmyk.png
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian,
-# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic,
-# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = YES
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip. Note that you specify absolute paths here, but also
-# relative paths, which will be relative from the directory where doxygen is
-# started.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful if your file system
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF = YES
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding
-# "class=itcl::class" will allow you to use the command class in the
-# itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension,
-# and language is one of the parsers supported by doxygen: IDL, Java,
-# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
-# C++. For instance to make doxygen treat .inc files as Fortran files (default
-# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
-# that for custom extensions you also need to set FILE_PATTERNS otherwise the
-# files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
-# comments according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you
-# can mix doxygen, HTML, and XML commands with Markdown formatting.
-# Disable only in case of backward compatibilities issues.
-
-MARKDOWN_SUPPORT = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also makes the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES (the
-# default) will make doxygen replace the get and set methods by a property in
-# the documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
-# unions are shown inside the group in which they are included (e.g. using
-# @ingroup) instead of on a separate page (for HTML and Man pages) or
-# section (for LaTeX and RTF).
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
-# unions with only public data fields or simple typedef fields will be shown
-# inline in the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO (the default), structs, classes, and unions are shown on a separate
-# page (for HTML and Man pages) or section (for LaTeX and RTF).
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can
-# be an expensive process and often the same symbol appear multiple times in
-# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too
-# small doxygen will become slower. If the cache is too large, memory is wasted.
-# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid
-# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536
-# symbols.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = YES
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespaces are hidden.
-
-EXTRACT_ANON_NSPACES = YES
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = YES
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-# will list include files with double quotes in the documentation
-# rather than with sharp brackets.
-
-FORCE_LOCAL_INCLUDES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = YES
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-# will sort the (brief and detailed) documentation of class members so that
-# constructors and destructors are listed first. If set to NO (the default)
-# the constructors will appear in the respective orders defined by
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = YES
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES = YES
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
-# do proper type resolution of all parameters of a function it will reject a
-# match between the prototype and the implementation of a member function even
-# if there is only one candidate or it is obvious which candidate to choose
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
-# will still accept a match between prototype and implementation in such cases.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if section-label ... \endif
-# and \cond section-label ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or macro consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and macros in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 28
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page. This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option.
-# You can optionally specify a file name after the option, if omitted
-# DoxygenLayout.xml will be used as the name of the layout file.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files
-# containing the references data. This must be a list of .bib files. The
-# .bib extension is automatically appended if omitted. Using this command
-# requires the bibtex tool to be installed. See also
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path. Do not use
-# file names with spaces, bibtex cannot handle them.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT =
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
-# *.f90 *.f *.for *.vhd *.vhdl
-
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.d \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.idl \
- *.odl \
- *.cs \
- *.php \
- *.php3 \
- *.inc \
- *.m \
- *.mm \
- *.dox \
- *.py \
- *.f90 \
- *.f \
- *.vhd \
- *.vhdl \
- *.md \
- *.doc
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = YES
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be ignored.
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty or if
-# non of the patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
-# and it is also possible to disable source filtering for a specific pattern
-# using *.ext= (so without naming a filter). This option only has effect when
-# FILTER_SOURCE_FILES is enabled.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C, C++ and Fortran comments will always remain visible.
-
-STRIP_CODE_COMMENTS = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-# If CLANG_ASSISTED_PARSING is set to YES, then doxygen will use the clang parser
-# for more acurate parsing at the cost of reduced performance. This can be
-# particularly helpful with template rich C++ code for which doxygen's built-in
-# parser lacks the necessairy type information.
-
-CLANG_ASSISTED_PARSING = NO
-
-# If clang assisted parsing is enabled you can provide the compiler with command
-# line options that you would normally use when invoking the compiler. Note that
-# the include paths will already be set by doxygen for the files and directories
-# specified at INPUT and INCLUDE_PATH.
-
-CLANG_OPTIONS =
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header. Note that when using a custom header you are responsible
-# for the proper inclusion of any scripts and style sheets that doxygen
-# needs, which is dependent on the configuration options used.
-# It is advised to generate a default header using "doxygen -w html
-# header.html footer.html stylesheet.css YourConfigFile" and then modify
-# that header. Note that the header is subject to change so you typically
-# have to redo this when upgrading to a newer version of doxygen or when
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If left blank doxygen will
-# generate a default style sheet. Note that it is recommended to use
-# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
-# tag will in the future become obsolete.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
-# user-defined cascading style sheet that is included after the standard
-# style sheets created by doxygen. Using this option one can overrule
-# certain style aspects. This is preferred over using HTML_STYLESHEET
-# since it does not replace the standard style sheet and is therefor more
-# robust against future updates. Doxygen will copy the style sheet file to
-# the output directory.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
-# the files will be copied as-is; there are no commands or markers available.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-# Doxygen will adjust the colors in the style sheet and background images
-# according to this color. Hue is specified as an angle on a colorwheel,
-# see http://en.wikipedia.org/wiki/Hue for more information.
-# For instance the value 0 represents red, 60 is yellow, 120 is green,
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-# The allowed range is 0 to 359.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-# the colors in the HTML output. For a value of 0 the output will use
-# grayscales only. A value of 255 will produce the most vivid colors.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-# the luminance component of the colors in the HTML output. Values below
-# 100 gradually make the output lighter, whereas values above 100 make
-# the output darker. The value divided by 100 is the actual gamma applied,
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-# and 100 does not change the gamma.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting
-# this to NO can help when comparing the output of multiple runs.
-
-HTML_TIMESTAMP = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-
-HTML_DYNAMIC_SECTIONS = YES
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
-# entries shown in the various tree structured indices initially; the user
-# can expand and collapse entries dynamically later on. Doxygen will expand
-# the tree to such a level that at most the specified number of entries are
-# visible (unless a fully collapsed tree already exceeds this amount).
-# So setting the number of entries 1 will produce a full collapsed tree by
-# default. 0 is a special value representing an infinite number of entries
-# and will result in a full expanded tree by default.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-
-GENERATE_DOCSET = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
-# identify the documentation publisher. This should be a reverse domain-name
-# style string, e.g. com.mycompany.MyDocSet.documentation.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-# that can be used as input for Qt's qhelpgenerator to generate a
-# Qt Compressed Help (.qch) of the generated HTML documentation.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-# add. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-# Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-# Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-# will be generated, which together with the HTML files, form an Eclipse help
-# plugin. To install this plugin and make it available under the help contents
-# menu in Eclipse, the contents of the directory containing the HTML and XML
-# files needs to be copied into the plugins directory of eclipse. The name of
-# the directory within the plugins directory should be the same as
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-# the help appears.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have
-# this name.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
-# at top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it. Since the tabs have the same information as the
-# navigation tree you can set this option to NO if you already set
-# GENERATE_TREEVIEW to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-# Since the tree basically has the same information as the tab index you
-# could consider to set DISABLE_INDEX to NO when enabling this option.
-
-GENERATE_TREEVIEW = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
-# documentation. Note that a value of 0 will completely suppress the enum
-# values from appearing in the overview section.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-# links to external symbols imported via tag files in a separate window.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are
-# not supported properly for IE 6.0, but are supported on all modern browsers.
-# Note that when changing this option you need to delete any form_*.png files
-# in the HTML output before the changes have effect.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
-# (see http://www.mathjax.org) which uses client side Javascript for the
-# rendering instead of using prerendered bitmaps. Use this if you do not
-# have LaTeX installed or if you want to formulas look prettier in the HTML
-# output. When enabled you may also need to install MathJax separately and
-# configure the path to it using the MATHJAX_RELPATH option.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
-# SVG. The default value is HTML-CSS, which is slower, but has the best
-# compatibility.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the
-# HTML output directory using the MATHJAX_RELPATH option. The destination
-# directory should contain the MathJax.js script. For instance, if the mathjax
-# directory is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to
-# the MathJax Content Delivery Network so you can quickly see the result without
-# installing MathJax. However, it is strongly recommended to install a local
-# copy of MathJax from http://www.mathjax.org before deployment.
-
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
-# names that should be enabled during MathJax rendering.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript
-# pieces of code that will be used on startup of the MathJax code.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-# for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-# (GENERATE_DOCSET) there is already a search function so this one should
-# typically be disabled. For large projects the javascript based search engine
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-
-SEARCHENGINE = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript.
-# There are two flavours of web server based search depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools.
-# See the manual for details.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain
-# the search results. Doxygen ships with an example indexer (doxyindexer) and
-# search engine (doxysearch.cgi) which are based on the open source search
-# engine library Xapian. See the manual for configuration details.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will returned the search results when EXTERNAL_SEARCH is enabled.
-# Doxygen ships with an example search engine (doxysearch) which is based on
-# the open source search engine library Xapian. See the manual for configuration
-# details.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
-# of to a relative location where the documentation can be found.
-# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-# Note that when enabling USE_PDFLATEX this option is only used for
-# generating bitmaps for formulas in the HTML output, but not in the
-# Makefile that is written to the output directory.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, letter, legal and
-# executive. If left blank a4 will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
-# the generated latex document. The footer should contain everything after
-# the last chapter. If it is left blank doxygen will generate a
-# standard footer. Notice: only use this tag if you know what you are doing!
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images
-# or other source files which should be copied to the LaTeX output directory.
-# Note that the files will be copied as-is; there are no commands or markers
-# available.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE = YES
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
-# http://en.wikipedia.org/wiki/BibTeX for more info.
-
-LATEX_BIB_STYLE = plain
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load style sheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files
-# that can be used to generate PDF.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it. If left blank docbook will be used as the default path.
-
-DOCBOOK_OUTPUT = docbook
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition that
-# overrules the definition found in the source code.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all references to function-like macros
-# that are alone on a line, have an all uppercase name, and do not end with a
-# semicolon, because these will confuse the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. For each
-# tag file the location of the external documentation should be added. The
-# format of a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths
-# or URLs. Note that each tag file must have a unique name (where the name does
-# NOT include the path). If a tag file is not located in the directory in which
-# doxygen is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed
-# in the related pages index. If set to NO, only the current project's
-# pages will be listed.
-
-EXTERNAL_PAGES = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option also works with HAVE_DOT disabled, but it is recommended to
-# install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = NO
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = YES
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-# allowed to run in parallel. When set to 0 (the default) doxygen will
-# base this on the number of processors available in the system. You can set it
-# explicitly to a value larger than 0 to get control over the balance
-# between CPU load and processing speed.
-
-DOT_NUM_THREADS = 4
-
-# By default doxygen will use the Helvetica font for all dot files that
-# doxygen generates. When you want a differently looking font you can specify
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
-# the font, which can be done by putting it in a standard location or by setting
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font.
-
-DOT_FONTNAME = FreeSans.ttf
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE = 8
-
-# By default doxygen will tell dot to use the Helvetica font.
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
-# set the path where dot can find it.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = YES
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside
-# the class node. If there are many fields or methods and many nodes the
-# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
-# threshold limits the number of items for each type to make the size more
-# manageable. Set this to 0 for no limit. Note that the threshold may be
-# exceeded by 50% before the limit is enforced.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH = YES
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH = YES
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will generate a graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are svg, png, jpg, or gif.
-# If left blank png will be used. If you choose svg you need to set
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible in IE 9+ (other browsers do not have this requirement).
-
-DOT_IMAGE_FORMAT = svg
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-# Note that this requires a modern browser other than Internet Explorer.
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible. Older versions of IE do not have SVG support.
-
-INTERACTIVE_SVG = YES
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the
-# \mscfile command).
-
-MSCFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH = 5
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT = YES
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = YES
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
diff --git a/docs/Doxyfile.guide.in b/Doxyfile.developer
old mode 100644
new mode 100755
similarity index 94%
rename from docs/Doxyfile.guide.in
rename to Doxyfile.developer
index 0c3e266..ea912c3
--- a/docs/Doxyfile.guide.in
+++ b/Doxyfile.developer
@@ -1,4 +1,4 @@
-# Doxyfile 1.8.3, mixed with 1.8.6
+# Doxyfile 1.8.6
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@@ -32,33 +32,33 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.
-PROJECT_NAME = "The NetCDF User's Guide"
+PROJECT_NAME = netCDF-C
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = @PACKAGE_VERSION@
+PROJECT_NUMBER = 4.3.3-rc3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
-PROJECT_BRIEF =
+PROJECT_BRIEF = "The netCDF C libraries"
# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
# the documentation. The maximum height of the logo should not exceed 55 pixels
# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
# to the output directory.
-PROJECT_LOGO = @abs_top_srcdir@/docs/netcdf-50x50.png
+PROJECT_LOGO = ./docs/unidata_logo_cmyk.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY =
+OUTPUT_DIRECTORY =
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -110,14 +110,24 @@ REPEAT_BRIEF = YES
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
-ABBREVIATE_BRIEF =
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.
-ALWAYS_DETAILED_SEC = NO
+ALWAYS_DETAILED_SEC = YES
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
@@ -125,7 +135,7 @@ ALWAYS_DETAILED_SEC = NO
# operators of the base classes will not be shown.
# The default value is: NO.
-INLINE_INHERITED_MEMB = NO
+INLINE_INHERITED_MEMB = YES
# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
@@ -144,7 +154,7 @@ FULL_PATH_NAMES = NO
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
@@ -153,7 +163,7 @@ STRIP_FROM_PATH =
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
-STRIP_FROM_INC_PATH =
+STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
@@ -189,7 +199,7 @@ QT_AUTOBRIEF = YES
# not recognized any more.
# The default value is: NO.
-MULTILINE_CPP_IS_BRIEF = NO
+MULTILINE_CPP_IS_BRIEF = YES
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
@@ -220,13 +230,13 @@ TAB_SIZE = 8
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines.
-ALIASES =
+ALIASES =
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
# will allow you to use the command class in the itcl::class meaning.
-TCL_SUBST =
+TCL_SUBST =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
@@ -270,7 +280,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.
-EXTENSION_MAPPING =
+EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
@@ -298,7 +308,7 @@ AUTOLINK_SUPPORT = YES
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
-BUILTIN_STL_SUPPORT = NO
+BUILTIN_STL_SUPPORT = YES
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
@@ -330,7 +340,7 @@ IDL_PROPERTY_SUPPORT = YES
# all members of a group must be documented explicitly.
# The default value is: NO.
-DISTRIBUTE_GROUP_DOC = YES
+DISTRIBUTE_GROUP_DOC = NO
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
@@ -398,13 +408,13 @@ LOOKUP_CACHE_SIZE = 0
# normally produced when WARNINGS is set to YES.
# The default value is: NO.
-EXTRACT_ALL = NO
+EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
# be included in the documentation.
# The default value is: NO.
-EXTRACT_PRIVATE = NO
+EXTRACT_PRIVATE = YES
# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
# scope will be included in the documentation.
@@ -416,7 +426,7 @@ EXTRACT_PACKAGE = NO
# included in the documentation.
# The default value is: NO.
-EXTRACT_STATIC = NO
+EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO
@@ -441,7 +451,7 @@ EXTRACT_LOCAL_METHODS = NO
# are hidden.
# The default value is: NO.
-EXTRACT_ANON_NSPACES = NO
+EXTRACT_ANON_NSPACES = YES
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
@@ -478,7 +488,7 @@ HIDE_IN_BODY_DOCS = NO
# will be excluded. Set it to YES to include the internal documentation.
# The default value is: NO.
-INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+INTERNAL_DOCS = YES
# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
# names in lower-case letters. If set to YES upper-case letters are also
@@ -487,7 +497,7 @@ INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
# and Mac users are advised to set this option to NO.
# The default value is: system dependent.
-CASE_SENSE_NAMES = YES
+CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
# their full class and namespace scopes in the documentation. If set to YES the
@@ -513,7 +523,7 @@ SHOW_GROUPED_MEMB_INC = NO
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.
-FORCE_LOCAL_INCLUDES = NO
+FORCE_LOCAL_INCLUDES = YES
# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
@@ -534,7 +544,7 @@ SORT_MEMBER_DOCS = YES
# this will also influence the order of the classes in the class list.
# The default value is: NO.
-SORT_BRIEF_DOCS = NO
+SORT_BRIEF_DOCS = YES
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
# (brief and detailed) documentation of class members so that constructors and
@@ -546,14 +556,14 @@ SORT_BRIEF_DOCS = NO
# detailed member documentation.
# The default value is: NO.
-SORT_MEMBERS_CTORS_1ST = NO
+SORT_MEMBERS_CTORS_1ST = YES
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
# of group names into alphabetical order. If set to NO the group names will
# appear in their defined order.
# The default value is: NO.
-SORT_GROUP_NAMES = NO
+SORT_GROUP_NAMES = YES
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
# fully-qualified names, including namespaces. If set to NO, the class list will
@@ -580,7 +590,7 @@ STRICT_PROTO_MATCHING = NO
# documentation.
# The default value is: YES.
-GENERATE_TODOLIST = @SHOW_DOXYGEN_TODO_LIST@
+GENERATE_TODOLIST = YES
# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
# test list. This list is created by putting \test commands in the
@@ -606,7 +616,7 @@ GENERATE_DEPRECATEDLIST= YES
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
# ... \endcond blocks.
-ENABLED_SECTIONS =
+ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
@@ -617,7 +627,7 @@ ENABLED_SECTIONS =
# documentation regardless of this setting.
# Minimum value: 0, maximum value: 10000, default value: 30.
-MAX_INITIALIZER_LINES = 30
+MAX_INITIALIZER_LINES = 28
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
# the bottom of the documentation of classes and structs. If set to YES the list
@@ -648,7 +658,7 @@ SHOW_NAMESPACES = YES
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
-FILE_VERSION_FILTER =
+FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
@@ -661,7 +671,7 @@ FILE_VERSION_FILTER =
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.
-LAYOUT_FILE = @abs_top_srcdir@/docs/DoxygenLayout.xml
+LAYOUT_FILE =
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib
@@ -672,7 +682,7 @@ LAYOUT_FILE = @abs_top_srcdir@/docs/DoxygenLayout.xml
# search path. Do not use file names with spaces, bibtex cannot handle them. See
# also \cite for info how to create references.
-CITE_BIB_FILES =
+CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
@@ -683,7 +693,7 @@ CITE_BIB_FILES =
# messages are off.
# The default value is: NO.
-QUIET = YES
+QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
@@ -699,7 +709,7 @@ WARNINGS = YES
# will automatically be disabled.
# The default value is: YES.
-WARN_IF_UNDOCUMENTED = NO
+WARN_IF_UNDOCUMENTED = YES
# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some parameters
@@ -715,7 +725,7 @@ WARN_IF_DOC_ERROR = YES
# documentation, but not about the absence of documentation.
# The default value is: NO.
-WARN_NO_PARAMDOC = YES
+WARN_NO_PARAMDOC = NO
# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
@@ -731,7 +741,7 @@ WARN_FORMAT = "$file:$line: $text"
# messages should be written. If left blank the output is written to standard
# error (stderr).
-WARN_LOGFILE =
+WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
@@ -743,7 +753,7 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT = @abs_top_srcdir@/docs/guide.dox
+INPUT =
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -763,13 +773,45 @@ INPUT_ENCODING = UTF-8
# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
# *.qsf, *.as and *.js.
-FILE_PATTERNS =
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.d \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.idl \
+ *.odl \
+ *.cs \
+ *.php \
+ *.php3 \
+ *.inc \
+ *.m \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.vhd \
+ *.vhdl \
+ *.md \
+ *.doc
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.
-RECURSIVE = NO
+RECURSIVE = YES
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
@@ -778,14 +820,14 @@ RECURSIVE = NO
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE =
+EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.
-EXCLUDE_SYMLINKS = NO
+EXCLUDE_SYMLINKS = YES
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
@@ -794,7 +836,7 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -805,7 +847,7 @@ EXCLUDE_PATTERNS =
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*
-EXCLUDE_SYMBOLS =
+EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
@@ -818,7 +860,7 @@ EXAMPLE_PATH =
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
-EXAMPLE_PATTERNS =
+EXAMPLE_PATTERNS = *
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
@@ -831,19 +873,7 @@ EXAMPLE_RECURSIVE = NO
# that contain images that are to be included in the documentation (see the
# \image command).
-IMAGE_PATH = @abs_top_srcdir@/docs/images/chunking2.png \
- @abs_top_srcdir@/docs/images/compatibility3.png \
- @abs_top_srcdir@/docs/images/compression.png \
- @abs_top_srcdir@/docs/images/groups.png \
- @abs_top_srcdir@/docs/images/nc4-model.png \
- @abs_top_srcdir@/docs/images/ncatts.png \
- @abs_top_srcdir@/docs/images/nc-classic-uml.png \
- @abs_top_srcdir@/docs/images/nccoords.png \
- @abs_top_srcdir@/docs/images/ncfile.png \
- @abs_top_srcdir@/docs/images/netcdf_architecture.png \
- @abs_top_srcdir@/docs/images/pnetcdf.png \
- @abs_top_srcdir@/docs/images/deptree.jpg \
- @abs_top_srcdir@/docs/images/InstallTreeWindows.jpg
+IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
@@ -860,7 +890,7 @@ IMAGE_PATH = @abs_top_srcdir@/docs/images/chunking2.png \
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
-INPUT_FILTER =
+INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
@@ -869,7 +899,7 @@ INPUT_FILTER =
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
-FILTER_PATTERNS =
+FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER ) will also be used to filter the input files that are used for
@@ -884,14 +914,14 @@ FILTER_SOURCE_FILES = NO
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-FILTER_SOURCE_PATTERNS =
+FILTER_SOURCE_PATTERNS =
# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.
-USE_MDFILE_AS_MAINPAGE =
+USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# Configuration options related to source browsing
@@ -910,26 +940,26 @@ SOURCE_BROWSER = YES
# classes and enums directly into the documentation.
# The default value is: NO.
-INLINE_SOURCES = NO
+INLINE_SOURCES = YES
# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
# Fortran comments will always remain visible.
# The default value is: YES.
-STRIP_CODE_COMMENTS = YES
+STRIP_CODE_COMMENTS = NO
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# function all documented functions referencing it will be listed.
# The default value is: NO.
-REFERENCED_BY_RELATION = NO
+REFERENCED_BY_RELATION = YES
# If the REFERENCES_RELATION tag is set to YES then for each documented function
# all documented entities called/used by that function will be listed.
# The default value is: NO.
-REFERENCES_RELATION = NO
+REFERENCES_RELATION = YES
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
@@ -988,7 +1018,7 @@ VERBATIM_HEADERS = YES
# compiled with the --with-libclang option.
# The default value is: NO.
-# CLANG_ASSISTED_PARSING = NO
+CLANG_ASSISTED_PARSING = NO
# If clang assisted parsing is enabled you can provide the compiler with command
# line options that you would normally use when invoking the compiler. Note that
@@ -996,7 +1026,7 @@ VERBATIM_HEADERS = YES
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-# CLANG_OPTIONS =
+CLANG_OPTIONS =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
@@ -1007,7 +1037,7 @@ VERBATIM_HEADERS = YES
# classes, structs, unions or interfaces.
# The default value is: YES.
-ALPHABETICAL_INDEX = NO
+ALPHABETICAL_INDEX = YES
# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
# which the alphabetical index list will be split.
@@ -1022,7 +1052,7 @@ COLS_IN_ALPHA_INDEX = 5
# while generating the index headers.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-IGNORE_PREFIX =
+IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
@@ -1039,7 +1069,7 @@ GENERATE_HTML = YES
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_OUTPUT = html/html_guide
+HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
@@ -1066,7 +1096,7 @@ HTML_FILE_EXTENSION = .html
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_HEADER =
+HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard
@@ -1076,7 +1106,7 @@ HTML_HEADER =
# that doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_FOOTER = @abs_top_srcdir@/docs/footer.html
+HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
@@ -1088,7 +1118,7 @@ HTML_FOOTER = @abs_top_srcdir@/docs/footer.html
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_STYLESHEET =
+HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
# defined cascading style sheet that is included after the standard style sheets
@@ -1099,13 +1129,7 @@ HTML_STYLESHEET =
# see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-# HTML_ALIGN_MEMBERS = YES
+HTML_EXTRA_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
@@ -1115,7 +1139,7 @@ HTML_EXTRA_STYLESHEET =
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_FILES =
+HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the stylesheet and background images according to
@@ -1126,7 +1150,7 @@ HTML_EXTRA_FILES =
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_COLORSTYLE_HUE = 220
+HTML_COLORSTYLE_HUE = 349
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use grayscales only. A
@@ -1134,7 +1158,7 @@ HTML_COLORSTYLE_HUE = 220
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_COLORSTYLE_SAT = 100
+HTML_COLORSTYLE_SAT = 91
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
@@ -1153,7 +1177,7 @@ HTML_COLORSTYLE_GAMMA = 80
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_TIMESTAMP = NO
+HTML_TIMESTAMP = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
@@ -1161,7 +1185,7 @@ HTML_TIMESTAMP = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_DYNAMIC_SECTIONS = NO
+HTML_DYNAMIC_SECTIONS = YES
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
@@ -1243,7 +1267,7 @@ GENERATE_HTMLHELP = NO
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_FILE =
+CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler ( hhc.exe). If non-empty
@@ -1251,7 +1275,7 @@ CHM_FILE =
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-HHC_LOCATION =
+HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated (
# YES) or that it should be included in the master .chm file ( NO).
@@ -1264,7 +1288,7 @@ GENERATE_CHI = NO
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_INDEX_ENCODING =
+CHM_INDEX_ENCODING =
# The BINARY_TOC flag controls whether a binary table of contents is generated (
# YES) or a normal table of contents ( NO) in the .chm file.
@@ -1294,7 +1318,7 @@ GENERATE_QHP = NO
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QCH_FILE =
+QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
@@ -1319,7 +1343,7 @@ QHP_VIRTUAL_FOLDER = doc
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
@@ -1327,21 +1351,21 @@ QHP_CUST_FILTER_NAME =
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_CUST_FILTER_ATTRS =
+QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_SECT_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
# The QHG_LOCATION tag can be used to specify the location of Qt's
# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
# generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHG_LOCATION =
+QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
@@ -1375,12 +1399,19 @@ ECLIPSE_DOC_ID = org.doxygen.Project
DISABLE_INDEX = NO
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_TREEVIEW = YES
@@ -1467,7 +1498,7 @@ MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_EXTENSIONS =
+MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
@@ -1475,7 +1506,7 @@ MATHJAX_EXTENSIONS =
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_CODEFILE =
+MATHJAX_CODEFILE =
# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
# the HTML output. The underlying search engine uses javascript and DHTML and
@@ -1535,7 +1566,7 @@ EXTERNAL_SEARCH = NO
# Searching" for details.
# This tag requires that the tag SEARCHENGINE is set to YES.
-SEARCHENGINE_URL =
+SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
@@ -1551,7 +1582,7 @@ SEARCHDATA_FILE = searchdata.xml
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.
-EXTERNAL_SEARCH_ID =
+EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
@@ -1561,7 +1592,7 @@ EXTERNAL_SEARCH_ID =
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.
-EXTRA_SEARCH_MAPPINGS =
+EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
@@ -1622,7 +1653,7 @@ PAPER_TYPE = a4wide
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-EXTRA_PACKAGES =
+EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
# generated LaTeX document. The header should contain everything until the first
@@ -1638,7 +1669,7 @@ EXTRA_PACKAGES =
# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_HEADER =
+LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last
@@ -1647,7 +1678,7 @@ LATEX_HEADER =
# Note: Only use a user-defined footer if you know what you are doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_FOOTER =
+LATEX_FOOTER =
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
@@ -1655,7 +1686,7 @@ LATEX_FOOTER =
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_EXTRA_FILES =
+LATEX_EXTRA_FILES =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
@@ -1698,7 +1729,7 @@ LATEX_HIDE_INDICES = NO
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_SOURCE_CODE = NO
+LATEX_SOURCE_CODE = YES
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
@@ -1755,14 +1786,14 @@ RTF_HYPERLINKS = NO
# default style sheet that doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_STYLESHEET_FILE =
+RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an RTF document. Syntax is
# similar to doxygen's config file. A template extensions file can be generated
# using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_EXTENSIONS_FILE =
+RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# Configuration options related to the man page output
@@ -1772,7 +1803,7 @@ RTF_EXTENSIONS_FILE =
# classes and files.
# The default value is: NO.
-GENERATE_MAN = YES
+GENERATE_MAN = NO
# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1799,7 +1830,7 @@ MAN_EXTENSION = .3
# The default value is: NO.
# This tag requires that the tag GENERATE_MAN is set to YES.
-MAN_LINKS = YES
+MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
@@ -1823,13 +1854,13 @@ XML_OUTPUT = xml
# validating XML parser to check the syntax of the XML files.
# This tag requires that the tag GENERATE_XML is set to YES.
-XML_SCHEMA =
+XML_SCHEMA =
# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
# validating XML parser to check the syntax of the XML files.
# This tag requires that the tag GENERATE_XML is set to YES.
-XML_DTD =
+XML_DTD =
# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
@@ -1906,7 +1937,7 @@ PERLMOD_PRETTY = YES
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-PERLMOD_MAKEVAR_PREFIX =
+PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
@@ -1947,7 +1978,7 @@ SEARCH_INCLUDES = YES
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-INCLUDE_PATH =
+INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
@@ -1955,7 +1986,7 @@ INCLUDE_PATH =
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-INCLUDE_FILE_PATTERNS =
+INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
@@ -1965,7 +1996,7 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-PREDEFINED = USE_NETCDF4
+PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
@@ -1974,7 +2005,7 @@ PREDEFINED = USE_NETCDF4
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-EXPAND_AS_DEFINED =
+EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
# remove all refrences to function-like macros that are alone on a line, have an
@@ -2003,14 +2034,13 @@ SKIP_FUNCTION_MACROS = YES
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.
-TAGFILES = @abs_builddir@/main.tag=../ "@abs_builddir@/tutorial.tag = ../html_tutorial"
-
+TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.
-GENERATE_TAGFILE = @abs_builddir@/guide.tag
+GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
# class index. If set to NO only the inherited external classes will be listed.
@@ -2023,14 +2053,14 @@ ALLEXTERNALS = NO
# listed.
# The default value is: YES.
-EXTERNAL_GROUPS = NO
+EXTERNAL_GROUPS = YES
# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.
-EXTERNAL_PAGES = NO
+EXTERNAL_PAGES = YES
# The PERL_PATH should be the absolute path and name of the perl script
# interpreter (i.e. the result of 'which perl').
@@ -2058,20 +2088,20 @@ CLASS_DIAGRAMS = YES
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
-MSCGEN_PATH =
+MSCGEN_PATH =
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
-DIA_PATH =
+DIA_PATH =
# If set to YES, the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
-HIDE_UNDOC_RELATIONS = YES
+HIDE_UNDOC_RELATIONS = NO
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
@@ -2080,7 +2110,7 @@ HIDE_UNDOC_RELATIONS = YES
# set to NO
# The default value is: NO.
-HAVE_DOT = @HAVE_DOT@
+HAVE_DOT = YES
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
@@ -2090,7 +2120,7 @@ HAVE_DOT = @HAVE_DOT@
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_NUM_THREADS = 0
+DOT_NUM_THREADS = 4
# When you want a differently looking font n the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
@@ -2100,21 +2130,21 @@ DOT_NUM_THREADS = 0
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTNAME = Helvetica
+DOT_FONTNAME = FreeSans.ttf
# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
# Minimum value: 4, maximum value: 24, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTSIZE = 10
+DOT_FONTSIZE = 8
# By default doxygen will tell dot to use the default font as specified with
# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
# the path where dot can find it using this tag.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTPATH =
+DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
# each documented class showing the direct and indirect inheritance relations.
@@ -2146,7 +2176,7 @@ GROUP_GRAPHS = YES
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-UML_LOOK = NO
+UML_LOOK = YES
# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
# class node. If there are many fields or methods and many nodes the graph may
@@ -2167,7 +2197,7 @@ UML_LIMIT_NUM_FIELDS = 10
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-TEMPLATE_RELATIONS = NO
+TEMPLATE_RELATIONS = YES
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
@@ -2207,7 +2237,7 @@ CALL_GRAPH = YES
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-CALLER_GRAPH = NO
+CALLER_GRAPH = YES
# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
# hierarchy of all classes instead of a textual one.
@@ -2234,7 +2264,7 @@ DIRECTORY_GRAPH = YES
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_IMAGE_FORMAT = png
+DOT_IMAGE_FORMAT = svg
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
@@ -2246,32 +2276,32 @@ DOT_IMAGE_FORMAT = png
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-INTERACTIVE_SVG = NO
+INTERACTIVE_SVG = YES
# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_PATH =
+DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.
-DOTFILE_DIRS =
+DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
-MSCFILE_DIRS =
+MSCFILE_DIRS =
# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
# command).
-DIAFILE_DIRS =
+DIAFILE_DIRS =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
@@ -2295,7 +2325,7 @@ DOT_GRAPH_MAX_NODES = 50
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
-MAX_DOT_GRAPH_DEPTH = 0
+MAX_DOT_GRAPH_DEPTH = 5
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not seem
@@ -2307,7 +2337,7 @@ MAX_DOT_GRAPH_DEPTH = 0
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_TRANSPARENT = NO
+DOT_TRANSPARENT = YES
# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
@@ -2316,7 +2346,7 @@ DOT_TRANSPARENT = NO
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_MULTI_TARGETS = NO
+DOT_MULTI_TARGETS = YES
# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
diff --git a/Make0 b/Make0
index a66fc64..49da4ff 100644
--- a/Make0
+++ b/Make0
@@ -1,18 +1,31 @@
-# Test c output
-T=leak
-VG=valgrind --leak-check=full
+T=t
-CFLAGS=-g -O0 -I. -I./include
+NCLIB=./liblib/.libs/libnetcdf.a
-CFLAGS=-g -O0 -I../include -I/share/ed/local/spock/include
-LDFLAGS=./liblib/.libs/libnetcdf.a -L/share/ed/local/spock/lib -lhdf5_hl -lhdf5 -lz -lcurl -lm -llber -lldap -lrt -lssl -lcrypto -ldl
LFLAG=-L/usr/local/lib
+
+#HDF5LIB=-lhdf5_hl -lhdf5
+#CURLLIB=-lcurl
+#ZLIB=-lz
+
+OTHERLIBS=-lm
+
+LIBS=${NCLIB} ${LFLAG} ${CURLLIB} ${HDF5LIB} ${ZLIB} ${OTHERLIBS}
+INCL=-I. -I./include
RPATH=-Wl,-rpath,${LFLAG}
-all::
- gcc ${CFLAGS} -o t ${T}.c ${LDFLAGS}
- ${VG} ./t
+# Might want to specify a particular C compiler with flags
+CC=gcc
+#CFLAGS=-g -O2 -Wall -DHAVE_CONFIG_H
+CFLAGS=-g -O2 -DHAVE_CONFIG_H
+GFLAGS=-g -O0
+
+##################################################
+
+all::
+ cc -g -c ${T}.c ${INCL}
+ cc -g -o ${T} ${T}.o ${LIBS} ${RPATH}
-build::
- export CFLAGS; export LDFLAGS; ${MAKE} all
+clean:
+ rm -f ${T}.o ${T}.exe
diff --git a/Makefile.am b/Makefile.am
index 670b6eb..40dec02 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,10 +12,10 @@ ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = README.md COPYRIGHT INSTALL INSTALL.cmake test_prog.c \
lib_flags.am cmake CMakeLists.txt COMPILE.cmake.txt \
config.h.cmake.in cmake_uninstall.cmake.in \
- netcdf-config-version.cmake.in \
- netcdf-config.cmake.in FixBundle.cmake.in \
+ FixBundle.cmake.in \
nc-config.cmake.in RELEASE_NOTES.md CTestCustom.cmake \
- CTestConfig.cmake.in libnetcdf.settings
+ CTestConfig.cmake.in libnetcdf.settings.in netCDFConfig.cmake.in \
+ CMakeInstallation.cmake
# Doxygen doesn't build nicely in vpath builds.
# Don't do this; it wipes out any exported values
@@ -84,7 +84,7 @@ 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.
+# depend on it.
SUBDIRS = include $(OCLIB) $(H5_TEST_DIR) libdispatch libsrc \
$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) $(LIBSRC5) liblib \
$(NCGEN3) $(NCGEN) $(NCDUMP) \
@@ -93,7 +93,7 @@ docs $(EXAMPLES) \
$(UDUNITS) $(LIBCF)
# Remove these generated files, for a distclean.
-DISTCLEANFILES = VERSION comps.txt test_prog
+DISTCLEANFILES = VERSION comps.txt test_prog libnetcdf.settings
# The nc-config script helps the user build programs with netCDF.
bin_SCRIPTS = nc-config
@@ -101,6 +101,7 @@ bin_SCRIPTS = nc-config
# What needs to go in the binrary dist?
BINFILES = README_BINARIES.txt
BINFILES += include/netcdf.h share/man/man3/netcdf.3 lib/libnetcdf.a
+BINFILES += libnetcdf.settings
ZIPBINFILES = ${prefix}/include/netcdf.h ${prefix}/share/man/man3/netcdf.3 ${prefix}/lib/libnetcdf.a
if BUILD_UTILITIES
@@ -117,6 +118,37 @@ ZIPBINFILES += ${prefix}/bin/libnetcdf-7.dll ${prefix}/lib/libnetcdf.dll.a ${pre
${prefix}/lib/libnetcdf.la ${prefix}/lib/netcdfdll.def
endif # BUILD_DLL
+# install libnetcdf.settings in lib directory.
+settingsdir=$(libdir)
+settings_DATA=libnetcdf.settings
+
+#####
+# If ENABLE_FORTRAN was turned on,
+# we have new make targets, build-netcdf-fortran and
+# install-netcdf-fortran.
+#####
+
+
+###
+# build-netcdf-fortran
+###
+if BUILD_FORTRAN
+
+build-netcdf-fortran:
+ echo "Downloading and Building NetCDF-Fortran"
+ chmod u+x $(abs_top_builddir)/postinstall.sh
+ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a build"
+
+###
+# install-netcdf-fortran
+###
+install-netcdf-fortran:
+ echo "Installing NetCDF-Fortran"
+ chmod u+x $(abs_top_builddir)/postinstall.sh
+ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a install"
+
+endif
+
# At Unidata, package up binaries.
ftpbin: install
echo "Getting binaries from ${prefix}"
@@ -135,9 +167,16 @@ check_nc_config:
$(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs`
./test_prog
+
install-data-hook:
+
+# if BUILD_FORTRAN
+# chmod u+x $(abs_top_builddir)/postinstall.sh
+# sh -c "$(abs_top_builddir)/postinstall.sh -t autotools"
+#endif
+
if BUILD_DLL
- cp liblib/netcdfdll.def ${prefix}/lib
+ cp liblib/netcdfdll.def $(DESTDIR)${prefix}/lib
endif # BUILD_DLL
@echo ''
@echo '+-------------------------------------------------------------+'
@@ -165,7 +204,7 @@ endif # BUILD_DLL
@echo '| http://www.unidata.ucar.edu/software/netcdf/ |'
@echo '| |'
@echo '| NetCDF is developed and maintained at the Unidata Program |'
- @echo '| Center. Unidata provides a broad array of data and software |'
+ @echo '| Center. Unidata provides a broad array of data and software |'
@echo '| tools for use in geoscience education and research. |'
@echo '| http://www.unidata.ucar.edu |'
@echo '+-------------------------------------------------------------+'
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..15cd8d3
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,1177 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005-2013, 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
+# options selected during configure.
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at BUILD_UTILITIES_TRUE@am__append_1 = bin/ncgen3$(EXEEXT) bin/ncgen$(EXEEXT) bin/ncdump$(EXEEXT) \
+ at BUILD_UTILITIES_TRUE@share/man/man1/ncgen.1 share/man/man1/ncdump.1
+
+ at BUILD_UTILITIES_TRUE@am__append_2 = ${prefix}/bin/ncgen3$(EXEEXT) ${prefix}/bin/ncgen$(EXEEXT) ${prefix}/bin/ncdump$(EXEEXT) \
+ at BUILD_UTILITIES_TRUE@${prefix}/share/man/man1/ncgen.1 ${prefix}/share/man/man1/ncdump.1
+
+ at BUILD_DLL_TRUE@am__append_3 = bin/libnetcdf-7.dll lib/libnetcdf.dll.a lib/libnetcdf.a \
+ at BUILD_DLL_TRUE@lib/libnetcdf.la lib/netcdfdll.def
+
+ at BUILD_DLL_TRUE@am__append_4 = ${prefix}/bin/libnetcdf-7.dll ${prefix}/lib/libnetcdf.dll.a ${prefix}/lib/libnetcdf.a \
+ at BUILD_DLL_TRUE@${prefix}/lib/libnetcdf.la ${prefix}/lib/netcdfdll.def
+
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = nc-config netcdf.pc libnetcdf.settings \
+ postinstall.sh
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" \
+ "$(DESTDIR)$(settingsdir)"
+SCRIPTS = $(bin_SCRIPTS)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(pkgconfig_DATA) $(settings_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = include oc2 h5_test libdispatch libsrc libsrc4 libdap2 \
+ libsrc5 liblib ncgen3 ncgen ncdump nctest nc_test nc_test4 \
+ ncdap_test docs examples
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(srcdir)/libnetcdf.settings.in $(srcdir)/nc-config.in \
+ $(srcdir)/netcdf.pc.in $(srcdir)/postinstall.sh.in INSTALL \
+ compile config.guess config.sub install-sh ltmain.sh missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip dist-zip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# This directory stores libtool macros, put there by aclocal.
+ACLOCAL_AMFLAGS = -I m4
+
+# These files get added to the distribution.
+EXTRA_DIST = README.md COPYRIGHT INSTALL INSTALL.cmake test_prog.c \
+ lib_flags.am cmake CMakeLists.txt COMPILE.cmake.txt \
+ config.h.cmake.in cmake_uninstall.cmake.in \
+ FixBundle.cmake.in \
+ nc-config.cmake.in RELEASE_NOTES.md CTestCustom.cmake \
+ CTestConfig.cmake.in libnetcdf.settings.in netCDFConfig.cmake.in \
+ CMakeInstallation.cmake
+
+
+# Doxygen doesn't build nicely in vpath builds.
+# Don't do this; it wipes out any exported values
+#DISTCHECK_CONFIGURE_FLAGS = --disable-doxygen
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = netcdf.pc
+
+# We need a way to automatically generate INSTALL from
+# docs/install.doc, now that we've switched from texinfo to doxygen.
+# INSTALL:
+# non-existent-doxygen-to-text-utility < docs/install.doc > INSTALL
+
+# Does the user want to build the V2 API?
+ at BUILD_V2_TRUE@V2_TEST = nctest
+
+# Does the user want to build ncgen/ncdump?
+ at BUILD_UTILITIES_TRUE@NCGEN3 = ncgen3
+ at BUILD_UTILITIES_TRUE@NCGEN = ncgen
+ at BUILD_UTILITIES_TRUE@NCDUMP = ncdump
+
+# Does the user want to build the examples?
+ at BUILD_EXAMPLES_TRUE@EXAMPLES = examples
+
+# Is the user building netCDF-4?
+ at USE_NETCDF4_TRUE@H5_TEST_DIR = h5_test
+ at USE_NETCDF4_TRUE@LIBSRC4_DIR = libsrc4
+ at USE_NETCDF4_TRUE@NC_TEST4 = nc_test4
+
+# Build the opendap client?
+ at BUILD_DAP_TRUE@OCLIB = oc2
+ at BUILD_DAP_TRUE@DAP2 = libdap2
+#if BUILD_UTILITIES
+ at BUILD_DAP_TRUE@NCDAPTESTDIR = ncdap_test
+#endif # BUILD_UTILITIES
+
+# Build pnetcdf
+ at USE_PNETCDF_TRUE@LIBSRC5 = libsrc5
+
+# Build UDUNITS?
+#if BUILD_UDUNITS
+#UDUNITS = udunits
+#endif
+
+# Build libcf?
+#if BUILD_LIBCF
+#LIBCF = libcf
+#endif
+
+# Define Test directories
+ at BUILD_TESTSETS_TRUE@TESTDIRS = $(V2_TEST) nc_test $(NC_TEST4) $(NCDAPTESTDIR)
+
+# 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.
+SUBDIRS = include $(OCLIB) $(H5_TEST_DIR) libdispatch libsrc \
+$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) $(LIBSRC5) liblib \
+$(NCGEN3) $(NCGEN) $(NCDUMP) \
+$(TESTDIRS) \
+docs $(EXAMPLES) \
+$(UDUNITS) $(LIBCF)
+
+
+# Remove these generated files, for a distclean.
+DISTCLEANFILES = VERSION comps.txt test_prog libnetcdf.settings
+
+# The nc-config script helps the user build programs with netCDF.
+bin_SCRIPTS = nc-config
+
+# What needs to go in the binrary dist?
+BINFILES = README_BINARIES.txt include/netcdf.h \
+ share/man/man3/netcdf.3 lib/libnetcdf.a libnetcdf.settings \
+ $(am__append_1) $(am__append_3)
+ZIPBINFILES = ${prefix}/include/netcdf.h \
+ ${prefix}/share/man/man3/netcdf.3 ${prefix}/lib/libnetcdf.a \
+ $(am__append_2) $(am__append_4)
+
+# install libnetcdf.settings in lib directory.
+settingsdir = $(libdir)
+settings_DATA = libnetcdf.settings
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @test -f $@ || rm -f stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+nc-config: $(top_builddir)/config.status $(srcdir)/nc-config.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+netcdf.pc: $(top_builddir)/config.status $(srcdir)/netcdf.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+libnetcdf.settings: $(top_builddir)/config.status $(srcdir)/libnetcdf.settings.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+postinstall.sh: $(top_builddir)/config.status $(srcdir)/postinstall.sh.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binSCRIPTS: $(bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+install-settingsDATA: $(settings_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(settingsdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(settingsdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(settingsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(settingsdir)" || exit $$?; \
+ done
+
+uninstall-settingsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(settings_DATA)'; test -n "$(settingsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(settingsdir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(SCRIPTS) $(DATA) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(settingsdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA install-settingsDATA
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binSCRIPTS
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA \
+ uninstall-settingsDATA
+
+.MAKE: $(am__recursive_targets) all install-am install-data-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ clean-libtool cscope cscopelist-am ctags ctags-am dist \
+ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-binSCRIPTS install-data \
+ install-data-am install-data-hook install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
+ install-settingsDATA install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-binSCRIPTS uninstall-pkgconfigDATA \
+ uninstall-settingsDATA
+
+.PRECIOUS: Makefile
+
+
+#####
+# If ENABLE_FORTRAN was turned on,
+# we have new make targets, build-netcdf-fortran and
+# install-netcdf-fortran.
+#####
+
+###
+# build-netcdf-fortran
+###
+
+ at BUILD_FORTRAN_TRUE@build-netcdf-fortran:
+ at BUILD_FORTRAN_TRUE@ echo "Downloading and Building NetCDF-Fortran"
+ at BUILD_FORTRAN_TRUE@ chmod u+x $(abs_top_builddir)/postinstall.sh
+ at BUILD_FORTRAN_TRUE@ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a build"
+
+###
+# install-netcdf-fortran
+###
+ at BUILD_FORTRAN_TRUE@install-netcdf-fortran:
+ at BUILD_FORTRAN_TRUE@ echo "Installing NetCDF-Fortran"
+ at BUILD_FORTRAN_TRUE@ chmod u+x $(abs_top_builddir)/postinstall.sh
+ at BUILD_FORTRAN_TRUE@ sh -c "$(abs_top_builddir)/postinstall.sh -t autotools -a install"
+
+# At Unidata, package up binaries.
+ftpbin: install
+ echo "Getting binaries from ${prefix}"
+ ls -l ${prefix}
+ echo "These are the binaries for netCDF @PACKAGE_VERSION at ." > ${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
+ echo "PATH: $(PATH)"
+ tar cf @BINFILE_NAME@ -C ${prefix} ${BINFILES}
+ gzip -f @BINFILE_NAME@
+ zip -j netcdf_${VERSION}.zip ${ZIPBINFILES}
+
+check_nc_config:
+ $(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs`
+ ./test_prog
+
+install-data-hook:
+
+# if BUILD_FORTRAN
+# chmod u+x $(abs_top_builddir)/postinstall.sh
+# sh -c "$(abs_top_builddir)/postinstall.sh -t autotools"
+#endif
+
+ at BUILD_DLL_TRUE@ cp liblib/netcdfdll.def $(DESTDIR)${prefix}/lib
+ @echo ''
+ @echo '+-------------------------------------------------------------+'
+ @echo '| Congratulations! You have successfully installed netCDF! |'
+ @echo '| |'
+ @echo '| You can use script "nc-config" to find out the relevant |'
+ @echo '| compiler options to build your application. Enter |'
+ @echo '| |'
+ @echo '| nc-config --help |'
+ @echo '| |'
+ @echo '| for additional information. |'
+ @echo '| |'
+ @echo '| CAUTION: |'
+ @echo '| |'
+ @echo '| If you have not already run "make check", then we strongly |'
+ @echo '| recommend you do so. It does not take very long. |'
+ @echo '| |'
+ @echo '| Before using netCDF to store important data, test your |'
+ @echo '| build with "make check". |'
+ @echo '| |'
+ @echo '| NetCDF is tested nightly on many platforms at Unidata |'
+ @echo '| but your platform is probably different in some ways. |'
+ @echo '| |'
+ @echo '| If any tests fail, please see the netCDF web site: |'
+ @echo '| http://www.unidata.ucar.edu/software/netcdf/ |'
+ @echo '| |'
+ @echo '| NetCDF is developed and maintained at the Unidata Program |'
+ @echo '| Center. Unidata provides a broad array of data and software |'
+ @echo '| tools for use in geoscience education and research. |'
+ @echo '| http://www.unidata.ucar.edu |'
+ @echo '+-------------------------------------------------------------+'
+ @echo ''
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/PostInstall.cmake b/PostInstall.cmake
new file mode 100644
index 0000000..c3fa910
--- /dev/null
+++ b/PostInstall.cmake
@@ -0,0 +1 @@
+EXECUTE_PROCESS(COMMAND sh -c "${CMAKE_BINARY_DIR}/postinstall.sh -t cmake")
\ No newline at end of file
diff --git a/README.md b/README.md
index 9c3bc10..570ee57 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,10 @@
-# Unidata NetCDF
+Unidata NetCDF
+==============
+
+<a href="https://scan.coverity.com/projects/157">
+ <img alt="Coverity Scan Build Status"
+ src="https://scan.coverity.com/projects/157/badge.svg"/>
+</a>
The Unidata network Common Data Form (netCDF) is an interface for
scientific data access and a freely-distributed software library that
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index a8e047e..9343f24 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,17 +1,94 @@
-Release Notes {#release_notes}
-===============================
+Release Notes {#RELEASE_NOTES}
+=============
\brief Release notes file for the netcdf-c package.
-This file contains a high-level description of this package's evolution. Releases are in reverse chronological order (most recent first). Note that, as of netcdf 4.2, the netcdf-c++ and netcdf-fortran libraries have been separated into their own libraries.
+This file contains a high-level description of this package's evolution. Releases are in reverse chronological order (most recent first). Note that, as of netcdf 4.2, the `netcdf-c++` and `netcdf-fortran` libraries have been separated into their own libraries.
## 4.3.3 Released TBD
-### 4.3.3-rc1 Released TBD
+### 4.3.3-rc3 Released 2015-01-14
-* Bumped minimum CMake version to `2.8.9` from `2.8.8` as part of a larger pull request contributed by Nico Schlömer. [Pull Request #64](https://github.com/Unidata/netcdf-c/pull/64)
+* Added functionality to make it easier to build `netcdf-fortran` as part of the `netcdf-c` build for *NON-MSVC* builds. This functionality is enabled at configure time by using the following **Highly Experimental** options:
-* Replaced the `NetCDF Library Architecture` image with an updated version from the 2012 NetCDF Workshop slides.
+ * CMake: `-DENABLE_REMOTE_FORTRAN_BOOTSTRAP=ON`
+ * Autotools: `--enable-remote-fortran-bootstrap`
+
+Details are as follows:
+
+----
+
+Enabling these options creates two new make targets:
+
+* `build-netcdf-fortran`
+* `install-netcdf-fortran`
+
+Example Work Flow from netcdf-c source directory:
+
+* $ `./configure --enable-remote-fortran-bootstrap --prefix=$HOME/local`
+* $ `make check`
+* $ `make install`
+* $ `make build-netcdf-fortran`
+* $ `make install-netcdf-fortran`
+
+> These make targets are **only** valid after `make install` has been invoked. This cannot be enforced rigidly in the makefile for reasons we will expand on in the documentation, but in short: `make install` may require sudo, but using sudo will discard environmental variables required when attempting to build netcdf-fortran in this manner.<br><br>
+
+> It is important to note that this is functionality is for *convenience only*. It will remain possible to build `netcdf-c` and `netcdf-fortran` manually. These make targets should hopefully suffice for the majority of our users, but for corner cases it may still be required of the user to perform a manual build. [NCF-323](https://bugtracking.unidata.ucar.edu/browse/NCF-323)
+
+----
+
+* Added a failure state if the `m4` utility is not found on non-Windows systems; previously, the build would fail when it reached the point of invoking m4.
+
+* Added an explicit check in the build systems (autotools, cmake) for the CURL-related option `CURLOPT_CHUNK_BGN_FUNCTION`. This option was introduced in libcurl version `7.21.0`. On installations which require libcurl and have this version, `CURLOPT_CHUNK_BGN_FUNCTION` will be available. Otherwise, it will not.
+
+* The pnetcdf support was not properly being used to provide mpi parallel io for netcdf-3 classic files. The wrong dispatch table was being used. [NCF-319](https://bugtracking.unidata.ucar.edu/browse/NCF-319)
+
+* Fixed bug in ncgen. When classic format was in force (k=1 or k=4), the "long" datatype should be treated as int32. Was returning an error. [NCF-318](https://bugtracking.unidata.ucar.edu/browse/NCF-318)
+
+* Fixed bug where if the netCDF-C library is built with the HDF5 library but without the HDF4 library and one attempts to open an HDF4 file, an abort occurs rather than returning a proper error code (NC_ENOTNC). [NCF-317](https://bugtracking.unidata.ucar.edu/browse/NCF-317)
+
+* Added a new option, `NC_EXTRA_DEPS`, for cmake-based builds. This is analogous to `LIBS` in autotools-based builds. Example usage:
+
+ $ cmake .. -NC_EXTRA_DEPS="-lcustom_lib"
+
+More details may be found at the Unidata JIRA Dashboard. [NCF-316](https://bugtracking.unidata.ucar.edu/browse/NCF-316)
+
+
+### 4.3.3-rc2 Released 2014-09-24
+
+* Fixed the code for handling character constants
+ in datalists in ncgen. Two of the problems were:
+ 1. It failed on large constants
+ 2. It did not handle e.g. var = 'a', 'b', ...
+ in the same way that ncgen3 did.
+ See [NCF-309](https://bugtracking.unidata.ucar.edu/browse/NCF-309).
+
+* Added a new file, `netcdf_meta.h`. This file is generated automatically at configure time and contains information related to the capabilities of the netcdf library. This file may be used by projects dependent upon `netcdf` to make decisions during configuration, based on how the `netcdf` library was built. The macro `NC_HAVE_META_H` is defined in `netcdf.h`. Paired with judicious use of `ifdef`'s, this macro will indicate to developers whether or not the meta-header file is presen [...]
+
+ > Determining the presence of `netcdf_meta.h` can also be accomplished by methods common to autotools and cmake-based build systems.
+
+* Changed `Doxygen`-generated documentation hosted by Unidata to use more robust server-based searching.
+* Corrected embedded URLs in release notes.
+* Corrected an issue where building with HDF4 support with Visual Studio would fail.
+
+### 4.3.3-rc1 Released 2014-08-25
+
+* Added `CMake`-based export files, contributed by Nico Schlömer. See https://github.com/Unidata/netcdf-c/pull/74.
+
+* Fixed ncdump bug for char variables with multiple unlimited dimensions and added an associated test. Now the output CDL properly disambiguates dimension groupings, so that ncgen can generate the original file from the CDL. [NCF-310](https://bugtracking.unidata.ucar.edu/browse/NCF-310)
+
+* Converted the [Manually-maintained FAQ page](http://www.unidata.ucar.edu/software/netcdf/docs/faq.html) into markdown and added it to the `docs/` directory. This way the html version will be generated when the rest of the documentation is built, the FAQ will be under version control, and it will be in a more visible location, hopefully making it easier to maintain.
+
+* Bumped minimum required version of `cmake` to `2.8.12`. This was necessitated by the adoption of the new `CMAKE_MACOSX_RPATH` property, for use on OSX.
+
+* Jennifer Adams has requested a reversion in behavior so that all dap requests include a constraint. Problem is caused by change in prefetch where if all variables are requested, then no constraint is generated. Fix is to always generate a constraint in prefetch.
+ [NCF-308](https://bugtracking.unidata.ucar.edu/browse/NCF-308)
+
+* Added a new option for cmake-based builds, `ENABLE_DOXYGEN_LATEX_OUTPUT`. On those systems with `make` and `pdflatex`, setting this option **ON** will result in pdf versions of the documentation being built. This feature is experimental.
+
+* Bumped minimum CMake version to `2.8.9` from `2.8.8` as part of a larger pull request contributed by Nico Schlömer. [Pull Request #64](https://github.com/Unidata/netcdf-c/pull/64)
+
+* Replaced the `NetCDF Library Architecture` image with an updated version from the 2012 NetCDF Workshop slides.
* Fix HDF4 files to support chunking.
[NCF-272](https://bugtracking.unidata.ucar.edu/browse/NCF-272)
@@ -21,7 +98,7 @@ This file contains a high-level description of this package's evolution. Release
* Renamed `man4/` directory to `docs/` to make the purpose and contents clearer. See [man4 vs. docs #60](https://github.com/Unidata/netcdf-c/issues/60).
-* Removed redundant variable `BUILD_DOCS` from the CMake configuration file. See the issue at github: [BUILD\_DOCS, ENABLE\_DOXYGEN #59](https://github.com/Unidata/netcdf-c/issues/59).
+* Removed redundant variable `BUILD_DOCS` from the CMake configuration file. See the issue at github: [#59](https://github.com/Unidata/netcdf-c/issues/59).
* Added missing documentation templates to `man4/Makefile.am`, to correct an issue when trying to build the local `Doxygen`-generated documentation. This issue was reported by Nico Schlömer and may be viewed on github. [Releases miss Doxygen files #56](https://github.com/Unidata/netcdf-c/issues/56)
@@ -38,7 +115,7 @@ This file contains a high-level description of this package's evolution. Release
* `NC_TEST_DROP_SITE` - Specify an alternative Dashboard by URL or IP address.
* `NC_CTEST_DROP_LOC_PREFIX` - Specify a prefix on the remote webserver relative to the root directory. This lets CTest accommodate dashboards that do not live at the top level of the web server.
-
+
* Return an error code on open instead of an assertion violation for truncated file.
### 4.3.2-rc2 Released 2014-04-15
@@ -54,7 +131,7 @@ This file contains a high-level description of this package's evolution. Release
* `hdf5: 1.8.12`
* `zlib: 1.2.8`
* `libcurl: 7.35.0`
-
+
* Added a separate flag to enable DAP AUTH tests. These tests are disabled by default. The flags for autotools and CMAKE-based builds are (respectively):
* --enable-dap-auth-tests
* -DENABLE\_DAP\_AUTH\_TESTS
@@ -79,6 +156,12 @@ This file contains a high-level description of this package's evolution. Release
* Addressed an issue related to old DAP servers. [NCF-287](https://bugtracking.unidata.ucar.edu/browse/NCF-287)
+* Modified nc_{get/put}_vars to no longer use
+ nc_get/put_varm. They now directly use nc_get/put_vara
+ directly. This means that nc_get/put_vars now work
+ properly for user defined types as well as atomic types.
+ [NCF-228] (https://bugtracking.unidata.ucar.edu/browse/NCF-228)
+
## 4.3.1.1 Released 2014-02-05
This is a bug-fix-only release for version 4.3.1.
@@ -103,7 +186,7 @@ This is a bug-fix-only release for version 4.3.1.
* Addressed an issue reported by Jeff Whitaker regarding `nc_inq_nvars` returning an incorrect number of dimensions (this issue was introduced in 4.3.1-rc5). Integrated a test contributed by Jeff Whitaker.
-* A number of previously-disabled unit tests were reviewed and made active.
+* A number of previously-disabled unit tests were reviewed and made active.
### 4.3.1-rc5 Released 2013-12-06
@@ -167,7 +250,7 @@ This is a bug-fix-only release for version 4.3.1.
* Modify ncgen to support disambiguating references to
an enum constant in a data list. [NCF-265]
-
+
[NCF-265]:https://bugtracking.unidata.ucar.edu/browse/NCF-265
* Corrected bug in netCDF-4 dimension ID ordering assumptions, resulting in access that works locally but fails through DAP server. [NCF-166]
@@ -213,8 +296,8 @@ This is a bug-fix-only release for version 4.3.1.
$ git clone https://github.com/Unidata/netCDF-C.git
* Note: in this release, it is necessary to generate the `configure` script and makefile templates using `autoreconf` in the root netCDF-C directory.:
-
- $ autoreconf -i -f
+
+ $ autoreconf -i -f
* Added `nc_rename_grp` to allow for group renaming in netCDF-4 files. [NCF-204]
@@ -229,7 +312,7 @@ This is a bug-fix-only release for version 4.3.1.
* Added support for dynamic loading, to compliment the dynamic loading support introduced in hdf 1.8.11. Dynamic loading support depends on libdl, and is enabled as follows: [NCF-258]
* autotools-based builds: --enable-dynamic-loading
* cmake-based builds: -DENABLE\_DYNAMIC\_LOADING=ON
-
+
[NCF-258]: https://www.unidata.ucar.edu/jira/browse/NCF-258
* Fix issue of netCDF-4 parallel independent access with unlimited dimension hanging. Extending the size of an unlimited dimension in HDF5 must be a collective operation, so now an error is returned if trying to extend in independent access mode. [NCF-250]
@@ -507,8 +590,7 @@ call nf-config, ncxx-config, and ncxx4-config for for backward
compatibility with use of nc-config in current Makefiles. [NCF-165]
[NCF-179]
-* 4.2 Released 2012-03-19 (Note: Jira entries include reference to
-'[NCF-XX]')
+## 4.2.0 2012-05-01
* Completely rebuilt the DAP constraint handling. This primarily affects
users who specify a DAP constraint as part of their URL. [NCF-120]
@@ -696,7 +778,7 @@ contiguous blocks of memory. [NCF-69]
* Make changes necessary for upgrading to HDF5 1.8.7 [NCF-66]
-### 4.1.3-rc1 2011-05-06
+### 4.1.3-rc1 2011-05-06
* Stop looking for xdr if --disable-dap is used.
@@ -1003,10 +1085,10 @@ output.
Turkal).
* Fixed bug in C++ API creating 64-bit offset files. (See
-http://www.unidata.ucar.edu/software/netcdf/docs/known\_problems.html\#cxx\_64-bit.)
+http://www.unidata.ucar.edu/software/netcdf/docs/known_problems.html#cxx_64-bit).
* Fixed bug for variables larger than 4 GB. (See
-http://www.unidata.ucar.edu/software/netcdf/docs/known\_problems.html\#large\_vars\_362.)
+http://www.unidata.ucar.edu/software/netcdf/docs/known_problems.html#large_vars_362).
* Changed the configure.ac to build either 3.6.x or 4.x build from the
same configure.ac.
@@ -1157,7 +1239,7 @@ configure.
* Switched to new build system, with automake and libtool. Now shared
libraries are built (as well as static ones) on platforms which support
it. For more information about shared libraries, see
-http://www.unidata.ucar.edu/software/netcdf/docs/faq.html\#shared\_intro
+http://www.unidata.ucar.edu/software/netcdf/docs/faq.html#shared_intro
* Fixed ncdump crash that happened when no arguments were used.
@@ -1320,7 +1402,7 @@ dimension sizes between 2\^31 and 2\^32 (for byte variables).
* Fixed ncgen to properly handle dimensions between 2\^31 and 2\^32.
-### 3.6.0-beta2
+### 3.6.0-beta2
* Added -v2 (version 2 format with 64-bit offsets) option to
ncgen, to specify that generated files or generated C/Fortran code
@@ -1338,7 +1420,7 @@ part of the build process. VC++ with managed extensions is required
* Added windows installer files to build windows binary installs.
-### 3.6.0-beta1
+### 3.6.0-beta1
* By incorporating Greg Sjaardema's patch, added support for
64-bit offset files, which remove many of the restrictions relating to
@@ -1354,7 +1436,7 @@ format testing, and once for 64-bit offset format testing.
* The implementation of the Fortran-77 interface has been adapted to
version 4.3 of Burkhard Burow's "cfortran.h".
-### 3.6.0-alpha
+### 3.6.0-alpha
* Added NEC SX specific optimization for NFILL tunable
parameter in libsrc/putget.c
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..a0c40b0
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1194 @@
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.15'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.15], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.15])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named 'Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running 'make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "$am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+ am_maintainer_other[ make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer])],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+ [whether $CC understands -c and -o together],
+ [am_cv_prog_cc_c_o],
+ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
+
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([acinclude.m4])
diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0
deleted file mode 100644
index 74cc2a3..0000000
--- a/autom4te.cache/output.0
+++ /dev/null
@@ -1,9959 +0,0 @@
-@%:@! /bin/sh
-@%:@ From configure.ac Id: configure.ac,v 1.450 2010/05/28 19:42:47 dmh Exp .
-@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for netCDF 4.3.3-rc1.
-@%:@
-@%:@ Report bugs to <support-netcdf at unidata.ucar.edu>.
-@%:@
-@%:@
-@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-@%:@
-@%:@
-@%:@ This configure script is free software; the Free Software Foundation
-@%:@ gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in @%:@(
- *posix*) :
- set -o posix ;; @%:@(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in @%:@(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
- # into an infinite loop, continuously re-executing ourselves.
- if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
- _as_can_reexec=no; export _as_can_reexec;
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
- fi
- # We don't want this to propagate to other subprocesses.
- { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in @%:@(
- *posix*) :
- set -o posix ;; @%:@(
- *) :
- ;;
-esac
-fi
-"
- as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
- exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
- as_have_required=yes
-else
- as_have_required=no
-fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- as_found=:
- case $as_dir in @%:@(
- /*)
- for as_base in sh bash ksh sh5; do
- # Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
- CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
- break 2
-fi
-fi
- done;;
- esac
- as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
- if test "x$CONFIG_SHELL" != x; then :
- export CONFIG_SHELL
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in @%:@ ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
- else
- $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: support-netcdf at unidata.ucar.edu about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
- fi
- exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} @%:@ as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
- # already done that, so ensure we don't try to do so again and fall
- # in an infinite loop. This has already happened in practice.
- _as_can_reexec=no; export _as_can_reexec
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -pR'
- fi
-else
- as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIB@&t at OBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='netCDF'
-PACKAGE_TARNAME='netcdf'
-PACKAGE_VERSION='4.3.3-rc1'
-PACKAGE_STRING='netCDF 4.3.3-rc1'
-PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
-PACKAGE_URL=''
-
-ac_unique_file="include/netcdf.h"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_header_list=
-ac_subst_vars='LTLIBOBJS
-LIB@&t at OBJS
-HAS_SZLIB
-HAS_HDF5
-HAS_PNETCDF
-HAS_HDF4
-HAS_NC4
-HAS_NC2
-HAS_DAP
-NC_LIBS
-BINFILE_NAME
-ALLOCA
-EGREP
-GREP
-CPP
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-HAVE_DOT
-DOT
-DOXYGEN
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-BUILD_INTERNAL_DOCS
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_dll
-with_minblocksize
-enable_doxygen
-enable_dot
-enable_internal_docs
-enable_fsync
-enable_jna
-enable_valgrind_tests
-enable_netcdf_4
-enable_netcdf4
-enable_dynamic_loading
-enable_hdf4
-enable_hdf4_file_tests
-enable_pnetcdf
-enable_extra_example_tests
-enable_parallel_tests
-with_default_chunk_size
-with_max_default_cache_size
-with_default_chunks_in_cache
-with_chunk_cache_size
-with_chunk_cache_nelems
-with_chunk_cache_preemption
-enable_logging
-enable_cdmremote
-enable_dap
-enable_dap_remote_tests
-enable_dap_auth_tests
-enable_dap_groups
-enable_dap_long_tests
-enable_extra_tests
-enable_ffio
-enable_examples
-enable_v2
-enable_utilities
-enable_testsets
-enable_large_file_tests
-enable_benchmarks
-enable_extreme_numbers
-with_temp_large
-enable_largefile
-enable_diskless
-enable_mmap
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *=) ac_optarg= ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- case $ac_envvar in #(
- '' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
- esac
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures netCDF 4.3.3-rc1 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking ...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- @<:@@S|@ac_default_prefix@:>@
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- @<:@PREFIX@:>@
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root @<:@DATAROOTDIR/doc/netcdf@:>@
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST cross-compile to build programs to run on HOST [BUILD]
- --target=TARGET configure for building compilers for TARGET [HOST]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of netCDF 4.3.3-rc1:";;
- esac
- cat <<\_ACEOF
-
-Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-dll build a win32 DLL (only works on mingw)
- --enable-doxygen Enable generation of documentation.
- --enable-dot Use dot (provided by graphviz) to generate charts
- and graphs in the doxygen-based documentation.
- --enable-internal-docs Include documentation of library internals. This is
- of interest only to those developing the netCDF
- library.
- --enable-fsync enable fsync support
- --enable-jna enable jna bug workaround
- --enable-valgrind-tests build with valgrind-tests (valgrind is required,
- static builds only)
- --enable-netcdf-4 build with netcdf-4 (HDF5 and zlib required)
- --enable-netcdf4 (just a synonym for enable-netcdf-4)
- --enable-dynamic-loading
- enable dynamic loading for use with supported hdf5
- installs (libdl, HDF5 required)
- --enable-hdf4 build netcdf-4 with HDF4 read capability (HDF4, HDF5
- and zlib required)
- --enable-hdf4-file-tests
- get some HDF4 files from Unidata ftp site and test
- that they can be read
- --enable-pnetcdf build with parallel I/O for classic and 64-bit
- offset files using parallel-netcdf
- --enable-extra-example-tests
- Run extra example tests; requires GNU sed. Ignored
- if netCDF-4 is not enabled.
- --enable-parallel-tests Run extra parallel IO tests. Ignored if netCDF-4 is
- not enabled, or built on a system without parallel
- I/O support.
- --enable-logging enable logging capability (only applies when
- netCDF-4 is built). This debugging features is only
- of interest to netCDF developers. Ignored if
- netCDF-4 is not enabled.
- --enable-cdmremote build with cdmremote client support.
- --disable-dap build without DAP client support.
- --disable-dap-remote-tests
- disable dap remote tests
- --enable-dap-auth-tests enable dap remote authorization tests
- --disable-dap-groups disable @<:@netcdf4@:>@ dap group names
- --enable-dap-long-tests enable dap long tests
- --enable-extra-tests run some extra tests that may not pass because of
- known issues
- --enable-ffio use ffio instead of posixio (ex. on the Cray)
- --disable-examples don't build the netCDF examples during make check
- (examples are treated as extra tests by netCDF)
- --disable-v2 turn off the netCDF version 2 API
- --disable-utilities don't build netCDF utilities ncgen, ncdump, and
- nccopy
- --disable-testsets don't build or run netCDF tests
- --enable-large-file-tests
- Run tests which create very large data files (~13 GB
- disk space required, but it will be recovered when
- tests are complete). See option --with-temp-large to
- specify temporary directory
- --enable-benchmarks Run benchmarks. This is an experimental feature. You
- must fetch sample data files from the Unidata ftp
- site to use these benchmarks. The benchmarks are a
- bunch of extra tests, which are timed. We use these
- tests to check netCDF performance.
- --disable-extreme-numbers
- don't use extreme numbers during testing, such as
- MAX_INT - 1
- --disable-largefile omit support for large files
- --disable-diskless disable support for in-memory (NC_DISKLESS) files
- --enable-mmap allow mmap for in-memory files
- --enable-jna enable jna bug fix
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-minblocksize=<integer>
- Specify minimum I/O blocksize for netCDF classic and
- 64-bit offset format files.
- --with-default-chunk-size=<integer>
- Specify default size of chunks in bytes.
- --with-max-default-cache-size=<integer>
- Specify maximum size (in bytes) for the default
- per-var chunk cache.
- --with-default-chunks-in-cache=<integer>
- Specify the number of chunks to store in default
- per-variable cache.
- --with-chunk-cache-size=<integer>
- Specify default file cache chunk size for HDF5 files
- in bytes.
- --with-chunk-cache-nelems=<integer>
- Specify default maximum number of elements in the
- file chunk cache chunk for HDF5 files (should be
- prime number).
- --with-chunk-cache-preemption=<float between 0 and 1 inclusive>
- Specify default file chunk cache preemption policy
- for HDF5 files (a number between 0 and 1,
- inclusive).
- --with-temp-large=<directory>
- specify directory where large files (i.e. >2 GB)
- will be written, if large files tests are run with
- --enable-large-file-tests
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <support-netcdf at unidata.ucar.edu>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-netCDF configure 4.3.3-rc1
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-@%:@ ac_fn_c_try_compile LINENO
-@%:@ --------------------------
-@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
- if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_compile
-
-@%:@ ac_fn_c_try_link LINENO
-@%:@ -----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_link
-
-@%:@ ac_fn_c_try_cpp LINENO
-@%:@ ----------------------
-@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } > conftest.i && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_cpp
-
-@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
-@%:@ the include files in INCLUDES and setting the cache variable VAR
-@%:@ accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ---------------------------------------------- ##
-## Report this to support-netcdf at unidata.ucar.edu ##
-## ---------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_mongrel
-
-@%:@ ac_fn_c_try_run LINENO
-@%:@ ----------------------
-@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
-@%:@ that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_try_run
-
-@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-@%:@ -------------------------------------------------------
-@%:@ Tests whether HEADER exists and can be compiled using the include files in
-@%:@ INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-@%:@include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_header_compile
-
-@%:@ ac_fn_c_check_func LINENO FUNC VAR
-@%:@ ----------------------------------
-@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_func
-
-@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-@%:@ -------------------------------------------
-@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
-@%:@ variable VAR accordingly.
-ac_fn_c_check_type ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=no"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof ($2))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_type
-
-@%:@ ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-@%:@ ---------------------------------------------
-@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-@%:@ accordingly.
-ac_fn_c_check_decl ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- as_decl_name=`echo $2|sed 's/ *(.*//'`
- as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-@%:@ifndef $as_decl_name
-@%:@ifdef __cplusplus
- (void) $as_decl_use;
-@%:@else
- (void) $as_decl_name;
-@%:@endif
-@%:@endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_decl
-
-@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
-@%:@ ----------------------------------------------------
-@%:@ Tries to find if the field MEMBER exists in type AGGR, after including
-@%:@ INCLUDES, setting cache variable VAR accordingly.
-ac_fn_c_check_member ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (ac_aggr.$3)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$4=yes"
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (sizeof ac_aggr.$3)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$4=yes"
-else
- eval "$4=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} @%:@ ac_fn_c_check_member
-
-@%:@ ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-@%:@ --------------------------------------------
-@%:@ Tries to find the compile-time value of EXPR in a program that includes
-@%:@ INCLUDES, setting VAR accordingly. Returns whether the value could be
-@%:@ computed
-ac_fn_c_compute_int ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array @<:@1 - 2 * !(($2) >= 0)@:>@;
-test_array @<:@0@:>@ = 0;
-return test_array @<:@0@:>@;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_lo=0 ac_mid=0
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0;
-return test_array @<:@0@:>@;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_hi=$ac_mid; break
-else
- as_fn_arith $ac_mid + 1 && ac_lo=$as_val
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array @<:@1 - 2 * !(($2) < 0)@:>@;
-test_array @<:@0@:>@ = 0;
-return test_array @<:@0@:>@;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_hi=-1 ac_mid=-1
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array @<:@1 - 2 * !(($2) >= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0;
-return test_array @<:@0@:>@;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_lo=$ac_mid; break
-else
- as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- ac_lo= ac_hi=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@;
-test_array @<:@0@:>@ = 0;
-return test_array @<:@0@:>@;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_hi=$ac_mid
-else
- as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in @%:@((
-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-'') ac_retval=1 ;;
-esac
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
-@%:@include <stdio.h>
-@%:@include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- return 1;
- if (($2) < 0)
- {
- long int i = longval ();
- if (i != ($2))
- return 1;
- fprintf (f, "%ld", i);
- }
- else
- {
- unsigned long int i = ulongval ();
- if (i != ($2))
- return 1;
- fprintf (f, "%lu", i);
- }
- /* Do not output a trailing newline, as this causes \r\n confusion
- on some platforms. */
- return ferror (f) || fclose (f) != 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
- ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
- fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} @%:@ ac_fn_c_compute_int
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by netCDF $as_me 4.3.3-rc1, which was
-generated by GNU Autoconf 2.69. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
- done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
- 2)
- as_fn_append ac_configure_args1 " '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- as_fn_append ac_configure_args " '$ac_arg'"
- ;;
- esac
- done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in @%:@((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
-elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
-else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special files
- # actually), so we avoid doing that. DJGPP emulates it as a regular file.
- if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-as_fn_append ac_header_list " stdlib.h"
-as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " sys/param.h"
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) as_fn_append ac_configure_args " '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-# Create the VERSION file, which contains the package version from
-# AC_INIT.
-echo -n 4.3.3-rc1>VERSION
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.3.3-rc1" >&5
-$as_echo "$as_me: netCDF 4.3.3-rc1" >&6;}
-
-# Keep libtool macros in an m4 directory.
-
-
-# Find out about the host we're building on.
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-# Find out about the target we're building for.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if ${ac_cv_target+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$target_alias" = x; then
- ac_cv_target=$ac_cv_host
-else
- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
-ac_config_headers="$ac_config_headers config.h"
-
-
-# This call is required by automake.
-AM_INIT_AUTOMAKE(foreign dist-zip subdir-objects)
-
-# Check for the existence of this file before proceeding.
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking user options" >&5
-$as_echo "$as_me: checking user options" >&6;}
-
-# If --enable-dll is specified the DLL will be built. This only works
-# on mingw.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a win32 DLL is desired" >&5
-$as_echo_n "checking whether a win32 DLL is desired... " >&6; }
-@%:@ Check whether --enable-dll was given.
-if test "${enable_dll+set}" = set; then :
- enableval=$enable_dll;
-fi
-
-test "x$enable_dll" = xyes || enable_dll=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dll" >&5
-$as_echo "$enable_dll" >&6; }
-if test "x$enable_dll" = xyes; then
-
-$as_echo "@%:@define DLL_NETCDF 1" >>confdefs.h
-
-
-$as_echo "@%:@define DLL_EXPORT 1" >>confdefs.h
-
-fi
-AM_CONDITIONAL(BUILD_DLL, test x$enable_dll = xyes)
-
-# Did the user specify a default minimum blocksize (NCIO_MINBLOCKSIZE) for posixio?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a NCIO_MINBLOCKSIZE was specified" >&5
-$as_echo_n "checking whether a NCIO_MINBLOCKSIZE was specified... " >&6; }
-
-@%:@ Check whether --with-minblocksize was given.
-if test "${with_minblocksize+set}" = set; then :
- withval=$with_minblocksize; NCIO_MINBLOCKSIZE=$with_minblocksize
-else
- NCIO_MINBLOCKSIZE=256
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $NCIO_MINBLOCKSIZE" >&5
-$as_echo "$NCIO_MINBLOCKSIZE" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define NCIO_MINBLOCKSIZE $NCIO_MINBLOCKSIZE
-_ACEOF
-
-
-@%:@ Check whether --enable-doxygen was given.
-if test "${enable_doxygen+set}" = set; then :
- enableval=$enable_doxygen;
-fi
-
-test "x$enable_doxygen" = xyes || enable_doxygen=no
-AM_CONDITIONAL(BUILD_DOCS, test "x$enable_doxygen" = xyes)
-
-@%:@ Check whether --enable-dot was given.
-if test "${enable_dot+set}" = set; then :
- enableval=$enable_dot;
-fi
-
- test "x$enable_dot" = xyes || enable_dot=no
-
-@%:@ Check whether --enable-internal-docs was given.
-if test "${enable_internal_docs+set}" = set; then :
- enableval=$enable_internal_docs;
-fi
-
-test "x$enable_internal_docs" = xyes || enable_internal_docs=no
-BUILD_INTERNAL_DOCS=$enable_internal_docs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsync support is enabled" >&5
-$as_echo_n "checking if fsync support is enabled... " >&6; }
-@%:@ Check whether --enable-fsync was given.
-if test "${enable_fsync+set}" = set; then :
- enableval=$enable_fsync;
-else
- enable_fsync=no
-fi
-
-test "x$enable_fsync" = xno || enable_fsync=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_fsync" >&5
-$as_echo "$enable_fsync" >&6; }
-if test "x$enable_fsync" = xyes ; then
-
-$as_echo "@%:@define USE_FSYNC 1" >>confdefs.h
-
-fi
-
-# Temporary until JNA bug is fixed (which is probably never).
-# See Jira NCF-298
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if jna bug workaround is enabledd" >&5
-$as_echo_n "checking if jna bug workaround is enabledd... " >&6; }
-@%:@ Check whether --enable-jna was given.
-if test "${enable_jna+set}" = set; then :
- enableval=$enable_jna;
-else
- enable_jna=no
-fi
-
-test "x$enable_jna" = xno || enable_jna=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_jna" >&5
-$as_echo "$enable_jna" >&6; }
-if test "x$enable_jna" = xyes ; then
-
-$as_echo "@%:@define JNA 1" >>confdefs.h
-
-fi
-
-# Does the user want to run extra tests with valgrind?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra valgrind tests should be run" >&5
-$as_echo_n "checking whether extra valgrind tests should be run... " >&6; }
-@%:@ Check whether --enable-valgrind-tests was given.
-if test "${enable_valgrind_tests+set}" = set; then :
- enableval=$enable_valgrind_tests;
-fi
-
-test "x$enable_valgrind_tests" = xyes || enable_valgrind_tests=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_valgrind_tests" >&5
-$as_echo "$enable_valgrind_tests" >&6; }
-
-# Does the user want to build netcdf-4?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we should try to build netCDF-4" >&5
-$as_echo_n "checking whether we should try to build netCDF-4... " >&6; }
-@%:@ Check whether --enable-netcdf-4 was given.
-if test "${enable_netcdf_4+set}" = set; then :
- enableval=$enable_netcdf_4;
-fi
-
-test "x$enable_netcdf_4" = xno || enable_netcdf_4=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_netcdf_4" >&5
-$as_echo "$enable_netcdf_4" >&6; }
-
-# Synonym
-# --enable-netcdf-4 is the controlling enable switch
-if test "x$enable_netcdf_4" = "x" ; then
- @%:@ Check whether --enable-netcdf4 was given.
-if test "${enable_netcdf4+set}" = set; then :
- enableval=$enable_netcdf4;
-fi
-
- enable_netcdf_4="$enable_netcdf4"
-fi
-
-# Does the user require dynamic loading?
-# This is only for those hdf5 installs that support it.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking do we require hdf5 dynamic-loading support" >&5
-$as_echo_n "checking do we require hdf5 dynamic-loading support... " >&6; }
-@%:@ Check whether --enable-dynamic-loading was given.
-if test "${enable_dynamic_loading+set}" = set; then :
- enableval=$enable_dynamic_loading;
-fi
-
-test "x$enable_dynamic_loading" = xno || enable_dynamic_loading=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dynamic_loading" >&5
-$as_echo "$enable_dynamic_loading" >&6; }
-
-# Does the user want to turn on HDF4 read ability?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether reading of HDF4 SD files is to be enabled" >&5
-$as_echo_n "checking whether reading of HDF4 SD files is to be enabled... " >&6; }
-@%:@ Check whether --enable-hdf4 was given.
-if test "${enable_hdf4+set}" = set; then :
- enableval=$enable_hdf4;
-fi
-
-test "x$enable_hdf4" = xyes || enable_hdf4=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hdf4" >&5
-$as_echo "$enable_hdf4" >&6; }
-
-# Does the user want to turn on extra HDF4 file tests?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to fetch some sample HDF4 files from Unidata ftp site to test HDF4 reading (requires wget)" >&5
-$as_echo_n "checking whether to fetch some sample HDF4 files from Unidata ftp site to test HDF4 reading (requires wget)... " >&6; }
-@%:@ Check whether --enable-hdf4-file-tests was given.
-if test "${enable_hdf4_file_tests+set}" = set; then :
- enableval=$enable_hdf4_file_tests;
-fi
-
-test "x$enable_hdf4" = xyes -a "x$enable_hdf4_file_tests" = xyes || enable_hdf4_file_tests=no
-if test "x$enable_hdf4_file_tests" = xyes; then
-
-$as_echo "@%:@define USE_HDF4_FILE_TESTS 1" >>confdefs.h
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hdf4_file_tests" >&5
-$as_echo "$enable_hdf4_file_tests" >&6; }
-
-# Does the user want to turn on PNETCDF read ability?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O for classic and 64-bit offset files using parallel-netcdf is to be enabled" >&5
-$as_echo_n "checking whether parallel I/O for classic and 64-bit offset files using parallel-netcdf is to be enabled... " >&6; }
-@%:@ Check whether --enable-pnetcdf was given.
-if test "${enable_pnetcdf+set}" = set; then :
- enableval=$enable_pnetcdf;
-fi
-
-test "x$enable_pnetcdf" = xyes || enable_pnetcdf=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pnetcdf" >&5
-$as_echo "$enable_pnetcdf" >&6; }
-
-# Does the user want to run extra example tests
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extra example tests should be run" >&5
-$as_echo_n "checking whether extra example tests should be run... " >&6; }
-@%:@ Check whether --enable-extra-example-tests was given.
-if test "${enable_extra_example_tests+set}" = set; then :
- enableval=$enable_extra_example_tests;
-fi
-
-test "x$enable_extra_example_tests" = xyes || enable_extra_example_tests=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_example_tests" >&5
-$as_echo "$enable_extra_example_tests" >&6; }
-
-# Does the user want to run extra parallel tests when parallel netCDF-4 is built?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel IO tests should be run" >&5
-$as_echo_n "checking whether parallel IO tests should be run... " >&6; }
-@%:@ Check whether --enable-parallel-tests was given.
-if test "${enable_parallel_tests+set}" = set; then :
- enableval=$enable_parallel_tests;
-fi
-
-test "x$enable_parallel_tests" = xyes || enable_parallel_tests=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel_tests" >&5
-$as_echo "$enable_parallel_tests" >&6; }
-
-# Did the user specify a default chunk size?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default chunk size in bytes was specified" >&5
-$as_echo_n "checking whether a default chunk size in bytes was specified... " >&6; }
-
-@%:@ Check whether --with-default-chunk-size was given.
-if test "${with_default_chunk_size+set}" = set; then :
- withval=$with_default_chunk_size; DEFAULT_CHUNK_SIZE=$with_default_chunk_size
-else
- DEFAULT_CHUNK_SIZE=4194304
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEFAULT_CHUNK_SIZE" >&5
-$as_echo "$DEFAULT_CHUNK_SIZE" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define DEFAULT_CHUNK_SIZE $DEFAULT_CHUNK_SIZE
-_ACEOF
-
-
-# Did the user specify a max per-var cache size?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a maximum per-variable cache size for HDF5 was specified" >&5
-$as_echo_n "checking whether a maximum per-variable cache size for HDF5 was specified... " >&6; }
-
-@%:@ Check whether --with-max-default-cache-size was given.
-if test "${with_max_default_cache_size+set}" = set; then :
- withval=$with_max_default_cache_size; MAX_DEFAULT_CACHE_SIZE=$with_max_default_cache_size
-else
- MAX_DEFAULT_CACHE_SIZE=67108864
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAX_DEFAULT_CACHE_SIZE" >&5
-$as_echo "$MAX_DEFAULT_CACHE_SIZE" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define MAX_DEFAULT_CACHE_SIZE $MAX_DEFAULT_CACHE_SIZE
-_ACEOF
-
-
-# Did the user specify a number of chunks in default per-var cache size?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a number of chunks for the default per-variable cache was specified" >&5
-$as_echo_n "checking whether a number of chunks for the default per-variable cache was specified... " >&6; }
-
-@%:@ Check whether --with-default-chunks-in-cache was given.
-if test "${with_default_chunks_in_cache+set}" = set; then :
- withval=$with_default_chunks_in_cache; DEFAULT_CHUNKS_IN_CACHE=$with_default_chunks_in_cache
-else
- DEFAULT_CHUNKS_IN_CACHE=10
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEFAULT_CHUNKS_IN_CACHE" >&5
-$as_echo "$DEFAULT_CHUNKS_IN_CACHE" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define DEFAULT_CHUNKS_IN_CACHE $DEFAULT_CHUNKS_IN_CACHE
-_ACEOF
-
-
-# Did the user specify a default cache size?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default file cache size for HDF5 was specified" >&5
-$as_echo_n "checking whether a default file cache size for HDF5 was specified... " >&6; }
-
-@%:@ Check whether --with-chunk-cache-size was given.
-if test "${with_chunk_cache_size+set}" = set; then :
- withval=$with_chunk_cache_size; CHUNK_CACHE_SIZE=$with_chunk_cache_size
-else
- CHUNK_CACHE_SIZE=4194304
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHUNK_CACHE_SIZE" >&5
-$as_echo "$CHUNK_CACHE_SIZE" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define CHUNK_CACHE_SIZE $CHUNK_CACHE_SIZE
-_ACEOF
-
-
-# Did the user specify a default cache nelems?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default file cache maximum number of elements for HDF5 was specified" >&5
-$as_echo_n "checking whether a default file cache maximum number of elements for HDF5 was specified... " >&6; }
-
-@%:@ Check whether --with-chunk-cache-nelems was given.
-if test "${with_chunk_cache_nelems+set}" = set; then :
- withval=$with_chunk_cache_nelems; CHUNK_CACHE_NELEMS=$with_chunk_cache_nelems
-else
- CHUNK_CACHE_NELEMS=1009
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHUNK_CACHE_NELEMS" >&5
-$as_echo "$CHUNK_CACHE_NELEMS" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define CHUNK_CACHE_NELEMS $CHUNK_CACHE_NELEMS
-_ACEOF
-
-
-# Did the user specify a default cache preemption?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default cache preemption for HDF5 was specified" >&5
-$as_echo_n "checking whether a default cache preemption for HDF5 was specified... " >&6; }
-
-@%:@ Check whether --with-chunk-cache-preemption was given.
-if test "${with_chunk_cache_preemption+set}" = set; then :
- withval=$with_chunk_cache_preemption; CHUNK_CACHE_PREEMPTION=$with_chunk_cache_preemption
-else
- CHUNK_CACHE_PREEMPTION=0.75
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHUNK_CACHE_PREEMPTION" >&5
-$as_echo "$CHUNK_CACHE_PREEMPTION" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-@%:@define CHUNK_CACHE_PREEMPTION $CHUNK_CACHE_PREEMPTION
-_ACEOF
-
-
-# Does the user want to enable netcdf-4 logging?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF-4 logging is enabled" >&5
-$as_echo_n "checking whether netCDF-4 logging is enabled... " >&6; }
-@%:@ Check whether --enable-logging was given.
-if test "${enable_logging+set}" = set; then :
- enableval=$enable_logging;
-fi
-
-test "x$enable_logging" = xyes || enable_logging=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_logging" >&5
-$as_echo "$enable_logging" >&6; }
-
-# Capture the state of the --enable-cdmremote flag
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cdmremote client is to be built" >&5
-$as_echo_n "checking whether cdmremote client is to be built... " >&6; }
-@%:@ Check whether --enable-cdmremote was given.
-if test "${enable_cdmremote+set}" = set; then :
- enableval=$enable_cdmremote;
-fi
-
-test "x$enable_cdmremote" = xyes || enable_cdmremote=no
-# CDMREMOTE requires netCDF-4
-if test "x$enable_netcdf_4" = "xno" ; then enable_cdmremote=no ; fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_cdmremote" >&5
-$as_echo "$enable_cdmremote" >&6; }
-
-## Capture the state of the --enable-dap flag
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether DAP client is to be built" >&5
-$as_echo_n "checking whether DAP client is to be built... " >&6; }
-@%:@ Check whether --enable-dap was given.
-if test "${enable_dap+set}" = set; then :
- enableval=$enable_dap;
-fi
-
-test "x$enable_dap" = xno || enable_dap=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap" >&5
-$as_echo "$enable_dap" >&6; }
-
-# OC now has its own version of rpc (really xdr), so no longer need the library
-## Capture the state of the --enable-rpc flag
-#AC_MSG_CHECKING([whether rpc client and server are to be built])
-#AC_ARG_ENABLE([rpc],
-# [AS_HELP_STRING([--enable-rpc],
-# [build with rpc client and server support.])])
-#test "x$enable_rpc" = xyes || enable_rpc=no
-#AC_MSG_RESULT($enable_rpc)
-
-# Curl support is required if and only if any of these flags are set:
-# 1. --enable-dap
-# 2. --enable-cdmremote
-# 3. --enable-rpc
-
-if test "x$enable_dap" = "xyes" -o "x$enable_cdmremote" = "xyes" -o "x$enable_rpc" = "xyes" ; then
-require_curl=yes
-else
-require_curl=no
-fi
-
-# See if the user provided us with a curl library
-# Do an initial lib test for curl, but suppress the default action
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $@%:@ != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile. We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
- then :; else
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- fi
- # We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
- # argument, so we may need to know it at that point already.
- # Even if this section looks crufty: it has the advantage of
- # actually working.
- break;;
- * )
- break;;
- esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
- ac_file=''
-fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
-done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
- { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if { ac_try='./conftest$ac_cv_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_compiler_gnu=yes
-else
- ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-else
- CFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl_easy_setopt in -lcurl" >&5
-$as_echo_n "checking for curl_easy_setopt in -lcurl... " >&6; }
-if ${ac_cv_lib_curl_curl_easy_setopt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char curl_easy_setopt ();
-int
-main ()
-{
-return curl_easy_setopt ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_curl_curl_easy_setopt=yes
-else
- ac_cv_lib_curl_curl_easy_setopt=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curl_curl_easy_setopt" >&5
-$as_echo "$ac_cv_lib_curl_curl_easy_setopt" >&6; }
-if test "x$ac_cv_lib_curl_curl_easy_setopt" = xyes; then :
- found_curl=yes
-else
- found_curl=no
-fi
-
-#AC_CHECK_LIB([curl.dll],[curl_easy_setopt])
-# If curl is required but there is no curl, then complain
-if test $require_curl = yes ; then
- # Removed. Why assume no curl if we are building DLL?
- #if test $enable_dll = yes ; then
- # AC_MSG_NOTICE([libcurl not found; continuing])
- #elif test $found_curl = no ; then
- if test $found_curl = no ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: libcurl not found; disabling remote protocol(s) support" >&5
-$as_echo "$as_me: libcurl not found; disabling remote protocol(s) support" >&6;}
- enable_dap=no
- enable_cdmremote=no
- enable_rpc=no
- elif test $found_curl = yes ; then
- # Redo the check lib to actually add -lcurl
- #AC_CHECK_LIB([curl], [curl_easy_setopt])
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing curl_easy_setopt" >&5
-$as_echo_n "checking for library containing curl_easy_setopt... " >&6; }
-if ${ac_cv_search_curl_easy_setopt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char curl_easy_setopt ();
-int
-main ()
-{
-return curl_easy_setopt ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' curl curl.dll; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_curl_easy_setopt=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_curl_easy_setopt+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_curl_easy_setopt+:} false; then :
-
-else
- ac_cv_search_curl_easy_setopt=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_curl_easy_setopt" >&5
-$as_echo "$ac_cv_search_curl_easy_setopt" >&6; }
-ac_res=$ac_cv_search_curl_easy_setopt
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
- fi
-fi
-
-# Default is now to always do the short remote tests
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dap remote testing should be enabled (default on)" >&5
-$as_echo_n "checking whether dap remote testing should be enabled (default on)... " >&6; }
-@%:@ Check whether --enable-dap-remote-tests was given.
-if test "${enable_dap_remote_tests+set}" = set; then :
- enableval=$enable_dap_remote_tests;
-fi
-
-test "x$enable_dap_remote_tests" = xno || enable_dap_remote_tests=yes
-if test "x$enable_dap" = "xno" ; then
- enable_dap_remote_tests=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap_remote_tests" >&5
-$as_echo "$enable_dap_remote_tests" >&6; }
-
-# Default is now to do the remote authorization tests
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dap remote authorization testing should be enabled (default off)" >&5
-$as_echo_n "checking whether dap remote authorization testing should be enabled (default off)... " >&6; }
-@%:@ Check whether --enable-dap-auth-tests was given.
-if test "${enable_dap_auth_tests+set}" = set; then :
- enableval=$enable_dap_auth_tests;
-fi
-
-test "x$enable_dap_auth_tests" = xyes || enable_dap_auth_tests=no
-# dap must be enabled
-if test "x$enable_dap" = "xno" ; then
- enable_dap_auth_tests=no
-fi
-# if remote tests are disabled, then so is this
-if test "x$enable_dap_remote_tests" = "xno" ; then
- enable_dap_remote_tests=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap_auth_tests" >&5
-$as_echo "$enable_dap_auth_tests" >&6; }
-
-# Control if groups are supported in [netcdf4]dap2 code
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netcdf4 group names should be enabled (default on)" >&5
-$as_echo_n "checking whether netcdf4 group names should be enabled (default on)... " >&6; }
-@%:@ Check whether --enable-dap-groups was given.
-if test "${enable_dap_groups+set}" = set; then :
- enableval=$enable_dap_groups;
-fi
-
-test "x$enable_groups" = xno || enable_dap_groups=yes
-if test "x$enable_dap" = "xno" -o "x$enable_enable_netcdf_4" = "xno" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: dap groups disabled because dap disabled or netcdf-4 disabled" >&5
-$as_echo "$as_me: dap groups disabled because dap disabled or netcdf-4 disabled" >&6;}
- enable_dap_groups=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap_groups" >&5
-$as_echo "$enable_dap_groups" >&6; }
-if test "x$enable_dap_groups" = xyes; then
-
-$as_echo "@%:@define ENABLE_DAP_GROUPS 1" >>confdefs.h
-
-fi
-
-# Set the config.h flags
-if test "x$enable_dap" = xyes; then
-
-$as_echo "@%:@define USE_DAP 1" >>confdefs.h
-
-
-$as_echo "@%:@define ENABLE_DAP 1" >>confdefs.h
-
-fi
-
-if test "x$enable_dap_remote_tests" = xyes; then
-
-$as_echo "@%:@define ENABLE_DAP_REMOTE_TESTS 1" >>confdefs.h
-
-fi
-
-if test "x$enable_cdmremote" = xyes; then
-
-$as_echo "@%:@define USE_CDMREMOTE 1" >>confdefs.h
-
-fi
-
-if test "x$enable_rpc" = xyes; then
-
-$as_echo "@%:@define BUILD_RPC 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the time-consuming dap tests should be enabled (default off)" >&5
-$as_echo_n "checking whether the time-consuming dap tests should be enabled (default off)... " >&6; }
-@%:@ Check whether --enable-dap-long-tests was given.
-if test "${enable_dap_long_tests+set}" = set; then :
- enableval=$enable_dap_long_tests;
-fi
-
-test "x$enable_dap_long_tests" = xyes || enable_dap_long_tests=no
-if test "x$enable_dap_remote_tests" = "xno" ; then
- enable_dap_long_tests=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap_long_tests" >&5
-$as_echo "$enable_dap_long_tests" >&6; }
-
-AM_CONDITIONAL(INTERNAL_OCLIB,test "x" = "x")
-
-# Does the user want to do some extra tests?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
-$as_echo_n "checking whether netCDF extra tests should be run (developers only)... " >&6; }
-@%:@ Check whether --enable-extra-tests was given.
-if test "${enable_extra_tests+set}" = set; then :
- enableval=$enable_extra_tests;
-fi
-
-test "x$enable_extra_tests" = xyes || enable_extra_tests=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
-$as_echo "$enable_extra_tests" >&6; }
-if test "x$enable_extra_tests" = xyes; then
-
-$as_echo "@%:@define EXTRA_TESTS 1" >>confdefs.h
-
-fi
-AM_CONDITIONAL(EXTRA_TESTS, test x$enable_extra_tests = xyes)
-
-# Does the user want to use the ffio module?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether FFIO will be used" >&5
-$as_echo_n "checking whether FFIO will be used... " >&6; }
-@%:@ Check whether --enable-ffio was given.
-if test "${enable_ffio+set}" = set; then :
- enableval=$enable_ffio;
-fi
-
-test "x$enable_ffio" = xyes || enable_ffio=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_ffio" >&5
-$as_echo "$enable_ffio" >&6; }
-if test "x$enable_ffio" = xyes; then
-
-$as_echo "@%:@define USE_FFIO 1" >>confdefs.h
-
-fi
-AM_CONDITIONAL(USE_FFIO, test x$enable_ffio = xyes)
-
-# Does the user want to enable the user-provided NEC-SX vectorization
-# patch.
-
-nc_build_c=yes
-nc_build_v2=yes
-nc_build_utilities=yes
-nc_build_tests=yes
-nc_build_examples=yes
-
-# Does the user want to build examples?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether examples should be built" >&5
-$as_echo_n "checking whether examples should be built... " >&6; }
-@%:@ Check whether --enable-examples was given.
-if test "${enable_examples+set}" = set; then :
- enableval=$enable_examples;
-fi
-
-test "x$enable_examples" = xno && nc_build_examples=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_examples" >&5
-$as_echo "$nc_build_examples" >&6; }
-AM_CONDITIONAL(BUILD_EXAMPLES, test x$nc_build_examples = xyes)
-
-# Does the user want to disable the V2 API?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether v2 netCDF API should be built" >&5
-$as_echo_n "checking whether v2 netCDF API should be built... " >&6; }
-@%:@ Check whether --enable-v2 was given.
-if test "${enable_v2+set}" = set; then :
- enableval=$enable_v2;
-fi
-
-test "x$enable_v2" = xno && nc_build_v2=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_v2" >&5
-$as_echo "$nc_build_v2" >&6; }
-AM_CONDITIONAL(BUILD_V2, test x$nc_build_v2 = xyes)
-if test "x$nc_build_v2" = xno; then
-
-cat >>confdefs.h <<_ACEOF
-@%:@define NO_NETCDF_2 1
-_ACEOF
-
-fi
-
-# Does the user want to disable ncgen/ncdump/nccopy?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the ncgen/ncdump/nccopy should be built" >&5
-$as_echo_n "checking whether the ncgen/ncdump/nccopy should be built... " >&6; }
-@%:@ Check whether --enable-utilities was given.
-if test "${enable_utilities+set}" = set; then :
- enableval=$enable_utilities;
-fi
-
-test "x$nc_build_c" = xno && enable_utilities=no
-test "x$enable_utilities" = xno && nc_build_utilities=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_utilities" >&5
-$as_echo "$nc_build_utilities" >&6; }
-AM_CONDITIONAL(BUILD_UTILITIES, test x$nc_build_utilities = xyes)
-
-# Does the user want to disable all tests?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether test should be built and run" >&5
-$as_echo_n "checking whether test should be built and run... " >&6; }
-@%:@ Check whether --enable-testsets was given.
-if test "${enable_testsets+set}" = set; then :
- enableval=$enable_testsets;
-fi
-
-test "x$enable_testsets" = xno || enable_testsets=yes
-nc_build_tests=$enable_testsets
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_tests" >&5
-$as_echo "$nc_build_tests" >&6; }
-AM_CONDITIONAL(BUILD_TESTSETS, test x$nc_build_tests = xyes)
-
-# Does the user want to run tests for large files (> 2GiB)?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
-$as_echo_n "checking whether large file (> 2GB) tests should be run... " >&6; }
-@%:@ Check whether --enable-large-file-tests was given.
-if test "${enable_large_file_tests+set}" = set; then :
- enableval=$enable_large_file_tests;
-fi
-
-test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_large_file_tests" >&5
-$as_echo "$enable_large_file_tests" >&6; }
-AM_CONDITIONAL(LARGE_FILE_TESTS, test x$enable_large_file_tests = xyes)
-if test "x$enable_large_file_tests" = xyes; then
-
-$as_echo "@%:@define LARGE_FILE_TESTS 1" >>confdefs.h
-
-fi
-
-# Does the user want to run benchmarks?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether benchmaks should be run (experimental)" >&5
-$as_echo_n "checking whether benchmaks should be run (experimental)... " >&6; }
-@%:@ Check whether --enable-benchmarks was given.
-if test "${enable_benchmarks+set}" = set; then :
- enableval=$enable_benchmarks;
-fi
-
-test "x$enable_benchmarks" = xyes || enable_benchmarks=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_benchmarks" >&5
-$as_echo "$enable_benchmarks" >&6; }
-AM_CONDITIONAL(BUILD_BENCHMARKS, test x$enable_benchmarks = xyes)
-
-# Does the user want to use extreme numbers in testing.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extreme numbers should be used in tests" >&5
-$as_echo_n "checking whether extreme numbers should be used in tests... " >&6; }
-@%:@ Check whether --enable-extreme-numbers was given.
-if test "${enable_extreme_numbers+set}" = set; then :
- enableval=$enable_extreme_numbers;
-fi
-
-case "$host_cpu $host_os" in
- *386*solaris*)
- test "x$enable_extreme_numbers" = xyes || enable_extreme_numbers=no
- ;;
- *)
- test "x$enable_extreme_numbers" = xno || enable_extreme_numbers=yes
- ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extreme_numbers" >&5
-$as_echo "$enable_extreme_numbers" >&6; }
-
-if test "x$enable_extreme_numbers" = xyes; then
-
-$as_echo "@%:@define USE_EXTREME_NUMBERS 1" >>confdefs.h
-
-fi
-
-# If the env. variable TEMP_LARGE is set, or if
-# --with-temp-large=<directory>, use it as a place for the large
-# (i.e. > 2 GiB) files created during the large file testing.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to put large temp files if large file tests are run" >&5
-$as_echo_n "checking where to put large temp files if large file tests are run... " >&6; }
-
-@%:@ Check whether --with-temp-large was given.
-if test "${with_temp_large+set}" = set; then :
- withval=$with_temp_large; TEMP_LARGE=$with_temp_large
-fi
-
-TEMP_LARGE=${TEMP_LARGE-.}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEMP_LARGE" >&5
-$as_echo "$TEMP_LARGE" >&6; }
-#AC_SUBST(TEMP_LARGE)
-
-cat >>confdefs.h <<_ACEOF
-@%:@define TEMP_LARGE "$TEMP_LARGE"
-_ACEOF
-
-
-# According to the autoconf mailing list gurus, we must test for
-# compilers unconditionally. That is, we can't skip looking for the
-# fortran compilers, just because the user doesn't want fortran. This
-# is due to a limitation in autoconf.
-
-# Find the C compiler.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: finding C compiler" >&5
-$as_echo "$as_me: finding C compiler" >&6;}
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $@%:@ != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_compiler_gnu=yes
-else
- ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-else
- CFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-AM_PROG_CC_C_O
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this sort of thing. */
- typedef int charset[2];
- const charset cs = { 0, 0 };
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *pcpcc;
- char **ppc;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- pcpcc = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++pcpcc;
- ppc = (char**) pcpcc;
- pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this sort of thing. */
- char tx;
- char *t = &tx;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- if (s) return 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; } bx;
- struct s *b = &bx; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- if (!foo) return 0;
- }
- return !cs[0] && !zero.x;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_const=yes
-else
- ac_cv_c_const=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "@%:@define const /**/" >>confdefs.h
-
-fi
-
-
-# CURLOPT_USERNAME is not defined until curl version 7.19.1
-# CURLOPT_PASSWORD is not defined until curl version 7.19.1
-# CURLOPT_KEYPASSWD is not defined until curl version 7.16.4
-# CURLINFO_RESPONSE_CODE is not defined until curl version 7.10.7
-
-# Save/restore CFLAGS
-SAVECFLAGS="$CFLAGS"
-CFLAGS="${curl_cflags}"
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include "curl/curl.h"
-int
-main ()
-{
-int x = CURLOPT_USERNAME;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- haveusername=yes
-else
- haveusername=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLOPT_USERNAME is defined" >&5
-$as_echo_n "checking whether CURLOPT_USERNAME is defined... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${haveusername}" >&5
-$as_echo "${haveusername}" >&6; }
-if test $haveusername = yes; then
-
-$as_echo "@%:@define HAVE_CURLOPT_USERNAME 1" >>confdefs.h
-
-fi
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include "curl/curl.h"
-int
-main ()
-{
-int x = CURLOPT_PASSWORD;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- havepassword=yes
-else
- havepassword=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLOPT_PASSWORD is defined" >&5
-$as_echo_n "checking whether CURLOPT_PASSWORD is defined... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${havepassword}" >&5
-$as_echo "${havepassword}" >&6; }
-if test $havepassword = yes; then
-
-$as_echo "@%:@define HAVE_CURLOPT_PASSWORD 1" >>confdefs.h
-
-fi
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include "curl/curl.h"
-int
-main ()
-{
-int x = CURLOPT_KEYPASSWD;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- havekeypassword=yes
-else
- havekeypassword=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLOPT_KEYPASSWD is defined" >&5
-$as_echo_n "checking whether CURLOPT_KEYPASSWD is defined... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${havekeypassword}" >&5
-$as_echo "${havekeypassword}" >&6; }
-if test $havekeypassword = yes; then
-
-$as_echo "@%:@define HAVE_CURLOPT_KEYPASSWD 1" >>confdefs.h
-
-fi
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include "curl/curl.h"
-int
-main ()
-{
-int x = CURLINFO_RESPONSE_CODE;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- haveresponsecode=yes
-else
- haveresponsecode=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLINFO_RESPONSE_CODE is defined" >&5
-$as_echo_n "checking whether CURLINFO_RESPONSE_CODE is defined... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${haveresponsecode}" >&5
-$as_echo "${haveresponsecode}" >&6; }
-if test $haveresponsecode = yes; then
-
-$as_echo "@%:@define HAVE_CURLINFO_RESPONSE_CODE 1" >>confdefs.h
-
-fi
-
-CFLAGS="$SAVECFLAGS"
-
-# Set up libtool.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: setting up libtool" >&5
-$as_echo "$as_me: setting up libtool" >&6;}
-LT_PREREQ(2.2)
-LT_INIT(win32-dll)
-
-# Valgrind tests don't work with shared builds because of some libtool
-# weirdness.
-if test "x$enable_shared" = xyes; then
- if test $enable_valgrind_tests = yes; then
- as_fn_error $? "No valgrind tests with shared libraries" "$LINENO" 5
- fi
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: finding other utilities" >&5
-$as_echo "$as_me: finding other utilities" >&6;}
-
-# Is doxygen installed? If so, have configure construct the Doxyfile.
-for ac_prog in doxygen
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DOXYGEN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DOXYGEN"; then
- ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DOXYGEN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-DOXYGEN=$ac_cv_prog_DOXYGEN
-if test -n "$DOXYGEN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
-$as_echo "$DOXYGEN" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$DOXYGEN" && break
-done
-
-if test -z "$DOXYGEN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - documentation will not be built" >&5
-$as_echo "$as_me: WARNING: Doxygen not found - documentation will not be built" >&2;}
-fi
-
-# Is graphviz/dot installed? If so, we'll use dot to create
-# graphs in the documentation.
-for ac_prog in dot
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DOT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DOT"; then
- ac_cv_prog_DOT="$DOT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DOT="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-DOT=$ac_cv_prog_DOT
-if test -n "$DOT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
-$as_echo "$DOT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$DOT" && break
-done
-
-if test -z "$DOT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will use simple charts in documentation" >&5
-$as_echo "$as_me: WARNING: dot not found - will use simple charts in documentation" >&2;}
- HAVE_DOT=NO
-elif test "x$enable_dot" = xno; then
- HAVE_DOT=NO
-else
- HAVE_DOT=YES
-fi
-# If we have doxygen, and it's enabled, then process the file.
-if test "x$enable_doxygen" != xno; then
- if test -n "$DOXYGEN"; then
-
- ac_config_files="$ac_config_files man4/Doxyfile"
-
- fi
-# Note: the list of files to input to doxygen
-# has been moved to man4/Doxyfile.in so
-# that make distcheck works correctly.
-# Any new inputs should be inserted into
-# man4/Doxyfile.in and possibley man4/Makefile.am
-fi
-
-# Find the install program.
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in @%:@((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
- done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-# Check to see if any macros must be set to enable large (>2GB) files.
-@%:@ Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
- enableval=$enable_largefile;
-fi
-
-if test "$enable_largefile" != no; then
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_sys_largefile_CC=no
- if test "$GCC" != yes; then
- ac_save_CC=$CC
- while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
- break
-fi
-rm -f core conftest.err conftest.$ac_objext
- CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_largefile_CC=' -n32'; break
-fi
-rm -f core conftest.err conftest.$ac_objext
- break
- done
- CC=$ac_save_CC
- rm -f conftest.$ac_ext
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
- if test "$ac_cv_sys_largefile_CC" != no; then
- CC=$CC$ac_cv_sys_largefile_CC
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_file_offset_bits=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@define _FILE_OFFSET_BITS 64
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_file_offset_bits=unknown
- break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
- no | unknown) ;;
- *)
-cat >>confdefs.h <<_ACEOF
-@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
- if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_large_files=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@define _LARGE_FILES 1
-@%:@include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_large_files=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_large_files=unknown
- break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
- no | unknown) ;;
- *)
-cat >>confdefs.h <<_ACEOF
-@%:@define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
- fi
-
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: displaying some results" >&5
-$as_echo "$as_me: displaying some results" >&6;}
-
-## This next macro just prints some results for debugging
-## support issues.
-UD_DISPLAY_RESULTS
-
-# For nightly build testing, output CC, FC, etc.
-echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> comps.txt
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types, headers, and functions" >&5
-$as_echo "$as_me: checking types, headers, and functions" >&6;}
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@ifdef __STDC__
-@%:@ include <limits.h>
-@%:@else
-@%:@ include <assert.h>
-@%:@endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdlib_h" = xyes; then :
-
-else
-
-$as_echo "@%:@define NO_STDLIB_H /**/" >>confdefs.h
-
-fi
-
-
-ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_types_h" = xyes; then :
-
-else
-
-$as_echo "@%:@define NO_SYS_TYPES_H /**/" >>confdefs.h
-
-fi
-
-
-for ac_header in sys/param.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_param_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_SYS_PARAM_H 1
-_ACEOF
-
-fi
-
-done
-
-#AC_CHECK_HEADERS([locale.h])
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$as_ac_Header=yes"
-else
- eval "$as_ac_Header=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_ac_Header
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' dir; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-
-else
- ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-
-else
- ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
-$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if ${ac_cv_header_sys_wait_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
- int s;
- wait (&s);
- s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_sys_wait_h=yes
-else
- ac_cv_header_sys_wait_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
-$as_echo "$ac_cv_header_sys_wait_h" >&6; }
-if test $ac_cv_header_sys_wait_h = yes; then
-
-$as_echo "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_time=yes
-else
- ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-$as_echo "@%:@define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
-for ac_header in locale.h stdio.h stdarg.h errno.h ctype.h fcntl.h malloc.h stdlib.h string.h strings.h unistd.h sys/stat.h getopt.h sys/time.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-for ac_func in vprintf
-do :
- ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_VPRINTF 1
-_ACEOF
-
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
-
-$as_echo "@%:@define HAVE_DOPRNT 1" >>confdefs.h
-
-fi
-
-fi
-done
-
-
-
-# Do sys/resource.h separately
-#AC_CHECK_HEADERS([sys/resource.h],[havesysresource=1],[havesysresource=0])
-#if test "x$enable_dll" != xyes ; then
-for ac_header in sys/resource.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_resource_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_SYS_RESOURCE_H 1
-_ACEOF
-
-fi
-
-done
-
-#fi
-
-# Check for <stdbool.h> that conforms to C99 requirements
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
-$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
-if ${ac_cv_header_stdbool_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #include <stdbool.h>
- #ifndef bool
- "error: bool is not defined"
- #endif
- #ifndef false
- "error: false is not defined"
- #endif
- #if false
- "error: false is not 0"
- #endif
- #ifndef true
- "error: true is not defined"
- #endif
- #if true != 1
- "error: true is not 1"
- #endif
- #ifndef __bool_true_false_are_defined
- "error: __bool_true_false_are_defined is not defined"
- #endif
-
- struct s { _Bool s: 1; _Bool t; } s;
-
- char a[true == 1 ? 1 : -1];
- char b[false == 0 ? 1 : -1];
- char c[__bool_true_false_are_defined == 1 ? 1 : -1];
- char d[(bool) 0.5 == true ? 1 : -1];
- /* See body of main program for 'e'. */
- char f[(_Bool) 0.0 == false ? 1 : -1];
- char g[true];
- char h[sizeof (_Bool)];
- char i[sizeof s.t];
- enum { j = false, k = true, l = false * true, m = true * 256 };
- /* The following fails for
- HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
- _Bool n[m];
- char o[sizeof n == m * sizeof n[0] ? 1 : -1];
- char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
- /* Catch a bug in an HP-UX C compiler. See
- http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
- http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
- */
- _Bool q = true;
- _Bool *pq = &q;
-
-int
-main ()
-{
-
- bool e = &s;
- *pq |= q;
- *pq |= ! q;
- /* Refer to every declared value, to avoid compiler optimizations. */
- return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
- + !m + !n + !o + !p + !q + !pq);
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdbool_h=yes
-else
- ac_cv_header_stdbool_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
-$as_echo "$ac_cv_header_stdbool_h" >&6; }
- ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
-if test "x$ac_cv_type__Bool" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE__BOOL 1
-_ACEOF
-
-
-fi
-
-
-if test $ac_cv_header_stdbool_h = yes; then
-
-$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
-
-fi
-
-
-# Check for these functions...
-for ac_func in strlcat strerror snprintf strchr strrchr strcat strcpy \
- strdup strcasecmp strtod strtoll strtoull strstr \
- mkstemp rand memcmp \
- getrlimit gettimeofday fsync MPI_Comm_f2c
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-# Does the user want to use NC_DISKLESS?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether in-memory files are enabled" >&5
-$as_echo_n "checking whether in-memory files are enabled... " >&6; }
-@%:@ Check whether --enable-diskless was given.
-if test "${enable_diskless+set}" = set; then :
- enableval=$enable_diskless;
-fi
-
-test "x$enable_diskless" = xno || enable_diskless=yes
-
-if test "x$enable_dap" = "xyes" -o "x$enable_cdmremote" = "xyes" -o "x$enable_rpc" = "xyes" ; then
-enable_diskless=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: --enable-dap requires --enable-diskless" >&5
-$as_echo "$as_me: --enable-dap requires --enable-diskless" >&6;}
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_diskless" >&5
-$as_echo "$enable_diskless" >&6; }
-
-
-# check for useful, but not essential, memio support
-for ac_func in memmove getpagesize sysconf
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-# Does the user want to allow use of mmap for NC_DISKLESS?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap is enabled for in-memory files" >&5
-$as_echo_n "checking whether mmap is enabled for in-memory files... " >&6; }
-@%:@ Check whether --enable-mmap was given.
-if test "${enable_mmap+set}" = set; then :
- enableval=$enable_mmap;
-fi
-
-test "x$enable_mmap" = xyes || enable_mmap=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_mmap" >&5
-$as_echo "$enable_mmap" >&6; }
-
-# check for mmap and mremap availability before committing to use mmap
-
-
-
- for ac_header in $ac_header_list
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-
-for ac_func in getpagesize
-do :
- ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_GETPAGESIZE 1
-_ACEOF
-
-fi
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
-$as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_mmap_fixed_mapped=no
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-/* malloc might have been renamed as rpl_malloc. */
-#undef malloc
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
- Here is a matrix of mmap possibilities:
- mmap private not fixed
- mmap private fixed at somewhere currently unmapped
- mmap private fixed at somewhere already mapped
- mmap shared not fixed
- mmap shared fixed at somewhere currently unmapped
- mmap shared fixed at somewhere already mapped
- For private mappings, we should verify that changes cannot be read()
- back from the file, nor mmap's back from the file at a different
- address. (There have been systems where private was not correctly
- implemented like the infamous i386 svr4.0, and systems where the
- VM page cache was not coherent with the file system buffer cache
- like early versions of FreeBSD and possibly contemporary NetBSD.)
- For shared mappings, we should conversely verify that changes get
- propagated back to all the places they're supposed to be.
-
- Grep wants private fixed already mapped.
- The main things grep needs to know about mmap are:
- * does it exist and is it safe to write into the mmap'd area
- * how to use it (BSD variants) */
-
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
-char *malloc ();
-#endif
-
-/* This mess was copied from the GNU getpagesize.h. */
-#ifndef HAVE_GETPAGESIZE
-# ifdef _SC_PAGESIZE
-# define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-# ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-# ifdef EXEC_PAGESIZE
-# define getpagesize() EXEC_PAGESIZE
-# else /* no EXEC_PAGESIZE */
-# ifdef NBPG
-# define getpagesize() NBPG * CLSIZE
-# ifndef CLSIZE
-# define CLSIZE 1
-# endif /* no CLSIZE */
-# else /* no NBPG */
-# ifdef NBPC
-# define getpagesize() NBPC
-# else /* no NBPC */
-# ifdef PAGESIZE
-# define getpagesize() PAGESIZE
-# endif /* PAGESIZE */
-# endif /* no NBPC */
-# endif /* no NBPG */
-# endif /* no EXEC_PAGESIZE */
-# else /* no HAVE_SYS_PARAM_H */
-# define getpagesize() 8192 /* punt totally */
-# endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
-int
-main ()
-{
- char *data, *data2, *data3;
- const char *cdata2;
- int i, pagesize;
- int fd, fd2;
-
- pagesize = getpagesize ();
-
- /* First, make a file with some known garbage in it. */
- data = (char *) malloc (pagesize);
- if (!data)
- return 1;
- for (i = 0; i < pagesize; ++i)
- *(data + i) = rand ();
- umask (0);
- fd = creat ("conftest.mmap", 0600);
- if (fd < 0)
- return 2;
- if (write (fd, data, pagesize) != pagesize)
- return 3;
- close (fd);
-
- /* Next, check that the tail of a page is zero-filled. File must have
- non-zero length, otherwise we risk SIGBUS for entire page. */
- fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
- if (fd2 < 0)
- return 4;
- cdata2 = "";
- if (write (fd2, cdata2, 1) != 1)
- return 5;
- data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
- if (data2 == MAP_FAILED)
- return 6;
- for (i = 0; i < pagesize; ++i)
- if (*(data2 + i))
- return 7;
- close (fd2);
- if (munmap (data2, pagesize))
- return 8;
-
- /* Next, try to mmap the file at a fixed address which already has
- something else allocated at it. If we can, also make sure that
- we see the same garbage. */
- fd = open ("conftest.mmap", O_RDWR);
- if (fd < 0)
- return 9;
- if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_FIXED, fd, 0L))
- return 10;
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data2 + i))
- return 11;
-
- /* Finally, make sure that changes to the mapped area do not
- percolate back to the file as seen by read(). (This is a bug on
- some variants of i386 svr4.0.) */
- for (i = 0; i < pagesize; ++i)
- *(data2 + i) = *(data2 + i) + 1;
- data3 = (char *) malloc (pagesize);
- if (!data3)
- return 12;
- if (read (fd, data3, pagesize) != pagesize)
- return 13;
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data3 + i))
- return 14;
- close (fd);
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_func_mmap_fixed_mapped=yes
-else
- ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
-$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-
-$as_echo "@%:@define HAVE_MMAP 1" >>confdefs.h
-
-fi
-rm -f conftest.mmap conftest.txt
-
-for ac_func in mremap
-do :
- ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap"
-if test "x$ac_cv_func_mremap" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_MREMAP 1
-_ACEOF
-
-fi
-done
-
-
-if test "x$ac_cv_func_mmap_fixed_mapped" != xyes -o "x$ac_cv_func_mremap" != xyes ; then
- echo "mmap function or mremap function is not available: disabling mmap"
- enable_mmap=no
-fi
-
-# Setup the diskless and mmap conditionals
-if test "x$enable_diskless" = xyes ; then
-
-$as_echo "@%:@define USE_DISKLESS 1" >>confdefs.h
-
- if test "x$enable_mmap" = xyes; then
-
-$as_echo "@%:@define USE_MMAP 1" >>confdefs.h
-
- fi
-fi
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-@%:@define size_t unsigned int
-_ACEOF
-
-fi
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments. Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_working_alloca_h=yes
-else
- ac_cv_working_alloca_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-# endif
-# endif
-# endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_func_alloca_works=yes
-else
- ac_cv_func_alloca_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "@%:@define HAVE_ALLOCA 1" >>confdefs.h
-
-else
- # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble. Some versions do not even contain alloca or
-# contain a buggy version. If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-$as_echo "@%:@define C_ALLOCA 1" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then :
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-@%:@define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_c_stack_direction=0
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
- int dir, dummy = 0;
- if (! addr)
- addr = &dummy;
- *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
- dir = depth ? find_stack_direction (addr, depth - 1) : 0;
- return dir + dummy;
-}
-
-int
-main (int argc, char **argv)
-{
- return find_stack_direction (0, argc + !argv + 20) < 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_c_stack_direction=1
-else
- ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-@%:@define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-ac_fn_c_check_decl "$LINENO" "isnan" "ac_cv_have_decl_isnan" "#include <math.h>
-"
-if test "x$ac_cv_have_decl_isnan" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_ISNAN $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "isinf" "ac_cv_have_decl_isinf" "#include <math.h>
-"
-if test "x$ac_cv_have_decl_isinf" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_ISINF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "isfinite" "ac_cv_have_decl_isfinite" "#include <math.h>
-"
-if test "x$ac_cv_have_decl_isfinite" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_ISFINITE $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "signbit" "ac_cv_have_decl_signbit" "#include <math.h>
-"
-if test "x$ac_cv_have_decl_signbit" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DECL_SIGNBIT $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-_ACEOF
-
-
-$as_echo "@%:@define HAVE_ST_BLKSIZE 1" >>confdefs.h
-
-fi
-
-
-UD_CHECK_IEEE
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-@%:@define size_t unsigned int
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-@%:@define off_t long int
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
-if test "x$ac_cv_type_ssize_t" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_SSIZE_T 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_PTRDIFF_T 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_type "$LINENO" "uchar" "ac_cv_type_uchar" "$ac_includes_default"
-if test "x$ac_cv_type_uchar" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_UCHAR 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_type "$LINENO" "longlong" "ac_cv_type_longlong" "$ac_includes_default"
-if test "x$ac_cv_type_longlong" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LONGLONG 1
-_ACEOF
-
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5
-$as_echo_n "checking whether char is unsigned... " >&6; }
-if ${ac_cv_c_char_unsigned+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static int test_array @<:@1 - 2 * !(((char) -1) < 0)@:>@;
-test_array @<:@0@:>@ = 0;
-return test_array @<:@0@:>@;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_char_unsigned=no
-else
- ac_cv_c_char_unsigned=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5
-$as_echo "$ac_cv_c_char_unsigned" >&6; }
-if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
- $as_echo "@%:@define __CHAR_UNSIGNED__ 1" >>confdefs.h
-
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_bigendian=unknown
- # See if we're dealing with a universal compiler.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __APPLE_CC__
- not a universal capable compiler
- #endif
- typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- # Check for potential -arch flags. It is not universal unless
- # there are at least two -arch flags with different values.
- ac_arch=
- ac_prev=
- for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
- if test -n "$ac_prev"; then
- case $ac_word in
- i?86 | x86_64 | ppc | ppc64)
- if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
- ac_arch=$ac_word
- else
- ac_cv_c_bigendian=universal
- break
- fi
- ;;
- esac
- ac_prev=
- elif test "x$ac_word" = "x-arch"; then
- ac_prev=arch
- fi
- done
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test $ac_cv_c_bigendian = unknown; then
- # See if sys/param.h defines the BYTE_ORDER macro.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
- && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
- && LITTLE_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- # It does; now see whether it defined to BIG_ENDIAN or not.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_bigendian=yes
-else
- ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- # It does; now see whether it defined to _BIG_ENDIAN or not.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_bigendian=yes
-else
- ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # Compile a test program.
- if test "$cross_compiling" = yes; then :
- # Try to guess by grepping values from an object file.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-short int ascii_mm[] =
- { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
- short int ascii_ii[] =
- { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
- int use_ascii (int i) {
- return ascii_mm[i] + ascii_ii[i];
- }
- short int ebcdic_ii[] =
- { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
- short int ebcdic_mm[] =
- { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
- int use_ebcdic (int i) {
- return ebcdic_mm[i] + ebcdic_ii[i];
- }
- extern int foo;
-
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
- ac_cv_c_bigendian=yes
- fi
- if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
- if test "$ac_cv_c_bigendian" = unknown; then
- ac_cv_c_bigendian=no
- else
- # finding both strings is unlikely to happen, but who knows?
- ac_cv_c_bigendian=unknown
- fi
- fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-
- /* Are we little or big endian? From Harbison&Steele. */
- union
- {
- long int l;
- char c[sizeof (long int)];
- } u;
- u.l = 1;
- return u.c[sizeof (long int) - 1] == 1;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_c_bigendian=no
-else
- ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
- yes)
- $as_echo "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h
-;; #(
- no)
- ;; #(
- universal)
-
-$as_echo "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
-
- ;; #(
- *)
- as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
- esac
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if ${ac_cv_sizeof_short+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_short" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (short)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_short=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (int)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_int=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (long)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_long=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
-$as_echo_n "checking size of long long... " >&6; }
-if ${ac_cv_sizeof_long_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_long_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (long long)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_long_long=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-$as_echo "$ac_cv_sizeof_long_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5
-$as_echo_n "checking size of float... " >&6; }
-if ${ac_cv_sizeof_float+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_float" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (float)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_float=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5
-$as_echo "$ac_cv_sizeof_float" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_FLOAT $ac_cv_sizeof_float
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
-$as_echo_n "checking size of double... " >&6; }
-if ${ac_cv_sizeof_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_double" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (double)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_double=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
-$as_echo "$ac_cv_sizeof_double" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_DOUBLE $ac_cv_sizeof_double
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
-$as_echo_n "checking size of off_t... " >&6; }
-if ${ac_cv_sizeof_off_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_off_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (off_t)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_off_t=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
-$as_echo "$ac_cv_sizeof_off_t" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_OFF_T $ac_cv_sizeof_off_t
-_ACEOF
-
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
-$as_echo_n "checking size of size_t... " >&6; }
-if ${ac_cv_sizeof_size_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_size_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (size_t)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_size_t=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
-$as_echo "$ac_cv_sizeof_size_t" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
-_ACEOF
-
-
-
-if test "x$enable_netcdf_4" = xyes || test "x$enable_dap" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing deflate" >&5
-$as_echo_n "checking for library containing deflate... " >&6; }
-if ${ac_cv_search_deflate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char deflate ();
-int
-main ()
-{
-return deflate ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' zlibwapi zlibstat zlib zlib1 z; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_deflate=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_deflate+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_deflate+:} false; then :
-
-else
- ac_cv_search_deflate=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_deflate" >&5
-$as_echo "$ac_cv_search_deflate" >&6; }
-ac_res=$ac_cv_search_deflate
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-else
-
- as_fn_error $? "Can't find or link to the z library. Turn off netCDF-4 and \
- opendap with --disable-netcdf-4 --disable-dap, or see config.log for errors." "$LINENO" 5
-fi
-
-fi
-
-# We need the math library
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for floor in -lm" >&5
-$as_echo_n "checking for floor in -lm... " >&6; }
-if ${ac_cv_lib_m_floor+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char floor ();
-int
-main ()
-{
-return floor ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_m_floor=yes
-else
- ac_cv_lib_m_floor=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_floor" >&5
-$as_echo "$ac_cv_lib_m_floor" >&6; }
-if test "x$ac_cv_lib_m_floor" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBM 1
-_ACEOF
-
- LIBS="-lm $LIBS"
-
-else
- as_fn_error $? "Can't find or link to the math library." "$LINENO" 5
-fi
-
-
-if test "x$enable_netcdf_4" = xyes; then
-
-
-$as_echo "@%:@define USE_NETCDF4 1" >>confdefs.h
-
-
-$as_echo "@%:@define H5_USE_16_API 1" >>confdefs.h
-
-
- # The user may have built HDF5 with libdl (dynamic loading support).
- if test "x$enable_dynamic_loading" = xyes; then
- for ac_header in dlfcn.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_DLFCN_H 1
-_ACEOF
-
-else
- nc_dlfcn_h_missing=yes
-fi
-
-done
-
- if test "x$nc_dlfcn_h_missing" = xyes; then
- as_fn_error $? "Cannot find dlfcn.h, yet --enable-dynamic-loading was used." "$LINENO" 5
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dl_dlopen=yes
-else
- ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBDL 1
-_ACEOF
-
- LIBS="-ldl $LIBS"
-
-else
- as_fn_error $? "Can't find or link against libdf. See config.log for errors." "$LINENO" 5
-fi
-
-
-$as_echo "@%:@define USE_LIBDL 1" >>confdefs.h
-
- fi
-
- # Check for the main hdf5 and hdf5_hl library.
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing H5Fflush" >&5
-$as_echo_n "checking for library containing H5Fflush... " >&6; }
-if ${ac_cv_search_H5Fflush+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char H5Fflush ();
-int
-main ()
-{
-return H5Fflush ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' hdf5dll hdf5; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_H5Fflush=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_H5Fflush+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_H5Fflush+:} false; then :
-
-else
- ac_cv_search_H5Fflush=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_H5Fflush" >&5
-$as_echo "$ac_cv_search_H5Fflush" >&6; }
-ac_res=$ac_cv_search_H5Fflush
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-else
- as_fn_error $? "Can't find or link to the hdf5 library. Use --disable-netcdf-4, or see config.log for errors." "$LINENO" 5
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing H5DSis_scale" >&5
-$as_echo_n "checking for library containing H5DSis_scale... " >&6; }
-if ${ac_cv_search_H5DSis_scale+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char H5DSis_scale ();
-int
-main ()
-{
-return H5DSis_scale ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' hdf5_hldll hdf5_hl; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_H5DSis_scale=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_H5DSis_scale+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_H5DSis_scale+:} false; then :
-
-else
- ac_cv_search_H5DSis_scale=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_H5DSis_scale" >&5
-$as_echo "$ac_cv_search_H5DSis_scale" >&6; }
-ac_res=$ac_cv_search_H5DSis_scale
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-else
- as_fn_error $? "Can't find or link to the hdf5 high-level. Use --disable-netcdf-4, or see config.log for errors." "$LINENO" 5
-fi
-
-
- for ac_header in hdf5.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default"
-if test "x$ac_cv_header_hdf5_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_HDF5_H 1
-_ACEOF
-
-else
- as_fn_error $? "Compiling a test with HDF5 failed. Either hdf5.h cannot be found, or config.log should be checked for other reason." "$LINENO" 5
-fi
-
-done
-
- for ac_func in H5Pget_fapl_mpiposix H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
- # The user may have parallel HDF5 based on MPI POSIX.
- if test "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then
-
-$as_echo "@%:@define USE_PARALLEL_POSIX 1" >>confdefs.h
-
- fi
-
- # The user may have parallel HDF5 based on MPI mumble mumble.
- if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes; then
-
-$as_echo "@%:@define USE_PARALLEL_MPIO 1" >>confdefs.h
-
- fi
-
- # If parallel is in use, enable it in the C code. Also add some stuff to netcdf.h.
- enable_parallel=no
- if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes -o "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then
- enable_parallel=yes
-
-$as_echo "@%:@define USE_PARALLEL 1" >>confdefs.h
-
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O features are to be included" >&5
-$as_echo_n "checking whether parallel I/O features are to be included... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_parallel" >&5
-$as_echo "$enable_parallel" >&6; }
-
- # The user must have built HDF5 with the ZLIB library.
- if test "x$ac_cv_func_H5Pset_deflate" = xyes; then
-
-$as_echo "@%:@define USE_ZLIB 1" >>confdefs.h
-
- else
- as_fn_error $? "HDF5 must be built with zlib for netCDF-4" "$LINENO" 5
- fi
-
- # The user may have built HDF5 with the SZLIB library.
- if test "x$ac_cv_func_H5Z_SZIP" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SZ_Compress" >&5
-$as_echo_n "checking for library containing SZ_Compress... " >&6; }
-if ${ac_cv_search_SZ_Compress+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char SZ_Compress ();
-int
-main ()
-{
-return SZ_Compress ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' szip sz; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_SZ_Compress=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_SZ_Compress+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_SZ_Compress+:} false; then :
-
-else
- ac_cv_search_SZ_Compress=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SZ_Compress" >&5
-$as_echo "$ac_cv_search_SZ_Compress" >&6; }
-ac_res=$ac_cv_search_SZ_Compress
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-
-$as_echo "@%:@define USE_SZIP 1" >>confdefs.h
-
- fi
-
- # If the user wants hdf4 built in, check it out.
- if test "x$enable_hdf4" = xyes; then
- for ac_header in mfhdf.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "mfhdf.h" "ac_cv_header_mfhdf_h" "$ac_includes_default"
-if test "x$ac_cv_header_mfhdf_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_MFHDF_H 1
-_ACEOF
-
-else
- nc_mfhdf_h_missing=yes
-fi
-
-done
-
- if test "x$nc_mfhdf_h_missing" = xyes; then
- as_fn_error $? "Cannot find mfhdf.h, yet --enable-hdf4 was used." "$LINENO" 5
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Hclose in -ldf" >&5
-$as_echo_n "checking for Hclose in -ldf... " >&6; }
-if ${ac_cv_lib_df_Hclose+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldf $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char Hclose ();
-int
-main ()
-{
-return Hclose ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_df_Hclose=yes
-else
- ac_cv_lib_df_Hclose=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_df_Hclose" >&5
-$as_echo "$ac_cv_lib_df_Hclose" >&6; }
-if test "x$ac_cv_lib_df_Hclose" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBDF 1
-_ACEOF
-
- LIBS="-ldf $LIBS"
-
-else
- as_fn_error $? "Can't find or link to the hdf4 df library. See config.log for errors." "$LINENO" 5
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDcreate in -lmfhdf" >&5
-$as_echo_n "checking for SDcreate in -lmfhdf... " >&6; }
-if ${ac_cv_lib_mfhdf_SDcreate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmfhdf $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char SDcreate ();
-int
-main ()
-{
-return SDcreate ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_mfhdf_SDcreate=yes
-else
- ac_cv_lib_mfhdf_SDcreate=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mfhdf_SDcreate" >&5
-$as_echo "$ac_cv_lib_mfhdf_SDcreate" >&6; }
-if test "x$ac_cv_lib_mfhdf_SDcreate" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBMFHDF 1
-_ACEOF
-
- LIBS="-lmfhdf $LIBS"
-
-else
- as_fn_error $? "Can't find or link to the hdf4 mfhdf library. See config.log for errors." "$LINENO" 5
-fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_set_quality in -ljpeg" >&5
-$as_echo_n "checking for jpeg_set_quality in -ljpeg... " >&6; }
-if ${ac_cv_lib_jpeg_jpeg_set_quality+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ljpeg $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char jpeg_set_quality ();
-int
-main ()
-{
-return jpeg_set_quality ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_jpeg_jpeg_set_quality=yes
-else
- ac_cv_lib_jpeg_jpeg_set_quality=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_set_quality" >&5
-$as_echo "$ac_cv_lib_jpeg_jpeg_set_quality" >&6; }
-if test "x$ac_cv_lib_jpeg_jpeg_set_quality" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBJPEG 1
-_ACEOF
-
- LIBS="-ljpeg $LIBS"
-
-else
- as_fn_error $? "Can't find or link to the jpeg library (required by hdf4). See config.log for errors." "$LINENO" 5
-fi
-
-
-
-$as_echo "@%:@define USE_HDF4 1" >>confdefs.h
-
- fi
-fi
-
-# No logging for netcdf-3.
-if test "x$enable_netcdf_4" = xno; then
- enable_logging=no
-fi
-if test "x$enable_logging" = xyes; then
-
-$as_echo "@%:@define LOGGING 1" >>confdefs.h
-
-fi
-
-# Using pnetcdf for classic parallel I/O?
-if test "x$enable_pnetcdf" = xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ncmpi_create in -lpnetcdf" >&5
-$as_echo_n "checking for ncmpi_create in -lpnetcdf... " >&6; }
-if ${ac_cv_lib_pnetcdf_ncmpi_create+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpnetcdf $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char ncmpi_create ();
-int
-main ()
-{
-return ncmpi_create ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_pnetcdf_ncmpi_create=yes
-else
- ac_cv_lib_pnetcdf_ncmpi_create=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pnetcdf_ncmpi_create" >&5
-$as_echo "$ac_cv_lib_pnetcdf_ncmpi_create" >&6; }
-if test "x$ac_cv_lib_pnetcdf_ncmpi_create" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-@%:@define HAVE_LIBPNETCDF 1
-_ACEOF
-
- LIBS="-lpnetcdf $LIBS"
-
-else
- as_fn_error $? "Cannot link to pnetcdf library, yet --enable-pnetcdf was used." "$LINENO" 5
-fi
-
-
-$as_echo "@%:@define USE_PNETCDF 1" >>confdefs.h
-
-
- # pnetcdf => parallel
- # If parallel is in use, enable it in the C code. Also add some stuff to netcdf.h.
- enable_parallel=yes
-
-$as_echo "@%:@define USE_PARALLEL 1" >>confdefs.h
-
-fi
-
-
-# Like other libraries, udunits and libcf
-# are no long part of the netcdf distribution.
-
-#AC_MSG_CHECKING([whether udunits is to be built])
-#AC_ARG_WITH([udunits],
-# [AS_HELP_STRING([--with-udunits],
-# [Build udunits2 package.])])
-#test "x$with_udunits" = xyes || with_udunits=no
-#AC_MSG_RESULT($with_udunits)
-#AM_CONDITIONAL(BUILD_UDUNITS, [test "x$with_udunits" = xyes])
-
-
-# Does the user want to also build the libcf library?
-#AC_MSG_CHECKING([whether libcf is to be built])
-#AC_ARG_WITH([libcf],
-# [AS_HELP_STRING([--with-libcf],
-# [build and install libcf library, a library for \
-# handling data in conformance with the Climate and \
-# Forecast conventions. (Requires netCDF-4 and HDF5)])])
-#test "x$with_libcf" = xyes || with_libcf=no
-#AC_MSG_RESULT($with_libcf)
-#AM_CONDITIONAL(BUILD_LIBCF, [test "x$with_libcf" = xyes])
-
-#AC_CONFIG_SUBDIRS([udunits libcf])
-
-
-# Automake conditionals need to be called, whether the answer is yes
-# or no.
-AM_CONDITIONAL(BUILD_PARALLEL, test x$enable_parallel = xyes)
-AM_CONDITIONAL(TEST_PARALLEL, test "x$enable_parallel" = xyes -a "x$enable_parallel_tests" = xyes)
-AM_CONDITIONAL(BUILD_DAP, test "x$enable_dap" = xyes)
-AM_CONDITIONAL(USE_DAP, test "x$enable_dap" = xyes) # Alias
-AM_CONDITIONAL(ENABLE_DAP_REMOTE_TESTS, test "x$enable_dap_remote_tests" = xyes)
-AM_CONDITIONAL(ENABLE_DAP_AUTH_TESTS, test "x$enable_dap_auth_tests" = xyes)
-AM_CONDITIONAL(ENABLE_DAP_LONG_TESTS, test "x$enable_dap_long_tests" = xyes)
-AM_CONDITIONAL(EXTRA_EXAMPLE_TESTS, test "x$enable_extra_example_tests" = xyes)
-AM_CONDITIONAL(USE_SZIP, test "x$ac_cv_func_H5Z_SZIP" = xyes)
-AM_CONDITIONAL(USE_PNETCDF_DIR, test ! "x$PNETCDFDIR" = x)
-AM_CONDITIONAL(USE_LOGGING, test "x$enable_logging" = xyes)
-AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
-AM_CONDITIONAL(USE_VALGRIND_TESTS, test "x$enable_valgrind_tests" = xyes)
-AM_CONDITIONAL(USE_NETCDF4, test x$enable_netcdf_4 = xyes)
-AM_CONDITIONAL(USE_HDF4, test x$enable_hdf4 = xyes)
-AM_CONDITIONAL(USE_HDF4_FILE_TESTS, test x$enable_hdf4_file_tests = xyes)
-AM_CONDITIONAL(USE_RENAMEV3, test x$enable_netcdf_4 = xyes -o x$enable_dap = xyes)
-AM_CONDITIONAL(USE_PNETCDF, test x$enable_pnetcdf = xyes)
-AM_CONDITIONAL(USE_DISPATCH, test x$enable_dispatch = xyes)
-AM_CONDITIONAL(BUILD_CDMREMOTE, test "x$enable_cdmremote" = xyes) # Alias
-AM_CONDITIONAL(BUILD_RPC, test "x$enable_rpc" = xyes)
-AM_CONDITIONAL(BUILD_DISKLESS, test x$enable_diskless = xyes)
-AM_CONDITIONAL(BUILD_MMAP, test x$enable_mmap = xyes)
-
-# If the machine doesn't have a long long, and we want netCDF-4, then
-# we've got problems!
-if test "x$enable_netcdf_4" = xyes; then
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;
-int
-main ()
-{
-/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
- ac_cv_type_unsigned_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
- if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-$as_echo "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-@%:@include <limits.h>
- @%:@ifndef LLONG_MAX
- @%:@ define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- @%:@ define LLONG_MAX (HALF - 1 + HALF)
- @%:@endif
-int
-main ()
-{
-long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_type_long_long_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
- if test $ac_cv_type_long_long_int = yes; then
-
-$as_echo "@%:@define HAVE_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;
-int
-main ()
-{
-/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
- ac_cv_type_unsigned_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
- if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-$as_echo "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-fi
-
-# Create the file name for a "make ftpbin" which is used to generate a
-# binary distribution. For each release we generate binary releases on
-# the thousands of machines in Unidata's vast underground complex at
-# an undisclosed location in the Rocky Mountains. The binary
-# distributions, along with the 25-foot thick cement slabs and the
-# giant springs, will help distribute netCDF even after a catastrophic
-# meteor strike.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what to call the output of the ftpbin target" >&5
-$as_echo_n "checking what to call the output of the ftpbin target... " >&6; }
-BINFILE_NAME=binary-netcdf-$PACKAGE_VERSION
-test "x$enable_netcdf_4" = xno && BINFILE_NAME=${BINFILE_NAME}_nc3
-BINFILE_NAME=${BINFILE_NAME}.tar
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BINFILE_NAME $FC $CXX" >&5
-$as_echo "$BINFILE_NAME $FC $CXX" >&6; }
-
-#UD_FTPBINDIR
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of LIBS" >&5
-$as_echo_n "checking value of LIBS... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBS" >&5
-$as_echo "$LIBS" >&6; }
-
-# Flags for nc-config script; by design $prefix, $includir, $libdir,
-# etc. are left as shell variables in the script so as to facilitate
-# relocation
-if test "x$with_netcdf_c_lib" = x ; then
- NC_LIBS="-lnetcdf"
-else
- NC_LIBS="$with_netcdf_c_lib"
-fi
-if test "x$enable_shared" != xyes; then
- NC_LIBS="$LDFLAGS $NC_LIBS $LIBS"
-fi
-
-case "x$target_os" in
-xsolaris*)
- NEWNCLIBS=""
- for x in $NC_LIBS ; do
- case "$x" in
- -L*) r=`echo "$x" | sed -e 's|^-L|-R|'`
- NEWNCLIBS="$NEWNCLIBS $x $r"
- ;;
- *) NEWNCLIBS="$NEWNCLIBS $x" ;;
- esac
- done
- NC_LIBS="$NEWNCLIBS"
- ;;
-*);;
-esac
-
-NC_FLIBS="-lnetcdff $NC_LIBS"
-
-NC_LIBS=$NC_LIBS
-
-HAS_DAP=$enable_dap
-
-HAS_NC2=$nc_build_v2
-
-HAS_NC4=$enable_netcdf_4
-
-HAS_HDF4=$enable_hdf4
-
-HAS_PNETCDF=$enable_pnetcdf
-
-HAS_HDF5=$enable_netcdf_4
-
-HAS_SZLIB=$nc_has_szlib
-
-
-# temporary to deal with a JNA problem
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking If compilation is for use with JNA" >&5
-$as_echo_n "checking If compilation is for use with JNA... " >&6; }
-@%:@ Check whether --enable-jna was given.
-if test "${enable_jna+set}" = set; then :
- enableval=$enable_jna;
-else
- enable_jna=no
-fi
-
-test "x$enable_jna" = xno || enable_jna=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_jna" >&5
-$as_echo "$enable_jna" >&6; }
-if test "x$enable_jna" = xyes ; then
-
-$as_echo "@%:@define JNA 1" >>confdefs.h
-
-fi
-
-# Include some specifics for netcdf on windows.
-#AH_VERBATIM([_WIN32_STRICMP],
-
-
-# Access netcdf specific version of config.h
-
-
-##################################################
-# Uncomment this to keep a copy of autoconf defines at this point, for
-# debugging purposes.
-# cp confdefs.h my_config.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: generating header files and makefiles" >&5
-$as_echo "$as_me: generating header files and makefiles" >&6;}
-ac_config_files="$ac_config_files Makefile nc-config netcdf.pc include/Makefile h5_test/Makefile man4/Makefile man4/images/Makefile libsrc/Makefile libsrc4/Makefile libsrc5/Makefile nctest/Makefile nc_test4/Makefile nc_test/Makefile ncdump/Makefile ncgen3/Makefile ncgen/Makefile examples/Makefile examples/C/Makefile examples/CDL/Makefile oc2/Makefile libdap2/Makefile libdispatch/Makefile liblib/Makefile ncdump/cdl4/Makefile ncdump/expected4/Makefile ncdap_test/Makefile ncdap_test/testdat [...]
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes: double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \.
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
- if test ! -f "$cache_file" || test -h "$cache_file"; then
- cat confcache >"$cache_file"
- else
- case $cache_file in #(
- */* | ?:*)
- mv -f confcache "$cache_file"$$ &&
- mv -f "$cache_file"$$ "$cache_file" ;; #(
- *)
- mv -f confcache "$cache_file" ;;
- esac
- fi
- fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIB@&t at OBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in @%:@(
- *posix*) :
- set -o posix ;; @%:@(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in @%:@(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in @%:@((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
-@%:@ ----------------------------------------
-@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-@%:@ script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} @%:@ as_fn_error
-
-
-@%:@ as_fn_set_status STATUS
-@%:@ -----------------------
-@%:@ Set @S|@? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} @%:@ as_fn_set_status
-
-@%:@ as_fn_exit STATUS
-@%:@ -----------------
-@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} @%:@ as_fn_exit
-
-@%:@ as_fn_unset VAR
-@%:@ ---------------
-@%:@ Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-@%:@ as_fn_append VAR VALUE
-@%:@ ----------------------
-@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
-@%:@ advantage of any shell optimizations that allow amortized linear growth over
-@%:@ repeated appends, instead of the typical quadratic growth present in naive
-@%:@ implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-@%:@ as_fn_arith ARG...
-@%:@ ------------------
-@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
-@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
-@%:@ must be portable across @S|@(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in @%:@(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -pR'
- fi
-else
- as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-@%:@ as_fn_mkdir_p
-@%:@ -------------
-@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} @%:@ as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-
-@%:@ as_fn_executable_p FILE
-@%:@ -----------------------
-@%:@ Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} @%:@ as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by netCDF $as_me 4.3.3-rc1, which was
-generated by GNU Autoconf 2.69. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration. Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
- --config print configuration, then exit
- -q, --quiet, --silent
- do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Report bugs to <support-netcdf at unidata.ucar.edu>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-netCDF config.status 4.3.3-rc1
-configured by $0, generated by GNU Autoconf 2.69,
- with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=?*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- --*=)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
- --config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- '') as_fn_error $? "missing file argument" ;;
- esac
- as_fn_append CONFIG_FILES " '$ac_optarg'"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- as_fn_append CONFIG_HEADERS " '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h)
- # Conflict between --help and --header
- as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
- --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
- *) as_fn_append ac_config_targets " $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
- set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
- exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
-@%:@@%:@ Running $as_me. @%:@@%:@
-_ASBOX
- $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- "man4/Doxyfile") CONFIG_FILES="$CONFIG_FILES man4/Doxyfile" ;;
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "nc-config") CONFIG_FILES="$CONFIG_FILES nc-config" ;;
- "netcdf.pc") CONFIG_FILES="$CONFIG_FILES netcdf.pc" ;;
- "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
- "h5_test/Makefile") CONFIG_FILES="$CONFIG_FILES h5_test/Makefile" ;;
- "man4/Makefile") CONFIG_FILES="$CONFIG_FILES man4/Makefile" ;;
- "man4/images/Makefile") CONFIG_FILES="$CONFIG_FILES man4/images/Makefile" ;;
- "libsrc/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc/Makefile" ;;
- "libsrc4/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc4/Makefile" ;;
- "libsrc5/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc5/Makefile" ;;
- "nctest/Makefile") CONFIG_FILES="$CONFIG_FILES nctest/Makefile" ;;
- "nc_test4/Makefile") CONFIG_FILES="$CONFIG_FILES nc_test4/Makefile" ;;
- "nc_test/Makefile") CONFIG_FILES="$CONFIG_FILES nc_test/Makefile" ;;
- "ncdump/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/Makefile" ;;
- "ncgen3/Makefile") CONFIG_FILES="$CONFIG_FILES ncgen3/Makefile" ;;
- "ncgen/Makefile") CONFIG_FILES="$CONFIG_FILES ncgen/Makefile" ;;
- "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
- "examples/C/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/Makefile" ;;
- "examples/CDL/Makefile") CONFIG_FILES="$CONFIG_FILES examples/CDL/Makefile" ;;
- "oc2/Makefile") CONFIG_FILES="$CONFIG_FILES oc2/Makefile" ;;
- "libdap2/Makefile") CONFIG_FILES="$CONFIG_FILES libdap2/Makefile" ;;
- "libdispatch/Makefile") CONFIG_FILES="$CONFIG_FILES libdispatch/Makefile" ;;
- "liblib/Makefile") CONFIG_FILES="$CONFIG_FILES liblib/Makefile" ;;
- "ncdump/cdl4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/cdl4/Makefile" ;;
- "ncdump/expected4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/expected4/Makefile" ;;
- "ncdap_test/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/Makefile" ;;
- "ncdap_test/testdata3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/testdata3/Makefile" ;;
- "ncdap_test/expected3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expected3/Makefile" ;;
- "ncdap_test/expected4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expected4/Makefile" ;;
- "ncdap_test/expectremote3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expectremote3/Makefile" ;;
- "ncdap_test/expectremote4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expectremote4/Makefile" ;;
-
- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp= ac_tmp=
- trap 'exit_status=$?
- : "${ac_tmp:=$tmp}"
- { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
- trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
- eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
-
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
-
- print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
- || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
-h
-s///
-s/^/:/
-s/[ ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[ ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
- ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_tt"; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any. Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[ ]*#[ ]*define[ ][ ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- for (key in D) D_is_set[key] = 1
- FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
- line = \$ 0
- split(line, arg, " ")
- if (arg[1] == "#") {
- defundef = arg[2]
- mac1 = arg[3]
- } else {
- defundef = substr(arg[1], 2)
- mac1 = arg[2]
- }
- split(mac1, mac2, "(") #)
- macro = mac2[1]
- prefix = substr(line, 1, index(line, defundef) - 1)
- if (D_is_set[macro]) {
- # Preserve the white space surrounding the "#".
- print prefix "define", macro P[macro] D[macro]
- next
- } else {
- # Replace #undef with comments. This is necessary, for example,
- # in the case of _POSIX_SOURCE, which is predefined and required
- # on some systems where configure will not decide to define it.
- if (defundef == "undef") {
- print "/*", prefix defundef, macro, "*/"
- next
- }
- }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS "
-shift
-for ac_tag
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$ac_tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
- esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- as_fn_append ac_file_inputs " '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
- fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
-
- case $ac_tag in
- *:-:* | *:-) cat >"$ac_tmp/stdin" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir="$ac_dir"; as_fn_mkdir_p
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
- >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
- "$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&2;}
-
- rm -f "$ac_tmp/stdin"
- case $ac_file in
- -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
- *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
- esac \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
- :H)
- #
- # CONFIG_HEADER
- #
- if test x"$ac_file" != x-; then
- {
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
- } >"$ac_tmp/config.h" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
- else
- rm -f "$ac_file"
- mv "$ac_tmp/config.h" "$ac_file" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- fi
- else
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
- || as_fn_error $? "could not create -" "$LINENO" 5
- fi
- ;;
-
-
- esac
-
-
- case $ac_file$ac_mode in
- "Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "nc-config":F) test -f nc-config && chmod 755 nc-config ;;
- "netcdf.pc":F) test -f nc-config && chmod 755 nc-config ;;
- "include/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "h5_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "man4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "man4/images/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "libsrc/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "libsrc4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "libsrc5/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "nctest/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "nc_test4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "nc_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdump/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncgen3/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncgen/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "examples/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "examples/C/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "examples/CDL/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "oc2/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "libdap2/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "libdispatch/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "liblib/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdump/cdl4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdump/expected4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdap_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdap_test/testdata3/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdap_test/expected3/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdap_test/expected4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdap_test/expectremote3/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdap_test/expectremote4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
-
- esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
- as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
deleted file mode 100644
index df175c8..0000000
--- a/autom4te.cache/requests
+++ /dev/null
@@ -1,77 +0,0 @@
-# This file was generated by Autom4te Thu Apr 10 10:06:43 UTC 2014.
-# It contains the lists of macros which have been traced.
-# It can be safely removed.
-
- at request = (
- bless( [
- '0',
- 1,
- [
- '/usr/share/autoconf'
- ],
- [
- '/usr/share/autoconf/autoconf/autoconf.m4f',
- 'configure.ac'
- ],
- {
- 'AM_CONDITIONAL' => 1,
- 'AM_SILENT_RULES' => 1,
- 'AC_PROG_LIBTOOL' => 1,
- 'AM_PROG_AR' => 1,
- 'AM_PROG_MOC' => 1,
- 'AM_MAKEFILE_INCLUDE' => 1,
- 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
- 'AM_PROG_FC_C_O' => 1,
- 'AC_INIT' => 1,
- 'AC_CONFIG_SUBDIRS' => 1,
- 'AC_FC_FREEFORM' => 1,
- 'LT_INIT' => 1,
- 'AC_CANONICAL_SYSTEM' => 1,
- '_AM_COND_IF' => 1,
- 'AC_SUBST_TRACE' => 1,
- '_AM_SUBST_NOTMAKE' => 1,
- 'sinclude' => 1,
- 'AC_CANONICAL_BUILD' => 1,
- 'include' => 1,
- 'AM_ENABLE_MULTILIB' => 1,
- 'AM_INIT_AUTOMAKE' => 1,
- '_m4_warn' => 1,
- 'AC_CANONICAL_TARGET' => 1,
- 'AC_CONFIG_LINKS' => 1,
- 'AC_CONFIG_HEADERS' => 1,
- 'AH_OUTPUT' => 1,
- '_AM_COND_ELSE' => 1,
- 'AM_GNU_GETTEXT' => 1,
- '_AM_MAKEFILE_INCLUDE' => 1,
- 'AM_NLS' => 1,
- 'AM_PROG_CC_C_O' => 1,
- 'AC_CANONICAL_HOST' => 1,
- 'AC_CONFIG_LIBOBJ_DIR' => 1,
- 'AC_FC_SRCEXT' => 1,
- 'AC_CONFIG_FILES' => 1,
- 'm4_include' => 1,
- 'LT_CONFIG_LTDL_DIR' => 1,
- 'AM_PATH_GUILE' => 1,
- 'AM_AUTOMAKE_VERSION' => 1,
- 'm4_pattern_allow' => 1,
- 'AC_DEFINE_TRACE_LITERAL' => 1,
- 'AC_FC_PP_SRCEXT' => 1,
- 'm4_sinclude' => 1,
- '_LT_AC_TAGCONFIG' => 1,
- 'AM_PROG_F77_C_O' => 1,
- 'AM_MAINTAINER_MODE' => 1,
- 'AM_POT_TOOLS' => 1,
- 'AC_SUBST' => 1,
- 'AC_LIBSOURCE' => 1,
- 'AC_FC_PP_DEFINE' => 1,
- 'AM_PROG_CXX_C_O' => 1,
- 'LT_SUPPORTED_TAG' => 1,
- '_AM_COND_ENDIF' => 1,
- 'm4_pattern_forbid' => 1,
- 'AC_REQUIRE_AUX_FILE' => 1,
- 'AM_XGETTEXT_OPTION' => 1,
- 'AC_CONFIG_AUX_DIR' => 1
- }
- ], 'Autom4te::Request' )
- );
-
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
deleted file mode 100644
index 1b46f86..0000000
--- a/autom4te.cache/traces.0
+++ /dev/null
@@ -1,939 +0,0 @@
-m4trace:configure.ac:18: -1- AC_INIT([netCDF], [4.3.3-rc1], [support-netcdf at unidata.ucar.edu])
-m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:18: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:18: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:18: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:18: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:18: -1- AC_SUBST([SHELL])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([SHELL])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:18: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_NAME])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_STRING])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:18: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([PACKAGE_URL])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:18: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([exec_prefix])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:18: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([prefix])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:18: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([program_transform_name])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:18: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([bindir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:18: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sbindir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:18: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([libexecdir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:18: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:18: -1- AC_SUBST([datadir], ['${datarootdir}'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([datadir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:18: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sysconfdir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:18: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([sharedstatedir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:18: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([localstatedir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:18: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([includedir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:18: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([oldincludedir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:18: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
- ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
- ['${datarootdir}/doc/${PACKAGE}'])])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([docdir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:18: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([infodir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:18: -1- AC_SUBST([htmldir], ['${docdir}'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:18: -1- AC_SUBST([dvidir], ['${docdir}'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([dvidir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:18: -1- AC_SUBST([pdfdir], ['${docdir}'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([pdfdir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:18: -1- AC_SUBST([psdir], ['${docdir}'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([psdir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:18: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([libdir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:18: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:18: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([mandir])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-@%:@undef PACKAGE_NAME])
-m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-@%:@undef PACKAGE_TARNAME])
-m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-@%:@undef PACKAGE_VERSION])
-m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-@%:@undef PACKAGE_STRING])
-m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-@%:@undef PACKAGE_BUGREPORT])
-m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:18: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
-@%:@undef PACKAGE_URL])
-m4trace:configure.ac:18: -1- AC_SUBST([DEFS])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([DEFS])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:18: -1- AC_SUBST([ECHO_C])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_C])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:18: -1- AC_SUBST([ECHO_N])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_N])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:18: -1- AC_SUBST([ECHO_T])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO_T])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:18: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:18: -1- AC_SUBST([build_alias])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([build_alias])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:18: -1- AC_SUBST([host_alias])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([host_alias])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:18: -1- AC_SUBST([target_alias])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([target_alias])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:23: -1- AC_SUBST([PACKAGE_VERSION])
-m4trace:configure.ac:23: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
-m4trace:configure.ac:23: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:31: -1- AC_CANONICAL_HOST
-m4trace:configure.ac:31: -1- AC_CANONICAL_BUILD
-m4trace:configure.ac:31: -1- AC_REQUIRE_AUX_FILE([config.sub])
-m4trace:configure.ac:31: -1- AC_REQUIRE_AUX_FILE([config.guess])
-m4trace:configure.ac:31: -1- AC_SUBST([build], [$ac_cv_build])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:31: -1- AC_SUBST([build_cpu], [$[1]])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build_cpu])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:31: -1- AC_SUBST([build_vendor], [$[2]])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build_vendor])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:31: -1- AC_SUBST([build_os])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build_os])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:31: -1- AC_SUBST([host], [$ac_cv_host])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:31: -1- AC_SUBST([host_cpu], [$[1]])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:31: -1- AC_SUBST([host_vendor], [$[2]])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:31: -1- AC_SUBST([host_os])
-m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:34: -1- AC_CANONICAL_TARGET
-m4trace:configure.ac:34: -1- AC_SUBST([target], [$ac_cv_target])
-m4trace:configure.ac:34: -1- AC_SUBST_TRACE([target])
-m4trace:configure.ac:34: -1- m4_pattern_allow([^target$])
-m4trace:configure.ac:34: -1- AC_SUBST([target_cpu], [$[1]])
-m4trace:configure.ac:34: -1- AC_SUBST_TRACE([target_cpu])
-m4trace:configure.ac:34: -1- m4_pattern_allow([^target_cpu$])
-m4trace:configure.ac:34: -1- AC_SUBST([target_vendor], [$[2]])
-m4trace:configure.ac:34: -1- AC_SUBST_TRACE([target_vendor])
-m4trace:configure.ac:34: -1- m4_pattern_allow([^target_vendor$])
-m4trace:configure.ac:34: -1- AC_SUBST([target_os])
-m4trace:configure.ac:34: -1- AC_SUBST_TRACE([target_os])
-m4trace:configure.ac:34: -1- m4_pattern_allow([^target_os$])
-m4trace:configure.ac:36: -1- AC_CONFIG_HEADERS([config.h])
-m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([DLL_NETCDF])
-m4trace:configure.ac:55: -1- m4_pattern_allow([^DLL_NETCDF$])
-m4trace:configure.ac:55: -1- AH_OUTPUT([DLL_NETCDF], [/* set this only when building a DLL under MinGW */
-@%:@undef DLL_NETCDF])
-m4trace:configure.ac:56: -1- AC_DEFINE_TRACE_LITERAL([DLL_EXPORT])
-m4trace:configure.ac:56: -1- m4_pattern_allow([^DLL_EXPORT$])
-m4trace:configure.ac:56: -1- AH_OUTPUT([DLL_EXPORT], [/* set this only when building a DLL under MinGW */
-@%:@undef DLL_EXPORT])
-m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([NCIO_MINBLOCKSIZE])
-m4trace:configure.ac:67: -1- m4_pattern_allow([^NCIO_MINBLOCKSIZE$])
-m4trace:configure.ac:67: -1- AH_OUTPUT([NCIO_MINBLOCKSIZE], [/* min blocksize for posixio. */
-@%:@undef NCIO_MINBLOCKSIZE])
-m4trace:configure.ac:84: -1- AC_SUBST([BUILD_INTERNAL_DOCS], [$enable_internal_docs])
-m4trace:configure.ac:84: -1- AC_SUBST_TRACE([BUILD_INTERNAL_DOCS])
-m4trace:configure.ac:84: -1- m4_pattern_allow([^BUILD_INTERNAL_DOCS$])
-m4trace:configure.ac:95: -1- AC_DEFINE_TRACE_LITERAL([USE_FSYNC])
-m4trace:configure.ac:95: -1- m4_pattern_allow([^USE_FSYNC$])
-m4trace:configure.ac:95: -1- AH_OUTPUT([USE_FSYNC], [/* if true, include experimental fsync code */
-@%:@undef USE_FSYNC])
-m4trace:configure.ac:109: -1- AC_DEFINE_TRACE_LITERAL([JNA])
-m4trace:configure.ac:109: -1- m4_pattern_allow([^JNA$])
-m4trace:configure.ac:109: -1- AH_OUTPUT([JNA], [/* if true, include jna bug workaround code */
-@%:@undef JNA])
-m4trace:configure.ac:156: -1- AC_DEFINE_TRACE_LITERAL([USE_HDF4_FILE_TESTS])
-m4trace:configure.ac:156: -1- m4_pattern_allow([^USE_HDF4_FILE_TESTS$])
-m4trace:configure.ac:156: -1- AH_OUTPUT([USE_HDF4_FILE_TESTS], [/* If true, use use wget to fetch some sample HDF4 data, and then test against
- it. */
-@%:@undef USE_HDF4_FILE_TESTS])
-m4trace:configure.ac:193: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_CHUNK_SIZE])
-m4trace:configure.ac:193: -1- m4_pattern_allow([^DEFAULT_CHUNK_SIZE$])
-m4trace:configure.ac:193: -1- AH_OUTPUT([DEFAULT_CHUNK_SIZE], [/* default chunk size in bytes */
-@%:@undef DEFAULT_CHUNK_SIZE])
-m4trace:configure.ac:202: -1- AC_DEFINE_TRACE_LITERAL([MAX_DEFAULT_CACHE_SIZE])
-m4trace:configure.ac:202: -1- m4_pattern_allow([^MAX_DEFAULT_CACHE_SIZE$])
-m4trace:configure.ac:202: -1- AH_OUTPUT([MAX_DEFAULT_CACHE_SIZE], [/* max size of the default per-var chunk cache. */
-@%:@undef MAX_DEFAULT_CACHE_SIZE])
-m4trace:configure.ac:211: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_CHUNKS_IN_CACHE])
-m4trace:configure.ac:211: -1- m4_pattern_allow([^DEFAULT_CHUNKS_IN_CACHE$])
-m4trace:configure.ac:211: -1- AH_OUTPUT([DEFAULT_CHUNKS_IN_CACHE], [/* num chunks in default per-var chunk cache. */
-@%:@undef DEFAULT_CHUNKS_IN_CACHE])
-m4trace:configure.ac:220: -1- AC_DEFINE_TRACE_LITERAL([CHUNK_CACHE_SIZE])
-m4trace:configure.ac:220: -1- m4_pattern_allow([^CHUNK_CACHE_SIZE$])
-m4trace:configure.ac:220: -1- AH_OUTPUT([CHUNK_CACHE_SIZE], [/* default file chunk cache size in bytes. */
-@%:@undef CHUNK_CACHE_SIZE])
-m4trace:configure.ac:229: -1- AC_DEFINE_TRACE_LITERAL([CHUNK_CACHE_NELEMS])
-m4trace:configure.ac:229: -1- m4_pattern_allow([^CHUNK_CACHE_NELEMS$])
-m4trace:configure.ac:229: -1- AH_OUTPUT([CHUNK_CACHE_NELEMS], [/* default file chunk cache nelems. */
-@%:@undef CHUNK_CACHE_NELEMS])
-m4trace:configure.ac:238: -1- AC_DEFINE_TRACE_LITERAL([CHUNK_CACHE_PREEMPTION])
-m4trace:configure.ac:238: -1- m4_pattern_allow([^CHUNK_CACHE_PREEMPTION$])
-m4trace:configure.ac:238: -1- AH_OUTPUT([CHUNK_CACHE_PREEMPTION], [/* default file chunk cache preemption policy. */
-@%:@undef CHUNK_CACHE_PREEMPTION])
-m4trace:configure.ac:290: -1- AC_SUBST([CC])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:290: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:290: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:290: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:290: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:290: -1- AC_SUBST([CC])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:290: -1- AC_SUBST([CC])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:290: -1- AC_SUBST([CC])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:290: -1- AC_SUBST([CC])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:290: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:290: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:290: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.ac:290: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.ac:290: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:349: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_DAP_GROUPS])
-m4trace:configure.ac:349: -1- m4_pattern_allow([^ENABLE_DAP_GROUPS$])
-m4trace:configure.ac:349: -1- AH_OUTPUT([ENABLE_DAP_GROUPS], [/* if true, enable DAP group names */
-@%:@undef ENABLE_DAP_GROUPS])
-m4trace:configure.ac:354: -1- AC_DEFINE_TRACE_LITERAL([USE_DAP])
-m4trace:configure.ac:354: -1- m4_pattern_allow([^USE_DAP$])
-m4trace:configure.ac:354: -1- AH_OUTPUT([USE_DAP], [/* if true, build DAP Client */
-@%:@undef USE_DAP])
-m4trace:configure.ac:355: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_DAP])
-m4trace:configure.ac:355: -1- m4_pattern_allow([^ENABLE_DAP$])
-m4trace:configure.ac:355: -1- AH_OUTPUT([ENABLE_DAP], [/* if true, build DAP Client */
-@%:@undef ENABLE_DAP])
-m4trace:configure.ac:359: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_DAP_REMOTE_TESTS])
-m4trace:configure.ac:359: -1- m4_pattern_allow([^ENABLE_DAP_REMOTE_TESTS$])
-m4trace:configure.ac:359: -1- AH_OUTPUT([ENABLE_DAP_REMOTE_TESTS], [/* if true, do remote tests */
-@%:@undef ENABLE_DAP_REMOTE_TESTS])
-m4trace:configure.ac:363: -1- AC_DEFINE_TRACE_LITERAL([USE_CDMREMOTE])
-m4trace:configure.ac:363: -1- m4_pattern_allow([^USE_CDMREMOTE$])
-m4trace:configure.ac:363: -1- AH_OUTPUT([USE_CDMREMOTE], [/* if true, build CDMREMOTE Client */
-@%:@undef USE_CDMREMOTE])
-m4trace:configure.ac:367: -1- AC_DEFINE_TRACE_LITERAL([BUILD_RPC])
-m4trace:configure.ac:367: -1- m4_pattern_allow([^BUILD_RPC$])
-m4trace:configure.ac:367: -1- AH_OUTPUT([BUILD_RPC], [/* if true, build RPC Client and Server */
-@%:@undef BUILD_RPC])
-m4trace:configure.ac:390: -1- AC_DEFINE_TRACE_LITERAL([EXTRA_TESTS])
-m4trace:configure.ac:390: -1- m4_pattern_allow([^EXTRA_TESTS$])
-m4trace:configure.ac:390: -1- AH_OUTPUT([EXTRA_TESTS], [/* if true, run extra tests which may not work yet */
-@%:@undef EXTRA_TESTS])
-m4trace:configure.ac:402: -1- AC_DEFINE_TRACE_LITERAL([USE_FFIO])
-m4trace:configure.ac:402: -1- m4_pattern_allow([^USE_FFIO$])
-m4trace:configure.ac:402: -1- AH_OUTPUT([USE_FFIO], [/* if true, use ffio instead of posixio */
-@%:@undef USE_FFIO])
-m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([NO_NETCDF_2])
-m4trace:configure.ac:444: -1- m4_pattern_allow([^NO_NETCDF_2$])
-m4trace:configure.ac:444: -1- AH_OUTPUT([NO_NETCDF_2], [/* do not build the netCDF version 2 API */
-@%:@undef NO_NETCDF_2])
-m4trace:configure.ac:478: -1- AC_DEFINE_TRACE_LITERAL([LARGE_FILE_TESTS])
-m4trace:configure.ac:478: -1- m4_pattern_allow([^LARGE_FILE_TESTS$])
-m4trace:configure.ac:478: -1- AH_OUTPUT([LARGE_FILE_TESTS], [/* do large file tests */
-@%:@undef LARGE_FILE_TESTS])
-m4trace:configure.ac:509: -1- AC_DEFINE_TRACE_LITERAL([USE_EXTREME_NUMBERS])
-m4trace:configure.ac:509: -1- m4_pattern_allow([^USE_EXTREME_NUMBERS$])
-m4trace:configure.ac:509: -1- AH_OUTPUT([USE_EXTREME_NUMBERS], [/* set this to use extreme numbers in tests */
-@%:@undef USE_EXTREME_NUMBERS])
-m4trace:configure.ac:525: -1- AC_DEFINE_TRACE_LITERAL([TEMP_LARGE])
-m4trace:configure.ac:525: -1- m4_pattern_allow([^TEMP_LARGE$])
-m4trace:configure.ac:525: -1- AH_OUTPUT([TEMP_LARGE], [/* Place to put very large netCDF test files. */
-@%:@undef TEMP_LARGE])
-m4trace:configure.ac:535: -1- AC_SUBST([CC])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:535: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:535: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:535: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:535: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:535: -1- AC_SUBST([CC])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:535: -1- AC_SUBST([CC])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:535: -1- AC_SUBST([CC])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:535: -1- AC_SUBST([CC])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:535: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:535: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:535: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:537: -1- AC_DEFINE_TRACE_LITERAL([const])
-m4trace:configure.ac:537: -1- m4_pattern_allow([^const$])
-m4trace:configure.ac:537: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */
-@%:@undef const])
-m4trace:configure.ac:556: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CURLOPT_USERNAME])
-m4trace:configure.ac:556: -1- m4_pattern_allow([^HAVE_CURLOPT_USERNAME$])
-m4trace:configure.ac:556: -1- AH_OUTPUT([HAVE_CURLOPT_USERNAME], [/* Is CURLOPT_USERNAME defined */
-@%:@undef HAVE_CURLOPT_USERNAME])
-m4trace:configure.ac:567: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CURLOPT_PASSWORD])
-m4trace:configure.ac:567: -1- m4_pattern_allow([^HAVE_CURLOPT_PASSWORD$])
-m4trace:configure.ac:567: -1- AH_OUTPUT([HAVE_CURLOPT_PASSWORD], [/* Is CURLOPT_PASSWORD defined */
-@%:@undef HAVE_CURLOPT_PASSWORD])
-m4trace:configure.ac:578: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CURLOPT_KEYPASSWD])
-m4trace:configure.ac:578: -1- m4_pattern_allow([^HAVE_CURLOPT_KEYPASSWD$])
-m4trace:configure.ac:578: -1- AH_OUTPUT([HAVE_CURLOPT_KEYPASSWD], [/* Is CURLOPT_KEYPASSWD defined */
-@%:@undef HAVE_CURLOPT_KEYPASSWD])
-m4trace:configure.ac:589: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CURLINFO_RESPONSE_CODE])
-m4trace:configure.ac:589: -1- m4_pattern_allow([^HAVE_CURLINFO_RESPONSE_CODE$])
-m4trace:configure.ac:589: -1- AH_OUTPUT([HAVE_CURLINFO_RESPONSE_CODE], [/* Is CURLINFO_RESPONSE_CODE defined */
-@%:@undef HAVE_CURLINFO_RESPONSE_CODE])
-m4trace:configure.ac:610: -1- AC_SUBST([DOXYGEN])
-m4trace:configure.ac:610: -1- AC_SUBST_TRACE([DOXYGEN])
-m4trace:configure.ac:610: -1- m4_pattern_allow([^DOXYGEN$])
-m4trace:configure.ac:617: -1- AC_SUBST([DOT])
-m4trace:configure.ac:617: -1- AC_SUBST_TRACE([DOT])
-m4trace:configure.ac:617: -1- m4_pattern_allow([^DOT$])
-m4trace:configure.ac:629: -1- AC_SUBST([HAVE_DOT])
-m4trace:configure.ac:629: -1- AC_SUBST_TRACE([HAVE_DOT])
-m4trace:configure.ac:629: -1- m4_pattern_allow([^HAVE_DOT$])
-m4trace:configure.ac:630: -1- AC_CONFIG_FILES([man4/Doxyfile])
-m4trace:configure.ac:640: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:640: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.ac:640: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:640: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.ac:640: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:640: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.ac:640: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.ac:640: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:643: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
-m4trace:configure.ac:643: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
-m4trace:configure.ac:643: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
-@%:@undef _FILE_OFFSET_BITS])
-m4trace:configure.ac:643: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
-m4trace:configure.ac:643: -1- m4_pattern_allow([^_LARGE_FILES$])
-m4trace:configure.ac:643: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
-@%:@undef _LARGE_FILES])
-m4trace:configure.ac:643: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5. */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif])
-m4trace:configure.ac:656: -2- AC_DEFINE_TRACE_LITERAL([NO_STDLIB_H])
-m4trace:configure.ac:656: -2- m4_pattern_allow([^NO_STDLIB_H$])
-m4trace:configure.ac:656: -2- AH_OUTPUT([NO_STDLIB_H], [/* no stdlib.h */
-@%:@undef NO_STDLIB_H])
-m4trace:configure.ac:656: -1- AC_SUBST([CPP])
-m4trace:configure.ac:656: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:656: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:656: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:656: -1- AC_SUBST([CPP])
-m4trace:configure.ac:656: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:656: -1- AC_SUBST([GREP])
-m4trace:configure.ac:656: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:656: -1- AC_SUBST([EGREP])
-m4trace:configure.ac:656: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:656: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:656: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:656: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-@%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-@%:@undef HAVE_MEMORY_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-@%:@undef HAVE_STRINGS_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-@%:@undef HAVE_STDINT_H])
-m4trace:configure.ac:656: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:657: -2- AC_DEFINE_TRACE_LITERAL([NO_SYS_TYPES_H])
-m4trace:configure.ac:657: -2- m4_pattern_allow([^NO_SYS_TYPES_H$])
-m4trace:configure.ac:657: -2- AH_OUTPUT([NO_SYS_TYPES_H], [/* no sys_types.h */
-@%:@undef NO_SYS_TYPES_H])
-m4trace:configure.ac:658: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
-@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.ac:658: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H])
-m4trace:configure.ac:658: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$])
-m4trace:configure.ac:660: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR\'.
- */
-@%:@undef HAVE_DIRENT_H])
-m4trace:configure.ac:660: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR\'.
- */
-@%:@undef HAVE_SYS_NDIR_H])
-m4trace:configure.ac:660: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR\'.
- */
-@%:@undef HAVE_SYS_DIR_H])
-m4trace:configure.ac:660: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR\'. */
-@%:@undef HAVE_NDIR_H])
-m4trace:configure.ac:661: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:661: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:661: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:662: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H])
-m4trace:configure.ac:662: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$])
-m4trace:configure.ac:662: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-@%:@undef HAVE_SYS_WAIT_H])
-m4trace:configure.ac:663: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME])
-m4trace:configure.ac:663: -1- m4_pattern_allow([^TIME_WITH_SYS_TIME$])
-m4trace:configure.ac:663: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-@%:@undef TIME_WITH_SYS_TIME])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the <locale.h> header file. */
-@%:@undef HAVE_LOCALE_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the <stdio.h> header file. */
-@%:@undef HAVE_STDIO_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_STDARG_H], [/* Define to 1 if you have the <stdarg.h> header file. */
-@%:@undef HAVE_STDARG_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_ERRNO_H], [/* Define to 1 if you have the <errno.h> header file. */
-@%:@undef HAVE_ERRNO_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_CTYPE_H], [/* Define to 1 if you have the <ctype.h> header file. */
-@%:@undef HAVE_CTYPE_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
-@%:@undef HAVE_FCNTL_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you have the <malloc.h> header file. */
-@%:@undef HAVE_MALLOC_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-@%:@undef HAVE_STRINGS_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_GETOPT_H], [/* Define to 1 if you have the <getopt.h> header file. */
-@%:@undef HAVE_GETOPT_H])
-m4trace:configure.ac:664: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the <sys/time.h> header file. */
-@%:@undef HAVE_SYS_TIME_H])
-m4trace:configure.ac:665: -1- AH_OUTPUT([HAVE_VPRINTF], [/* Define to 1 if you have the `vprintf\' function. */
-@%:@undef HAVE_VPRINTF])
-m4trace:configure.ac:665: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VPRINTF])
-m4trace:configure.ac:665: -1- m4_pattern_allow([^HAVE_VPRINTF$])
-m4trace:configure.ac:665: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOPRNT])
-m4trace:configure.ac:665: -1- m4_pattern_allow([^HAVE_DOPRNT$])
-m4trace:configure.ac:665: -1- AH_OUTPUT([HAVE_DOPRNT], [/* Define to 1 if you don\'t have `vprintf\' but do have `_doprnt.\' */
-@%:@undef HAVE_DOPRNT])
-m4trace:configure.ac:670: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the <sys/resource.h> header file. */
-@%:@undef HAVE_SYS_RESOURCE_H])
-m4trace:configure.ac:670: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_RESOURCE_H])
-m4trace:configure.ac:670: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$])
-m4trace:configure.ac:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
-m4trace:configure.ac:674: -1- m4_pattern_allow([^HAVE__BOOL$])
-m4trace:configure.ac:674: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
-@%:@undef HAVE__BOOL])
-m4trace:configure.ac:674: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
-m4trace:configure.ac:674: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
-m4trace:configure.ac:674: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
-@%:@undef HAVE_STDBOOL_H])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRLCAT], [/* Define to 1 if you have the `strlcat\' function. */
-@%:@undef HAVE_STRLCAT])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
-@%:@undef HAVE_STRERROR])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
-@%:@undef HAVE_SNPRINTF])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRCHR], [/* Define to 1 if you have the `strchr\' function. */
-@%:@undef HAVE_STRCHR])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRRCHR], [/* Define to 1 if you have the `strrchr\' function. */
-@%:@undef HAVE_STRRCHR])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRCAT], [/* Define to 1 if you have the `strcat\' function. */
-@%:@undef HAVE_STRCAT])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRCPY], [/* Define to 1 if you have the `strcpy\' function. */
-@%:@undef HAVE_STRCPY])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */
-@%:@undef HAVE_STRDUP])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */
-@%:@undef HAVE_STRCASECMP])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRTOD], [/* Define to 1 if you have the `strtod\' function. */
-@%:@undef HAVE_STRTOD])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the `strtoll\' function. */
-@%:@undef HAVE_STRTOLL])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRTOULL], [/* Define to 1 if you have the `strtoull\' function. */
-@%:@undef HAVE_STRTOULL])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_STRSTR], [/* Define to 1 if you have the `strstr\' function. */
-@%:@undef HAVE_STRSTR])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the `mkstemp\' function. */
-@%:@undef HAVE_MKSTEMP])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_RAND], [/* Define to 1 if you have the `rand\' function. */
-@%:@undef HAVE_RAND])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_MEMCMP], [/* Define to 1 if you have the `memcmp\' function. */
-@%:@undef HAVE_MEMCMP])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */
-@%:@undef HAVE_GETRLIMIT])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */
-@%:@undef HAVE_GETTIMEOFDAY])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_FSYNC], [/* Define to 1 if you have the `fsync\' function. */
-@%:@undef HAVE_FSYNC])
-m4trace:configure.ac:677: -1- AH_OUTPUT([HAVE_MPI_COMM_F2C], [/* Define to 1 if you have the `MPI_Comm_f2c\' function. */
-@%:@undef HAVE_MPI_COMM_F2C])
-m4trace:configure.ac:698: -1- AH_OUTPUT([HAVE_MEMMOVE], [/* Define to 1 if you have the `memmove\' function. */
-@%:@undef HAVE_MEMMOVE])
-m4trace:configure.ac:698: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
-@%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.ac:698: -1- AH_OUTPUT([HAVE_SYSCONF], [/* Define to 1 if you have the `sysconf\' function. */
-@%:@undef HAVE_SYSCONF])
-m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the <sys/param.h> header file. */
-@%:@undef HAVE_SYS_PARAM_H])
-m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
-@%:@undef HAVE_GETPAGESIZE])
-m4trace:configure.ac:709: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE])
-m4trace:configure.ac:709: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$])
-m4trace:configure.ac:709: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
-m4trace:configure.ac:709: -1- m4_pattern_allow([^HAVE_MMAP$])
-m4trace:configure.ac:709: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
-@%:@undef HAVE_MMAP])
-m4trace:configure.ac:710: -1- AH_OUTPUT([HAVE_MREMAP], [/* Define to 1 if you have the `mremap\' function. */
-@%:@undef HAVE_MREMAP])
-m4trace:configure.ac:710: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MREMAP])
-m4trace:configure.ac:710: -1- m4_pattern_allow([^HAVE_MREMAP$])
-m4trace:configure.ac:719: -1- AC_DEFINE_TRACE_LITERAL([USE_DISKLESS])
-m4trace:configure.ac:719: -1- m4_pattern_allow([^USE_DISKLESS$])
-m4trace:configure.ac:719: -1- AH_OUTPUT([USE_DISKLESS], [/* if true, include NC_DISKLESS code */
-@%:@undef USE_DISKLESS])
-m4trace:configure.ac:721: -1- AC_DEFINE_TRACE_LITERAL([USE_MMAP])
-m4trace:configure.ac:721: -1- m4_pattern_allow([^USE_MMAP$])
-m4trace:configure.ac:721: -1- AH_OUTPUT([USE_MMAP], [/* if true, use mmap for in-memory files */
-@%:@undef USE_MMAP])
-m4trace:configure.ac:725: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.ac:725: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.ac:725: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
-@%:@undef size_t])
-m4trace:configure.ac:725: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H])
-m4trace:configure.ac:725: -1- m4_pattern_allow([^HAVE_ALLOCA_H$])
-m4trace:configure.ac:725: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-@%:@undef HAVE_ALLOCA_H])
-m4trace:configure.ac:725: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA])
-m4trace:configure.ac:725: -1- m4_pattern_allow([^HAVE_ALLOCA$])
-m4trace:configure.ac:725: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */
-@%:@undef HAVE_ALLOCA])
-m4trace:configure.ac:725: -1- AC_LIBSOURCE([alloca.c])
-m4trace:configure.ac:725: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])
-m4trace:configure.ac:725: -1- AC_SUBST_TRACE([ALLOCA])
-m4trace:configure.ac:725: -1- m4_pattern_allow([^ALLOCA$])
-m4trace:configure.ac:725: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA])
-m4trace:configure.ac:725: -1- m4_pattern_allow([^C_ALLOCA$])
-m4trace:configure.ac:725: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */
-@%:@undef C_ALLOCA])
-m4trace:configure.ac:725: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END])
-m4trace:configure.ac:725: -1- m4_pattern_allow([^CRAY_STACKSEG_END$])
-m4trace:configure.ac:725: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c\' support on those systems.
- */
-@%:@undef CRAY_STACKSEG_END])
-m4trace:configure.ac:725: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at runtime.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-@%:@undef STACK_DIRECTION])
-m4trace:configure.ac:725: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION])
-m4trace:configure.ac:725: -1- m4_pattern_allow([^STACK_DIRECTION$])
-m4trace:configure.ac:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_ISNAN])
-m4trace:configure.ac:726: -1- m4_pattern_allow([^HAVE_DECL_ISNAN$])
-m4trace:configure.ac:726: -1- AH_OUTPUT([HAVE_DECL_ISNAN], [/* Define to 1 if you have the declaration of `isnan\', and to 0 if you don\'t.
- */
-@%:@undef HAVE_DECL_ISNAN])
-m4trace:configure.ac:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_ISINF])
-m4trace:configure.ac:726: -1- m4_pattern_allow([^HAVE_DECL_ISINF$])
-m4trace:configure.ac:726: -1- AH_OUTPUT([HAVE_DECL_ISINF], [/* Define to 1 if you have the declaration of `isinf\', and to 0 if you don\'t.
- */
-@%:@undef HAVE_DECL_ISINF])
-m4trace:configure.ac:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_ISFINITE])
-m4trace:configure.ac:726: -1- m4_pattern_allow([^HAVE_DECL_ISFINITE$])
-m4trace:configure.ac:726: -1- AH_OUTPUT([HAVE_DECL_ISFINITE], [/* Define to 1 if you have the declaration of `isfinite\', and to 0 if you
- don\'t. */
-@%:@undef HAVE_DECL_ISFINITE])
-m4trace:configure.ac:726: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SIGNBIT])
-m4trace:configure.ac:726: -1- m4_pattern_allow([^HAVE_DECL_SIGNBIT$])
-m4trace:configure.ac:726: -1- AH_OUTPUT([HAVE_DECL_SIGNBIT], [/* Define to 1 if you have the declaration of `signbit\', and to 0 if you
- don\'t. */
-@%:@undef HAVE_DECL_SIGNBIT])
-m4trace:configure.ac:727: -1- _m4_warn([obsolete], [The macro `AC_STRUCT_ST_BLKSIZE' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/types.m4:973: AC_STRUCT_ST_BLKSIZE is expanded from...
-configure.ac:727: the top level])
-m4trace:configure.ac:727: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_STAT_ST_BLKSIZE])
-m4trace:configure.ac:727: -1- m4_pattern_allow([^HAVE_STRUCT_STAT_ST_BLKSIZE$])
-m4trace:configure.ac:727: -1- AH_OUTPUT([HAVE_STRUCT_STAT_ST_BLKSIZE], [/* Define to 1 if `st_blksize\' is a member of `struct stat\'. */
-@%:@undef HAVE_STRUCT_STAT_ST_BLKSIZE])
-m4trace:configure.ac:727: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ST_BLKSIZE])
-m4trace:configure.ac:727: -1- m4_pattern_allow([^HAVE_ST_BLKSIZE$])
-m4trace:configure.ac:727: -1- AH_OUTPUT([HAVE_ST_BLKSIZE], [/* Define to 1 if your `struct stat\' has `st_blksize\'. Deprecated, use
- `HAVE_STRUCT_STAT_ST_BLKSIZE\' instead. */
-@%:@undef HAVE_ST_BLKSIZE])
-m4trace:configure.ac:729: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.ac:729: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.ac:729: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
-@%:@undef size_t])
-m4trace:configure.ac:730: -1- AC_DEFINE_TRACE_LITERAL([off_t])
-m4trace:configure.ac:730: -1- m4_pattern_allow([^off_t$])
-m4trace:configure.ac:730: -1- AH_OUTPUT([off_t], [/* Define to `long int\' if <sys/types.h> does not define. */
-@%:@undef off_t])
-m4trace:configure.ac:731: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SSIZE_T])
-m4trace:configure.ac:731: -1- m4_pattern_allow([^HAVE_SSIZE_T$])
-m4trace:configure.ac:731: -1- AH_OUTPUT([HAVE_SSIZE_T], [/* Define to 1 if the system has the type `ssize_t\'. */
-@%:@undef HAVE_SSIZE_T])
-m4trace:configure.ac:731: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTRDIFF_T])
-m4trace:configure.ac:731: -1- m4_pattern_allow([^HAVE_PTRDIFF_T$])
-m4trace:configure.ac:731: -1- AH_OUTPUT([HAVE_PTRDIFF_T], [/* Define to 1 if the system has the type `ptrdiff_t\'. */
-@%:@undef HAVE_PTRDIFF_T])
-m4trace:configure.ac:731: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UCHAR])
-m4trace:configure.ac:731: -1- m4_pattern_allow([^HAVE_UCHAR$])
-m4trace:configure.ac:731: -1- AH_OUTPUT([HAVE_UCHAR], [/* Define to 1 if the system has the type `uchar\'. */
-@%:@undef HAVE_UCHAR])
-m4trace:configure.ac:731: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONGLONG])
-m4trace:configure.ac:731: -1- m4_pattern_allow([^HAVE_LONGLONG$])
-m4trace:configure.ac:731: -1- AH_OUTPUT([HAVE_LONGLONG], [/* Define to 1 if the system has the type `longlong\'. */
-@%:@undef HAVE_LONGLONG])
-m4trace:configure.ac:732: -1- AH_OUTPUT([__CHAR_UNSIGNED__], [/* Define to 1 if type `char\' is unsigned and you are not using gcc. */
-#ifndef __CHAR_UNSIGNED__
-# undef __CHAR_UNSIGNED__
-#endif])
-m4trace:configure.ac:732: -1- AC_DEFINE_TRACE_LITERAL([__CHAR_UNSIGNED__])
-m4trace:configure.ac:732: -1- m4_pattern_allow([^__CHAR_UNSIGNED__$])
-m4trace:configure.ac:733: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-# undef WORDS_BIGENDIAN
-# endif
-#endif])
-m4trace:configure.ac:733: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN])
-m4trace:configure.ac:733: -1- m4_pattern_allow([^WORDS_BIGENDIAN$])
-m4trace:configure.ac:733: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.ac:733: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$])
-m4trace:configure.ac:733: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */
-@%:@undef AC_APPLE_UNIVERSAL_BUILD])
-m4trace:configure.ac:734: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT])
-m4trace:configure.ac:734: -1- m4_pattern_allow([^SIZEOF_SHORT$])
-m4trace:configure.ac:734: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of `short\', as computed by sizeof. */
-@%:@undef SIZEOF_SHORT])
-m4trace:configure.ac:735: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
-m4trace:configure.ac:735: -1- m4_pattern_allow([^SIZEOF_INT$])
-m4trace:configure.ac:735: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
-@%:@undef SIZEOF_INT])
-m4trace:configure.ac:736: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
-m4trace:configure.ac:736: -1- m4_pattern_allow([^SIZEOF_LONG$])
-m4trace:configure.ac:736: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
-@%:@undef SIZEOF_LONG])
-m4trace:configure.ac:737: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
-m4trace:configure.ac:737: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
-m4trace:configure.ac:737: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
-@%:@undef SIZEOF_LONG_LONG])
-m4trace:configure.ac:738: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_FLOAT])
-m4trace:configure.ac:738: -1- m4_pattern_allow([^SIZEOF_FLOAT$])
-m4trace:configure.ac:738: -1- AH_OUTPUT([SIZEOF_FLOAT], [/* The size of `float\', as computed by sizeof. */
-@%:@undef SIZEOF_FLOAT])
-m4trace:configure.ac:739: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE])
-m4trace:configure.ac:739: -1- m4_pattern_allow([^SIZEOF_DOUBLE$])
-m4trace:configure.ac:739: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of `double\', as computed by sizeof. */
-@%:@undef SIZEOF_DOUBLE])
-m4trace:configure.ac:740: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_OFF_T])
-m4trace:configure.ac:740: -1- m4_pattern_allow([^SIZEOF_OFF_T$])
-m4trace:configure.ac:740: -1- AH_OUTPUT([SIZEOF_OFF_T], [/* The size of `off_t\', as computed by sizeof. */
-@%:@undef SIZEOF_OFF_T])
-m4trace:configure.ac:741: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SIZE_T])
-m4trace:configure.ac:741: -1- m4_pattern_allow([^SIZEOF_SIZE_T$])
-m4trace:configure.ac:741: -1- AH_OUTPUT([SIZEOF_SIZE_T], [/* The size of `size_t\', as computed by sizeof. */
-@%:@undef SIZEOF_SIZE_T])
-m4trace:configure.ac:750: -1- AH_OUTPUT([HAVE_LIBM], [/* Define to 1 if you have the `m\' library (-lm). */
-@%:@undef HAVE_LIBM])
-m4trace:configure.ac:750: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBM])
-m4trace:configure.ac:750: -1- m4_pattern_allow([^HAVE_LIBM$])
-m4trace:configure.ac:755: -1- AC_DEFINE_TRACE_LITERAL([USE_NETCDF4])
-m4trace:configure.ac:755: -1- m4_pattern_allow([^USE_NETCDF4$])
-m4trace:configure.ac:755: -1- AH_OUTPUT([USE_NETCDF4], [/* if true, build netCDF-4 */
-@%:@undef USE_NETCDF4])
-m4trace:configure.ac:756: -1- AC_DEFINE_TRACE_LITERAL([H5_USE_16_API])
-m4trace:configure.ac:756: -1- m4_pattern_allow([^H5_USE_16_API$])
-m4trace:configure.ac:756: -1- AH_OUTPUT([H5_USE_16_API], [/* use HDF5 1.6 API */
-@%:@undef H5_USE_16_API])
-m4trace:configure.ac:760: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
-@%:@undef HAVE_DLFCN_H])
-m4trace:configure.ac:760: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
-m4trace:configure.ac:760: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
-m4trace:configure.ac:764: -1- AH_OUTPUT([HAVE_LIBDL], [/* Define to 1 if you have the `dl\' library (-ldl). */
-@%:@undef HAVE_LIBDL])
-m4trace:configure.ac:764: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDL])
-m4trace:configure.ac:764: -1- m4_pattern_allow([^HAVE_LIBDL$])
-m4trace:configure.ac:765: -1- AC_DEFINE_TRACE_LITERAL([USE_LIBDL])
-m4trace:configure.ac:765: -1- m4_pattern_allow([^USE_LIBDL$])
-m4trace:configure.ac:765: -1- AH_OUTPUT([USE_LIBDL], [/* if true, enable dynamic loading support */
-@%:@undef USE_LIBDL])
-m4trace:configure.ac:775: -1- AH_OUTPUT([HAVE_HDF5_H], [/* Define to 1 if you have the <hdf5.h> header file. */
-@%:@undef HAVE_HDF5_H])
-m4trace:configure.ac:775: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HDF5_H])
-m4trace:configure.ac:775: -1- m4_pattern_allow([^HAVE_HDF5_H$])
-m4trace:configure.ac:776: -1- AH_OUTPUT([HAVE_H5PGET_FAPL_MPIPOSIX], [/* Define to 1 if you have the `H5Pget_fapl_mpiposix\' function. */
-@%:@undef HAVE_H5PGET_FAPL_MPIPOSIX])
-m4trace:configure.ac:776: -1- AH_OUTPUT([HAVE_H5PGET_FAPL_MPIO], [/* Define to 1 if you have the `H5Pget_fapl_mpio\' function. */
-@%:@undef HAVE_H5PGET_FAPL_MPIO])
-m4trace:configure.ac:776: -1- AH_OUTPUT([HAVE_H5PSET_DEFLATE], [/* Define to 1 if you have the `H5Pset_deflate\' function. */
-@%:@undef HAVE_H5PSET_DEFLATE])
-m4trace:configure.ac:776: -1- AH_OUTPUT([HAVE_H5Z_SZIP], [/* Define to 1 if you have the `H5Z_SZIP\' function. */
-@%:@undef HAVE_H5Z_SZIP])
-m4trace:configure.ac:780: -1- AC_DEFINE_TRACE_LITERAL([USE_PARALLEL_POSIX])
-m4trace:configure.ac:780: -1- m4_pattern_allow([^USE_PARALLEL_POSIX$])
-m4trace:configure.ac:780: -1- AH_OUTPUT([USE_PARALLEL_POSIX], [/* if true, compile in parallel netCDF-4 based on MPI/POSIX */
-@%:@undef USE_PARALLEL_POSIX])
-m4trace:configure.ac:785: -1- AC_DEFINE_TRACE_LITERAL([USE_PARALLEL_MPIO])
-m4trace:configure.ac:785: -1- m4_pattern_allow([^USE_PARALLEL_MPIO$])
-m4trace:configure.ac:785: -1- AH_OUTPUT([USE_PARALLEL_MPIO], [/* if true, compile in parallel netCDF-4 based on MPI/IO */
-@%:@undef USE_PARALLEL_MPIO])
-m4trace:configure.ac:792: -1- AC_DEFINE_TRACE_LITERAL([USE_PARALLEL])
-m4trace:configure.ac:792: -1- m4_pattern_allow([^USE_PARALLEL$])
-m4trace:configure.ac:792: -1- AH_OUTPUT([USE_PARALLEL], [/* if true, parallel netCDF-4 is in use */
-@%:@undef USE_PARALLEL])
-m4trace:configure.ac:800: -1- AC_DEFINE_TRACE_LITERAL([USE_ZLIB])
-m4trace:configure.ac:800: -1- m4_pattern_allow([^USE_ZLIB$])
-m4trace:configure.ac:800: -1- AH_OUTPUT([USE_ZLIB], [/* if true, compile in zlib compression in netCDF-4 variables */
-@%:@undef USE_ZLIB])
-m4trace:configure.ac:808: -1- AC_DEFINE_TRACE_LITERAL([USE_SZIP])
-m4trace:configure.ac:808: -1- m4_pattern_allow([^USE_SZIP$])
-m4trace:configure.ac:808: -1- AH_OUTPUT([USE_SZIP], [/* if true, compile in szip compression in netCDF-4 variables */
-@%:@undef USE_SZIP])
-m4trace:configure.ac:813: -1- AH_OUTPUT([HAVE_MFHDF_H], [/* Define to 1 if you have the <mfhdf.h> header file. */
-@%:@undef HAVE_MFHDF_H])
-m4trace:configure.ac:813: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MFHDF_H])
-m4trace:configure.ac:813: -1- m4_pattern_allow([^HAVE_MFHDF_H$])
-m4trace:configure.ac:817: -1- AH_OUTPUT([HAVE_LIBDF], [/* Define to 1 if you have the `df\' library (-ldf). */
-@%:@undef HAVE_LIBDF])
-m4trace:configure.ac:817: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDF])
-m4trace:configure.ac:817: -1- m4_pattern_allow([^HAVE_LIBDF$])
-m4trace:configure.ac:818: -1- AH_OUTPUT([HAVE_LIBMFHDF], [/* Define to 1 if you have the `mfhdf\' library (-lmfhdf). */
-@%:@undef HAVE_LIBMFHDF])
-m4trace:configure.ac:818: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBMFHDF])
-m4trace:configure.ac:818: -1- m4_pattern_allow([^HAVE_LIBMFHDF$])
-m4trace:configure.ac:820: -1- AH_OUTPUT([HAVE_LIBJPEG], [/* Define to 1 if you have the `jpeg\' library (-ljpeg). */
-@%:@undef HAVE_LIBJPEG])
-m4trace:configure.ac:820: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBJPEG])
-m4trace:configure.ac:820: -1- m4_pattern_allow([^HAVE_LIBJPEG$])
-m4trace:configure.ac:822: -1- AC_DEFINE_TRACE_LITERAL([USE_HDF4])
-m4trace:configure.ac:822: -1- m4_pattern_allow([^USE_HDF4$])
-m4trace:configure.ac:822: -1- AH_OUTPUT([USE_HDF4], [/* if true, use HDF4 too */
-@%:@undef USE_HDF4])
-m4trace:configure.ac:831: -1- AC_DEFINE_TRACE_LITERAL([LOGGING])
-m4trace:configure.ac:831: -1- m4_pattern_allow([^LOGGING$])
-m4trace:configure.ac:831: -1- AH_OUTPUT([LOGGING], [/* If true, turn on logging. */
-@%:@undef LOGGING])
-m4trace:configure.ac:836: -1- AH_OUTPUT([HAVE_LIBPNETCDF], [/* Define to 1 if you have the `pnetcdf\' library (-lpnetcdf). */
-@%:@undef HAVE_LIBPNETCDF])
-m4trace:configure.ac:836: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPNETCDF])
-m4trace:configure.ac:836: -1- m4_pattern_allow([^HAVE_LIBPNETCDF$])
-m4trace:configure.ac:838: -1- AC_DEFINE_TRACE_LITERAL([USE_PNETCDF])
-m4trace:configure.ac:838: -1- m4_pattern_allow([^USE_PNETCDF$])
-m4trace:configure.ac:838: -1- AH_OUTPUT([USE_PNETCDF], [/* if true, parallel netCDF is used */
-@%:@undef USE_PNETCDF])
-m4trace:configure.ac:843: -1- AC_DEFINE_TRACE_LITERAL([USE_PARALLEL])
-m4trace:configure.ac:843: -1- m4_pattern_allow([^USE_PARALLEL$])
-m4trace:configure.ac:843: -1- AH_OUTPUT([USE_PARALLEL], [/* if true, pnetcdf or parallel netcdf-4 is in use */
-@%:@undef USE_PARALLEL])
-m4trace:configure.ac:902: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT])
-m4trace:configure.ac:902: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$])
-m4trace:configure.ac:902: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type `unsigned long long int\'. */
-@%:@undef HAVE_UNSIGNED_LONG_LONG_INT])
-m4trace:configure.ac:902: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT])
-m4trace:configure.ac:902: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$])
-m4trace:configure.ac:902: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type `long long int\'. */
-@%:@undef HAVE_LONG_LONG_INT])
-m4trace:configure.ac:903: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT])
-m4trace:configure.ac:903: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$])
-m4trace:configure.ac:903: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type `unsigned long long int\'. */
-@%:@undef HAVE_UNSIGNED_LONG_LONG_INT])
-m4trace:configure.ac:920: -1- AC_SUBST([BINFILE_NAME])
-m4trace:configure.ac:920: -1- AC_SUBST_TRACE([BINFILE_NAME])
-m4trace:configure.ac:920: -1- m4_pattern_allow([^BINFILE_NAME$])
-m4trace:configure.ac:958: -1- AC_SUBST([NC_LIBS], [$NC_LIBS])
-m4trace:configure.ac:958: -1- AC_SUBST_TRACE([NC_LIBS])
-m4trace:configure.ac:958: -1- m4_pattern_allow([^NC_LIBS$])
-m4trace:configure.ac:959: -1- AC_SUBST([HAS_DAP], [$enable_dap])
-m4trace:configure.ac:959: -1- AC_SUBST_TRACE([HAS_DAP])
-m4trace:configure.ac:959: -1- m4_pattern_allow([^HAS_DAP$])
-m4trace:configure.ac:960: -1- AC_SUBST([HAS_NC2], [$nc_build_v2])
-m4trace:configure.ac:960: -1- AC_SUBST_TRACE([HAS_NC2])
-m4trace:configure.ac:960: -1- m4_pattern_allow([^HAS_NC2$])
-m4trace:configure.ac:961: -1- AC_SUBST([HAS_NC4], [$enable_netcdf_4])
-m4trace:configure.ac:961: -1- AC_SUBST_TRACE([HAS_NC4])
-m4trace:configure.ac:961: -1- m4_pattern_allow([^HAS_NC4$])
-m4trace:configure.ac:962: -1- AC_SUBST([HAS_HDF4], [$enable_hdf4])
-m4trace:configure.ac:962: -1- AC_SUBST_TRACE([HAS_HDF4])
-m4trace:configure.ac:962: -1- m4_pattern_allow([^HAS_HDF4$])
-m4trace:configure.ac:963: -1- AC_SUBST([HAS_PNETCDF], [$enable_pnetcdf])
-m4trace:configure.ac:963: -1- AC_SUBST_TRACE([HAS_PNETCDF])
-m4trace:configure.ac:963: -1- m4_pattern_allow([^HAS_PNETCDF$])
-m4trace:configure.ac:964: -1- AC_SUBST([HAS_HDF5], [$enable_netcdf_4])
-m4trace:configure.ac:964: -1- AC_SUBST_TRACE([HAS_HDF5])
-m4trace:configure.ac:964: -1- m4_pattern_allow([^HAS_HDF5$])
-m4trace:configure.ac:965: -1- AC_SUBST([HAS_SZLIB], [$nc_has_szlib])
-m4trace:configure.ac:965: -1- AC_SUBST_TRACE([HAS_SZLIB])
-m4trace:configure.ac:965: -1- m4_pattern_allow([^HAS_SZLIB$])
-m4trace:configure.ac:977: -1- AC_DEFINE_TRACE_LITERAL([JNA])
-m4trace:configure.ac:977: -1- m4_pattern_allow([^JNA$])
-m4trace:configure.ac:977: -1- AH_OUTPUT([JNA], [/* if true, include JNA bug fix */
-@%:@undef JNA])
-m4trace:configure.ac:982: -1- AH_OUTPUT([zzzz1], [/* Define strcasecmp, snprintf on Win32 systems. */
-#ifdef _WIN32
- #define strcasecmp _stricmp
- #define snprintf _snprintf
-#endif])
-m4trace:configure.ac:990: -1- AH_OUTPUT([zzzz2], [#include "ncconfigure.h"])
-m4trace:configure.ac:999: -1- AC_CONFIG_FILES([Makefile
- nc-config
- netcdf.pc
- include/Makefile
- h5_test/Makefile
- man4/Makefile
- man4/images/Makefile
- libsrc/Makefile
- libsrc4/Makefile
- libsrc5/Makefile
- nctest/Makefile
- nc_test4/Makefile
- nc_test/Makefile
- ncdump/Makefile
- ncgen3/Makefile
- ncgen/Makefile
- examples/Makefile
- examples/C/Makefile
- examples/CDL/Makefile
- oc2/Makefile
- libdap2/Makefile
- libdispatch/Makefile
- liblib/Makefile
- ncdump/cdl4/Makefile
- ncdump/expected4/Makefile
- ncdap_test/Makefile
- ncdap_test/testdata3/Makefile
- ncdap_test/expected3/Makefile
- ncdap_test/expected4/Makefile
- ncdap_test/expectremote3/Makefile
- ncdap_test/expectremote4/Makefile
- ], [test -f nc-config && chmod 755 nc-config])
-m4trace:configure.ac:1032: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
-m4trace:configure.ac:1032: -1- m4_pattern_allow([^LIB@&t at OBJS$])
-m4trace:configure.ac:1032: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.ac:1032: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.ac:1032: -1- AC_SUBST_TRACE([INSTALL])
diff --git a/cf b/cf
index 831645f..2d82a20 100644
--- a/cf
+++ b/cf
@@ -1,6 +1,7 @@
#!/bin/bash
#X="-x"
#NB=1
+DB=1
if test $# != 0 ; then
cmds=$@
@@ -11,6 +12,12 @@ DAP=1
#HDF4=1
#PNETCDF=1
+#PAR=1
+
+if test "x$PNETCDF" = x1 ; then
+PAR=1
+fi
+
#RPC=1
#PGI=1
#M32=1
@@ -18,11 +25,12 @@ DAP=1
CFLAGS=""
#CFLAGS="-Wall -Wno-unused-variable -Wno-unused-parameter -Wconversion ${CFLAGS}"
-#CFLAGS="-Wall -Wno-unused-variable -Wno-unused-parameter ${CFLAGS}"
+CFLAGS="-Wall -Wno-unused-variable ${CFLAGS}"
#CFLAGS="-Wconversion"
stddir="/usr/local"
PREFIX=/usr/local
+
if test "x${cmds}" = x ; then
cmds=""
else
@@ -101,12 +109,6 @@ fi
CXXFLAGS="$CPPFLAGS $CXXFLAGS"
-
-if test -z "$NB" ; then
-${MAKE} maintainer-clean >/dev/null 2>&1
-if autoreconf -i --force ; then ok=1; else exit ; fi
-fi
-
FLAGS="--prefix ${PREFIX}"
#FLAGS="$FLAGS --disable-f77 --disable-f90"
#FLAGS="$FLAGS --disable-cxx"
@@ -131,8 +133,15 @@ FLAGS="$FLAGS --enable-dap-auth-tests"
#FLAGS="$FLAGS --enable-valgrind-tests"
FLAGS="$FLAGS --enable-jna"
-#FLAGS="$FLAGS --disable-shared"
+if test "x${DB}" = x1 ; then
+FLAGS="$FLAGS --disable-shared"
+else
FLAGS="$FLAGS --enable-shared"
+fi
+
+if test "x${PAR}" != x ; then
+FLAGS="$FLAGS --enable-parallel"
+fi
if test "x$HDF5" = "x" ; then
FLAGS="$FLAGS --disable-netcdf-4"
@@ -181,6 +190,11 @@ export CXXFLAGS
DISTCHECK_CONFIGURE_FLAGS="$FLAGS"
export DISTCHECK_CONFIGURE_FLAGS
+if test -z "$NB" ; then
+${MAKE} maintainer-clean >/dev/null 2>&1
+if autoreconf -i --force ; then ok=1; else exit ; fi
+fi
+
if test -f Makefile ; then ${MAKE} distclean >/dev/null 2>&1 ; fi
sh $X ./configure ${FLAGS}
for c in $cmds; do
diff --git a/cf.cmake b/cf.cmake
new file mode 100644
index 0000000..1267498
--- /dev/null
+++ b/cf.cmake
@@ -0,0 +1,14 @@
+rm -fr build
+mkdir build
+cd build
+UL=/usr/local
+PPATH="$UL"
+HDF5="-DHDF5_LIB=${UL}/lib/libhdf5.so -DHDF5_HL_LIB=${UL}/lib/libhdf5_hl.so -DHDF5_INCLUDE_DIR=${UL}/include"
+FLAGS="-DCMAKE_PREFIX_PATH=$PPATH"
+FLAGS="$FLAGS -DCMAKE_INSTALL_PREFIX=${UL}"
+FLAGS="$FLAGS -DCMAKE_PREFIX_PATH="$PPATH"
+FLAGS="$FLAGS -DENABLE_DAP_REMOTE_TESTS=true
+FLAGS="$FLAGS -DENABLE_DAP_AUTH_TESTS=true"
+cmake $FLAGS ${HDF5} ..
+cmake --build .
+make test
diff --git a/compile b/compile
new file mode 100755
index 0000000..a85b723
--- /dev/null
+++ b/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000..6c32c86
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1421 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright 1992-2014 Free Software Foundation, Inc.
+
+timestamp='2014-11-04'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches to <config-patches at gnu.org>.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2014 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ ;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ *:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ cris:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ crisv32:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ frv:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ i*86:Linux:*:*)
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ ;;
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-${LIBC}
+ exit ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-${LIBC}
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-${LIBC}
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ exit ;;
+ x86_64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel at ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes at openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf at swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green at stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green at stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # Avoid executing cc on OS X 10.9, as it ships with a stub
+ # that puts up a graphical alert prompting to install
+ # developer tools. Any system running Mac OS X 10.7 or
+ # later (Darwin 11 and later) is required to have a 64-bit
+ # processor. This is not true of the ARM version of Darwin
+ # that Apple uses in portable devices.
+ UNAME_PROCESSOR=x86_64
+ fi
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
+esac
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.h.cmake.in b/config.h.cmake.in
index edefbf3..ec27617 100644
--- a/config.h.cmake.in
+++ b/config.h.cmake.in
@@ -17,16 +17,16 @@ are set when opening a binary file on Windows. */
#define close _close
#define read _read
#define lseek _lseeki64
-
+
#define fstat _fstat64
#define off_t __int64
#define _off_t __int64
-
+
#ifndef _OFF_T_DEFINED
#define _OFF_T_DEFINED
#endif
-
+
#ifdef _WIN32
#ifndef strcasecmp
#define strcasecmp _stricmp
@@ -104,6 +104,7 @@ are set when opening a binary file on Windows. */
#cmakedefine HAVE_CURLOPT_PASSWORD 1
#cmakedefine HAVE_CURLOPT_KEYPASSWD 1
#cmakedefine HAVE_CURLINFO_RESPONSE_CODE 1
+#cmakedefine HAVE_CURLOPT_CHUNK_BGN_FUNCTION 1
#cmakedefine HAVE_DECL_SIGNBIT 1
#cmakedefine HAVE_DOPRNT
#cmakedefine HAVE_ALLOCA
@@ -205,10 +206,12 @@ are set when opening a binary file on Windows. */
/* Define if we have filelengthi64. */
#cmakedefine HAVE_FILE_LENGTH_I64 @HAVE_FILE_LENGTH_I64@
+/* The size of `void*` as computed by sizeof. */
+#cmakedefine SIZEOF_VOIDSTAR @SIZEOF_VOIDSTAR@
/* The size of `char` as computed by sizeof. */
#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@
/* The size of `double` as computed by sizeof. */
-#cmakedefine SIZEOF_DOUBLE @SIZEOF_DOUBLE@
+#cmakedefine SIZEOF_DOUBLE @SIZEOF_DOUBLE@
/* The size of `float` as computed by sizeof. */
#cmakedefine SIZEOF_FLOAT @SIZEOF_FLOAT@
/* The size of `int` as computed by sizeof. */
@@ -225,7 +228,7 @@ are set when opening a binary file on Windows. */
/* The size of `size_t` as computed by sizeof. */
#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@
/* The size of `ssize_t` as computed by sizeof. */
-#cmakedefine SIZEOF_SSIZE_T @SIZEOF_SSIZE_T@
+#cmakedefine SIZEOF_SSIZE_T @SIZEOF_SSIZE_T@
/* The size of `uchar` as computed by sizeof. */
#cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@
/* The size of `__int64` found on Windows systems. */
@@ -237,6 +240,7 @@ are set when opening a binary file on Windows. */
/* Set if we have strdup */
#cmakedefine HAVE_STRDUP
+#cmakedefine HAVE_STRNDUP
#cmakedefine HAVE_STRLCAT
#cmakedefine HAVE_STRERROR
#cmakedefine HAVE_SNPRINTF
@@ -272,8 +276,8 @@ are set when opening a binary file on Windows. */
/* Specifies if various libraries are present. */
#cmakedefine HAVE_LIBM 1
-/* Define to 1 if the system has the type `uchar'.*/
-#cmakedefine HAVE_UCHAR
+/* Define to 1 if the system has the type `uchar'.*/
+#cmakedefine HAVE_UCHAR
/* Misc defines copied from autotools config.h.in */
#cmakedefine CRAY_STACKSEG_END
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..10a699d
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,516 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* If true, will attempt to download and build netcdf-fortran. */
+#undef BUILD_FORTRAN
+
+/* if true, build RPC Client and Server */
+#undef BUILD_RPC
+
+/* default file chunk cache nelems. */
+#undef CHUNK_CACHE_NELEMS
+
+/* default file chunk cache preemption policy. */
+#undef CHUNK_CACHE_PREEMPTION
+
+/* default file chunk cache size in bytes. */
+#undef CHUNK_CACHE_SIZE
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* num chunks in default per-var chunk cache. */
+#undef DEFAULT_CHUNKS_IN_CACHE
+
+/* default chunk size in bytes */
+#undef DEFAULT_CHUNK_SIZE
+
+/* set this only when building a DLL under MinGW */
+#undef DLL_EXPORT
+
+/* set this only when building a DLL under MinGW */
+#undef DLL_NETCDF
+
+/* if true, build DAP Client */
+#undef ENABLE_DAP
+
+/* if true, enable DAP group names */
+#undef ENABLE_DAP_GROUPS
+
+/* if true, do remote tests */
+#undef ENABLE_DAP_REMOTE_TESTS
+
+/* if true, run extra tests which may not work yet */
+#undef EXTRA_TESTS
+
+/* use HDF5 1.6 API */
+#undef H5_USE_16_API
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
+
+/* Is CURLINFO_RESPONSE_CODE defined */
+#undef HAVE_CURLINFO_RESPONSE_CODE
+
+/* Is CURLOPT_CHUNK_BGN_FUNCTION defined */
+#undef HAVE_CURLOPT_CHUNK_BGN_FUNCTION
+
+/* Is CURLOPT_KEYPASSWD defined */
+#undef HAVE_CURLOPT_KEYPASSWD
+
+/* Is CURLOPT_PASSWORD defined */
+#undef HAVE_CURLOPT_PASSWORD
+
+/* Is CURLOPT_USERNAME defined */
+#undef HAVE_CURLOPT_USERNAME
+
+/* Define to 1 if you have the declaration of `isfinite', and to 0 if you
+ don't. */
+#undef HAVE_DECL_ISFINITE
+
+/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
+ */
+#undef HAVE_DECL_ISINF
+
+/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
+ */
+#undef HAVE_DECL_ISNAN
+
+/* Define to 1 if you have the declaration of `signbit', and to 0 if you
+ don't. */
+#undef HAVE_DECL_SIGNBIT
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+#undef HAVE_DOPRNT
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getrlimit' function. */
+#undef HAVE_GETRLIMIT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the `H5Pget_fapl_mpio' function. */
+#undef HAVE_H5PGET_FAPL_MPIO
+
+/* Define to 1 if you have the `H5Pget_fapl_mpiposix' function. */
+#undef HAVE_H5PGET_FAPL_MPIPOSIX
+
+/* Define to 1 if you have the `H5Pset_deflate' function. */
+#undef HAVE_H5PSET_DEFLATE
+
+/* Define to 1 if you have the `H5Z_SZIP' function. */
+#undef HAVE_H5Z_SZIP
+
+/* Define to 1 if you have the <hdf5.h> header file. */
+#undef HAVE_HDF5_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `df' library (-ldf). */
+#undef HAVE_LIBDF
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+#undef HAVE_LIBDL
+
+/* Define to 1 if you have the `jpeg' library (-ljpeg). */
+#undef HAVE_LIBJPEG
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the `mfhdf' library (-lmfhdf). */
+#undef HAVE_LIBMFHDF
+
+/* Define to 1 if you have the `pnetcdf' library (-lpnetcdf). */
+#undef HAVE_LIBPNETCDF
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if the system has the type `longlong'. */
+#undef HAVE_LONGLONG
+
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the `memcmp' function. */
+#undef HAVE_MEMCMP
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <mfhdf.h> header file. */
+#undef HAVE_MFHDF_H
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `MPI_Comm_f2c' function. */
+#undef HAVE_MPI_COMM_F2C
+
+/* Define to 1 if you have the `mremap' function. */
+#undef HAVE_MREMAP
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#undef HAVE_PTRDIFF_T
+
+/* Define to 1 if you have the `rand' function. */
+#undef HAVE_RAND
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if the system has the type `ssize_t'. */
+#undef HAVE_SSIZE_T
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strcat' function. */
+#undef HAVE_STRCAT
+
+/* Define to 1 if you have the `strchr' function. */
+#undef HAVE_STRCHR
+
+/* Define to 1 if you have the `strcpy' function. */
+#undef HAVE_STRCPY
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strlcat' function. */
+#undef HAVE_STRLCAT
+
+/* Define to 1 if you have the `strrchr' function. */
+#undef HAVE_STRRCHR
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define to 1 if you have the `strtod' function. */
+#undef HAVE_STRTOD
+
+/* Define to 1 if you have the `strtoll' function. */
+#undef HAVE_STRTOLL
+
+/* Define to 1 if you have the `strtoull' function. */
+#undef HAVE_STRTOULL
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use
+ `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */
+#undef HAVE_ST_BLKSIZE
+
+/* Define to 1 if you have the `sysconf' function. */
+#undef HAVE_SYSCONF
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if the system has the type `uchar'. */
+#undef HAVE_UCHAR
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* if true, include JNA bug fix */
+#undef JNA
+
+/* do large file tests */
+#undef LARGE_FILE_TESTS
+
+/* If true, turn on logging. */
+#undef LOGGING
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#undef LT_OBJDIR
+
+/* max size of the default per-var chunk cache. */
+#undef MAX_DEFAULT_CACHE_SIZE
+
+/* min blocksize for posixio. */
+#undef NCIO_MINBLOCKSIZE
+
+/* no IEEE float on this platform */
+#undef NO_IEEE_FLOAT
+
+/* do not build the netCDF version 2 API */
+#undef NO_NETCDF_2
+
+/* no stdlib.h */
+#undef NO_STDLIB_H
+
+/* no sys_types.h */
+#undef NO_SYS_TYPES_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `double', as computed by sizeof. */
+#undef SIZEOF_DOUBLE
+
+/* The size of `float', as computed by sizeof. */
+#undef SIZEOF_FLOAT
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of `off_t', as computed by sizeof. */
+#undef SIZEOF_OFF_T
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `size_t', as computed by sizeof. */
+#undef SIZEOF_SIZE_T
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Place to put very large netCDF test files. */
+#undef TEMP_LARGE
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* if true, build CDMREMOTE Client */
+#undef USE_CDMREMOTE
+
+/* if true, build DAP Client */
+#undef USE_DAP
+
+/* if true, include NC_DISKLESS code */
+#undef USE_DISKLESS
+
+/* set this to use extreme numbers in tests */
+#undef USE_EXTREME_NUMBERS
+
+/* if true, use ffio instead of posixio */
+#undef USE_FFIO
+
+/* if true, include experimental fsync code */
+#undef USE_FSYNC
+
+/* if true, use HDF4 too */
+#undef USE_HDF4
+
+/* If true, use use wget to fetch some sample HDF4 data, and then test against
+ it. */
+#undef USE_HDF4_FILE_TESTS
+
+/* if true, enable dynamic loading support */
+#undef USE_LIBDL
+
+/* if true, use mmap for in-memory files */
+#undef USE_MMAP
+
+/* if true, build netCDF-4 */
+#undef USE_NETCDF4
+
+/* build the netCDF version 2 API */
+#undef USE_NETCDF_2
+
+/* if true, pnetcdf or parallel netcdf-4 is in use */
+#undef USE_PARALLEL
+
+/* if true, compile in parallel netCDF-4 based on MPI/IO */
+#undef USE_PARALLEL_MPIO
+
+/* if true, compile in parallel netCDF-4 based on MPI/POSIX */
+#undef USE_PARALLEL_POSIX
+
+/* if true, parallel netCDF is used */
+#undef USE_PNETCDF
+
+/* if true, compile in szip compression in netCDF-4 variables */
+#undef USE_SZIP
+
+/* if true, compile in zlib compression in netCDF-4 variables */
+#undef USE_ZLIB
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if type `char' is unsigned and you are not using gcc. */
+#ifndef __CHAR_UNSIGNED__
+# undef __CHAR_UNSIGNED__
+#endif
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `long int' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define strcasecmp, snprintf on Win32 systems. */
+#ifdef _WIN32
+ #define strcasecmp _stricmp
+ #define snprintf _snprintf
+#endif
+
+#include "ncconfigure.h"
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000..7ffe373
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1807 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright 1992-2014 Free Software Foundation, Inc.
+
+timestamp='2014-12-03'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches at gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2014 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray | -microblaze*)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
+ | bfin \
+ | c4x | c8051 | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | epiphany \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 | nios2eb | nios2el \
+ | ns16k | ns32k \
+ | open8 | or1k | or1knd | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
+ | pyramid \
+ | riscv32 | riscv64 \
+ | rl78 | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | visium \
+ | we32k \
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | aarch64-* | aarch64_be-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | be32-* | be64-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | k1om-* \
+ | le32-* | le64-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa32r6-* | mipsisa32r6el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64r6-* | mipsisa64r6el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
+ | or1k*-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ | pyramid-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
+ | visium-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16 | cr16-*)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze*)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=-moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=-msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc | ppcbe) basic_machine=powerpc-unknown
+ ;;
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tile*)
+ basic_machine=$basic_machine-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* | -plan9* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ c8051-*)
+ os=-elf
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -cnk*|-aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
index de98c9e..c1098e1 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Id: configure.ac,v 1.450 2010/05/28 19:42:47 dmh Exp .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF 4.3.3-rc1.
+# Generated by GNU Autoconf 2.69 for netCDF 4.3.3-rc3.
#
# Report bugs to <support-netcdf at unidata.ucar.edu>.
#
@@ -199,6 +199,14 @@ test -x / || exit 1"
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
if (eval "$as_required") 2>/dev/null; then :
as_have_required=yes
@@ -557,6 +565,8 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+SHELL=${CONFIG_SHELL-/bin/sh}
+
test -n "$DJDIR" || exec 7<&0 </dev/null
exec 6>&1
@@ -581,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='netCDF'
PACKAGE_TARNAME='netcdf'
-PACKAGE_VERSION='4.3.3-rc1'
-PACKAGE_STRING='netCDF 4.3.3-rc1'
+PACKAGE_VERSION='4.3.3-rc3'
+PACKAGE_STRING='netCDF 4.3.3-rc3'
PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
PACKAGE_URL=''
@@ -624,8 +634,31 @@ ac_includes_default="\
#endif"
ac_header_list=
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
LIBOBJS
+NC_HAS_PARALLEL
+NC_HAS_PNETCDF
+NC_HAS_JNA
+NC_HAS_MMAP
+NC_HAS_DISKLESS
+NC_HAS_DAP
+NC_HAS_SZIP
+NC_HAS_HDF5
+NC_HAS_HDF4
+NC_HAS_NC4
+NC_HAS_NC2
+NC_VERSION
+AM_LDFLAGS
+AM_CPPFLAGS
+AM_CFLAGS
+enable_static
+enable_shared
+HAS_JNA
+HAS_MMAP
+HAS_DISKLESS
+HAS_PARALLEL
HAS_SZLIB
HAS_HDF5
HAS_PNETCDF
@@ -635,16 +668,111 @@ HAS_NC2
HAS_DAP
NC_LIBS
BINFILE_NAME
+BUILD_MMAP_FALSE
+BUILD_MMAP_TRUE
+BUILD_DISKLESS_FALSE
+BUILD_DISKLESS_TRUE
+BUILD_RPC_FALSE
+BUILD_RPC_TRUE
+BUILD_CDMREMOTE_FALSE
+BUILD_CDMREMOTE_TRUE
+USE_DISPATCH_FALSE
+USE_DISPATCH_TRUE
+USE_PNETCDF_FALSE
+USE_PNETCDF_TRUE
+BUILD_FORTRAN_FALSE
+BUILD_FORTRAN_TRUE
+USE_RENAMEV3_FALSE
+USE_RENAMEV3_TRUE
+USE_HDF4_FILE_TESTS_FALSE
+USE_HDF4_FILE_TESTS_TRUE
+USE_HDF4_FALSE
+USE_HDF4_TRUE
+USE_NETCDF4_FALSE
+USE_NETCDF4_TRUE
+USE_VALGRIND_TESTS_FALSE
+USE_VALGRIND_TESTS_TRUE
+CROSS_COMPILING_FALSE
+CROSS_COMPILING_TRUE
+USE_LOGGING_FALSE
+USE_LOGGING_TRUE
+USE_PNETCDF_DIR_FALSE
+USE_PNETCDF_DIR_TRUE
+USE_SZIP_FALSE
+USE_SZIP_TRUE
+EXTRA_EXAMPLE_TESTS_FALSE
+EXTRA_EXAMPLE_TESTS_TRUE
+ENABLE_DAP_LONG_TESTS_FALSE
+ENABLE_DAP_LONG_TESTS_TRUE
+ENABLE_DAP_AUTH_TESTS_FALSE
+ENABLE_DAP_AUTH_TESTS_TRUE
+ENABLE_DAP_REMOTE_TESTS_FALSE
+ENABLE_DAP_REMOTE_TESTS_TRUE
+USE_DAP_FALSE
+USE_DAP_TRUE
+BUILD_DAP_FALSE
+BUILD_DAP_TRUE
+TEST_PARALLEL_FALSE
+TEST_PARALLEL_TRUE
+BUILD_PARALLEL_FALSE
+BUILD_PARALLEL_TRUE
ALLOCA
-EGREP
-GREP
-CPP
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
HAVE_DOT
DOT
DOXYGEN
+NC_M4
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+LIBTOOL
+OBJDUMP
+DLLTOOL
+AS
+CC_VERSION
+BUILD_BENCHMARKS_FALSE
+BUILD_BENCHMARKS_TRUE
+LARGE_FILE_TESTS_FALSE
+LARGE_FILE_TESTS_TRUE
+BUILD_TESTSETS_FALSE
+BUILD_TESTSETS_TRUE
+BUILD_UTILITIES_FALSE
+BUILD_UTILITIES_TRUE
+BUILD_V2_FALSE
+BUILD_V2_TRUE
+BUILD_EXAMPLES_FALSE
+BUILD_EXAMPLES_TRUE
+USE_FFIO_FALSE
+USE_FFIO_TRUE
+EXTRA_TESTS_FALSE
+EXTRA_TESTS_TRUE
+INTERNAL_OCLIB_FALSE
+INTERNAL_OCLIB_TRUE
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
OBJEXT
EXEEXT
ac_ct_CC
@@ -653,6 +781,40 @@ LDFLAGS
CFLAGS
CC
BUILD_INTERNAL_DOCS
+BUILD_DOCS_FALSE
+BUILD_DOCS_TRUE
+BUILD_DLL_FALSE
+BUILD_DLL_TRUE
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
target_os
target_vendor
target_cpu
@@ -665,6 +827,11 @@ build_os
build_vendor
build_cpu
build
+CONFIG_DATE
+NC_VERSION_NOTE
+NC_VERSION_PATCH
+NC_VERSION_MINOR
+NC_VERSION_MAJOR
target_alias
host_alias
build_alias
@@ -706,6 +873,8 @@ SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
+enable_silent_rules
+enable_maintainer_mode
enable_dll
with_minblocksize
enable_doxygen
@@ -719,6 +888,7 @@ enable_netcdf4
enable_dynamic_loading
enable_hdf4
enable_hdf4_file_tests
+enable_fortran
enable_pnetcdf
enable_extra_example_tests
enable_parallel_tests
@@ -731,6 +901,7 @@ with_chunk_cache_preemption
enable_logging
enable_cdmremote
enable_dap
+enable_dependency_tracking
enable_dap_remote_tests
enable_dap_auth_tests
enable_dap_groups
@@ -745,6 +916,14 @@ enable_large_file_tests
enable_benchmarks
enable_extreme_numbers
with_temp_large
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_aix_soname
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
enable_largefile
enable_diskless
enable_mmap
@@ -1298,7 +1477,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures netCDF 4.3.3-rc1 to adapt to many kinds of systems.
+\`configure' configures netCDF 4.3.3-rc3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1355,6 +1534,11 @@ _ACEOF
cat <<\_ACEOF
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
@@ -1364,7 +1548,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of netCDF 4.3.3-rc1:";;
+ short | recursive ) echo "Configuration of netCDF 4.3.3-rc3:";;
esac
cat <<\_ACEOF
@@ -1372,6 +1556,11 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
--enable-dll build a win32 DLL (only works on mingw)
--enable-doxygen Enable generation of documentation.
--enable-dot Use dot (provided by graphviz) to generate charts
@@ -1393,6 +1582,8 @@ Optional Features:
--enable-hdf4-file-tests
get some HDF4 files from Unidata ftp site and test
that they can be read
+ --enable-remote-fortran-bootstrap
+ Download and install netcdf-fortran (EXPERIMENTAL)
--enable-pnetcdf build with parallel I/O for classic and 64-bit
offset files using parallel-netcdf
--enable-extra-example-tests
@@ -1407,6 +1598,10 @@ Optional Features:
netCDF-4 is not enabled.
--enable-cdmremote build with cdmremote client support.
--disable-dap build without DAP client support.
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
--disable-dap-remote-tests
disable dap remote tests
--enable-dap-auth-tests enable dap remote authorization tests
@@ -1434,6 +1629,11 @@ Optional Features:
--disable-extreme-numbers
don't use extreme numbers during testing, such as
MAX_INT - 1
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
--disable-largefile omit support for large files
--disable-diskless disable support for in-memory (NC_DISKLESS) files
--enable-mmap allow mmap for in-memory files
@@ -1468,6 +1668,14 @@ Optional Packages:
specify directory where large files (i.e. >2 GB)
will be written, if large files tests are run with
--enable-large-file-tests
+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-aix-soname=aix|svr4|both
+ shared library versioning (aka "SONAME") variant to
+ provide on AIX, [default=aix].
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the
+ compiler's sysroot if not specified).
Some influential environment variables:
CC C compiler command
@@ -1545,7 +1753,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-netCDF configure 4.3.3-rc1
+netCDF configure 4.3.3-rc3
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1643,6 +1851,37 @@ fi
} # ac_fn_c_try_link
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
@@ -1680,97 +1919,6 @@ fi
} # ac_fn_c_try_cpp
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ---------------------------------------------- ##
-## Report this to support-netcdf at unidata.ucar.edu ##
-## ---------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
# ac_fn_c_try_run LINENO
# ----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
@@ -1813,37 +1961,6 @@ fi
} # ac_fn_c_try_run
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -1911,96 +2028,187 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_func
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
-else
- eval "$3=no"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof ($2))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- as_decl_name=`echo $2|sed 's/ *(.*//'`
- as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
- (void) $as_decl_use;
-#else
- (void) $as_decl_name;
-#endif
-#endif
-
- ;
- return 0;
-}
+#include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
+ ac_header_compiler=yes
else
- eval "$3=no"
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------------------- ##
+## Report this to support-netcdf at unidata.ucar.edu ##
+## ---------------------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ as_decl_name=`echo $2|sed 's/ *(.*//'`
+ as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+ (void) $as_decl_use;
+#else
+ (void) $as_decl_name;
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
@@ -2254,7 +2462,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by netCDF $as_me 4.3.3-rc1, which was
+It was created by netCDF $as_me 4.3.3-rc3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2606,17 +2814,30 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ NC_VERSION_MAJOR=4
+ NC_VERSION_MINOR=3
+ NC_VERSION_PATCH=3
+ NC_VERSION_NOTE="-rc3"
+
+#####
+# Set some variables used to generate a libnetcdf.settings file,
+# pattered after the files generated by libhdf4, libhdf5.
+#####
+
# Create the VERSION file, which contains the package version from
# AC_INIT.
-echo -n 4.3.3-rc1>VERSION
+echo 4.3.3-rc3>VERSION
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.3.3-rc1" >&5
-$as_echo "$as_me: netCDF 4.3.3-rc1" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF 4.3.3-rc3" >&5
+$as_echo "$as_me: netCDF 4.3.3-rc3" >&6;}
# Keep libtool macros in an m4 directory.
+# Configuration Date
+ CONFIG_DATE="`date`"
+
# Find out about the host we're building on.
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2764,35 +2985,643 @@ ac_config_headers="$ac_config_headers config.h"
# This call is required by automake.
-AM_INIT_AUTOMAKE(foreign dist-zip subdir-objects)
+am__api_version='1.15'
-# Check for the existence of this file before proceeding.
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+ done
+IFS=$as_save_IFS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking user options" >&5
-$as_echo "$as_me: checking user options" >&6;}
+rm -rf conftest.one conftest.two conftest.dir
-# If --enable-dll is specified the DLL will be built. This only works
-# on mingw.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a win32 DLL is desired" >&5
-$as_echo_n "checking whether a win32 DLL is desired... " >&6; }
-# Check whether --enable-dll was given.
-if test "${enable_dll+set}" = set; then :
- enableval=$enable_dll;
fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
-test "x$enable_dll" = xyes || enable_dll=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dll" >&5
-$as_echo "$enable_dll" >&6; }
-if test "x$enable_dll" = xyes; then
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-$as_echo "#define DLL_NETCDF 1" >>confdefs.h
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-$as_echo "#define DLL_EXPORT 1" >>confdefs.h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
fi
-AM_CONDITIONAL(BUILD_DLL, test x$enable_dll = xyes)
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='netcdf'
+ VERSION='4.3.3-rc3'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# Check for the existence of this file before proceeding.
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking user options" >&5
+$as_echo "$as_me: checking user options" >&6;}
+
+# If --enable-dll is specified the DLL will be built. This only works
+# on mingw.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a win32 DLL is desired" >&5
+$as_echo_n "checking whether a win32 DLL is desired... " >&6; }
+# Check whether --enable-dll was given.
+if test "${enable_dll+set}" = set; then :
+ enableval=$enable_dll;
+fi
+
+test "x$enable_dll" = xyes || enable_dll=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dll" >&5
+$as_echo "$enable_dll" >&6; }
+if test "x$enable_dll" = xyes; then
+
+$as_echo "#define DLL_NETCDF 1" >>confdefs.h
+
+
+$as_echo "#define DLL_EXPORT 1" >>confdefs.h
+
+fi
+ if test x$enable_dll = xyes; then
+ BUILD_DLL_TRUE=
+ BUILD_DLL_FALSE='#'
+else
+ BUILD_DLL_TRUE='#'
+ BUILD_DLL_FALSE=
+fi
+
# Did the user specify a default minimum blocksize (NCIO_MINBLOCKSIZE) for posixio?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a NCIO_MINBLOCKSIZE was specified" >&5
@@ -2819,7 +3648,14 @@ if test "${enable_doxygen+set}" = set; then :
fi
test "x$enable_doxygen" = xyes || enable_doxygen=no
-AM_CONDITIONAL(BUILD_DOCS, test "x$enable_doxygen" = xyes)
+ if test "x$enable_doxygen" = xyes; then
+ BUILD_DOCS_TRUE=
+ BUILD_DOCS_FALSE='#'
+else
+ BUILD_DOCS_TRUE='#'
+ BUILD_DOCS_FALSE=
+fi
+
# Check whether --enable-dot was given.
if test "${enable_dot+set}" = set; then :
@@ -2952,6 +3788,19 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hdf4_file_tests" >&5
$as_echo "$enable_hdf4_file_tests" >&6; }
+# Does the user want to try to install netcdf-fortran
+# automatically?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we should attempt to install netcdf-fortran (EXPERIMENTAL)" >&5
+$as_echo_n "checking whether we should attempt to install netcdf-fortran (EXPERIMENTAL)... " >&6; }
+# Check whether --enable-fortran was given.
+if test "${enable_fortran+set}" = set; then :
+ enableval=$enable_fortran;
+fi
+
+test "x$enable_remote_fortran_bootstrap" = xyes || enable_remote_fortran_bootstrap=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_remote_fortran_bootstrap" >&5
+$as_echo "$enable_remote_fortran_bootstrap" >&6; }
+
# Does the user want to turn on PNETCDF read ability?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether parallel I/O for classic and 64-bit offset files using parallel-netcdf is to be enabled" >&5
$as_echo_n "checking whether parallel I/O for classic and 64-bit offset files using parallel-netcdf is to be enabled... " >&6; }
@@ -3162,6 +4011,69 @@ fi
# See if the user provided us with a curl library
# Do an initial lib test for curl, but suppress the default action
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3951,6 +4863,193 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl_easy_setopt in -lcurl" >&5
$as_echo_n "checking for curl_easy_setopt in -lcurl... " >&6; }
@@ -4168,7 +5267,14 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_dap_long_tests" >&5
$as_echo "$enable_dap_long_tests" >&6; }
-AM_CONDITIONAL(INTERNAL_OCLIB,test "x" = "x")
+ if test "x" = "x"; then
+ INTERNAL_OCLIB_TRUE=
+ INTERNAL_OCLIB_FALSE='#'
+else
+ INTERNAL_OCLIB_TRUE='#'
+ INTERNAL_OCLIB_FALSE=
+fi
+
# Does the user want to do some extra tests?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
@@ -4186,7 +5292,14 @@ if test "x$enable_extra_tests" = xyes; then
$as_echo "#define EXTRA_TESTS 1" >>confdefs.h
fi
-AM_CONDITIONAL(EXTRA_TESTS, test x$enable_extra_tests = xyes)
+ if test x$enable_extra_tests = xyes; then
+ EXTRA_TESTS_TRUE=
+ EXTRA_TESTS_FALSE='#'
+else
+ EXTRA_TESTS_TRUE='#'
+ EXTRA_TESTS_FALSE=
+fi
+
# Does the user want to use the ffio module?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether FFIO will be used" >&5
@@ -4204,7 +5317,14 @@ if test "x$enable_ffio" = xyes; then
$as_echo "#define USE_FFIO 1" >>confdefs.h
fi
-AM_CONDITIONAL(USE_FFIO, test x$enable_ffio = xyes)
+ if test x$enable_ffio = xyes; then
+ USE_FFIO_TRUE=
+ USE_FFIO_FALSE='#'
+else
+ USE_FFIO_TRUE='#'
+ USE_FFIO_FALSE=
+fi
+
# Does the user want to enable the user-provided NEC-SX vectorization
# patch.
@@ -4226,7 +5346,14 @@ fi
test "x$enable_examples" = xno && nc_build_examples=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_examples" >&5
$as_echo "$nc_build_examples" >&6; }
-AM_CONDITIONAL(BUILD_EXAMPLES, test x$nc_build_examples = xyes)
+ if test x$nc_build_examples = xyes; then
+ BUILD_EXAMPLES_TRUE=
+ BUILD_EXAMPLES_FALSE='#'
+else
+ BUILD_EXAMPLES_TRUE='#'
+ BUILD_EXAMPLES_FALSE=
+fi
+
# Does the user want to disable the V2 API?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether v2 netCDF API should be built" >&5
@@ -4239,13 +5366,26 @@ fi
test "x$enable_v2" = xno && nc_build_v2=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_v2" >&5
$as_echo "$nc_build_v2" >&6; }
-AM_CONDITIONAL(BUILD_V2, test x$nc_build_v2 = xyes)
+ if test x$nc_build_v2 = xyes; then
+ BUILD_V2_TRUE=
+ BUILD_V2_FALSE='#'
+else
+ BUILD_V2_TRUE='#'
+ BUILD_V2_FALSE=
+fi
+
if test "x$nc_build_v2" = xno; then
cat >>confdefs.h <<_ACEOF
#define NO_NETCDF_2 1
_ACEOF
+else
+
+cat >>confdefs.h <<_ACEOF
+#define USE_NETCDF_2 1
+_ACEOF
+
fi
# Does the user want to disable ncgen/ncdump/nccopy?
@@ -4260,7 +5400,14 @@ test "x$nc_build_c" = xno && enable_utilities=no
test "x$enable_utilities" = xno && nc_build_utilities=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_utilities" >&5
$as_echo "$nc_build_utilities" >&6; }
-AM_CONDITIONAL(BUILD_UTILITIES, test x$nc_build_utilities = xyes)
+ if test x$nc_build_utilities = xyes; then
+ BUILD_UTILITIES_TRUE=
+ BUILD_UTILITIES_FALSE='#'
+else
+ BUILD_UTILITIES_TRUE='#'
+ BUILD_UTILITIES_FALSE=
+fi
+
# Does the user want to disable all tests?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether test should be built and run" >&5
@@ -4274,7 +5421,14 @@ test "x$enable_testsets" = xno || enable_testsets=yes
nc_build_tests=$enable_testsets
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $nc_build_tests" >&5
$as_echo "$nc_build_tests" >&6; }
-AM_CONDITIONAL(BUILD_TESTSETS, test x$nc_build_tests = xyes)
+ if test x$nc_build_tests = xyes; then
+ BUILD_TESTSETS_TRUE=
+ BUILD_TESTSETS_FALSE='#'
+else
+ BUILD_TESTSETS_TRUE='#'
+ BUILD_TESTSETS_FALSE=
+fi
+
# Does the user want to run tests for large files (> 2GiB)?
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
@@ -4287,7 +5441,14 @@ fi
test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_large_file_tests" >&5
$as_echo "$enable_large_file_tests" >&6; }
-AM_CONDITIONAL(LARGE_FILE_TESTS, test x$enable_large_file_tests = xyes)
+ if test x$enable_large_file_tests = xyes; then
+ LARGE_FILE_TESTS_TRUE=
+ LARGE_FILE_TESTS_FALSE='#'
+else
+ LARGE_FILE_TESTS_TRUE='#'
+ LARGE_FILE_TESTS_FALSE=
+fi
+
if test "x$enable_large_file_tests" = xyes; then
$as_echo "#define LARGE_FILE_TESTS 1" >>confdefs.h
@@ -4305,7 +5466,14 @@ fi
test "x$enable_benchmarks" = xyes || enable_benchmarks=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_benchmarks" >&5
$as_echo "$enable_benchmarks" >&6; }
-AM_CONDITIONAL(BUILD_BENCHMARKS, test x$enable_benchmarks = xyes)
+ if test x$enable_benchmarks = xyes; then
+ BUILD_BENCHMARKS_TRUE=
+ BUILD_BENCHMARKS_FALSE='#'
+else
+ BUILD_BENCHMARKS_TRUE='#'
+ BUILD_BENCHMARKS_FALSE=
+fi
+
# Does the user want to use extreme numbers in testing.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether extreme numbers should be used in tests" >&5
@@ -4362,6 +5530,29 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: finding C compiler" >&5
$as_echo "$as_me: finding C compiler" >&6;}
+## Compiler with version information. This consists of the full path
+## name of the compiler and the reported version number.
+
+## Strip anything that looks like a flag off of $CC
+CC_NOFLAGS=`echo $CC | sed 's/ -.*//'`
+
+if `echo $CC_NOFLAGS | grep ^/ >/dev/null 2>&1`; then
+ CC_VERSION="$CC"
+else
+ CC_VERSION="$CC";
+ for x in `echo $PATH | sed -e 's/:/ /g'`; do
+ if test -x $x/$CC_NOFLAGS; then
+ CC_VERSION="$x/$CC"
+ break
+ fi
+ done
+fi
+if test -n "$cc_version_info"; then
+ CC_VERSION="$CC_VERSION ( $cc_version_info)"
+fi
+
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4901,7 +6092,194 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-AM_PROG_CC_C_O
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
if ${ac_cv_c_const+:} false; then :
@@ -4988,6 +6366,7 @@ fi
# CURLOPT_PASSWORD is not defined until curl version 7.19.1
# CURLOPT_KEYPASSWD is not defined until curl version 7.16.4
# CURLINFO_RESPONSE_CODE is not defined until curl version 7.10.7
+# CURLOPT_CHUNK_BGN_FUNCTION is not defined until curl version 7.21.0
# Save/restore CFLAGS
SAVECFLAGS="$CFLAGS"
@@ -5101,730 +6480,8468 @@ $as_echo "#define HAVE_CURLINFO_RESPONSE_CODE 1" >>confdefs.h
fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include "curl/curl.h"
+int
+main ()
+{
+int x = CURLOPT_CHUNK_BGN_FUNCTION;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ havebgnfunction=yes
+else
+ havebgnfunction=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CURLOPT_CHUNK_BGN_FUNCTION is defined" >&5
+$as_echo_n "checking whether CURLOPT_CHUNK_BGN_FUNCTION is defined... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${havebgnfunction}" >&5
+$as_echo "${havebgnfunction}" >&6; }
+if test $havebgnfunction = yes; then
+
+$as_echo "#define HAVE_CURLOPT_CHUNK_BGN_FUNCTION 1" >>confdefs.h
+
+fi
+
CFLAGS="$SAVECFLAGS"
# Set up libtool.
{ $as_echo "$as_me:${as_lineno-$LINENO}: setting up libtool" >&5
$as_echo "$as_me: setting up libtool" >&6;}
-LT_PREREQ(2.2)
-LT_INIT(win32-dll)
-# Valgrind tests don't work with shared builds because of some libtool
-# weirdness.
-if test "x$enable_shared" = xyes; then
- if test $enable_valgrind_tests = yes; then
- as_fn_error $? "No valgrind tests with shared libraries" "$LINENO" 5
- fi
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.4'
+macro_revision='2.4.4'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: finding other utilities" >&5
-$as_echo "$as_me: finding other utilities" >&6;}
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO ""
+}
-# Is doxygen installed? If so, have configure construct the Doxyfile.
-for ac_prog in doxygen
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DOXYGEN+:} false; then :
+case $ECHO in
+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$DOXYGEN"; then
- ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DOXYGEN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
-fi
-fi
-DOXYGEN=$ac_cv_prog_DOXYGEN
-if test -n "$DOXYGEN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
-$as_echo "$DOXYGEN" >&6; }
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ ac_cv_path_SED=$SED
fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
- test -n "$DOXYGEN" && break
-done
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
-if test -z "$DOXYGEN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - documentation will not be built" >&5
-$as_echo "$as_me: WARNING: Doxygen not found - documentation will not be built" >&2;}
-fi
-# Is graphviz/dot installed? If so, we'll use dot to create
-# graphs in the documentation.
-for ac_prog in dot
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DOT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DOT"; then
- ac_cv_prog_DOT="$DOT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DOT="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-fi
-fi
-DOT=$ac_cv_prog_DOT
-if test -n "$DOT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
-$as_echo "$DOT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
- test -n "$DOT" && break
-done
-if test -z "$DOT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will use simple charts in documentation" >&5
-$as_echo "$as_me: WARNING: dot not found - will use simple charts in documentation" >&2;}
- HAVE_DOT=NO
-elif test "x$enable_dot" = xno; then
- HAVE_DOT=NO
-else
- HAVE_DOT=YES
-fi
-# If we have doxygen, and it's enabled, then process the file.
-if test "x$enable_doxygen" != xno; then
- if test -n "$DOXYGEN"; then
- ac_config_files="$ac_config_files man4/Doxyfile"
- fi
-# Note: the list of files to input to doxygen
-# has been moved to man4/Doxyfile.in so
-# that make distcheck works correctly.
-# Any new inputs should be inserted into
-# man4/Doxyfile.in and possibley man4/Makefile.am
-fi
-# Find the install program.
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
$as_echo_n "(cached) " >&6
else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
+ $ac_path_GREP_found && break 3
+ done
+ done
done
IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
+else
+ ac_cv_path_GREP=$GREP
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-# Check to see if any macros must be set to enable large (>2GB) files.
-# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
- enableval=$enable_largefile;
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
-if test "$enable_largefile" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
$as_echo_n "(cached) " >&6
else
- ac_cv_sys_largefile_CC=no
- if test "$GCC" != yes; then
- ac_save_CC=$CC
- while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test yes = "$GCC"; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return, which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD=$ac_prog
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test yes = "$with_gnu_ld"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS=$lt_save_ifs
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD=$ac_dir/$ac_prog
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test no != "$with_gnu_ld" && break
+ ;;
+ *)
+ test yes != "$with_gnu_ld" && break
+ ;;
+ esac
+ fi
+ done
+ IFS=$lt_save_ifs
+else
+ lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi
+fi
+
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM=$NM
+else
+ lt_nm_to_check=${ac_tool_prefix}nm
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS=$lt_save_ifs
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm=$ac_dir/$lt_tmp_nm
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+ case $build_os in
+ mingw*) lt_bad_file=conftest.nm/nofile ;;
+ *) lt_bad_file=/dev/null ;;
+ esac
+ case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+ *$lt_bad_file* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break 2
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break 2
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS=$lt_save_ifs
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test no != "$lt_cv_path_NM"; then
+ NM=$lt_cv_path_NM
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols -headers"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test : != "$DUMPBIN"; then
+ NM=$DUMPBIN
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring=ABCD
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len" && \
+ test undefined != "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test 17 != "$i" # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n "$lt_cv_sys_max_cmd_len"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test yes != "$GCC"; then
+ reload_cmds=false
+ fi
+ ;;
+ darwin*)
+ if test yes = "$GCC"; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# 'unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd* | bitrig*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+os2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh;
+ # decide which one to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd=$ECHO
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test 0 -eq "$ac_status"; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test 0 -ne "$ac_status"; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test no = "$lt_cv_ar_at_file"; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ bitrig* | openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test ia64 = "$host_cpu"; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Gets list of data symbols to import.
+ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ # Adjust the below global symbol transforms to fixup imported variables.
+ lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+ lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
+ lt_c_name_lib_hook="\
+ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\
+ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'"
+else
+ # Disable hooks by default.
+ lt_cv_sys_global_symbol_to_import=
+ lt_cdecl_hook=
+ lt_c_name_hook=
+ lt_c_name_lib_hook=
+fi
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function,
+ # D for any global variable and I for any imported variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS=conftstm.$ac_objext
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest$ac_exeext; then
+ pipe_works=yes
+ fi
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test yes = "$pipe_works"; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+ withval=$with_sysroot;
+else
+ with_sysroot=no
+fi
+
+
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+ if test yes = "$GCC"; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+$as_echo_n "checking for a working dd... " >&6; }
+if ${ac_cv_path_lt_DD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+if test -z "$lt_DD"; then
+ ac_path_lt_DD_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in dd; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_lt_DD" || continue
+if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+ cmp -s conftest.i conftest.out \
+ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi
+ $ac_path_lt_DD_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_lt_DD"; then
+ :
+ fi
+else
+ ac_cv_path_lt_DD=$lt_DD
+fi
+
+rm -f conftest.i conftest2.i conftest.out
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+$as_echo "$ac_cv_path_lt_DD" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+$as_echo_n "checking how to truncate binary pipes... " >&6; }
+if ${lt_cv_truncate_bin+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+ cmp -s conftest.i conftest.out \
+ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+$as_echo "$lt_cv_truncate_bin" >&6; }
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+fi
+
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out what ABI is being produced by ac_compile, and set mode
+ # options accordingly.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE=32
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE=64
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+mips64*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ emul=elf
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ emul="${emul}32"
+ ;;
+ *64-bit*)
+ emul="${emul}64"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *MSB*)
+ emul="${emul}btsmip"
+ ;;
+ *LSB*)
+ emul="${emul}ltsmip"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *N32*)
+ emul="${emul}n32"
+ ;;
+ esac
+ LD="${LD-ld} -m $emul"
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly. Note that the listed cases only cover the
+ # situations where additional linker options are needed (such as when
+ # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+ # vice versa); the common cases where no linker options are needed do
+ # not appear in the list.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ case `/usr/bin/file conftest.o` in
+ *x86-64*)
+ LD="${LD-ld} -m elf32_x86_64"
+ ;;
+ *)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ esac
+ ;;
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test yes != "$lt_cv_cc_needs_belf"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS=$SAVE_CFLAGS
+ fi
+ ;;
+*-*solaris*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*)
+ case $host in
+ i?86-*-solaris*|x86_64-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD=${LD-ld}_sol2
+ fi
+ ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks=$enable_libtool_lock
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+ # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
+ MANIFEST_TOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+ fi
+else
+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&5
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test yes != "$lt_cv_path_mainfest_tool"; then
+ MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "$LT_MULTI_MODULE"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&5
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
+ echo "$RANLIB libconftest.a" >&5
+ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&5
+ elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+ 10.[012][,.]*)
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test yes = "$lt_cv_apple_cc_single_mod"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test yes = "$lt_cv_ld_exported_symbols_list"; then
+ _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+ fi
+ if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AS="${ac_tool_prefix}as"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AS="as"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AS" = x; then
+ AS="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AS=$ac_ct_AS
+ fi
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+ ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+ enable_dlopen=no
+
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for pkg in $enableval; do
+ IFS=$lt_save_ifs
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for pkg in $enableval; do
+ IFS=$lt_save_ifs
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+ withval=$with_pic; lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for lt_pkg in $withval; do
+ IFS=$lt_save_ifs
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac
+else
+ pic_mode=default
+fi
+
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for pkg in $enableval; do
+ IFS=$lt_save_ifs
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+ shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[5-9]*,yes)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+
+# Check whether --with-aix-soname was given.
+if test "${with_aix_soname+set}" = set; then :
+ withval=$with_aix_soname; case $withval in
+ aix|svr4|both)
+ ;;
+ *)
+ as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
+ ;;
+ esac
+ lt_cv_with_aix_soname=$with_aix_soname
+else
+ if ${lt_cv_with_aix_soname+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_with_aix_soname=aix
+fi
+
+ with_aix_soname=$lt_cv_with_aix_soname
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+$as_echo "$with_aix_soname" >&6; }
+ if test aix != "$with_aix_soname"; then
+ # For the AIX way of multilib, we name the shared archive member
+ # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+ # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+ # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+ # the AIX toolchain works better with OBJECT_MODE set (default 32).
+ if test 64 = "${OBJECT_MODE-32}"; then
+ shared_archive_member_spec=shr_64
+ else
+ shared_archive_member_spec=shr
+ fi
+ fi
+ ;;
+*)
+ with_aix_soname=aix
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS=$ltmain
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}"; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test set != "${COLLECT_NAMES+set}"; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+old_CC=$CC
+old_CFLAGS=$CFLAGS
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS=$lt_save_ifs
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/${ac_tool_prefix}file"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
+ ;;
+esac
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS=$lt_save_ifs
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/file"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
+ ;;
+esac
+fi
+
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC=$CC
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test yes = "$GCC"; then
+ case $cc_basename in
+ nvcc*)
+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+ *)
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+ if test yes = "$GCC"; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ case $host_os in
+ os2*)
+ lt_prog_compiler_static='$wl-static'
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ lt_prog_compiler_wl='-Xlinker '
+ if test -n "$lt_prog_compiler_pic"; then
+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+ fi
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ case $cc_basename in
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ esac
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ case $host_os in
+ os2*)
+ lt_prog_compiler_static='$wl-static'
+ ;;
+ esac
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='$wl-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ case $cc_basename in
+ # old Intel for x86_64, which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ *Sun\ F* | *Sun*Fortran*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Qoption ld '
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Intel*\ [CF]*Compiler*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ *Portland\ Group*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms that do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test yes = "$lt_cv_prog_compiler_static_works"; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test no = "$hard_links"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ' (' and ')$', so one must not match beginning or
+ # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+ # as well as any symbol that contains 'd'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test yes != "$GCC"; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd* | bitrig*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test yes = "$with_gnu_ld"; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+ *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test yes = "$lt_use_gnu_ld_interface"; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='$wl'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ export_dynamic_flag_spec='$wl--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test ia64 != "$host_cpu"; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ export_dynamic_flag_spec='$wl--export-all-symbols'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ haiku*)
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ link_all_deplibs=yes
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ shrext_cmds=.dll
+ archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ prefix_cmds="$SED"~
+ if test EXPORTS = "`$SED 1q $export_symbols`"; then
+ prefix_cmds="$prefix_cmds -e 1d";
+ fi~
+ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ export_dynamic_flag_spec='$wl-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test linux-dietlibc = "$host_os"; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test no = "$tmp_diet"
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ compiler_needs_object=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+
+ if test yes = "$supports_anon_versioning"; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ tcc*)
+ export_dynamic_flag_spec='-rdynamic'
+ ;;
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test yes = "$supports_anon_versioning"; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test no = "$ld_shlibs"; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test ia64 = "$host_cpu"; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+ # Without the "-l" option, or with the "-B" option, AIX nm treats
+ # weak defined symbols like other global defined symbols, whereas
+ # GNU nm marks them as "W".
+ # While the 'weak' keyword is ignored in the Export File, we need
+ # it in the Import File for the 'aix-soname' feature, so we have
+ # to replace the "-B" option with "-P" for AIX nm.
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # have runtime linking enabled, and use it for executables.
+ # For shared libraries, we enable/disable runtime linking
+ # depending on the kind of the shared library created -
+ # when "with_aix_soname,aix_use_runtimelinking" is:
+ # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables
+ # "aix,yes" lib.so shared, rtl:yes, for executables
+ # lib.a static archive
+ # "both,no" lib.so.V(shr.o) shared, rtl:yes
+ # lib.a(lib.so.V) shared, rtl:no, for executables
+ # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+ # lib.a(lib.so.V) shared, rtl:no
+ # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables
+ # lib.a static archive
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+ # With aix-soname=svr4, we create the lib.so.V shared archives only,
+ # so we don't have lib.a shared libs to link our executables.
+ # We have to force runtime linking in this case.
+ aix_use_runtimelinking=yes
+ LDFLAGS="$LDFLAGS -Wl,-brtl"
+ fi
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='$wl-f,'
+ case $with_aix_soname,$aix_use_runtimelinking in
+ aix,*) ;; # traditional, no import file
+ svr4,* | *,yes) # use import file
+ # The Import File defines what to hardcode.
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ ;;
+ esac
+
+ if test yes = "$GCC"; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`$CC -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag="$shared_flag "'$wl-G'
+ fi
+ # Need to ensure runtime linking is disabled for the traditional
+ # shared library, or the linker may eventually find shared libraries
+ # /with/ Import File - we do not want to mix them.
+ shared_flag_aix='-shared'
+ shared_flag_svr4='-shared $wl-G'
+ else
+ # not using gcc
+ if test ia64 = "$host_cpu"; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
+ else
+ shared_flag='$wl-bM:SRE'
+ fi
+ shared_flag_aix='$wl-bM:SRE'
+ shared_flag_svr4='$wl-G'
+ fi
+ fi
+
+ export_dynamic_flag_spec='$wl-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test set = "${lt_cv_aix_libpath+set}"; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=/usr/lib:/lib
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
+
+ hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+ else
+ if test ia64 = "$host_cpu"; then
+ hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test set = "${lt_cv_aix_libpath+set}"; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=/usr/lib:/lib
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
+
+ hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' $wl-bernotok'
+ allow_undefined_flag=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ fi
+ archive_cmds_need_lc=yes
+ archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+ # -brtl affects multiple linker settings, -berok does not and is overridden later
+ compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+ if test svr4 != "$with_aix_soname"; then
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+ fi
+ if test aix != "$with_aix_soname"; then
+ archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > [...]
+ else
+ # used by -dlpreopen to get the symbols
+ archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir'
+ fi
+ archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ file_list_spec='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=.dll
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+ enable_shared_with_static_runtimes=yes
+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+ # Don't use ranlib
+ old_postinstall_cmds='chmod 644 $oldlib'
+ postlink_cmds='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=.dll
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ enable_shared_with_static_runtimes=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ if test yes = "$lt_cv_ld_force_load"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+ else
+ whole_archive_flag_spec=''
+ fi
+ link_all_deplibs=yes
+ allow_undefined_flag=$_lt_dar_allow_undefined
+ case $cc_basename in
+ ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test yes = "$_lt_dar_can_shared"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+ archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test yes = "$GCC"; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='$wl-E'
+ ;;
+
+ hpux10*)
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test no = "$with_gnu_ld"; then
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='$wl-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler__b=no
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -b"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler__b=yes
+ fi
+ else
+ lt_cv_prog_compiler__b=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS=$save_LDFLAGS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test yes = "$lt_cv_prog_compiler__b"; then
+ archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+ ;;
+ esac
+ fi
+ if test no = "$with_gnu_ld"; then
+ hardcode_libdir_flag_spec='$wl+b $wl$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='$wl-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_irix_exported_symbol=yes
+else
+ lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+ if test yes = "$lt_cv_irix_exported_symbol"; then
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ linux*)
+ case $cc_basename in
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ ld_shlibs=yes
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd* | bitrig*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ export_dynamic_flag_spec='$wl-E'
+ else
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ shrext_cmds=.dll
+ archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ prefix_cmds="$SED"~
+ if test EXPORTS = "`$SED 1q $export_symbols`"; then
+ prefix_cmds="$prefix_cmds -e 1d";
+ fi~
+ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ osf3*)
+ if test yes = "$GCC"; then
+ allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test yes = "$GCC"; then
+ allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+ archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test yes = "$GCC"; then
+ wlarc='$wl'
+ archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='$wl'
+ archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands '-z linker_flag'. GCC discards it without '$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test yes = "$GCC"; then
+ whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test sequent = "$host_vendor"; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='$wl-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We CANNOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='$wl-z,text'
+ allow_undefined_flag='$wl-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='$wl-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='$wl-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test yes = "$GCC"; then
+ archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test sni = "$host_vendor"; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='$wl-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test no = "$ld_shlibs" && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test yes,yes = "$GCC,$enable_shared"; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc=no
+ else
+ lt_cv_archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test yes = "$GCC"; then
+ case $host_os in
+ darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+ *) lt_awk_arg='/^libraries:/' ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+ *) lt_sed_strip_eq='s|=/|/|g' ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary...
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ # ...but if some path component already ends with the multilib dir we assume
+ # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+ case "$lt_multi_os_dir; $lt_search_path_spec " in
+ "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+ lt_multi_os_dir=
+ ;;
+ esac
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+ elif test -n "$lt_multi_os_dir"; then
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+ lt_foo = "";
+ lt_count = 0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo = "/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='$libname$release$shared_ext$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 supports IA64
+ library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line '#! .'. This would cause the generated library to
+ # depend on '.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # Using Import Files as archive members, it is possible to support
+ # filename-based versioning of shared library archives on AIX. While
+ # this would work for both with and without runtime linking, it will
+ # prevent static linking of such archives. So we do filename-based
+ # shared library versioning with .so extension only, which is used
+ # when both runtime linking and shared linking is enabled.
+ # Unfortunately, runtime linking may impact performance, so we do
+ # not want this to be the default eventually. Also, we use the
+ # versioned .so libs for executables only if there is the -brtl
+ # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+ # To allow for filename-based versioning support, we need to create
+ # libNAME.so.V as an archive file, containing:
+ # *) an Import File, referring to the versioned filename of the
+ # archive as well as the shared archive member, telling the
+ # bitwidth (32 or 64) of that shared object, and providing the
+ # list of exported symbols of that shared object, eventually
+ # decorated with the 'weak' keyword
+ # *) the shared object with the F_LOADONLY flag set, to really avoid
+ # it being seen by the linker.
+ # At run time we better use the real file rather than another symlink,
+ # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+ case $with_aix_soname,$aix_use_runtimelinking in
+ # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ aix,yes) # traditional libtool
+ dynamic_linker='AIX unversionable lib.so'
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ ;;
+ aix,no) # traditional AIX only
+ dynamic_linker='AIX lib.a(lib.so.V)'
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
+ ;;
+ svr4,*) # full svr4 only
+ dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+ library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+ # We do not specify a path in Import Files, so LIBPATH fires.
+ shlibpath_overrides_runpath=yes
+ ;;
+ *,yes) # both, prefer svr4
+ dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+ library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+ # unpreferred sharedlib libNAME.a needs extra handling
+ postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+ postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+ # We do not specify a path in Import Files, so LIBPATH fires.
+ shlibpath_overrides_runpath=yes
+ ;;
+ *,no) # both, prefer aix
+ dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
+ # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+ postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+ postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+ ;;
+ esac
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='$libname$shared_ext'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=.dll
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+ library_names_spec='$libname.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec=$LIB
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$major$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[23].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ if test 32 = "$HPUX_IA64_MODE"; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test yes = "$lt_cv_prog_gnu_ld"; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+ sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+linux*android*)
+ version_type=none # Android doesn't support versioned libraries.
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext'
+ soname_spec='$libname$release$shared_ext'
+ finish_cmds=
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ dynamic_linker='Android linker'
+ # Don't embed -rpath directories since the linker doesn't support them.
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd* | bitrig*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec=/usr/lib
+ need_lib_prefix=no
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ need_version=no
+ else
+ need_version=yes
+ fi
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+os2*)
+ libname_spec='$name'
+ version_type=windows
+ shrext_cmds=.dll
+ need_version=no
+ need_lib_prefix=no
+ # OS/2 can only load a DLL with a base name of 8 characters or less.
+ soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+ v=$($ECHO $release$versuffix | tr -d .-);
+ n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+ $ECHO $n$v`$shared_ext'
+ library_names_spec='${libname}_dll.$libext'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=BEGINLIBPATH
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test yes = "$with_gnu_ld"; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+ soname_spec='$libname$shared_ext.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=sco
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test yes = "$with_gnu_ld"; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+ sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+ sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test yes = "$hardcode_automatic"; then
+
+ # We can hardcode non-existent directories.
+ if test no != "$hardcode_direct" &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
+ test no != "$hardcode_minus_L"; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test relink = "$hardcode_action" ||
+ test yes = "$inherit_rpath"; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+ test no = "$enable_shared"; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test yes != "$enable_dlopen"; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen=load_add_on
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen=LoadLibrary
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
;
return 0;
}
_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
- break
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext
- CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_largefile_CC=' -n32'; break
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
fi
-rm -f core conftest.err conftest.$ac_objext
- break
- done
- CC=$ac_save_CC
- rm -f conftest.$ac_ext
- fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+
+ lt_cv_dlopen=dyld
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
- if test "$ac_cv_sys_largefile_CC" != no; then
- CC=$CC$ac_cv_sys_largefile_CC
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
+ ;;
+
+ tpf*)
+ # Don't try to run any link tests for TPF. We know it's impossible
+ # because TPF is a cross-compiler, and we know how we open DSOs.
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=no
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+ lt_cv_dlopen=shl_load
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
$as_echo_n "(cached) " >&6
else
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+ lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+ lt_cv_dlopen=dlopen
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
int
main ()
{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_file_offset_bits=no; break
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+ lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
int
main ()
{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+ lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test no = "$lt_cv_dlopen"; then
+ enable_dlopen=no
+ else
+ enable_dlopen=yes
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS=$CPPFLAGS
+ test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS=$LDFLAGS
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS=$LIBS
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test yes = "$cross_compiling"; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
- ;
- return 0;
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_file_offset_bits=64; break
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_file_offset_bits=unknown
- break
-done
+rm -fr conftest*
+
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
- no | unknown) ;;
- *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
- if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test yes = "$lt_cv_dlopen_self"; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
$as_echo_n "(cached) " >&6
else
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
+ if test yes = "$cross_compiling"; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
- ;
- return 0;
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_large_files=no; break
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
+rm -fr conftest*
+
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_sys_large_files=1; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_large_files=unknown
- break
-done
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
- no | unknown) ;;
- *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
- fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP"; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: displaying some results" >&5
-$as_echo "$as_me: displaying some results" >&6;}
-## This next macro just prints some results for debugging
-## support issues.
-UD_DISPLAY_RESULTS
-# For nightly build testing, output CC, FC, etc.
-echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> comps.txt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types, headers, and functions" >&5
-$as_echo "$as_me: checking types, headers, and functions" >&6;}
+
+
+
+
+
+
+ # Report what library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test no = "$can_build_shared" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test yes = "$enable_shared" && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test ia64 != "$host_cpu"; then
+ case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+ yes,aix,yes) ;; # shared object as lib.so file only
+ yes,svr4,*) ;; # shared object as lib.so archive member only
+ yes,*) enable_static=no ;; # shared object in lib.a archive as well
+ esac
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test yes = "$enable_shared" || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+CC=$lt_save_CC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
+# Only expand once:
- done
- ac_cv_prog_CPP=$CPP
+
+# Valgrind tests don't work with shared builds because of some libtool
+# weirdness.
+if test "x$enable_shared" = xyes; then
+ if test $enable_valgrind_tests = yes; then
+ as_fn_error $? "No valgrind tests with shared libraries" "$LINENO" 5
+ fi
fi
- CPP=$ac_cv_prog_CPP
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: finding other utilities" >&5
+$as_echo "$as_me: finding other utilities" >&6;}
+
+# Is m4 installed? If not, bail.
+for ac_prog in m4
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NC_M4+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
+ if test -n "$NC_M4"; then
+ ac_cv_prog_NC_M4="$NC_M4" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NC_M4="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
-else
- # Broken: fails on valid input.
-continue
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
+fi
+NC_M4=$ac_cv_prog_NC_M4
+if test -n "$NC_M4"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NC_M4" >&5
+$as_echo "$NC_M4" >&6; }
else
- # Passes both tests.
-ac_preproc_ok=:
-break
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+
+ test -n "$NC_M4" && break
done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+if test -z "$NC_M4"; then
+ as_fn_error $? "Cannot find m4 utility. Install m4 and try again." "$LINENO" 5
fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
+# Is doxygen installed? If so, have configure construct the Doxyfile.
+for ac_prog in doxygen
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOXYGEN+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ if test -n "$DOXYGEN"; then
+ ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DOXYGEN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
done
IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
+
+fi
+fi
+DOXYGEN=$ac_cv_prog_DOXYGEN
+if test -n "$DOXYGEN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+$as_echo "$DOXYGEN" >&6; }
else
- ac_cv_path_GREP=$GREP
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
+ test -n "$DOXYGEN" && break
+done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
+if test -z "$DOXYGEN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - documentation will not be built" >&5
+$as_echo "$as_me: WARNING: Doxygen not found - documentation will not be built" >&2;}
+fi
+
+# Is graphviz/dot installed? If so, we'll use dot to create
+# graphs in the documentation.
+for ac_prog in dot
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOT+:} false; then :
$as_echo_n "(cached) " >&6
else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ if test -n "$DOT"; then
+ ac_cv_prog_DOT="$DOT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DOT="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
+IFS=$as_save_IFS
+
+fi
+fi
+DOT=$ac_cv_prog_DOT
+if test -n "$DOT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
+ test -n "$DOT" && break
+done
+
+if test -z "$DOT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will use simple charts in documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will use simple charts in documentation" >&2;}
+ HAVE_DOT=NO
+elif test "x$enable_dot" = xno; then
+ HAVE_DOT=NO
else
- ac_cv_path_EGREP=$EGREP
+ HAVE_DOT=YES
fi
+# If we have doxygen, and it's enabled, then process the file.
+if test "x$enable_doxygen" != xno; then
+ if test -n "$DOXYGEN"; then
+
+ ac_config_files="$ac_config_files docs/Doxyfile"
fi
+# Note: the list of files to input to doxygen
+# has been moved to docs/Doxyfile.in so
+# that make distcheck works correctly.
+# Any new inputs should be inserted into
+# docs/Doxyfile.in and possibley docs/Makefile.am
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
+# Find the install program.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
+
+# Check to see if any macros must be set to enable large (>2GB) files.
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
int
main ()
{
@@ -5833,115 +14950,291 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <string.h>
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+ ;
+ return 0;
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+ ;
+ return 0;
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+ $as_echo_n "(cached) " >&6
else
+ while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
int
main ()
{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
+
+ ;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
fi
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: displaying some results" >&5
+$as_echo "$as_me: displaying some results" >&6;}
+
+## This next macro just prints some results for debugging
+## support issues.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CPPFLAGS" >&5
+$as_echo_n "checking CPPFLAGS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPFLAGS" >&5
+$as_echo "$CPPFLAGS" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CC CFLAGS" >&5
+$as_echo_n "checking CC CFLAGS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC $CFLAGS" >&5
+$as_echo "$CC $CFLAGS" >&6; }
+ud_type_cc=`type $CC`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type $CC" >&5
+$as_echo_n "checking type $CC... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ud_type_cc" >&5
+$as_echo "$ud_type_cc" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CXX" >&5
+$as_echo_n "checking CXX... " >&6; }
+if test -n "$CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking CXXFLAGS" >&5
+$as_echo_n "checking CXXFLAGS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXFLAGS" >&5
+$as_echo "$CXXFLAGS" >&6; }
+ ud_type_CXX=`type $CXX`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking type $CXX" >&5
+$as_echo_n "checking type $CXX... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ud_type_CXX" >&5
+$as_echo "$ud_type_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unset" >&5
+$as_echo "unset" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking FC" >&5
+$as_echo_n "checking FC... " >&6; }
+if test -n "$FC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
+$as_echo "$FC" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking FFLAGS" >&5
+$as_echo_n "checking FFLAGS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FFLAGS" >&5
+$as_echo "$FFLAGS" >&6; }
+ ud_type_fc=`type $FC`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking type $FC" >&5
+$as_echo_n "checking type $FC... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ud_type_fc" >&5
+$as_echo "$ud_type_fc" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unset" >&5
+$as_echo "unset" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking F90" >&5
+$as_echo_n "checking F90... " >&6; }
+if test -n "$F90"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F90" >&5
+$as_echo "$F90" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking FCFLAGS" >&5
+$as_echo_n "checking FCFLAGS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FCFLAGS" >&5
+$as_echo "$FCFLAGS" >&6; }
+ ud_type_F90=`type $F90`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking type $F90" >&5
+$as_echo_n "checking type $F90... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ud_type_F90" >&5
+$as_echo "$ud_type_F90" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unset" >&5
+$as_echo "unset" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking AR" >&5
+$as_echo_n "checking AR... " >&6; }
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking AR_FLAGS" >&5
+$as_echo_n "checking AR_FLAGS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR_FLAGS" >&5
+$as_echo "$AR_FLAGS" >&6; }
+ ud_type_AR=`type $AR`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking type $AR" >&5
+$as_echo_n "checking type $AR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ud_type_AR" >&5
+$as_echo "$ud_type_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unset" >&5
+$as_echo "unset" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking NM" >&5
+$as_echo_n "checking NM... " >&6; }
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking NMFLAGS" >&5
+$as_echo_n "checking NMFLAGS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMFLAGS" >&5
+$as_echo "$NMFLAGS" >&6; }
+# ud_type_NM=`type $NM`
+# AC_MSG_CHECKING(type $NM)
+# AC_MSG_RESULT($ud_type_NM)
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unset" >&5
+$as_echo "unset" >&6; }
fi
-done
+# For nightly build testing, output CC, FC, etc.
+echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> comps.txt
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types, headers, and functions" >&5
+$as_echo "$as_me: checking types, headers, and functions" >&6;}
+
ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
if test "x$ac_cv_header_stdlib_h" = xyes; then :
@@ -6493,6 +15786,8 @@ fi
test "x$enable_diskless" = xno || enable_diskless=yes
+
+# Check for enable DAP
if test "x$enable_dap" = "xyes" -o "x$enable_cdmremote" = "xyes" -o "x$enable_rpc" = "xyes" ; then
enable_diskless=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: --enable-dap requires --enable-diskless" >&5
@@ -7015,7 +16310,62 @@ $as_echo "#define HAVE_ST_BLKSIZE 1" >>confdefs.h
fi
-UD_CHECK_IEEE
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IEEE floating point format" >&5
+$as_echo_n "checking for IEEE floating point format... " >&6; }
+if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef NO_FLOAT_H
+#include <float.h>
+#endif
+
+#define EXIT_NOTIEEE 1
+#define EXIT_MAYBEIEEE 0
+
+int
+main()
+{
+#if defined(FLT_RADIX) && FLT_RADIX != 2
+ return EXIT_NOTIEEE;
+#elif defined(DBL_MAX_EXP) && DBL_MAX_EXP != 1024
+ return EXIT_NOTIEEE;
+#elif defined(DBL_MANT_DIG) && DBL_MANT_DIG != 53
+ return EXIT_NOTIEEE;
+#elif defined(FLT_MAX_EXP) && !(FLT_MAX_EXP == 1024 || FLT_MAX_EXP == 128)
+ return EXIT_NOTIEEE;
+#elif defined(FLT_MANT_DIG) && !(FLT_MANT_DIG == 53 || FLT_MANT_DIG == 24)
+ return EXIT_NOTIEEE;
+#else
+ /* (assuming eight bit char) */
+ if(sizeof(double) != 8)
+ return EXIT_NOTIEEE;
+ if(!(sizeof(float) == 4 || sizeof(float) == 8))
+ return EXIT_NOTIEEE;
+
+ return EXIT_MAYBEIEEE;
+#endif
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_ieeefloat=yes
+else
+ ac_cv_c_ieeefloat=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_ieeefloat" >&5
+$as_echo "$ac_cv_c_ieeefloat" >&6; }
+if test "$ac_cv_c_ieeefloat" = no; then
+
+$as_echo "#define NO_IEEE_FLOAT /**/" >>confdefs.h
+
+fi
+
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
if test "x$ac_cv_type_size_t" = xyes; then :
@@ -8203,6 +17553,14 @@ $as_echo "#define USE_HDF4 1" >>confdefs.h
fi
fi
+# Check for downloading/building fortran via postinstall script.
+if test "x$enable_remote_fortran_bootstrap" = xyes; then
+
+$as_echo "#define BUILD_FORTRAN 1" >>confdefs.h
+
+fi
+
+
# No logging for netcdf-3.
if test "x$enable_netcdf_4" = xno; then
enable_logging=no
@@ -8303,29 +17661,198 @@ fi
# Automake conditionals need to be called, whether the answer is yes
# or no.
-AM_CONDITIONAL(BUILD_PARALLEL, test x$enable_parallel = xyes)
-AM_CONDITIONAL(TEST_PARALLEL, test "x$enable_parallel" = xyes -a "x$enable_parallel_tests" = xyes)
-AM_CONDITIONAL(BUILD_DAP, test "x$enable_dap" = xyes)
-AM_CONDITIONAL(USE_DAP, test "x$enable_dap" = xyes) # Alias
-AM_CONDITIONAL(ENABLE_DAP_REMOTE_TESTS, test "x$enable_dap_remote_tests" = xyes)
-AM_CONDITIONAL(ENABLE_DAP_AUTH_TESTS, test "x$enable_dap_auth_tests" = xyes)
-AM_CONDITIONAL(ENABLE_DAP_LONG_TESTS, test "x$enable_dap_long_tests" = xyes)
-AM_CONDITIONAL(EXTRA_EXAMPLE_TESTS, test "x$enable_extra_example_tests" = xyes)
-AM_CONDITIONAL(USE_SZIP, test "x$ac_cv_func_H5Z_SZIP" = xyes)
-AM_CONDITIONAL(USE_PNETCDF_DIR, test ! "x$PNETCDFDIR" = x)
-AM_CONDITIONAL(USE_LOGGING, test "x$enable_logging" = xyes)
-AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
-AM_CONDITIONAL(USE_VALGRIND_TESTS, test "x$enable_valgrind_tests" = xyes)
-AM_CONDITIONAL(USE_NETCDF4, test x$enable_netcdf_4 = xyes)
-AM_CONDITIONAL(USE_HDF4, test x$enable_hdf4 = xyes)
-AM_CONDITIONAL(USE_HDF4_FILE_TESTS, test x$enable_hdf4_file_tests = xyes)
-AM_CONDITIONAL(USE_RENAMEV3, test x$enable_netcdf_4 = xyes -o x$enable_dap = xyes)
-AM_CONDITIONAL(USE_PNETCDF, test x$enable_pnetcdf = xyes)
-AM_CONDITIONAL(USE_DISPATCH, test x$enable_dispatch = xyes)
-AM_CONDITIONAL(BUILD_CDMREMOTE, test "x$enable_cdmremote" = xyes) # Alias
-AM_CONDITIONAL(BUILD_RPC, test "x$enable_rpc" = xyes)
-AM_CONDITIONAL(BUILD_DISKLESS, test x$enable_diskless = xyes)
-AM_CONDITIONAL(BUILD_MMAP, test x$enable_mmap = xyes)
+ if test x$enable_parallel = xyes; then
+ BUILD_PARALLEL_TRUE=
+ BUILD_PARALLEL_FALSE='#'
+else
+ BUILD_PARALLEL_TRUE='#'
+ BUILD_PARALLEL_FALSE=
+fi
+
+ if test "x$enable_parallel" = xyes -a "x$enable_parallel_tests" = xyes; then
+ TEST_PARALLEL_TRUE=
+ TEST_PARALLEL_FALSE='#'
+else
+ TEST_PARALLEL_TRUE='#'
+ TEST_PARALLEL_FALSE=
+fi
+
+ if test "x$enable_dap" = xyes; then
+ BUILD_DAP_TRUE=
+ BUILD_DAP_FALSE='#'
+else
+ BUILD_DAP_TRUE='#'
+ BUILD_DAP_FALSE=
+fi
+
+ if test "x$enable_dap" = xyes; then
+ USE_DAP_TRUE=
+ USE_DAP_FALSE='#'
+else
+ USE_DAP_TRUE='#'
+ USE_DAP_FALSE=
+fi
+ # Alias
+ if test "x$enable_dap_remote_tests" = xyes; then
+ ENABLE_DAP_REMOTE_TESTS_TRUE=
+ ENABLE_DAP_REMOTE_TESTS_FALSE='#'
+else
+ ENABLE_DAP_REMOTE_TESTS_TRUE='#'
+ ENABLE_DAP_REMOTE_TESTS_FALSE=
+fi
+
+ if test "x$enable_dap_auth_tests" = xyes; then
+ ENABLE_DAP_AUTH_TESTS_TRUE=
+ ENABLE_DAP_AUTH_TESTS_FALSE='#'
+else
+ ENABLE_DAP_AUTH_TESTS_TRUE='#'
+ ENABLE_DAP_AUTH_TESTS_FALSE=
+fi
+
+ if test "x$enable_dap_long_tests" = xyes; then
+ ENABLE_DAP_LONG_TESTS_TRUE=
+ ENABLE_DAP_LONG_TESTS_FALSE='#'
+else
+ ENABLE_DAP_LONG_TESTS_TRUE='#'
+ ENABLE_DAP_LONG_TESTS_FALSE=
+fi
+
+ if test "x$enable_extra_example_tests" = xyes; then
+ EXTRA_EXAMPLE_TESTS_TRUE=
+ EXTRA_EXAMPLE_TESTS_FALSE='#'
+else
+ EXTRA_EXAMPLE_TESTS_TRUE='#'
+ EXTRA_EXAMPLE_TESTS_FALSE=
+fi
+
+ if test "x$ac_cv_func_H5Z_SZIP" = xyes; then
+ USE_SZIP_TRUE=
+ USE_SZIP_FALSE='#'
+else
+ USE_SZIP_TRUE='#'
+ USE_SZIP_FALSE=
+fi
+
+ if test ! "x$PNETCDFDIR" = x; then
+ USE_PNETCDF_DIR_TRUE=
+ USE_PNETCDF_DIR_FALSE='#'
+else
+ USE_PNETCDF_DIR_TRUE='#'
+ USE_PNETCDF_DIR_FALSE=
+fi
+
+ if test "x$enable_logging" = xyes; then
+ USE_LOGGING_TRUE=
+ USE_LOGGING_FALSE='#'
+else
+ USE_LOGGING_TRUE='#'
+ USE_LOGGING_FALSE=
+fi
+
+ if test "x$cross_compiling" = xyes; then
+ CROSS_COMPILING_TRUE=
+ CROSS_COMPILING_FALSE='#'
+else
+ CROSS_COMPILING_TRUE='#'
+ CROSS_COMPILING_FALSE=
+fi
+
+ if test "x$enable_valgrind_tests" = xyes; then
+ USE_VALGRIND_TESTS_TRUE=
+ USE_VALGRIND_TESTS_FALSE='#'
+else
+ USE_VALGRIND_TESTS_TRUE='#'
+ USE_VALGRIND_TESTS_FALSE=
+fi
+
+ if test x$enable_netcdf_4 = xyes; then
+ USE_NETCDF4_TRUE=
+ USE_NETCDF4_FALSE='#'
+else
+ USE_NETCDF4_TRUE='#'
+ USE_NETCDF4_FALSE=
+fi
+
+ if test x$enable_hdf4 = xyes; then
+ USE_HDF4_TRUE=
+ USE_HDF4_FALSE='#'
+else
+ USE_HDF4_TRUE='#'
+ USE_HDF4_FALSE=
+fi
+
+ if test x$enable_hdf4_file_tests = xyes; then
+ USE_HDF4_FILE_TESTS_TRUE=
+ USE_HDF4_FILE_TESTS_FALSE='#'
+else
+ USE_HDF4_FILE_TESTS_TRUE='#'
+ USE_HDF4_FILE_TESTS_FALSE=
+fi
+
+ if test x$enable_netcdf_4 = xyes -o x$enable_dap = xyes; then
+ USE_RENAMEV3_TRUE=
+ USE_RENAMEV3_FALSE='#'
+else
+ USE_RENAMEV3_TRUE='#'
+ USE_RENAMEV3_FALSE=
+fi
+
+ if test x$enable_remote_fortran_bootstrap = xyes; then
+ BUILD_FORTRAN_TRUE=
+ BUILD_FORTRAN_FALSE='#'
+else
+ BUILD_FORTRAN_TRUE='#'
+ BUILD_FORTRAN_FALSE=
+fi
+
+ if test x$enable_pnetcdf = xyes; then
+ USE_PNETCDF_TRUE=
+ USE_PNETCDF_FALSE='#'
+else
+ USE_PNETCDF_TRUE='#'
+ USE_PNETCDF_FALSE=
+fi
+
+ if test x$enable_dispatch = xyes; then
+ USE_DISPATCH_TRUE=
+ USE_DISPATCH_FALSE='#'
+else
+ USE_DISPATCH_TRUE='#'
+ USE_DISPATCH_FALSE=
+fi
+
+ if test "x$enable_cdmremote" = xyes; then
+ BUILD_CDMREMOTE_TRUE=
+ BUILD_CDMREMOTE_FALSE='#'
+else
+ BUILD_CDMREMOTE_TRUE='#'
+ BUILD_CDMREMOTE_FALSE=
+fi
+ # Alias
+ if test "x$enable_rpc" = xyes; then
+ BUILD_RPC_TRUE=
+ BUILD_RPC_FALSE='#'
+else
+ BUILD_RPC_TRUE='#'
+ BUILD_RPC_FALSE=
+fi
+
+ if test x$enable_diskless = xyes; then
+ BUILD_DISKLESS_TRUE=
+ BUILD_DISKLESS_FALSE='#'
+else
+ BUILD_DISKLESS_TRUE='#'
+ BUILD_DISKLESS_FALSE=
+fi
+
+ if test x$enable_mmap = xyes; then
+ BUILD_MMAP_TRUE=
+ BUILD_MMAP_FALSE='#'
+else
+ BUILD_MMAP_TRUE='#'
+ BUILD_MMAP_FALSE=
+fi
+
# If the machine doesn't have a long long, and we want netCDF-4, then
# we've got problems!
@@ -8559,6 +18086,26 @@ esac
NC_FLIBS="-lnetcdff $NC_LIBS"
+# temporary to deal with a JNA problem
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking If compilation is for use with JNA" >&5
+$as_echo_n "checking If compilation is for use with JNA... " >&6; }
+# Check whether --enable-jna was given.
+if test "${enable_jna+set}" = set; then :
+ enableval=$enable_jna;
+else
+ enable_jna=no
+fi
+
+test "x$enable_jna" = xno || enable_jna=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_jna" >&5
+$as_echo "$enable_jna" >&6; }
+if test "x$enable_jna" = xyes ; then
+
+$as_echo "#define JNA 1" >>confdefs.h
+
+fi
+
+
NC_LIBS=$NC_LIBS
HAS_DAP=$enable_dap
@@ -8575,25 +18122,14 @@ HAS_HDF5=$enable_netcdf_4
HAS_SZLIB=$nc_has_szlib
+HAS_PARALLEL=$enable_parallel
-# temporary to deal with a JNA problem
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking If compilation is for use with JNA" >&5
-$as_echo_n "checking If compilation is for use with JNA... " >&6; }
-# Check whether --enable-jna was given.
-if test "${enable_jna+set}" = set; then :
- enableval=$enable_jna;
-else
- enable_jna=no
-fi
+HAS_DISKLESS=$enable_diskless
-test "x$enable_jna" = xno || enable_jna=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_jna" >&5
-$as_echo "$enable_jna" >&6; }
-if test "x$enable_jna" = xyes ; then
+HAS_MMAP=$enable_mmap
-$as_echo "#define JNA 1" >>confdefs.h
+HAS_JNA=$enable_jna
-fi
# Include some specifics for netcdf on windows.
#AH_VERBATIM([_WIN32_STRICMP],
@@ -8607,10 +18143,118 @@ fi
# debugging purposes.
# cp confdefs.h my_config.h
+#####
+# Create output variables from various
+# shell variables, for use in generating
+# libnetcdf.settings.
+#####
+
+
+
+
+
+
+
+
+
+# Args:
+# 1. netcdf_meta.h variable
+# 2. conditional variable that is yes or no.
+# 3. default condition
+#
+# example: AX_SET_META([NC_HAS_NC2],[$nc_build_v2],[]) # Because it checks for no.
+# AX_SET_META([NC_HAS_HDF4],[$enable_hdf4],[yes])
+
+
+#####
+# Define values used in include/netcdf_meta.h
+#####
+ NC_VERSION=$VERSION
+
+ if test "x$nc_build_v2" = xyes ; then
+ NC_HAS_NC2=1
+ else
+ NC_HAS_NC2=0
+ fi
+
+
+ if test "x$enable_netcdf_4" = xyes ; then
+ NC_HAS_NC4=1
+ else
+ NC_HAS_NC4=0
+ fi
+
+
+ if test "x$enable_hdf4" = xyes ; then
+ NC_HAS_HDF4=1
+ else
+ NC_HAS_HDF4=0
+ fi
+
+
+ if test "x$enable_netcdf_4" = xyes ; then
+ NC_HAS_HDF5=1
+ else
+ NC_HAS_HDF5=0
+ fi
+
+
+ if test "x$ac_cv_func_H5Z_SZIP" = xyes ; then
+ NC_HAS_SZIP=1
+ else
+ NC_HAS_SZIP=0
+ fi
+
+
+ if test "x$enable_dap" = xyes ; then
+ NC_HAS_DAP=1
+ else
+ NC_HAS_DAP=0
+ fi
+
+
+ if test "x$enable_diskless" = xyes ; then
+ NC_HAS_DISKLESS=1
+ else
+ NC_HAS_DISKLESS=0
+ fi
+
+
+ if test "x$enable_mmap" = xyes ; then
+ NC_HAS_MMAP=1
+ else
+ NC_HAS_MMAP=0
+ fi
+
+
+ if test "x$enable_jna" = xyes ; then
+ NC_HAS_JNA=1
+ else
+ NC_HAS_JNA=0
+ fi
+
+
+ if test "x$enable_pnetcdf" = xyes ; then
+ NC_HAS_PNETCDF=1
+ else
+ NC_HAS_PNETCDF=0
+ fi
+
+
+ if test "x$enable_parallel" = xyes ; then
+ NC_HAS_PARALLEL=1
+ else
+ NC_HAS_PARALLEL=0
+ fi
+
+
+#####
+# End netcdf_meta.h definitions.
+#####
{ $as_echo "$as_me:${as_lineno-$LINENO}: generating header files and makefiles" >&5
$as_echo "$as_me: generating header files and makefiles" >&6;}
-ac_config_files="$ac_config_files Makefile nc-config netcdf.pc include/Makefile h5_test/Makefile man4/Makefile man4/images/Makefile libsrc/Makefile libsrc4/Makefile libsrc5/Makefile nctest/Makefile nc_test4/Makefile nc_test/Makefile ncdump/Makefile ncgen3/Makefile ncgen/Makefile examples/Makefile examples/C/Makefile examples/CDL/Makefile oc2/Makefile libdap2/Makefile libdispatch/Makefile liblib/Makefile ncdump/cdl4/Makefile ncdump/expected4/Makefile ncdap_test/Makefile ncdap_test/testdat [...]
+ac_config_files="$ac_config_files Makefile nc-config netcdf.pc libnetcdf.settings postinstall.sh include/netcdf_meta.h include/Makefile h5_test/Makefile docs/Makefile docs/images/Makefile libsrc/Makefile libsrc4/Makefile libsrc5/Makefile nctest/Makefile nc_test4/Makefile nc_test/Makefile ncdump/Makefile ncgen3/Makefile ncgen/Makefile examples/Makefile examples/C/Makefile examples/CDL/Makefile oc2/Makefile libdap2/Makefile libdispatch/Makefile liblib/Makefile ncdump/cdl/Makefile ncdump/ex [...]
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -8721,7 +18365,179 @@ LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_DLL_TRUE}" && test -z "${BUILD_DLL_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_DLL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${INTERNAL_OCLIB_TRUE}" && test -z "${INTERNAL_OCLIB_FALSE}"; then
+ as_fn_error $? "conditional \"INTERNAL_OCLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${EXTRA_TESTS_TRUE}" && test -z "${EXTRA_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"EXTRA_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_FFIO_TRUE}" && test -z "${USE_FFIO_FALSE}"; then
+ as_fn_error $? "conditional \"USE_FFIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EXAMPLES_TRUE}" && test -z "${BUILD_EXAMPLES_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_EXAMPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_V2_TRUE}" && test -z "${BUILD_V2_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_V2\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_UTILITIES_TRUE}" && test -z "${BUILD_UTILITIES_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_UTILITIES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_TESTSETS_TRUE}" && test -z "${BUILD_TESTSETS_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_TESTSETS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${LARGE_FILE_TESTS_TRUE}" && test -z "${LARGE_FILE_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"LARGE_FILE_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_BENCHMARKS_TRUE}" && test -z "${BUILD_BENCHMARKS_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_BENCHMARKS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_PARALLEL_TRUE}" && test -z "${BUILD_PARALLEL_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_PARALLEL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${TEST_PARALLEL_TRUE}" && test -z "${TEST_PARALLEL_FALSE}"; then
+ as_fn_error $? "conditional \"TEST_PARALLEL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_DAP_TRUE}" && test -z "${BUILD_DAP_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_DAP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_DAP_TRUE}" && test -z "${USE_DAP_FALSE}"; then
+ as_fn_error $? "conditional \"USE_DAP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_DAP_REMOTE_TESTS_TRUE}" && test -z "${ENABLE_DAP_REMOTE_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_DAP_REMOTE_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_DAP_AUTH_TESTS_TRUE}" && test -z "${ENABLE_DAP_AUTH_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_DAP_AUTH_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_DAP_LONG_TESTS_TRUE}" && test -z "${ENABLE_DAP_LONG_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_DAP_LONG_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${EXTRA_EXAMPLE_TESTS_TRUE}" && test -z "${EXTRA_EXAMPLE_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"EXTRA_EXAMPLE_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_SZIP_TRUE}" && test -z "${USE_SZIP_FALSE}"; then
+ as_fn_error $? "conditional \"USE_SZIP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PNETCDF_DIR_TRUE}" && test -z "${USE_PNETCDF_DIR_FALSE}"; then
+ as_fn_error $? "conditional \"USE_PNETCDF_DIR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_LOGGING_TRUE}" && test -z "${USE_LOGGING_FALSE}"; then
+ as_fn_error $? "conditional \"USE_LOGGING\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CROSS_COMPILING_TRUE}" && test -z "${CROSS_COMPILING_FALSE}"; then
+ as_fn_error $? "conditional \"CROSS_COMPILING\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_VALGRIND_TESTS_TRUE}" && test -z "${USE_VALGRIND_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"USE_VALGRIND_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_NETCDF4_TRUE}" && test -z "${USE_NETCDF4_FALSE}"; then
+ as_fn_error $? "conditional \"USE_NETCDF4\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_HDF4_TRUE}" && test -z "${USE_HDF4_FALSE}"; then
+ as_fn_error $? "conditional \"USE_HDF4\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_HDF4_FILE_TESTS_TRUE}" && test -z "${USE_HDF4_FILE_TESTS_FALSE}"; then
+ as_fn_error $? "conditional \"USE_HDF4_FILE_TESTS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_RENAMEV3_TRUE}" && test -z "${USE_RENAMEV3_FALSE}"; then
+ as_fn_error $? "conditional \"USE_RENAMEV3\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_FORTRAN_TRUE}" && test -z "${BUILD_FORTRAN_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_FORTRAN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PNETCDF_TRUE}" && test -z "${USE_PNETCDF_FALSE}"; then
+ as_fn_error $? "conditional \"USE_PNETCDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_DISPATCH_TRUE}" && test -z "${USE_DISPATCH_FALSE}"; then
+ as_fn_error $? "conditional \"USE_DISPATCH\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_CDMREMOTE_TRUE}" && test -z "${BUILD_CDMREMOTE_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_CDMREMOTE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_RPC_TRUE}" && test -z "${BUILD_RPC_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_RPC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_DISKLESS_TRUE}" && test -z "${BUILD_DISKLESS_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_DISKLESS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_MMAP_TRUE}" && test -z "${BUILD_MMAP_FALSE}"; then
+ as_fn_error $? "conditional \"BUILD_MMAP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
@@ -9119,7 +18935,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by netCDF $as_me 4.3.3-rc1, which was
+This file was extended by netCDF $as_me 4.3.3-rc3, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -9146,6 +18962,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
_ACEOF
@@ -9175,13 +18992,16 @@ $config_files
Configuration headers:
$config_headers
+Configuration commands:
+$config_commands
+
Report bugs to <support-netcdf at unidata.ucar.edu>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-netCDF config.status 4.3.3-rc1
+netCDF config.status 4.3.3-rc3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -9192,6 +19012,8 @@ gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
test -n "\$AWK" || AWK=awk
_ACEOF
@@ -9295,6 +19117,294 @@ _ASBOX
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_cv_nm_interface \
+nm_file_list_spec \
+lt_cv_truncate_bin \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+
+# See if we are running on zsh, and set the options that allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}"; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -9304,14 +19414,19 @@ for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- "man4/Doxyfile") CONFIG_FILES="$CONFIG_FILES man4/Doxyfile" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "docs/Doxyfile") CONFIG_FILES="$CONFIG_FILES docs/Doxyfile" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"nc-config") CONFIG_FILES="$CONFIG_FILES nc-config" ;;
"netcdf.pc") CONFIG_FILES="$CONFIG_FILES netcdf.pc" ;;
+ "libnetcdf.settings") CONFIG_FILES="$CONFIG_FILES libnetcdf.settings" ;;
+ "postinstall.sh") CONFIG_FILES="$CONFIG_FILES postinstall.sh" ;;
+ "include/netcdf_meta.h") CONFIG_FILES="$CONFIG_FILES include/netcdf_meta.h" ;;
"include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
"h5_test/Makefile") CONFIG_FILES="$CONFIG_FILES h5_test/Makefile" ;;
- "man4/Makefile") CONFIG_FILES="$CONFIG_FILES man4/Makefile" ;;
- "man4/images/Makefile") CONFIG_FILES="$CONFIG_FILES man4/images/Makefile" ;;
+ "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+ "docs/images/Makefile") CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;;
"libsrc/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc/Makefile" ;;
"libsrc4/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc4/Makefile" ;;
"libsrc5/Makefile") CONFIG_FILES="$CONFIG_FILES libsrc5/Makefile" ;;
@@ -9328,8 +19443,8 @@ do
"libdap2/Makefile") CONFIG_FILES="$CONFIG_FILES libdap2/Makefile" ;;
"libdispatch/Makefile") CONFIG_FILES="$CONFIG_FILES libdispatch/Makefile" ;;
"liblib/Makefile") CONFIG_FILES="$CONFIG_FILES liblib/Makefile" ;;
- "ncdump/cdl4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/cdl4/Makefile" ;;
- "ncdump/expected4/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/expected4/Makefile" ;;
+ "ncdump/cdl/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/cdl/Makefile" ;;
+ "ncdump/expected/Makefile") CONFIG_FILES="$CONFIG_FILES ncdump/expected/Makefile" ;;
"ncdap_test/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/Makefile" ;;
"ncdap_test/testdata3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/testdata3/Makefile" ;;
"ncdap_test/expected3/Makefile") CONFIG_FILES="$CONFIG_FILES ncdap_test/expected3/Makefile" ;;
@@ -9349,6 +19464,7 @@ done
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
@@ -9645,7 +19761,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_HEADERS"
-eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS "
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
shift
for ac_tag
do
@@ -9783,6 +19899,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -9837,6 +19958,7 @@ s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
@@ -9881,20 +20003,633 @@ $as_echo "$as_me: $ac_file is unchanged" >&6;}
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
;;
-
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
esac
case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named 'Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running 'make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "$am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options that allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}"; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile=${ofile}T
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+# Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the same
+# distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=''
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shared archive member basename,for filename based shared library versioning on AIX.
+shared_archive_member_spec=$shared_archive_member_spec
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and where our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# Command to truncate a binary pipe.
+lt_truncate_bin=$lt_lt_cv_truncate_bin
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test set != "${COLLECT_NAMES+set}"; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain=$ac_aux_dir/ltmain.sh
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+ ;;
"Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"nc-config":F) test -f nc-config && chmod 755 nc-config ;;
"netcdf.pc":F) test -f nc-config && chmod 755 nc-config ;;
+ "libnetcdf.settings":F) test -f nc-config && chmod 755 nc-config ;;
+ "postinstall.sh":F) test -f nc-config && chmod 755 nc-config ;;
+ "include/netcdf_meta.h":F) test -f nc-config && chmod 755 nc-config ;;
"include/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"h5_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "man4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "man4/images/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
+ "docs/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
+ "docs/images/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"libsrc/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"libsrc4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"libsrc5/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
@@ -9911,8 +20646,8 @@ $as_echo "$as_me: $ac_file is unchanged" >&6;}
"libdap2/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"libdispatch/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"liblib/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdump/cdl4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
- "ncdump/expected4/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
+ "ncdump/cdl/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
+ "ncdump/expected/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"ncdap_test/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"ncdap_test/testdata3/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
"ncdap_test/expected3/Makefile":F) test -f nc-config && chmod 755 nc-config ;;
@@ -9957,3 +20692,5 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
+
+cat libnetcdf.settings
diff --git a/configure.ac b/configure.ac
index ddf2b61..105c576 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,18 +5,22 @@
# the COPYRIGHT file for more information.
# Recall that ${VAR-exp} expands to $VAR if var is set (even to null),
-# and to exp otherwise.
+# and to exp otherwise.
## This puts the cvs ID tag in the output configure script.
AC_REVISION([$Id: configure.ac,v 1.450 2010/05/28 19:42:47 dmh Exp $])
-# Running autoconf on this file will trigger a warning if
+# Running autoconf on this file will trigger a warning if
# autoconf is not at least the specified version.
AC_PREREQ([2.59])
-# Initialize with name, version, and support email address.
-AC_INIT([netCDF], [4.3.3-rc1], [support-netcdf at unidata.ucar.edu])
+# Initialize with name, version, and support email address.
+AC_INIT([netCDF], [4.3.3-rc3], [support-netcdf at unidata.ucar.edu])
+AC_SUBST([NC_VERSION_MAJOR]) NC_VERSION_MAJOR=4
+AC_SUBST([NC_VERSION_MINOR]) NC_VERSION_MINOR=3
+AC_SUBST([NC_VERSION_PATCH]) NC_VERSION_PATCH=3
+AC_SUBST([NC_VERSION_NOTE]) NC_VERSION_NOTE="-rc3"
#####
# Set some variables used to generate a libnetcdf.settings file,
@@ -46,6 +50,7 @@ AC_CONFIG_HEADERS([config.h])
# This call is required by automake.
AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
+AM_MAINTAINER_MODE()
# Check for the existence of this file before proceeding.
AC_CONFIG_SRCDIR([include/netcdf.h])
@@ -79,7 +84,7 @@ AC_ARG_ENABLE([doxygen],
[AS_HELP_STRING([--enable-doxygen],
[Enable generation of documentation.])])
test "x$enable_doxygen" = xyes || enable_doxygen=no
-AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
AC_ARG_ENABLE([dot],
[AS_HELP_STRING([--enable-dot],
@@ -90,7 +95,7 @@ AC_ARG_ENABLE([internal-docs],
[AS_HELP_STRING([--enable-internal-docs],
[Include documentation of library internals. This is of interest only to those developing the netCDF library.])])
test "x$enable_internal_docs" = xyes || enable_internal_docs=no
-AC_SUBST([BUILD_INTERNAL_DOCS], [$enable_internal_docs])
+AC_SUBST([BUILD_INTERNAL_DOCS], [$enable_internal_docs])
AC_MSG_CHECKING([if fsync support is enabled])
AC_ARG_ENABLE([fsync],
@@ -119,7 +124,7 @@ AC_DEFINE([JNA], [1], [if true, include jna bug workaround code])
fi
# Does the user want to run extra tests with valgrind?
-AC_MSG_CHECKING([whether extra valgrind tests should be run])
+AC_MSG_CHECKING([whether extra valgrind tests should be run])
AC_ARG_ENABLE([valgrind-tests],
[AS_HELP_STRING([--enable-valgrind-tests],
[build with valgrind-tests (valgrind is required, static builds only)])])
@@ -166,6 +171,14 @@ if test "x$enable_hdf4_file_tests" = xyes; then
fi
AC_MSG_RESULT($enable_hdf4_file_tests)
+# Does the user want to try to install netcdf-fortran
+# automatically?
+AC_MSG_CHECKING([whether we should attempt to install netcdf-fortran (EXPERIMENTAL)])
+AC_ARG_ENABLE([fortran], [AS_HELP_STRING([--enable-remote-fortran-bootstrap],
+ [Download and install netcdf-fortran (EXPERIMENTAL)])])
+test "x$enable_remote_fortran_bootstrap" = xyes || enable_remote_fortran_bootstrap=no
+AC_MSG_RESULT([$enable_remote_fortran_bootstrap])
+
# Does the user want to turn on PNETCDF read ability?
AC_MSG_CHECKING([whether parallel I/O for classic and 64-bit offset files using parallel-netcdf is to be enabled])
AC_ARG_ENABLE([pnetcdf], [AS_HELP_STRING([--enable-pnetcdf],
@@ -252,7 +265,7 @@ AC_ARG_ENABLE([logging],
[AS_HELP_STRING([--enable-logging],
[enable logging capability (only applies when netCDF-4 is built). \
This debugging features is only of interest to netCDF developers. \
- Ignored if netCDF-4 is not enabled.])])
+ Ignored if netCDF-4 is not enabled.])])
test "x$enable_logging" = xyes || enable_logging=no
AC_MSG_RESULT([$enable_logging])
@@ -417,8 +430,8 @@ AM_CONDITIONAL(USE_FFIO, [test x$enable_ffio = xyes])
dnl AC_MSG_CHECKING([whether netCDF NEC-SX vectorization patch is enabled])
dnl AC_ARG_ENABLE([sx-vectorization],
dnl [AS_HELP_STRING([--enable-sx-vectorization],
-dnl [enable a user-provided performance patch to allow \
-dnl vectorization of type conversions on NEC SX machines.])])
+dnl [enable a user-provided performance patch to allow \
+dnl vectorization of type conversions on NEC SX machines.])])
dnl test "x$enable_sx_vectorization" = xyes || enable_sx_vectorization=no
dnl AC_MSG_RESULT([$enable_sx_vectorization])
dnl if test "x$enable_sx_vectorization" = xyes; then
@@ -451,6 +464,8 @@ AC_MSG_RESULT($nc_build_v2)
AM_CONDITIONAL(BUILD_V2, [test x$nc_build_v2 = xyes])
if test "x$nc_build_v2" = xno; then
AC_DEFINE_UNQUOTED(NO_NETCDF_2, 1, [do not build the netCDF version 2 API])
+else
+ AC_DEFINE_UNQUOTED(USE_NETCDF_2, 1, [build the netCDF version 2 API])
fi
# Does the user want to disable ncgen/ncdump/nccopy?
@@ -491,8 +506,8 @@ fi
AC_MSG_CHECKING([whether benchmaks should be run (experimental)])
AC_ARG_ENABLE([benchmarks],
[AS_HELP_STRING([--enable-benchmarks],
- [Run benchmarks. This is an experimental feature. You must fetch
- sample data files from the Unidata ftp site to use these benchmarks.
+ [Run benchmarks. This is an experimental feature. You must fetch
+ sample data files from the Unidata ftp site to use these benchmarks.
The benchmarks are a bunch of extra tests, which are timed. We use these
tests to check netCDF performance.])])
test "x$enable_benchmarks" = xyes || enable_benchmarks=no
@@ -511,7 +526,7 @@ case "$host_cpu $host_os" in
*)
test "x$enable_extreme_numbers" = xno || enable_extreme_numbers=yes
;;
-esac
+esac
AC_MSG_RESULT($enable_extreme_numbers)
if test "x$enable_extreme_numbers" = xyes; then
@@ -572,6 +587,7 @@ AC_C_CONST
# CURLOPT_PASSWORD is not defined until curl version 7.19.1
# CURLOPT_KEYPASSWD is not defined until curl version 7.16.4
# CURLINFO_RESPONSE_CODE is not defined until curl version 7.10.7
+# CURLOPT_CHUNK_BGN_FUNCTION is not defined until curl version 7.21.0
# Save/restore CFLAGS
SAVECFLAGS="$CFLAGS"
@@ -621,6 +637,17 @@ if test $haveresponsecode = yes; then
AC_DEFINE([HAVE_CURLINFO_RESPONSE_CODE],[1],[Is CURLINFO_RESPONSE_CODE defined])
fi
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[#include "curl/curl.h"],
+[[int x = CURLOPT_CHUNK_BGN_FUNCTION;]])],
+ [havebgnfunction=yes],
+ [havebgnfunction=no])
+AC_MSG_CHECKING([whether CURLOPT_CHUNK_BGN_FUNCTION is defined])
+AC_MSG_RESULT([${havebgnfunction}])
+if test $havebgnfunction = yes; then
+ AC_DEFINE([HAVE_CURLOPT_CHUNK_BGN_FUNCTION],[1],[Is CURLOPT_CHUNK_BGN_FUNCTION defined])
+fi
+
CFLAGS="$SAVECFLAGS"
# Set up libtool.
@@ -638,13 +665,19 @@ fi
AC_MSG_NOTICE([finding other utilities])
+# Is m4 installed? If not, bail.
+AC_CHECK_PROGS([NC_M4], [m4])
+if test -z "$NC_M4"; then
+ AC_MSG_ERROR([Cannot find m4 utility. Install m4 and try again.])
+fi
+
# Is doxygen installed? If so, have configure construct the Doxyfile.
AC_CHECK_PROGS([DOXYGEN], [doxygen])
-if test -z "$DOXYGEN"; then
+if test -z "$DOXYGEN"; then
AC_MSG_WARN([Doxygen not found - documentation will not be built])
fi
-# Is graphviz/dot installed? If so, we'll use dot to create
+# Is graphviz/dot installed? If so, we'll use dot to create
# graphs in the documentation.
AC_CHECK_PROGS([DOT], [dot])
if test -z "$DOT"; then
@@ -652,16 +685,14 @@ if test -z "$DOT"; then
HAVE_DOT=NO
elif test "x$enable_dot" = xno; then
HAVE_DOT=NO
-else
+else
HAVE_DOT=YES
-fi
+fi
# If we have doxygen, and it's enabled, then process the file.
if test "x$enable_doxygen" != xno; then
if test -n "$DOXYGEN"; then
- AC_SUBST(HAVE_DOT)
- AC_CONFIG_FILES([docs/Doxyfile
- docs/Doxyfile.guide
- docs/Doxyfile.tutorial])
+ AC_SUBST(HAVE_DOT)
+ AC_CONFIG_FILES([docs/Doxyfile])
fi
# Note: the list of files to input to doxygen
# has been moved to docs/Doxyfile.in so
@@ -720,6 +751,8 @@ AC_ARG_ENABLE([diskless],
[disable support for in-memory (NC_DISKLESS) files])])
test "x$enable_diskless" = xno || enable_diskless=yes
+
+# Check for enable DAP
if test "x$enable_dap" = "xyes" -o "x$enable_cdmremote" = "xyes" -o "x$enable_rpc" = "xyes" ; then
enable_diskless=yes
AC_MSG_NOTICE([--enable-dap requires --enable-diskless])
@@ -781,7 +814,7 @@ if test "x$enable_netcdf_4" = xyes || test "x$enable_dap" = xyes; then
fi
# We need the math library
-AC_CHECK_LIB([m], [floor], [],
+AC_CHECK_LIB([m], [floor], [],
[AC_MSG_ERROR([Can't find or link to the math library.])])
if test "x$enable_netcdf_4" = xyes; then
@@ -798,14 +831,14 @@ if test "x$enable_netcdf_4" = xyes; then
AC_CHECK_LIB([dl],[dlopen], [], [AC_MSG_ERROR([Can't find or link against libdf. See config.log for errors.])])
AC_DEFINE([USE_LIBDL],[1], [if true, enable dynamic loading support])
fi
-
+
# Check for the main hdf5 and hdf5_hl library.
- AC_SEARCH_LIBS([H5Fflush], [hdf5dll hdf5], [],
+ AC_SEARCH_LIBS([H5Fflush], [hdf5dll hdf5], [],
[AC_MSG_ERROR([Can't find or link to the hdf5 library. Use --disable-netcdf-4, or see config.log for errors.])])
- AC_SEARCH_LIBS([H5DSis_scale], [hdf5_hldll hdf5_hl], [],
+ AC_SEARCH_LIBS([H5DSis_scale], [hdf5_hldll hdf5_hl], [],
[AC_MSG_ERROR([Can't find or link to the hdf5 high-level. Use --disable-netcdf-4, or see config.log for errors.])])
-
+
AC_CHECK_HEADERS([hdf5.h], [], [AC_MSG_ERROR([Compiling a test with HDF5 failed. Either hdf5.h cannot be found, or config.log should be checked for other reason.])])
AC_CHECK_FUNCS([H5Pget_fapl_mpiposix H5Pget_fapl_mpio H5Pset_deflate H5Z_SZIP])
@@ -813,7 +846,7 @@ if test "x$enable_netcdf_4" = xyes; then
if test "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then
AC_DEFINE([USE_PARALLEL_POSIX], [1], [if true, compile in parallel netCDF-4 based on MPI/POSIX])
fi
-
+
# The user may have parallel HDF5 based on MPI mumble mumble.
if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes; then
AC_DEFINE([USE_PARALLEL_MPIO], [1], [if true, compile in parallel netCDF-4 based on MPI/IO])
@@ -825,14 +858,14 @@ if test "x$enable_netcdf_4" = xyes; then
enable_parallel=yes
AC_DEFINE([USE_PARALLEL], [1], [if true, parallel netCDF-4 is in use])
fi
-
+
AC_MSG_CHECKING([whether parallel I/O features are to be included])
- AC_MSG_RESULT([$enable_parallel])
-
+ AC_MSG_RESULT([$enable_parallel])
+
# The user must have built HDF5 with the ZLIB library.
if test "x$ac_cv_func_H5Pset_deflate" = xyes; then
AC_DEFINE([USE_ZLIB], [1], [if true, compile in zlib compression in netCDF-4 variables])
- else
+ else
AC_MSG_ERROR([HDF5 must be built with zlib for netCDF-4])
fi
@@ -844,19 +877,25 @@ if test "x$enable_netcdf_4" = xyes; then
# If the user wants hdf4 built in, check it out.
if test "x$enable_hdf4" = xyes; then
- AC_CHECK_HEADERS([mfhdf.h], [], [nc_mfhdf_h_missing=yes])
+ AC_CHECK_HEADERS([mfhdf.h], [], [nc_mfhdf_h_missing=yes])
if test "x$nc_mfhdf_h_missing" = xyes; then
AC_MSG_ERROR([Cannot find mfhdf.h, yet --enable-hdf4 was used.])
- fi
+ fi
AC_CHECK_LIB([df], [Hclose], [], [AC_MSG_ERROR([Can't find or link to the hdf4 df library. See config.log for errors.])])
AC_CHECK_LIB([mfhdf], [SDcreate], [], [AC_MSG_ERROR([Can't find or link to the hdf4 mfhdf library. See config.log for errors.])])
-
+
AC_CHECK_LIB([jpeg], [jpeg_set_quality], [], [AC_MSG_ERROR([Can't find or link to the jpeg library (required by hdf4). See config.log for errors.])])
AC_DEFINE([USE_HDF4], [1], [if true, use HDF4 too])
fi
fi
+# Check for downloading/building fortran via postinstall script.
+if test "x$enable_remote_fortran_bootstrap" = xyes; then
+ AC_DEFINE([BUILD_FORTRAN], 1, [If true, will attempt to download and build netcdf-fortran.])
+fi
+
+
# No logging for netcdf-3.
if test "x$enable_netcdf_4" = xno; then
enable_logging=no
@@ -867,7 +906,7 @@ fi
# Using pnetcdf for classic parallel I/O?
if test "x$enable_pnetcdf" = xyes; then
- AC_CHECK_LIB([pnetcdf], [ncmpi_create], [],
+ AC_CHECK_LIB([pnetcdf], [ncmpi_create], [],
[AC_MSG_ERROR([Cannot link to pnetcdf library, yet --enable-pnetcdf was used.])])
AC_DEFINE([USE_PNETCDF], [1], [if true, parallel netCDF is used])
@@ -923,11 +962,12 @@ AM_CONDITIONAL(USE_NETCDF4, [test x$enable_netcdf_4 = xyes])
AM_CONDITIONAL(USE_HDF4, [test x$enable_hdf4 = xyes])
AM_CONDITIONAL(USE_HDF4_FILE_TESTS, [test x$enable_hdf4_file_tests = xyes])
AM_CONDITIONAL(USE_RENAMEV3, [test x$enable_netcdf_4 = xyes -o x$enable_dap = xyes])
+AM_CONDITIONAL(BUILD_FORTRAN, [test x$enable_remote_fortran_bootstrap = xyes])
AM_CONDITIONAL(USE_PNETCDF, [test x$enable_pnetcdf = xyes])
AM_CONDITIONAL(USE_DISPATCH, [test x$enable_dispatch = xyes])
AM_CONDITIONAL(BUILD_CDMREMOTE, [test "x$enable_cdmremote" = xyes]) # Alias
AM_CONDITIONAL(BUILD_RPC, [test "x$enable_rpc" = xyes])
-AM_CONDITIONAL(BUILD_DISKLESS, [test x$enable_diskless = xyes])
+AM_CONDITIONAL(BUILD_DISKLESS, [test x$enable_diskless = xyes])
AM_CONDITIONAL(BUILD_MMAP, [test x$enable_mmap = xyes])
# If the machine doesn't have a long long, and we want netCDF-4, then
@@ -962,17 +1002,17 @@ AC_MSG_RESULT([$LIBS])
# Flags for nc-config script; by design $prefix, $includir, $libdir,
# etc. are left as shell variables in the script so as to facilitate
# relocation
-if test "x$with_netcdf_c_lib" = x ; then
+if test "x$with_netcdf_c_lib" = x ; then
NC_LIBS="-lnetcdf"
else
NC_LIBS="$with_netcdf_c_lib"
fi
if test "x$enable_shared" != xyes; then
NC_LIBS="$LDFLAGS $NC_LIBS $LIBS"
-fi
+fi
case "x$target_os" in
-xsolaris*)
+xsolaris*)
NEWNCLIBS=""
for x in $NC_LIBS ; do
case "$x" in
@@ -1002,6 +1042,7 @@ if test "x$enable_jna" = xyes ; then
AC_DEFINE([JNA], [1], [if true, include JNA bug fix])
fi
+
AC_SUBST(NC_LIBS,[$NC_LIBS])
AC_SUBST(HAS_DAP,[$enable_dap])
AC_SUBST(HAS_NC2,[$nc_build_v2])
@@ -1032,9 +1073,11 @@ AH_BOTTOM([#include "ncconfigure.h"])
# debugging purposes.
# cp confdefs.h my_config.h
-# Create output variables from various
+#####
+# Create output variables from various
# shell variables, for use in generating
# libnetcdf.settings.
+#####
AC_SUBST([enable_shared])
AC_SUBST([enable_static])
AC_SUBST([CFLAGS])
@@ -1044,13 +1087,48 @@ AC_SUBST([AM_CFLAGS])
AC_SUBST([AM_CPPFLAGS])
AC_SUBST([AM_LDFLAGS])
+# Args:
+# 1. netcdf_meta.h variable
+# 2. conditional variable that is yes or no.
+# 3. default condition
+#
+# example: AX_SET_META([NC_HAS_NC2],[$nc_build_v2],[]) # Because it checks for no.
+# AX_SET_META([NC_HAS_HDF4],[$enable_hdf4],[yes])
+AC_DEFUN([AX_SET_META],[
+ if [ test "x$2" = x$3 ]; then
+ AC_SUBST([$1]) $1=1
+ else
+ AC_SUBST([$1]) $1=0
+ fi
+])
+
+#####
+# Define values used in include/netcdf_meta.h
+#####
+AC_SUBST([NC_VERSION]) NC_VERSION=$VERSION
+AX_SET_META([NC_HAS_NC2],[$nc_build_v2],[yes])
+AX_SET_META([NC_HAS_NC4],[$enable_netcdf_4],[yes])
+AX_SET_META([NC_HAS_HDF4],[$enable_hdf4],[yes])
+AX_SET_META([NC_HAS_HDF5],[$enable_netcdf_4],[yes])
+AX_SET_META([NC_HAS_SZIP],[$ac_cv_func_H5Z_SZIP],[yes])
+AX_SET_META([NC_HAS_DAP],[$enable_dap],[yes])
+AX_SET_META([NC_HAS_DISKLESS],[$enable_diskless],[yes])
+AX_SET_META([NC_HAS_MMAP],[$enable_mmap],[yes])
+AX_SET_META([NC_HAS_JNA],[$enable_jna],[yes])
+AX_SET_META([NC_HAS_PNETCDF],[$enable_pnetcdf],[yes])
+AX_SET_META([NC_HAS_PARALLEL],[$enable_parallel],[yes])
+#####
+# End netcdf_meta.h definitions.
+#####
AC_MSG_NOTICE([generating header files and makefiles])
AC_CONFIG_FILES([Makefile
nc-config
netcdf.pc
- libnetcdf.settings
+ libnetcdf.settings
+ postinstall.sh
+ include/netcdf_meta.h
include/Makefile
h5_test/Makefile
docs/Makefile
@@ -1071,8 +1149,8 @@ AC_CONFIG_FILES([Makefile
libdap2/Makefile
libdispatch/Makefile
liblib/Makefile
- ncdump/cdl4/Makefile
- ncdump/expected4/Makefile
+ ncdump/cdl/Makefile
+ ncdump/expected/Makefile
ncdap_test/Makefile
ncdap_test/testdata3/Makefile
ncdap_test/expected3/Makefile
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..fc98710
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputting dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'. Note that this directory component will
+# be either empty or ending with a '/' character. This is deliberate.
+set_dir_from ()
+{
+ case $1 in
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+ *) dir=;;
+ esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+ echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+ # If the compiler actually managed to produce a dependency file,
+ # post-process it.
+ if test -f "$tmpdepfile"; then
+ # Each line is of the form 'foo.o: dependency.h'.
+ # Do two passes, one to just change these to
+ # $object: dependency.h
+ # and one to simply output
+ # dependency.h:
+ # which is needed to avoid the deleted-header problem.
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+ } > "$depfile"
+ rm -f "$tmpdepfile"
+ else
+ make_dummy_depfile
+ fi
+}
+
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+ # This is just like msvisualcpp but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The second -e expression handles DOS-style file names with drive
+ # letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'. On the theory
+## that the space means something, we add a space to the output as
+## well. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like '#:fec' to the end of the
+ # dependency line.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+ | tr "$nl" ' ' >> "$depfile"
+ echo >> "$depfile"
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> "$depfile"
+ else
+ make_dummy_depfile
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts '$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ set_dir_from "$object"
+ set_base_from "$object"
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$base.u
+ tmpdepfile3=$dir.libs/$base.u
+ "$@" -Wc,-M
+ else
+ tmpdepfile1=$dir$base.u
+ tmpdepfile2=$dir$base.u
+ tmpdepfile3=$dir$base.u
+ "$@" -M
+ fi
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ aix_post_process_depfile
+ ;;
+
+tcc)
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+ # FIXME: That version still under development at the moment of writing.
+ # Make that this statement remains true also for stable, released
+ # versions.
+ # It will wrap lines (doesn't matter whether long or short) with a
+ # trailing '\', as in:
+ #
+ # foo.o : \
+ # foo.c \
+ # foo.h \
+ #
+ # It will put a trailing '\' even on the last line, and will use leading
+ # spaces rather than leading tabs (at least since its commit 0394caf7
+ # "Emit spaces for -MD").
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+ # We have to change lines of the first kind to '$object: \'.
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+ # And for each line of the second kind, we have to emit a 'dep.h:'
+ # dummy dependency, to avoid the deleted-header problem.
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using '\' :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+ set_dir_from "$object"
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ set_base_from "$source"
+ tmpdepfile=$base.d
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir=$base.d-lock
+ trap "
+ echo '$0: caught signal, cleaning up...' >&2
+ rmdir '$lockdir'
+ exit 1
+ " 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0; do
+ # mkdir is a portable test-and-set.
+ if mkdir "$lockdir" 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rmdir "$lockdir"
+ break
+ else
+ # If the lock is being held by a different process, wait
+ # until the winning process is done or we timeout.
+ while test -d "$lockdir" && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
+
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ set_dir_from "$object"
+ set_base_from "$object"
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add 'dependent.h:' lines.
+ sed -ne '2,${
+ s/^ *//
+ s/ \\*$//
+ s/$/:/
+ p
+ }' "$tmpdepfile" >> "$depfile"
+ else
+ make_dummy_depfile
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in 'foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ set_dir_from "$object"
+ set_base_from "$object"
+
+ if test "$libtool" = yes; then
+ # Libtool generates 2 separate objects for the 2 libraries. These
+ # two compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir$base.o.d # libtool 1.5
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise.
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ # Same post-processing that is required for AIX mode.
+ aix_post_process_depfile
+ ;;
+
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove '-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for ':'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+ "$@" $dashmflag |
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ tr ' ' "$nl" < "$tmpdepfile" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no eat=no
+ for arg
+ do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ if test $eat = yes; then
+ eat=no
+ continue
+ fi
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -arch)
+ eat=yes ;;
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix=`echo "$object" | sed 's/^.*\././'`
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process the last invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed '1,2d' "$tmpdepfile" \
+ | tr ' ' "$nl" \
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove '-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E \
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ | sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test "X$1" != 'X--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E 2>/dev/null |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvcmsys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
index a5e0844..20125e6 100644
--- a/docs/CMakeLists.txt
+++ b/docs/CMakeLists.txt
@@ -7,51 +7,62 @@ IF(ENABLE_DOXYGEN)
FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.html ${CMAKE_CURRENT_SOURCE_DIR}/images ${CMAKE_CURRENT_SOURCE_DIR}/*.doc ${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${CMAKE_CURRENT_SOURCE_DIR}/*.m4 ${CMAKE_CURRENT_SOURCE_DIR}/*.texi)
FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- # Set abs_top_srcdir to work with the autotools
+ # Set abs_top_srcdir to work with the autotools
# doxyfile template.
SET(abs_top_srcdir ${CMAKE_SOURCE_DIR})
SET(abs_builddir ${CMAKE_CURRENT_BINARY_DIR})
+
# Create general and guide doxyfiles.
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
- CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.guide.in
- ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide @ONLY)
- CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.tutorial.in
- ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial @ONLY)
- # We need to loop through twice. First to generate tags.
- ADD_CUSTOM_TARGET(all_doc_tags ALL
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating API Tags" VERBATIM
- )
- ADD_CUSTOM_TARGET(all_doc_tags_guide ALL
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating Guide Tags" VERBATIM
- )
- ADD_CUSTOM_TARGET(all_doc_tags_tutorial ALL
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating Tutorial Tags" VERBATIM
- )
-
- # Second, generate documentation that uses the tags.
+ # Generate User Documentation
ADD_CUSTOM_TARGET(doc_all ALL
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating API Documentation" VERBATIM
- )
- ADD_CUSTOM_TARGET(doc_guide ALL
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating NetCDF Users Guide" VERBATIM
- )
- ADD_CUSTOM_TARGET(doc_tutorial ALL
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating Tutorial Tags" VERBATIM
- )
+ COMMENT "Generating API Documentation" VERBATIM)
+
+ # If ENABLE_DOXYGEN_LATEX_OUTPUT is true, automatically build
+ # the PDF files.
+ IF(ENABLE_DOXYGEN_PDF_OUTPUT)
+ # Process 'main' netcdf documentation.
+ FIND_PROGRAM(NC_MAKE NAMES make)
+ FIND_PROGRAM(NC_PDFLATEX NAMES pdflatex)
+ IF(NOT NC_MAKE OR NOT NC_PDFLATEX)
+ MESSAGE(WARNING "Unable to locate 'make' and/or 'pdflatex' program. Unable to build pdf documentation.")
+ ELSE()
+ ADD_CUSTOM_TARGET(doc_all_pdf ALL
+ make
+ COMMAND mv refman.pdf ../netcdf.pdf
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/latex_main"
+ COMMENT "Building NetCDF PDF Documentation" VERBATIM
+ )
+
+ # Process 'guide' netcdf documentation.
+ ADD_CUSTOM_TARGET(doc_guide_pdf ALL
+ make
+ COMMAND mv refman.pdf ../netcdf-guide.pdf
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/latex_guide"
+ COMMENT "Building NetCDF-Guide PDF Documentation" VERBATIM
+ )
+
+ # Process 'tutorial' netcdf documentation.
+ ADD_CUSTOM_TARGET(doc_tutorial_pdf ALL
+ make
+ COMMAND mv refman.pdf ../netcdf-tutorial.pdf
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/latex_tutorial"
+ COMMENT "Building NetCDF-Tutorial PDF Documentation" VERBATIM
+ )
+ INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/netcdf.pdf"
+ "${CMAKE_CURRENT_BINARY_DIR}/netcdf-guide.pdf"
+ "${CMAKE_CURRENT_BINARY_DIR}/netcdf-tutorial.pdf"
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}/pdf"
+ COMPONENT documentation)
+
+ ENDIF()
+
+ ENDIF()
+
# Copy the image files used by markdown documentation
# manually.
@@ -60,8 +71,8 @@ IF(ENABLE_DOXYGEN)
FILE(COPY ${IMG_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html)
- INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/
- DESTINATION ${CMAKE_INSTALL_DOCDIR}
+ INSTALL(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/"
+ DESTINATION "${CMAKE_INSTALL_DOCDIR}/html"
COMPONENT documentation)
ENDIF(ENABLE_DOXYGEN)
diff --git a/COPYRIGHT b/docs/COPYRIGHT.dox
similarity index 96%
copy from COPYRIGHT
copy to docs/COPYRIGHT.dox
index 6ed26bc..1062dd5 100644
--- a/COPYRIGHT
+++ b/docs/COPYRIGHT.dox
@@ -1,13 +1,10 @@
-/*! \file
-The NetCDF Copyright.
-
-\page copyright Copyright
+/*! \page copyright COPYRIGHT
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
University Corporation for Atmospheric Research/Unidata.
-Portions of this software were developed by the Unidata Program at the
+Portions of this software were developed by the Unidata Program at the
University Corporation for Atmospheric Research.
Access and use of this software shall impose the following obligations
@@ -36,7 +33,5 @@ INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
-
-
+*/
\ No newline at end of file
diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in
index 1666c1b..d8d5e89 100644
--- a/docs/Doxyfile.in
+++ b/docs/Doxyfile.in
@@ -44,7 +44,7 @@ PROJECT_NUMBER = @PACKAGE_VERSION@
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
-PROJECT_BRIEF =
+PROJECT_BRIEF =
# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
# the documentation. The maximum height of the logo should not exceed 55 pixels
@@ -58,7 +58,7 @@ PROJECT_LOGO = @abs_top_srcdir@/docs/netcdf-50x50.png
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
-OUTPUT_DIRECTORY =
+OUTPUT_DIRECTORY =
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@@ -110,7 +110,7 @@ REPEAT_BRIEF = YES
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
-ABBREVIATE_BRIEF =
+ABBREVIATE_BRIEF =
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
@@ -144,7 +144,7 @@ FULL_PATH_NAMES = NO
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
@@ -153,7 +153,7 @@ STRIP_FROM_PATH =
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
-STRIP_FROM_INC_PATH =
+STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
@@ -208,7 +208,7 @@ SEPARATE_MEMBER_PAGES = NO
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.
-TAB_SIZE = 8
+TAB_SIZE = 4
# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
@@ -220,13 +220,13 @@ TAB_SIZE = 8
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines.
-ALIASES =
+ALIASES =
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
# will allow you to use the command class in the itcl::class meaning.
-TCL_SUBST =
+TCL_SUBST =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
@@ -270,7 +270,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.
-EXTENSION_MAPPING =
+EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
@@ -606,7 +606,7 @@ GENERATE_DEPRECATEDLIST= YES
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
# ... \endcond blocks.
-ENABLED_SECTIONS =
+ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
@@ -648,7 +648,7 @@ SHOW_NAMESPACES = YES
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
-FILE_VERSION_FILTER =
+FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
@@ -672,7 +672,7 @@ LAYOUT_FILE = @abs_top_srcdir@/docs/DoxygenLayout.xml
# search path. Do not use file names with spaces, bibtex cannot handle them. See
# also \cite for info how to create references.
-CITE_BIB_FILES =
+CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
@@ -731,7 +731,7 @@ WARN_FORMAT = "$file:$line: $text"
# messages should be written. If left blank the output is written to standard
# error (stderr).
-WARN_LOGFILE =
+WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
@@ -744,32 +744,34 @@ WARN_LOGFILE =
# Note: If this tag is empty the current directory is searched.
INPUT = \
- @abs_top_srcdir@/RELEASE_NOTES.md \
- @abs_top_srcdir@/COPYRIGHT \
- @abs_top_srcdir@/docs/groups.dox \
@abs_top_srcdir@/docs/mainpage.dox \
+ @abs_top_srcdir@/RELEASE_NOTES.md \
+ @abs_top_srcdir@/docs/architecture.dox \
@abs_top_srcdir@/docs/install.md \
@abs_top_srcdir@/docs/install-fortran.md \
@abs_top_srcdir@/docs/dispatch.dox \
@abs_top_srcdir@/docs/types.dox \
@abs_top_srcdir@/docs/notes.dox \
- @abs_top_srcdir@/docs/cdl.dox \
- @abs_top_srcdir@/docs/architecture.dox \
@abs_top_srcdir@/docs/internal.dox \
@abs_top_srcdir@/docs/windows-binaries.md \
@abs_top_srcdir@/docs/all-error-codes.md \
- @abs_top_srcdir@/docs/cmake_faq.md \
+ @abs_top_srcdir@/docs/guide.dox \
+ @abs_top_srcdir@/docs/tutorial.dox \
+ @abs_top_srcdir@/docs/FAQ.md \
+ @abs_top_srcdir@/docs/COPYRIGHT.dox \
+ @abs_top_srcdir@/docs/credits.md \
@abs_top_srcdir@/include/netcdf.h \
+ @abs_top_srcdir@/include/netcdf_meta.h \
@abs_top_srcdir@/libdispatch/dfile.c \
@abs_top_srcdir@/libdispatch/ddim.c \
- @abs_top_srcdir@/libdispatch/datt.c \
- @abs_top_srcdir@/libdispatch/dattget.c \
- @abs_top_srcdir@/libdispatch/dattinq.c \
- @abs_top_srcdir@/libdispatch/dattput.c \
@abs_top_srcdir@/libdispatch/dvar.c \
@abs_top_srcdir@/libdispatch/dvarget.c \
@abs_top_srcdir@/libdispatch/dvarinq.c \
@abs_top_srcdir@/libdispatch/dvarput.c \
+ @abs_top_srcdir@/libdispatch/datt.c \
+ @abs_top_srcdir@/libdispatch/dattget.c \
+ @abs_top_srcdir@/libdispatch/dattinq.c \
+ @abs_top_srcdir@/libdispatch/dattput.c \
@abs_top_srcdir@/libdispatch/dgroup.c \
@abs_top_srcdir@/libdispatch/dtype.c \
@abs_top_srcdir@/libdispatch/dcompound.c \
@@ -780,8 +782,17 @@ INPUT = \
@abs_top_srcdir@/libdispatch/derror.c \
@abs_top_srcdir@/libdispatch/dv2i.c \
@abs_top_srcdir@/libsrc4/nc4file.c \
- @abs_top_srcdir@/ncdump/ncdump.c \
- @abs_top_srcdir@/ncdump/nccopy.c
+ @abs_top_srcdir@/examples/C/simple_xy_wr.c \
+ @abs_top_srcdir@/examples/C/simple_xy_rd.c \
+ @abs_top_srcdir@/examples/C/sfc_pres_temp_wr.c \
+ @abs_top_srcdir@/examples/C/sfc_pres_temp_rd.c \
+ @abs_top_srcdir@/examples/C/pres_temp_4D_wr.c \
+ @abs_top_srcdir@/examples/C/pres_temp_4D_rd.c \
+ @abs_top_srcdir@/examples/C/simple_nc4_wr.c \
+ @abs_top_srcdir@/examples/C/simple_nc4_rd.c \
+ @abs_top_srcdir@/examples/C/simple_xy_nc4_wr.c \
+ @abs_top_srcdir@/examples/C/simple_xy_nc4_rd.c
+
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -801,13 +812,13 @@ INPUT_ENCODING = UTF-8
# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
# *.qsf, *.as and *.js.
-FILE_PATTERNS =
+FILE_PATTERNS =
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.
-RECURSIVE = YES
+RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
@@ -816,7 +827,7 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE =
+EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -832,7 +843,7 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -843,7 +854,7 @@ EXCLUDE_PATTERNS =
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*
-EXCLUDE_SYMBOLS =
+EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
@@ -856,7 +867,7 @@ EXAMPLE_PATH = @abs_top_srcdir@/examples/C
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
-EXAMPLE_PATTERNS =
+EXAMPLE_PATTERNS =
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
@@ -881,7 +892,7 @@ IMAGE_PATH = @abs_top_srcdir@/docs/images/chunking2.png \
@abs_top_srcdir@/docs/images/netcdf_architecture.png \
@abs_top_srcdir@/docs/images/pnetcdf.png \
@abs_top_srcdir@/docs/images/deptree.jpg \
- @abs_top_srcdir@/docs/images/InstallTreeWindows.jpg
+ @abs_top_srcdir@/docs/images/InstallTreeWindows.png
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
@@ -898,7 +909,7 @@ IMAGE_PATH = @abs_top_srcdir@/docs/images/chunking2.png \
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
-INPUT_FILTER =
+INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
@@ -907,7 +918,7 @@ INPUT_FILTER =
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
-FILTER_PATTERNS =
+FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER ) will also be used to filter the input files that are used for
@@ -922,14 +933,14 @@ FILTER_SOURCE_FILES = NO
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-FILTER_SOURCE_PATTERNS =
+FILTER_SOURCE_PATTERNS =
# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.
-USE_MDFILE_AS_MAINPAGE =
+USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# Configuration options related to source browsing
@@ -1034,7 +1045,7 @@ VERBATIM_HEADERS = YES
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-# CLANG_OPTIONS =
+# CLANG_OPTIONS =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
@@ -1060,7 +1071,7 @@ COLS_IN_ALPHA_INDEX = 5
# while generating the index headers.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-IGNORE_PREFIX =
+IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
@@ -1104,7 +1115,7 @@ HTML_FILE_EXTENSION = .html
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_HEADER =
+HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard
@@ -1126,7 +1137,7 @@ HTML_FOOTER = @abs_top_srcdir@/docs/footer.html
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_STYLESHEET =
+HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
# defined cascading style sheet that is included after the standard style sheets
@@ -1137,7 +1148,7 @@ HTML_STYLESHEET =
# see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_STYLESHEET =
+HTML_EXTRA_STYLESHEET =
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
@@ -1153,7 +1164,7 @@ HTML_EXTRA_STYLESHEET =
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_EXTRA_FILES =
+HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the stylesheet and background images according to
@@ -1281,7 +1292,7 @@ GENERATE_HTMLHELP = NO
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_FILE =
+CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler ( hhc.exe). If non-empty
@@ -1289,7 +1300,7 @@ CHM_FILE =
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-HHC_LOCATION =
+HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated (
# YES) or that it should be included in the master .chm file ( NO).
@@ -1302,7 +1313,7 @@ GENERATE_CHI = NO
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_INDEX_ENCODING =
+CHM_INDEX_ENCODING =
# The BINARY_TOC flag controls whether a binary table of contents is generated (
# YES) or a normal table of contents ( NO) in the .chm file.
@@ -1332,7 +1343,7 @@ GENERATE_QHP = NO
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QCH_FILE =
+QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
@@ -1357,7 +1368,7 @@ QHP_VIRTUAL_FOLDER = doc
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
@@ -1365,21 +1376,21 @@ QHP_CUST_FILTER_NAME =
# filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_CUST_FILTER_ATTRS =
+QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHP_SECT_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
# The QHG_LOCATION tag can be used to specify the location of Qt's
# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
# generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.
-QHG_LOCATION =
+QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
@@ -1505,7 +1516,7 @@ MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_EXTENSIONS =
+MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
@@ -1513,7 +1524,7 @@ MATHJAX_EXTENSIONS =
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
-MATHJAX_CODEFILE =
+MATHJAX_CODEFILE =
# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
# the HTML output. The underlying search engine uses javascript and DHTML and
@@ -1546,7 +1557,7 @@ SEARCHENGINE = YES
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
-SERVER_BASED_SEARCH = NO
+SERVER_BASED_SEARCH = @SERVER_SIDE_SEARCH@
# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
@@ -1573,7 +1584,7 @@ EXTERNAL_SEARCH = NO
# Searching" for details.
# This tag requires that the tag SEARCHENGINE is set to YES.
-SEARCHENGINE_URL =
+SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
@@ -1589,7 +1600,7 @@ SEARCHDATA_FILE = searchdata.xml
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.
-EXTERNAL_SEARCH_ID =
+EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
@@ -1599,7 +1610,7 @@ EXTERNAL_SEARCH_ID =
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.
-EXTRA_SEARCH_MAPPINGS =
+EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
@@ -1608,7 +1619,7 @@ EXTRA_SEARCH_MAPPINGS =
# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
# The default value is: YES.
-GENERATE_LATEX = NO
+GENERATE_LATEX = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1616,7 +1627,7 @@ GENERATE_LATEX = NO
# The default directory is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_OUTPUT = latex
+LATEX_OUTPUT = latex_main
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
@@ -1660,7 +1671,7 @@ PAPER_TYPE = a4wide
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-EXTRA_PACKAGES =
+EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
# generated LaTeX document. The header should contain everything until the first
@@ -1676,7 +1687,7 @@ EXTRA_PACKAGES =
# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_HEADER =
+LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last
@@ -1685,7 +1696,7 @@ LATEX_HEADER =
# Note: Only use a user-defined footer if you know what you are doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_FOOTER =
+LATEX_FOOTER =
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
@@ -1693,7 +1704,7 @@ LATEX_FOOTER =
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_EXTRA_FILES =
+LATEX_EXTRA_FILES =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
@@ -1793,14 +1804,14 @@ RTF_HYPERLINKS = NO
# default style sheet that doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_STYLESHEET_FILE =
+RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an RTF document. Syntax is
# similar to doxygen's config file. A template extensions file can be generated
# using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_EXTENSIONS_FILE =
+RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# Configuration options related to the man page output
@@ -1857,18 +1868,6 @@ GENERATE_XML = NO
XML_OUTPUT = xml
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD =
-
# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
@@ -1944,7 +1943,7 @@ PERLMOD_PRETTY = YES
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-PERLMOD_MAKEVAR_PREFIX =
+PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
@@ -1985,7 +1984,7 @@ SEARCH_INCLUDES = YES
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-INCLUDE_PATH =
+INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
@@ -1993,7 +1992,7 @@ INCLUDE_PATH =
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-INCLUDE_FILE_PATTERNS =
+INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
@@ -2012,7 +2011,7 @@ PREDEFINED = USE_NETCDF4
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-EXPAND_AS_DEFINED =
+EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
# remove all refrences to function-like macros that are alone on a line, have an
@@ -2041,13 +2040,13 @@ SKIP_FUNCTION_MACROS = YES
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.
-TAGFILES = @abs_builddir@/guide.tag=html_guide/ "@abs_builddir@/tutorial.tag = html_tutorial/"
+# TAGFILES = html/guide.tag=./html_guide "html/tutorial.tag = ./html_tutorial"
# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.
-GENERATE_TAGFILE = @abs_builddir@/main.tag
+# GENERATE_TAGFILE = html/main.tag
# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
# class index. If set to NO only the inherited external classes will be listed.
@@ -2095,14 +2094,14 @@ CLASS_DIAGRAMS = YES
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
-MSCGEN_PATH =
+MSCGEN_PATH =
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
-DIA_PATH =
+DIA_PATH =
# If set to YES, the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
@@ -2151,7 +2150,7 @@ DOT_FONTSIZE = 10
# the path where dot can find it using this tag.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_FONTPATH =
+DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
# each documented class showing the direct and indirect inheritance relations.
@@ -2289,26 +2288,26 @@ INTERACTIVE_SVG = NO
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_PATH =
+DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.
-DOTFILE_DIRS =
+DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
-MSCFILE_DIRS =
+MSCFILE_DIRS =
# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
# command).
-DIAFILE_DIRS =
+DIAFILE_DIRS =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
diff --git a/docs/Doxyfile.tutorial.in b/docs/Doxyfile.tutorial.in
deleted file mode 100644
index e7b399c..0000000
--- a/docs/Doxyfile.tutorial.in
+++ /dev/null
@@ -1,2344 +0,0 @@
-# Doxyfile 1.8.3, mixed with 1.8.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = "The NetCDF-C Tutorial"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER = @PACKAGE_VERSION@
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
-
-PROJECT_LOGO = @abs_top_srcdir@/docs/netcdf-50x50.png
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = NO
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = YES
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
-#
-# Note For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = YES
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = @SHOW_DOXYGEN_TODO_LIST@
-
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE = @abs_top_srcdir@/docs/DoxygenLayout.xml
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = NO
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT = @abs_top_srcdir@/docs/tutorial.dox \
- @abs_top_srcdir@/examples/C/simple_xy_wr.c \
- @abs_top_srcdir@/examples/C/simple_xy_rd.c \
- @abs_top_srcdir@/examples/C/sfc_pres_temp_wr.c \
- @abs_top_srcdir@/examples/C/sfc_pres_temp_rd.c \
- @abs_top_srcdir@/examples/C/pres_temp_4D_wr.c \
- @abs_top_srcdir@/examples/C/pres_temp_4D_rd.c \
- @abs_top_srcdir@/examples/C/simple_nc4_wr.c \
- @abs_top_srcdir@/examples/C/simple_nc4_rd.c \
- @abs_top_srcdir@/examples/C/simple_xy_nc4_wr.c \
- @abs_top_srcdir@/examples/C/simple_xy_nc4_rd.c
-
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH = @abs_top_srcdir@/examples/C
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH = @abs_top_srcdir@/docs/images/chunking2.png \
- @abs_top_srcdir@/docs/images/compatibility3.png \
- @abs_top_srcdir@/docs/images/compression.png \
- @abs_top_srcdir@/docs/images/groups.png \
- @abs_top_srcdir@/docs/images/nc4-model.png \
- @abs_top_srcdir@/docs/images/ncatts.png \
- @abs_top_srcdir@/docs/images/nc-classic-uml.png \
- @abs_top_srcdir@/docs/images/nccoords.png \
- @abs_top_srcdir@/docs/images/ncfile.png \
- @abs_top_srcdir@/docs/images/netcdf_architecture.png \
- @abs_top_srcdir@/docs/images/pnetcdf.png \
- @abs_top_srcdir@/docs/images/deptree.jpg \
- @abs_top_srcdir@/docs/images/InstallTreeWindows.jpg
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
-# cost of reduced performance. This can be particularly helpful with template
-# rich C++ code for which doxygen's built-in parser lacks the necessary type
-# information.
-# Note: The availability of this option depends on whether or not doxygen was
-# compiled with the --with-libclang option.
-# The default value is: NO.
-
-# CLANG_ASSISTED_PARSING = NO
-
-# If clang assisted parsing is enabled you can provide the compiler with command
-# line options that you would normally use when invoking the compiler. Note that
-# the include paths will already be set by doxygen for the files and directories
-# specified with INPUT and INCLUDE_PATH.
-# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-
-# CLANG_OPTIONS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = NO
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = html/html_tutorial
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER = @abs_top_srcdir@/docs/footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-# HTML_ALIGN_MEMBERS = YES
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = YES
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS = YES
-
-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN = YES
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT = docbook
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
-# Definitions (see http://autogen.sf.net) file that captures the structure of
-# the code including all documentation. Note that this feature is still
-# experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
-# in the source code. If set to NO only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED = USE_NETCDF4
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES = @abs_builddir@/main.tag=../ "@abs_builddir@/guide.tag = ../html_guide/"
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE = @abs_builddir@/tutorial.tag
-
-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
-# class index. If set to NO only the inherited external classes will be listed.
-# The default value is: NO.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
-# the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS = NO
-
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES = NO
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT = @HAVE_DOT@
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS = 0
-
-# When you want a differently looking font n the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH = YES
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP = YES
diff --git a/docs/DoxygenLayout.xml b/docs/DoxygenLayout.xml
index fa8d07d..0706b11 100644
--- a/docs/DoxygenLayout.xml
+++ b/docs/DoxygenLayout.xml
@@ -1,24 +1,24 @@
<doxygenlayout version="1.0">
<!-- Navigation index tabs for HTML output -->
<navindex>
- <tab type="mainpage" visible="yes" title=""/>
- <tab type="pages" visible="yes" title="" intro=""/>
- <tab type="modules" visible="yes" title="Functions" intro="Functions are organized according to the netCDF data model."/>
+ <tab type="mainpage" visible="yes" title="NetCDF Documentation"/>
+ <tab type="pages" visible="yes" title="Navigation" intro=""/>
+ <tab type="modules" visible="yes" title="NetCDF Functions" intro="Functions are organized according to the netCDF data model."/>
<tab type="namespaces" visible="no" title="">
<tab type="namespaces" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="no" title="">
<tab type="classes" visible="yes" title="" intro=""/>
- <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
+ <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="yes" title="">
- <tab type="files" visible="yes" title="" intro=""/>
+ <tab type="files" visible="yes" title="Source Files" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
- <tab type="examples" visible="yes" title="" intro=""/>
+ <tab type="examples" visible="yes" title="" intro=""/>
</navindex>
<!-- Layout definition for a class page -->
diff --git a/docs/FAQ.md b/docs/FAQ.md
new file mode 100644
index 0000000..b619ba8
--- /dev/null
+++ b/docs/FAQ.md
@@ -0,0 +1,1952 @@
+FAQ {#ncFAQ}
+=======================
+
+[TOC]
+
+General {#ncFAQGeneral}
+=======
+
+What Is netCDF? {#What-Is-netCDF}
+-----------------
+
+
+NetCDF (network Common Data Form) is a set of interfaces for
+array-oriented data access and a [freely](http://www.unidata.ucar.edu/netcdf/docs/COPYRIGHT) distributed
+collection of data access libraries for C, Fortran, C++, Java, and other
+languages. The netCDF libraries support a machine-independent format for
+representing scientific data. Together, the interfaces, libraries, and
+format support the creation, access, and sharing of scientific data.
+
+NetCDF data is:
+
+- *Self-Describing*. A netCDF file includes information about the data
+ it contains.
+- *Portable*. A netCDF file can be accessed by computers with
+ different ways of storing integers, characters, and floating-point
+ numbers.
+- *Scalable*. A small subset of a large dataset may be accessed
+ efficiently.
+- *Appendable*. Data may be appended to a properly structured netCDF
+ file without copying the dataset or redefining its structure.
+- *Sharable*. One writer and multiple readers may simultaneously
+ access the same netCDF file.
+- *Archivable*. Access to all earlier forms of netCDF data will be
+ supported by current and future versions of the software.
+
+The netCDF software was developed by Glenn Davis, Russ Rew, Ed Hartnett,
+John Caron, Dennis Heimbigner, Steve Emmerson, Harvey Davies, and Ward
+Fisher at the Unidata Program Center in Boulder, Colorado, with
+[contributions](/netcdf/credits.html) from many other netCDF users.
+
+----------
+
+How do I get the netCDF software package? {#HowdoIgetthenetCDFsoftwarepackage}
+-----------------
+
+
+The latest source distribution, which includes the C libraries and
+utility programs, is available from [the NetCDF Downloads
+page](/downloads/netcdf/index.jsp). Separate source distributions for
+the Java library, Fortran libraries, and C++ libraries are also
+available there. Installation instructions are available with the
+distribution or [online](http://www.unidata.ucar.edu/software/netcdf/docs/building.html).
+
+Binary distributions of netCDF are available for various platforms from
+package management systems such as dpkg, RPM, fink, MacPorts, Homebrew,
+OpenCSW, OpenPKG, and the FreeBSD Ports Collection.
+
+----------
+
+How do I convert netCDF data to ASCII or text? {#How-do-I-convert-netCDF-data-to-ASCII-or-text}
+-----------------
+
+
+
+One way to convert netCDF data to text is to use the **ncdump** tool
+that is part of the netCDF software distribution. It is a command line
+tool that provides a text representation of all the netCDF data, just
+the structure of a netCDF file, or just the data for specified
+variables, depending on what arguments you use. For more information,
+see the [ncdump documentation](http://www.unidata.ucar.edu/software/netcdf/docs/ncdump-man-1.html).
+
+Another good tool for conversion of netCDF data to text is the ["ncks" program](http://nco.sourceforge.net/nco.html#ncks-netCDF-Kitchen-Sink) that's one of the utility programs in the [NCO (NetCDF Operators)](software.html#NCO) package. Similar capabilities are available using programs from the [CDO (Climate Data Operators)](software.html#CDO) software, commands from [NCL (NCAR Command Language)](software.html#NCL), or various other packages such as [ANAX](http://science.arm.gov/~cflynn/ [...]
+
+You can also get netCDF data in ASCII from an OPeNDAP server by using a
+".ascii" extension with the URL that specifies the data. For details,
+see the OPeNDAP page on [Using a Spreadsheet Application with DODS](http://www.opendap.org/useExcel).
+
+Another freely available tool, [netcdf4excel](https://code.google.com/p/netcdf4excel/), has been developed as a netCDF add-in for MS Excel that can facilitate the conversion of netCDF data to and from text form.
+
+Note that **ncdump** and similar tools can print metadata and data values
+from netCDF files, but in general they don't understand coordinate
+systems specified in the metadata, only variable arrays and their
+indices. To interpret georeferencing metadata so you can print the data
+within a latitude/longitude bounding box, for example, you need a higher
+level tool that interprets conventions for specifying coordinates, such
+as the CF conventions. Or you can write a small program using one of the
+language APIs that provide netCDF support, for which [examples are available](http://www.unidata.ucar.edu/software/netcdf/examples/programs/).
+
+----------
+
+How do I convert ASCII or text data to netCDF? {#How-do-I-convert-ASCII-or-text-data-to-netCDF}
+-----------------
+
+
+One way to convert data in text form to netCDF is to use the **ncgen**
+tool that is part of the netCDF software distribution. Using **ncgen** for
+this purpose is a two-step process:
+
+1. Convert text data to a file in [CDL form](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#CDL-Syntax) using a text
+ editor or text manipulation tools
+2. Convert the CDL representation to netCDF using the **ncgen** tool with
+ the "-o" or "-b" option
+
+For more information, see the [ncgen documentation](http://www.unidata.ucar.edu/software/netcdf/docs/ncgen-man-1.html).
+
+If you have installed the NCAR Command Language
+([NCL](http://www.ncl.ucar.edu/)) software, there are functions
+available and described
+[here](http://www.ncl.ucar.edu/Applications/list_io.shtml) and
+[here](http://www.ncl.ucar.edu/Applications/read_ascii.shtml) for
+reading ASCII and tables into NCL and writing the data out to netCDF
+files.
+
+With access to [MATLAB](http://www.mathworks.com/), you can create a
+schema for the desired netCDF file using
+[ncwriteschema](http://www.mathworks.com/help/techdoc/ref/ncwriteschema.html),
+read the data using
+[textscan](http://www.mathworks.com/help/techdoc/ref/textscan.html), and
+write the data to a netCDF file using
+[ncwrite](http://www.mathworks.com/help/techdoc/ref/ncwrite.html).
+
+What's new in the latest netCDF release?
+
+
+[Release notes](http://www.unidata.ucar.edu/software/netcdf/release-notes-latest.html) for the
+latest netCDF release are available that describe new features and fixed
+bugs since the previous release.
+
+----------
+
+What is the best way to represent [some particular data] using netCDF? {#What-is-the-best-way-to-represent-some-particular-data-using-netCDF}
+-----------------
+
+There are many ways to represent the same information in any
+general-purpose data model. Choices left up to the user in the case of
+netCDF include which information to represent as variables or as
+variable attributes; what names to choose for variables, dimensions, and
+attributes; what order to use for the dimensions of multidimensional
+variables; what variables to include in the same netCDF file; and how to
+use variable attributes to capture the structure and meaning of data. We
+provide some guidelines in the NetCDF User's Guide (e.g., the section on
+[Differences between Attributes and Variables](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/Differences-between-Attributes-and-Variables.html#Differences%20between%20Attributes%20and%20Variables))
+and in a new web document [Writing NetCDF Files: BestPractices](http://www.unidata.ucar.edu/software/netcdf/BestPractices.html), but we've found that
+a little experience helps. Occasionally we have decided it was useful to
+change the structure of netCDF files after experience with how the data
+is used.
+
+----------
+
+What convention should be used for the names of netCDF files? {#What-convention-should-be-used-for-the-names-of-netCDF-files}
+-----------------
+
+
+NetCDF files should have the file name extension ".nc". The recommended
+extension for netCDF files was changed from ".cdf" to ".nc" in 1994 in
+order to avoid a clash with the NASA CDF file extension, and now it also
+avoids confusion with "Channel Definition Format" files.
+
+
+
+----------
+
+Is there a mailing list for netCDF discussions and questions? {#Is-there-a-mailing-list-for-netCDF-discussions-and-questions}
+-----------------
+
+The netcdfgroup at unidata.ucar.edu mailing-list is intended for
+discussions and announcements about netCDF interfaces, software, and
+use. The volume of this list varies widely, from one message per month
+to a dozen messages per day (especially after a new release). A message
+posted to this mailing-list will be seen by several hundred people, so
+it's usually not appropriate for asking simple questions about use. Such
+questions should instead be sent to support-netcdf at unidata.ucar.edu.
+
+If you would prefer to get only a single daily digest of the postings to
+the netcdfgroup mailing-list, subscribe instead to the digest form of
+the mailing-list, containing the same messages but appearing at most
+once per day instead of whenever anyone sends a message to the group.
+
+To subscribe or unsubscribe to either of these mailing lists, use one of
+these mailing list actions:
+
+* [subscribe: non-digest](mailto:netcdfgroup-join at unidata.ucar.edu) ]
+* [subscribe: digest](mailto:netcdfgroup-request at unidata.ucar.edu?subject=subscribe%0A%20%20%20%20%20%20%20%20%20%20digest)
+]
+* [change subscription options](http://mailman.unidata.ucar.edu/mailman/options/netcdfgroup)
+* [view posts](/mailing_lists/archives/netcdfgroup/)
+* [search archives](/search.jsp).
+
+----------
+
+Where are some examples of netCDF datasets? {#Where-are-some-examples-of-netCDF-datasets}
+-----------------
+
+Here are some [example netCDF files](http://www.unidata.ucar.edu/software/netcdf/examples/files.html).
+
+----------
+
+What is the best way to handle time using netCDF? {#What-is-the-best-way-to-handle-time-using-netCDF}
+-----------------
+
+
+Discussions of conventions for representing time and handling
+time-dependent data have been a past topic of discussion on the
+netcdfgroup mailing list. When the subject comes up, interesting
+discussions often result, so we've archived past discussions on this
+subject at
+[http://www.unidata.ucar.edu/software/netcdf/time/](http://www.unidata.ucar.edu/software/netcdf/time/).
+
+A summary of Unidata's recommendations is available from
+[http://www.unidata.ucar.edu/software/netcdf/time/recs.html](http://www.unidata.ucar.edu/software/netcdf/time/recs.html).
+Briefly, we recommend use of the units conventions supported by the
+[udunits library](/software/udunits/) for time and other units
+attributes.
+
+Other groups have established more specific conventions that include the
+representation of time in netCDF files. For more information on such
+conventions, see the NetCDF Conventions Page at
+[http://www.unidata.ucar.edu/software/netcdf/conventions.html](http://www.unidata.ucar.edu/software/netcdf/conventions.html).
+
+----------
+
+Who else uses netCDF? {#Who-else-uses-netCDF}
+-----------------
+
+The netCDF mailing list has over 500 addresses (some of which are
+aliases to more addresses) in thirty countries. Several groups have
+[adopted netCDF as a standard](http://www.unidata.ucar.edu/software/netcdf/docs/standards.html) for
+representing some forms of scientific data.
+
+A somewhat dated description of some of the projects and groups that
+have used netCDF is available from
+[http://www.unidata.ucar.edu/software/netcdf/usage.html](http://www.unidata.ucar.edu/software/netcdf/usage.html).
+
+----------
+
+What are some references to netCDF? {#What-are-some-references-to-netCDF}
+-----------------
+
+
+A primary reference is the User's Guide:
+
+Rew, R. K., G. P. Davis, S. Emmerson, and H. Davies, **NetCDF User's
+Guide for C, An Interface for Data Access, Version 3**, April 1997.
+
+Current online and downloadable documentation is available from the
+[documentation directory](http://www.unidata.ucar.edu/software/netcdf/docs/index.html).
+
+Other references include:
+
+Brown, S. A, M. Folk, G. Goucher, and R. Rew, "Software for Portable
+Scientific Data Management," Computers in Physics, American Institute of
+Physics, Vol. 7, No. 3, May/June 1993, pp. 304-308.
+
+Fulker, D. W., "Unidata Strawman for Storing Earth-Referencing Data,"
+Seventh International Conference on Interactive Information and
+Processing Systems for Meteorology, Oceanography, and Hydrology, New
+Orleans, La., American Meteorology Society, January 1991.
+
+Jenter, H. L. and R. P. Signell, 1992. "[NetCDF: A Freely-Available Software-Solution to Data-Access Problems for Numerical Modelers](http://www.unidata.ucar.edu/software/netcdf/papers/jenter_signell_92.pdf)". Proceedings
+of the American Society of Civil Engineers Conference on Estuarine and
+Coastal Modeling. Tampa, Florida.
+
+Kuehn, J.A., "Faster Libraries for Creating Network-Portable
+Self-Describing Datasets", Proceedings of the 37th Cray User Group
+Meeting, (Barcelona, Spain, March 1996), Cray User Group, Inc.
+
+Rew, R. K. and G. P. Davis, "NetCDF: An Interface for Scientific Data
+Access," IEEE Computer Graphics and Applications, Vol. 10, No. 4, pp.
+76-82, July 1990.
+
+Rew, R. K. and G. P. Davis, "The Unidata netCDF: Software for Scientific
+Data Access," Sixth International Conference on Interactive Information
+and Processing Systems for Meteorology, Oceanography, and Hydrology,
+Anaheim, California, American Meteorology Society, pp. 33-40, February
+1990.
+
+Rew, R. K. and G. P. Davis, " [Unidata's netCDF Interface for Data Access: Status and Plans](/netcdf/ams97.html)," Thirteenth International Conference on Interactive Information and Processing Systems for Meteorology, Oceanography, and Hydrology, Anaheim, California, American Meteorology Society, February 1997.
+
+----------
+
+Is there a document describing the actual physical format for a Unidata netCDF file? {#Is-there-a-document-describing-the-actual-physical-format-for-a-Unidata-netCDF-file}
+-----------------
+
+A short document that specifies the [format of netCDF classic and 64-bit offset files](http://earthdata.nasa.gov/sites/default/files/esdswg/spg/rfc/esds-rfc-011/ESDS-RFC-011v2.00.pdf) has been approved as a standard by the NASA ESDS Software Process Group.
+
+In addition, the NetCDF User's Guide contains an
+[appendix](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#File-Format) with the same format specification.
+
+The ["NetCDF File Structure and Performance"](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#Structure) chapter provides a less formal explanation of the format of netCDF data to help clarify the performance implications of different data organizations.
+
+If users only access netCDF data through the documented interfaces, future changes to the format will be transparent.
+
+----------
+
+Installation and Porting {#Installation-and-Porting}
+================
+
+What does netCDF run on? {#What-does-netCDF-run-on}
+-----------------
+
+We test releases on the following operating systems with various compilers:
+
+- AIX
+- HPUX
+- IRIX, IRIX64
+- Linux
+- MacOS X
+- Solaris
+- Windows (some versions, see below)
+
+The [NetCDF Installation and Porting Guide](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/index.html) explains how to build netCDF from source on various platforms. Often, it's as easy as running
+
+~~~~ {.boldcode}
+ ./configure
+ make check install
+~~~~
+
+----------
+
+
+How can I use current versions of netCDF-4 with Windows? {#HowcanIusecu}
+------------------
+
+
+See [http://www.unidata.ucar.edu/netcdf/docs/winbin.html](http://www.unidata.ucar.edu/netcdf/win_netcdf).
+
+How can I use netCDF-4.1 with Windows? {#HowcanIusenetCDF41withWindows}
+-----------------
+
+
+We recently (Summer of 2010) refactored the core building of the netCDF
+library. Unfortunately this hopelessly broke the existing port to
+Microsoft Visual Studio. Resources permitting, the development of a new
+Visual Studio port will be undertaken in the second half of 2010 at
+Unidata. Until then, no Visual Studio port of the latest version of the
+library is available.
+
+Users are advised that the netCDF build is known to work with Cygwin,
+the free POSIX layer for Windows. Building netCDF with Cygwin, and
+including the netCDF, HDF5, zlib, and Cygwin DLLs, will allow you to
+access the netCDF C library on Windows, even from Visual Studio builds.
+
+We understand that Windows users are most comfortable with a Visual
+Studio build, and we intend to provide one.
+
+The Visual Studio port is complicated by the following factors:
+
+- No configure script support on windows - the Unix build system uses
+ a configure script to determine details of the build platform and
+ allow the user to specify settings. Windows has no mechanism for
+ this other than statically set properties. A Windows-only config.h
+ file needs to be created for windows using Cygwin, then included
+ with the distribution. Since this contains the version string, it
+ must be updated "by hand" before each release.
+- No m4 on windows - the Unix build uses the macro language m4 to
+ generate some of the C code in the netCDF library (for example,
+ libsrc/putget.c). M4 must be run under Cygwin to generate these
+ files, and then they must be statically added to the windows
+ distribution. Each new version of netCDF these files should be
+ checked for changes. We are restricting new use of m4 for netCDF
+ compiles, but that doesn't help with the existing files.
+- No user options on Windows - since Windows does not support a
+ configure step, all user options must be pre-set in the Visual
+ Studio property lists. As a simplification, many options available
+ to Unix users will be unavailable to builders on Windows, such as
+ --disable-dap, --disable-netcdf-4, and --disable-shared.
+- Large files (\> 2 GB) have proved to be a problem area in past
+ Windows builds.
+- Previous Windows ports have not had to deal with the new OPeNDAP
+ client.
+
+Unidata is a community supported organization, and we welcome
+collaboration with users who would like to assist with the windows port.
+Users should be sure to start with the netCDF daily snapshot, not a
+previous release of netCDF.
+
+NOTE: [Paratools](http://www.paratools.com/) has contributed
+[instructions for how to build netCDF-4.1.3](http://www.paratools.com/Azure/NetCDF) as a Windows DLL using the MinGW cross compiler.
+
+Nikolay Khabarov has contributed [documentation describing a netCDF-4.1.3 port](http://user.iiasa.ac.at/~khabarov/netcdf-win64-and-win32-mingw/) using MinGW to build native Windows 64-bit and 32-bit DLLs. Current limitations include leaving out support for Fortran and C++ interfaces, NetCDF-4, HDF5, the old version 2 API, and DAP access. The netCDF classic format and 64-bit offset format are fully supported. Links are provided to compiled 32-bit and 64-bit DLLs and static libraries.
+
+A developer on the GMT Wiki has posted [detailed instructions for using CMake](http://gmtrac.soest.hawaii.edu/projects/gmt/wiki/BuildingNetCDF) and MS Visual C++ on Windows to build netCDF-4.1.3, including OPeNDAP support.
+
+Another developer has contributed an unsupported native Windows build of
+netCDF-4.1.3 with 32- and 64-bit versions, Fortran bindings, and OPeNDAP
+support. The announcement of the availability of that port is
+[here](http://www.unidata.ucar.edu/mailing_lists/archives/netcdfgroup/2011/msg00363.html).
+
+User Veit Eitner has contributed a port of 4.1.1 to Visual Studio,
+including an F90 port to Intel Fortran. Download [source (ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-4.1.1-win32-src.zip)](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-4.1.1-win32-src.zip) or [binary](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf-4.1.1-win32-bin.zip) versions. This port was done before the code was refactored in 4.1.2.
+
+How can I use netCDF-4 with Windows? {#How-can-I-use-netCDF-4-with-Windows}
+-----------------
+
+
+Note that we have not ported the F90 or C++ APIs to the Windows
+platform, only the C and F77 APIs. User contributions of ports to F90
+windows compilers are very welcome (send them to
+support-netcdf at unidata.ucar.edu).
+
+On windows, NetCDF consists of a DLL and the ncgen/ncdump executables.
+The easiest course is to download one of the pre-built DLLs and
+utilities and just install them on your system.
+
+Unlike Unix builds, the Visual Studio build **always** requires HDF5,
+zlib, and szlib in all cases. All Windows DLL users must also have the
+HDF5, zlib, and szlib DLLs. These are now available from the Unidata FTP
+site:
+
+- [zlib DLLs for 32-bit Windows](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/zlib123-vs2005.zip)
+- [szlib DLLs for 32-bit Windows](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/szip21-vs6-enc.zip)
+- [HDF5 DLLs for 32-bit Windows](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/5-181-win-vs2005.zip)
+
+Two versions of the netCDF DLLs are available, for different Fortran
+compilers:
+
+- [NetCDF for Intel and Portland Group Fortran compilers.](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/win32_vs_PGI_dll_4.0.1.zip)
+- [NetCDF for other Fortran compilers.](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/win32_vs_f2c_dll_4.0.1.zip)
+
+To use netCDF, install the DLLs in /system/win32 and the .h files in a
+directory known to your compiler, and define the DLL\_NETCDF
+preprocessor macro before including netcdf.h.
+
+The netCDF-4 library can also be built using Visual Studio 2008. Open
+the solution file win32/NET/netcdf.sln.
+
+If you install the header files in \\include directory, the netCDF
+solution file will work without modifications. Otherwise the properties
+of the netcdf project must be changed to include the proper header
+directory.
+
+Both the debug and release builds work. The release build links to
+different system libraries on Windows, and will not allow debuggers to
+step into netCDF library code. This is the build most users will be
+interested in. The debug build is probably of interest only to netCDF
+library developers.
+
+As of version 4.0.1 (March 2009), the DLL build does not yet include any
+testing of the extended netCDF-4 data model. The netCDF4/HDF5 format is
+extensively tested in the classic model, but tests for groups,
+user-defined types, and other features of the expanded netCDF-4 data
+model have not yet been ported to Windows.
+
+The [NetCDF Installation and Porting Guide](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/index.html) documents how to
+use netCDF with Windows.
+
+Some users have built and released netCDF with Intel Fortran on Windows.
+See the [ifort entry in other builds document](http://www.unidata.ucar.edu/software/netcdf/docs/other-builds.html#ifort-361-windows).
+
+Windows is a complicated platform to build on. Some useful explanations
+of the oddities of Windows can be found here:
+
+- Cygwin documentation for [Building and Using DLLs](http://cygwin.com/cygwin-ug-net/dll.html)
+- [OpenLDAP FAQ answer: MinGW Support in Cygwin](http://www.openldap.org/faq/data/cache/301.html), by Jon
+ Leichter.
+- [cygwin mailing list explanation of Windows DL requirements.](http://cygwin.com/ml/cygwin/2000-06/msg00688.html)
+- [-mno-cygwin - Building Mingw executables using Cygwin](http://www.delorie.com/howto/cygwin/mno-cygwin-howto.html)
+
+Once you have the netCDF DLL, you may wish to call it from Visual Basic.
+The [netCDF VB wrapper](ftp://ftp.unidata.ucar.edu/pub/netcdf/contrib/win32/netcdf_vb_net_wrapper.zip) will help you do this.
+
+The SDS ([Scientific DataSet](http://research.microsoft.com/en-us/projects/sds/)) library and tools provide .Net developers a way to read, write and share scalars, vectors, and multidimensional grids using CSV, netCDF, and other file formats. It currently uses netCDF version 4.0.1. In addition to .Net libraries, SDS provides a set of utilities and packages: an sds command line utility, a DataSet Viewer application and an add-in for Microsoft Excel 2007 (and later versions).
+
+----------
+
+How do I build netCDF for use with Fortran compiler *xxx* and C compiler *yyy* on platform *zzz*? {#How-do-I-build-netCDF-for-use-with-Fortran-compiler}
+-----------------
+
+
+
+If you have an unusual combination of compilers or platform, you may
+have to set a few environment variables before invoking
+
+~~~~ {.boldcode}
+ ./configure
+ make test
+ make install
+~~~~
+
+For details, see the [NetCDF Installation and Porting Guide](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/index.html).
+
+You should also check reports we maintain of successful [builds in other environments](other-builds.html). If you have success with a combination useful to others, please send it for addition to the list.
+
+----------
+
+How can I tell if I successfully built and installed netCDF? {#How-can-I-tell-if-I-successfully-built-and-installed-netCDF}
+-----------------
+
+
+We make build output from various platforms [available](../builds) for
+comparison with your output. In general, you can ignore compiler
+warnings if the "make test" step is successful. Lines that begin with
+"\*\*\*" in the "make test" output indicate results from tests. The C
+and Fortran-77 interfaces are tested extensively, but only rudimentary
+tests are currently used for the C++ and Fortran-90 interfaces.
+
+How can I tell what version I'm using? {#How-can-I-tell-what-version-Im-using}
+-----------------
+
+
+If you invoke
+
+~~~~ {.boldcode}
+ ncdump --version
+~~~~
+
+the last line of the resulting output will identify the version
+associated with the **ncdump** utility. You can also call one of the
+functions `nc_inq_libvers()`, `nf_inq_libvers()`, or
+`nf90_inq_libvers()` from C, Fortran-77, or Fortran-90 programs to get a
+version string.
+
+----------
+
+Where does netCDF get installed? {#Where-does-netCDF-get-installed}
+-----------------
+
+
+The netCDF installation directory can be set at the time configure is
+run using the --prefix argument. If it is not specified, /usr/local is
+used as the default prefix.
+
+For more information see the [NetCDF Installation and Porting Guide](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install).
+
+Formats, Data Models, and Software Releases {#formatsdatamodelssoftwarereleases}
+===========================================
+
+In different contexts, "netCDF" may refer to a data model, a software
+implementation with associated application program interfaces (APIs), or
+a data format. Confusion may arise in discussions of different versions
+of the data models, software, and formats. For example, compatibility
+commitments require that new versions of the software support all
+previous versions of the format and data model. This section of FAQs is
+intended to clarify netCDF versions and help users determine what
+version to build and install.
+
+How many netCDF formats are there, and what are the differences among them? {#How-many-netCDF-formats-are-there-and-what-are-the-differences-among-them}
+-----------------
+
+
+There are four netCDF format variants:
+
+- the classic format
+- the 64-bit offset format
+- the netCDF-4 format
+- the netCDF-4 classic model format
+
+(In addition, there are two textual representations for netCDF data,
+though these are not usually thought of as formats: CDL and NcML.)
+
+The **classic format** was the only format for netCDF data created
+between 1989 and 2004 by the reference software from Unidata. It is
+still the default format for new netCDF data files, and the form in
+which most netCDF data is stored.
+
+In 2004, the **64-bit offset format** variant was added. Nearly
+identical to netCDF classic format, it allows users to create and access
+far larger datasets than were possible with the original format. (A
+64-bit platform is not required to write or read 64-bit offset netCDF
+files.)
+
+In 2008, the **netCDF-4 format** was added to support per-variable
+compression, multiple unlimited dimensions, more complex data types, and
+better performance, by layering an enhanced netCDF access interface on
+top of the HDF5 format.
+
+At the same time, a fourth format variant, **netCDF-4 classic model
+format**, was added for users who needed the performance benefits of the
+new format (such as compression) without the complexity of a new
+programming interface or enhanced data model.
+
+With each additional format variant, the C-based reference software from
+Unidata has continued to support access to data stored in previous
+formats transparently, and to also support programs written using
+previous programming interfaces.
+
+Although strictly speaking, there is no single "netCDF-3 format", that
+phrase is sometimes used instead of the more cumbersome but correct
+"netCDF classic or 64-bit offset format" to describe files created by
+the netCDF-3 (or netCDF-1 or netCDF-2) libraries. Similarly "netCDF-4
+format" is sometimes used informally to mean "either the general
+netCDF-4 format or the restricted netCDF-4 classic model format". We
+will use these shorter phrases in FAQs below when no confusion is
+likely.
+
+A more extensive description of the netCDF formats and a formal
+specification of the classic and 64-bit formats is available as a [NASA ESDS community standard](https://earthdata.nasa.gov/sites/default/files/esdswg/spg/rfc/esds-rfc-011/ESDS-RFC-011v2.00.pdf).
+
+How can I tell which format a netCDF file uses? {#How-can-I-tell-which-format-a-netCDF-file-uses}
+-----------------
+
+
+The short answer is that under most circumstances, you should not care,
+if you use version 4.0 or later of the netCDF library to access data in
+the file. But the difference is indicated in the first four bytes of the
+file, which are 'C', 'D', 'F', '\\001' for the classic netCDF format;
+'C', 'D', 'F', '\\002' for the 64-bit offset format; or '\\211', 'H',
+'D', 'F' for an HDF5 file, which could be either a netCDF-4 file or a
+netCDF-4 classic model file. (HDF5 files may also begin with a
+user-block of 512, 1024, 2048, ... bytes before what is actually an
+8-byte signature beginning with the 4 bytes above.)
+
+With netCDF version 4.0 or later, there is an easy way that will
+distinguish between netCDF-4 and netCDF-4 classic model files, using the
+"-k" option to **ncdump** to determine the kind of file, for example:
+
+~~~~~ {.boldcode}
+ ncdump -k foo.nc
+ classic
+~~~~~
+
+
+In a program, you can call the function
+[nc_inq_format](http://www.unidata.ucar.edu/netcdf/docs/netcdf-c.html#nc_005finq-Family)(or [nf90_inq_format](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f90.html#Compiling-and-Linking-with-the-NetCDF-Library) for the Fortran-90 interface) to determine the format variant of an open netCDF file.
+
+Finally, on a Unix system, one way to display the first four bytes of a
+file, say foo.nc, is to run the following command:
+
+~~~~ {.boldcode}
+ od -An -c -N4 foo.nc
+~~~~
+
+which will output
+
+~~~~ {.boldcode}
+ C D F 001
+~~~~
+
+~~~~ {.boldcode}
+ C D F 002
+~~~~
+
+~~~~ {.boldcode}
+ 211 H D F
+~~~~
+
+depending on whether foo.nc is a classic, 64-bit offset, or netCDF-4
+file, respectively. This method cannot be used to distinguish between
+netCDF-4 and netCDF-4 classic model variants, or between a netCDF-4 file
+and a different kind of HDF5 file.
+
+----------
+
+How many netCDF data models are there? {#How-many-netCDF-data-models-are-there}
+-----------------
+
+There are only two netCDF data models, the [classic model](/netcdf/workshops/2008/datamodel/NcClassicModel.html) and the [enhanced model](/netcdf/workshops/2008/netcdf4/Nc4DataModel.html) (also called the netCDF-4 data model). The classic model is the simpler of the two, and is used for all data stored in classic format, 64-bit offset format, or netCDF-4 classic model format. The enhanced model (sometimes also referred to as the netCDF-4 data model) is an extension of the classic model t [...]
+data types at the expense of some additional complexity. Although data represented with the classic model can also be represented using the enhanced model, datasets that use enhanced model features, such as user-defined data types, cannot be represented with the classic model. Use of the enhanced model requires storage in the netCDF-4 format.
+
+How many releases of the C-based netCDF software are supported? {#How-many-releases-of-the-C-based-netCDF-software-are-supported}
+-----------------
+
+
+When netCDF version 4.0 was released in June 2008, version 3.6.3 was
+released simultaneously, and both releases were supported by Unidata.
+Version 3.6.3 supported only the classic and 64-bit offset formats.
+Version 4.0 supported both of those format variants by default, and also
+the netCDF-4 and netCDF-4 classic model formats, if built using a
+previously installed HDF5 library and using the "--enable-netcdf-4"
+configure option. Software built from the netCDF-4.0 release without
+specifying "--enable-netcdf-4" (the default) was identical to software
+built with netCDF-3.6.3.
+
+Both netCDF-3 and netCDF-4 C libraries are part of a single software
+release. The netCDF software may be built to support just the classic
+and 64-bit offset formats (the default) or to also support the netCDF-4
+and netCDF-4 classic model formats, if the HDF5-1.8.x library is
+installed. Unidata no longer supports a separate netCDF-3-only version
+of the software, but instead supports both the classic and enhanced data
+models and all four format variants in a single source distribution.
+
+This does not indicate any plan to drop support for netCDF-3 or the
+formats associated with netCDF-3. Support for earlier formats and APIs
+will continue with all future versions of netCDF software from Unidata.
+
+Should I get netCDF-3 or netCDF-4? {#Should-I-get-netCDF-3-or-netCDF-4}
+-----------------
+
+
+By downloading a current version of netCDF-4, you have the choice to
+build either
+
+- the default netCDF-3 libraries, which support classic and 64-bit
+ offset formats, and the classic data model; or
+- the netCDF-4 libraries, which support netCDF-4 and netCDF-4 classic
+ model formats, as well as classic and 64-bit offset formats, and the
+ enhanced data model.
+
+Which version to build depends on how you will use the software.
+
+Installing the simpler netCDF-3 version of the software is recommended
+if the following situations apply:
+
+- all the data you need to access is available in netCDF classic or
+ 64-bit offset formats
+- you are installing netCDF in order to support another software
+ package that uses only netCDF-3 features
+- you plan to only write data in a form that netCDF-3 software and
+ applications can access
+- you want to delay upgrading to support netCDF-4 until netCDF-4
+ formats are more widely used
+- you cannot install the prerequisite HDF5 1.8 software required to
+ build and install netCDF-4
+
+Installing the netCDF-4 version of the software is required for any of
+the following situations:
+
+- you need to access netCDF data that makes use of netCDF-4
+ compression or chunking
+- you need to access data in all netCDF formats including netCDF-4 or
+ netCDF-4 classic model formats
+- you need to write non-record variables larger than 4GiB or record variables with more than 4GiB per record (see ["Have all netCDF size limits been eliminated?"](http://www.unidata.ucar.edu/netcdf/docs/faq.html#Large%20File%20Support10))
+- you are installing netCDF to support other software packages that
+ require netCDF-4 features
+- you want to write data that takes advantage of compression,
+ chunking, or other netCDF-4 features
+- you want to be able to read netCDF-4 classic model data with no
+ changes to your current software except relinking with the new
+ library
+- you want to benchmark your current applications with the new
+ libraries to determine whether the benefits are significant enough
+ to justify the upgrade
+- you need to use parallel I/O with netCDF-4 or netCDF-4 classic files
+
+What is the "enhanced data model" of netCDF-4, and how does it differ from the netCDF-3 classic data model? {#whatisenhanceddatamodel}
+-------------
+
+
+The enhanced model (sometimes referred to as the netCDF-4 data model) is
+an extension to the [classic model](/netcdf/workshops/2008/datamodel/NcClassicModel.html) that adds more powerful forms of data representation and data types at the expense of some additional complexity. Specifically, it adds six new primitive data types, four kinds of user-defined data types, multiple unlimited
+dimensions, and groups to organize data hierarchically and provide
+scopes for names. A [picture](/netcdf/workshops/2008/netcdf4/Nc4DataModel.html) of the enhanced data model, with the extensions to the classic model
+highlighted in red, is available from the online netCDF workshop.
+
+Although data represented with the classic model can also be represented
+using the enhanced model, datasets that use features of the enhanced
+model, such as user-defined data types, cannot be represented with the
+classic model. Use of added features of the enhanced model requires that
+data be stored in the netCDF-4 format.
+
+Why doesn't the new netCDF-4 installation I built seem to support any of the new features? {#Whydoesnt-the-new-netCDF-4-installation-I-built-seem-to-support-any-of-the-new-features}
+-----------------
+
+
+If you built the software from source without access to an HDF5 library,
+then only the netCDF-3 library was built and installed. The current
+release will build full netCDF-4 support if the HDF5 1.8.x library is
+already installed where it can be found by the configure script or
+cmake.
+
+Will Unidata continue to support netCDF-3? {#Will-Unidata-continue-to-support-netCDF-3}
+-----------------
+
+
+Yes, Unidata has a commitment to preserving backward compatibility.
+
+Because preserving access to archived data for future generations is
+very important:
+
+- New netCDF software will provide read and write access to *all*
+ earlier forms of netCDF data.
+- C and Fortran programs using documented netCDF APIs from previous
+ releases will be supported by new netCDF software (after recompiling
+ and relinking, if needed).
+- Future releases of netCDF software will continue to support data
+ access and API compatibility.
+
+To read compressed data, what changes do I need to make to my netCDF-3 program? {#To-read-compressed-data-what-changes-do-I-need-to-make-to-my-netCDF-3-program}
+-----------------
+
+
+None. No changes to the program source are needed, because the library
+handles decompressing data as it is accessed. All you need to do is
+relink your netCDF-3 program to the netCDF-4 library to recognize and
+handle compressed data.
+
+To write compressed data, what changes do I need to make to my netCDF-3 program? {#To-write-compressed-data-what-changes-do-I-need-to-make-to-my-netCDF-3-program}
+-----------------
+
+
+The **nccopy** utility in versions 4.1.2 and later supports a "-d *level*"
+deflate option that copies a netCDF file, compressing all variables
+using the specified level of deflation and default chunking parameters,
+or you can specify chunking with the "-c" option.
+
+To do this within a program, or if you want different variables to have
+different levels of deflation, define compression properties when each
+variable is defined. The function to call is
+[nc_def_var_deflate](/netcdf-c.html#nc_005fdef_005fvar_005fdeflate)
+for C programs, [nf90_def_var_deflate](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fDEFLATE) for Fortran 90 programs, [NF_DEF_VAR_DEFLATE](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fDEFLATE) for Fortran 77. For C++ programs, the experimental cxx4 API may be used,
+assuming you have configured with --enable-cxx-4.
+
+Although default variable chunking parameters may be adequate,
+compression can sometimes be improved by choosing good chunking
+parameters when a variable is first defined. For example, if a 3D field
+tends to vary a lot with vertical level, but not so much within a
+horizontal slice corresponding to a single level, then defining chunks
+to be all or part of a horizontal slice would typically produce better
+compression than chunks that included multiple horizontal slices. There
+are other factors in choosing chunk sizes, especially matching how the
+data will be accessed most frequently. Chunking properties may only be
+specified when a variable is first defined. The function to call is
+[nc_def_var_chunking](http://www.unidata.ucar.edu/netcdf/docs/netcdf-c.html#nc_005fdef_005fvar_005f)
+for C programs,
+[nf90_def_var_chunking](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f90.html#NF90_005fDEF_005fVAR_005fCHUNKING)
+for Fortran 90 programs, and
+[NF_DEF_VAR_CHUNKING](http://www.unidata.ucar.edu/netcdf/docs/netcdf-f77.html#NF_005fDEF_005fVAR_005fCHUNKING)
+for Fortran 77 programs. For C++ programs, the experimental cxx4 API may
+be used, assuming you have configured with --enable-cxx-4.
+
+If I create netCDF-4 classic model files, can they be read by IDL, MATLAB, R, Python and ArcGIS? {#If-I-create-netCDF-4-classic-model-files-can-they-be-read-by-IDL-MATLAB-R-Python-and-ArcGIS}
+-----------------
+
+
+IDL 8.0 ships with support for netCDF-4, including support for OPeNDAP
+remote access.
+
+MATLAB 2012a includes netCDF 4 support with OPeNDAP support turned on,
+enabling remote access to many kinds of data, as well as use of groups,
+compression, and chunking. An example is available demonstrating some of
+the new functions. [NCTOOLBOX](http://nctoolbox.github.io/nctoolbox/),
+uses netCDF-Java to provide read access to datasets in netCDF-4, GRIB,
+GRIB2 and other formats through Unidata's Common Data Model.
+
+R has the [ncdf4 package](http://cirrus.ucsd.edu/~pierce/ncdf/).
+
+Python has the [netcdf4-python package](http://code.google.com/p/netcdf4-python/).
+
+ArcGIS 10.0 can read netcdf4 using the Multidimensional Tools in
+ArcToolbox, and in ArcGIS 10.1, the [Multidimensional Supplemental toolbox](http://esriurl.com/MultidimensionSupplementalTools) uses NetCDF4-Python to read OPeNDAP and netCDF4 files, taking advantage of CF conventions if they exist.
+
+What applications are able to deal with *arbitrary* netCDF-4 files? {#What-applications-are-able-to-deal-with-arbitrary-netCDF-4-files}
+-----------------
+
+The netCDF utilities **ncdump**, **ncgen**, and **nccopy**, available in
+the Unidata C-based netCDF-4 distribution, are able to deal with
+arbitrary netCDF-4 files (as well as all other kinds of netCDF files).
+
+How can I convert netCDF-3 files into netCDF-4 files? {#How-can-I-convert-netCDF-3-files-into-netCDF-4-files}
+-----------------
+
+
+Every netCDF-3 file can be read or written by a netCDF version 4
+library, so in that respect netCDF-3 files are already netCDF-4 files
+and need no conversion. But if you want to convert a classic or 64-bit
+offset format file into a netCDF-4 format or netCDF-4 classic model
+format file, the easiest way is to use the **nccopy** utility. For example
+to convert a classic format file foo3.nc to a netCDF-4 format file
+foo4.nc, use:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode}
+ nccopy -k netCDF-4 foo3.nc foo4.nc
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To convert a classic format file foo3.nc to a netCDF-4 classic
+model format file foo4c.nc, you could use:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode}
+ nccopy -k netCDF-4-classic foo3.nc foo4c.nc
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you have installed [NCO](http://www.unidata.ucar.edu/netcdf/docs/software.html#NCO), the NCO
+utility "ncks" can be used to accomplish the same task, as follows:
+
+~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode}
+ ncks -7 foo3.nc foo4c.nc
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Another method is available for relatively small files, using the **ncdump**
+and **ncgen** utilities (built with a netCDF-4 library). Assuming
+"small3.nc" is a small classic format or 64-bit offset format netCDF
+file, you can create an equivalent netCDF-4 file named
+"small4.nc" as follows:
+
+~~~~ {.boldcode}
+ ncdump small3.nc > small.cdl
+ ncgen -o small4.nc -k netCDF-4-classic small.cdl
+~~~~
+
+Why might someone want to convert netCDF-4 files into netCDF-3 files? {#Why-might-someone-want-to-convert-netCDF-4-files-into-netCDF-3-files}
+-----------------
+
+
+NetCDF-4 classic model files that use compression can be smaller than
+the equivalent netCDF-3 files, so downloads are quicker. If they are
+then unpacked and converted to the equivalent netCDF-3 files, they can
+be accessed by applications that haven't yet upgraded to netCDF-4.
+
+How can I convert netCDF-4 files into netCDF-3 files? {#How-can-I-convert-netCDF-4-files-into-netCDF-3-files}
+-----------------
+
+
+In general, you can't, because netCDF-4 files may have features of the
+netCDF enhanced data model, such as groups, compound types,
+variable-length types, or multiple unlimited dimensions, for which no
+netCDF-3 representation is available. However, if you know that a
+netCDF-4 file conforms to the classic model, either because it was
+written as a netCDF-4 classic model file, because the program that wrote
+it was a netCDF-3 program that was merely relinked to a netCDF-4
+library, or because no features of the enhanced model were used in
+writing the file, then there are several ways to convert it to a
+netCDF-3 file.
+
+You can use the **nccopy** utility. For
+example to convert a netCDF-4 classic-model format file foo4c.nc to a
+classic format file foo3.nc, use:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode}
+ nccopy -k classic foo4c.nc foo3.nc
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you have installed [NCO](http://www.unidata.ucar.edu/netcdf/docs/software.html#NCO), the NCO utility "ncks" can be used to accomplish the same task, as follows:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~ {.boldcode}
+ ncks -3 foo4c.nc foo3.nc
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For a relatively small netCDF-4 classic model file, "small4c.nc" for
+example, you can also use the **ncdump** and **ncgen** utilities to create an
+equivalent netCDF-3 classic format file named "small3.nc" as follows:
+
+~~~~ {.boldcode}
+ ncdump small4c.nc > small4.cdl
+ ncgen -o small3.nc small4.cdl
+~~~~
+
+How can I convert HDF5 files into netCDF-4 files? {#How-can-I-convert-HDF5-files-into-netCDF-4-files}
+-----------------
+
+
+NetCDF-4 intentionally supports a simpler data model than HDF5, which
+means there are HDF5 files that cannot be converted to netCDF-4,
+including files that make use of features in the following list:
+
+- Multidimensional data that doesn't use shared dimensions implemented
+ using HDF5 "dimension scales". (This restriction was eliminated in
+ netCDF 4.1.1, permitting access to HDF5 datasets that don't use
+ dimension scales.)
+- Non-hierarchical organizations of Groups, in which a Group may have
+ multiple parents or may be both an ancestor and a descendant of
+ another Group, creating cycles in the subgroup graph. In the
+ netCDF-4 data model, Groups form a tree with no cycles, so each
+ Group (except the top-level unnamed Group) has a unique parent.
+- HDF5 "references" which are like pointers to objects and data
+ regions within a file. The netCDF-4 data model does not support
+ references.
+- Additional primitive types not included in the netCDF-4 data model,
+ including H5T\_TIME, H5T\_BITFIELD, and user-defined atomic types.
+- Multiple names for data objects such as variables and groups. The
+ netCDF-4 data model requires that each variable and group have a
+ single distinguished name.
+- Attributes attached to user-defined types.
+- Stored property lists
+- Object names that begin or end with a space
+
+If you know that an HDF5 file conforms to the netCDF-4 enhanced data
+model, either because it was written with netCDF function calls or
+because it doesn't make use of HDF5 features in the list above, then it
+can be accessed using netCDF-4, and analyzed, visualized, and
+manipulated through other applications that can access netCDF-4 files.
+
+The [ncks tool](http://nco.sourceforge.net/nco.html#ncks-netCDF-Kitchen-Sink) of the NCO collection of netCDF utilities can take simple HDF5 data as input and produce a netCDF file as output, so this may work:
+
+~~~~ {.boldcode}
+ ncks infile.hdf5 outfile.nc
+~~~~
+
+Another tool has been developed to convert HDF5-EOS Aura files to
+netCDF-4 files, and it is currently undergoing testing and documentation
+before release on the HDF5 web site.
+
+How can I convert netCDF-4 files into HDF5 files? {#How-can-I-convert-netCDF-4-files-into-HDF5-files}
+-----------------
+
+
+Every netCDF-4 or netCDF-4 classic model file can be read or written by
+the HDF5 library, version 1.8 or later, so in that respect netCDF-4
+files are already HDF5 files and need no conversion.
+
+The way netCDF-4 data objects are represented using HDF5 is described in
+detail in the User Manual section ["C.3 The NetCDF-4 Format"](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#NetCDF_002d4-Format).
+
+Why aren't different extensions used for the different formats, for example ".nc3" and ".nc4"? {#why-arent-different-extensions-used}
+------------------
+
+The file extension used for netCDF files is purely a convention. The
+netCDF libraries don't use the file extension. A user can currently
+create a netCDF file with any extension, even one not consistent with
+the format of the file.
+
+The **ncgen** utility uses ".nc" as a default extension for output, but this
+can be overridden using the "-o" option to specify the name for the
+output file. Recent versions of **ncgen** also have a "-k" option to specify
+what kind of output file is desired, selecting any of the 4 format
+variants, using either a numeric code or a text string. Most other
+netCDF client software pays no attention to the file extension, so using
+more explicit extensions by convention has no significant drawbacks,
+except possibly causing confusion about format differences that may not
+be important.
+
+Why is the default of netCDF-4 to continue to create classic files, rather than netCDF-4 files? {#Why-is-the-default-of-netCDF-4-to-continue-to-create-classic-files-rather-than-netCDF-4-files}
+-----------------
+
+
+Until widely used netCDF client software has been adapted or upgraded to
+read netCDF-4 data, classic file format is the default for
+interoperability with most existing netCDF software.
+
+Can netCDF-4 read arbitrary HDF5 files? {#Can-netCDF-4-read-arbitrary-HDF5-files}
+-----------------
+
+
+No, but it can read many HDF5 files, and more recent versions can access
+more HDF5 data. If you want to access HDF5 data through netCDF
+interfaces, avoid HDF5 features not included in the netCDF enhanced data
+model. For more details see "[How can I convert HDF5 files into netCDF-4 files?](#fv15)", above.
+
+I installed netCDF-3 with --enable-shared, but it looks like the libraries it installed were netCDF-4, with names like libnetcdf.4.dylib. What's going on? {#I-installed-netCDF-3-with---enable-shared-but-it-looks-like-the-libraries-it-installed-were-netCDF-4-with-names-like-libnetcdf4dylib-Whats-going-on}
+-----------------
+
+
+The number used for the shared library name is not related to the netCDF
+library version number.
+
+NetCDF-3.6.3 permits UTF-8 encoded Unicode names. Won't this break backward compatibility with previous software releases that didn't allow such names? {#NetCDF-363-permits-UTF-8-encoded-Unicode-names-Wont-this-break-backward-compatibility-with-previous-software-releases-that-didnt-allow-such-names}
+-----------------
+
+
+Earlier versions of the netCDF libraries have always been able to read
+data with arbitrary characters in names. The restriction has been on
+*creating* files with names that contained "invalid" special characters.
+The check for characters used in names occurred when a program tried to
+define a new variable, dimension, or attribute, and an error would be
+returned if the characters in the names didn't follow the rules.
+However, there has never been any such check on reading data, so
+arbitrary characters have been permitted in names created through a
+different implementation of the netCDF APIs, or through early versions
+of netCDF software (before 2.4), which allowed arbitrary names.
+
+In other words, the expansion to handle UTF-8 encoded Unicode characters
+and special characters such as \`:' and \` ' still conforms with
+Unidata's commitment to backwards compatibility. All old files are still
+readable and writable by the new software, and programs that used to
+work will still work when recompiled and relinked with the new
+libraries. Files using new characters in names will still be readable
+and writable by programs that used older versions of the libraries.
+However, programs linked to older library versions will not be able to
+create new data objects with the new less-restrictive names.
+
+How difficult is it to convert my application to handle arbitrary netCDF-4 files? {#How-difficult-is-it-to-convert-my-application-to-handle-arbitrary-netCDF-4-files}
+-----------------
+
+
+Modifying an application to fully support the new enhanced data model
+may be relatively easy or arbitrarily difficult :-), depending on what
+your application does and how it is written. Use of recursion is the
+easiest way to handle nested groups and nested user-defined types. An
+object-oriented architecture is also helpful in dealing with
+user-defined types.
+
+We recommend proceeding incrementally, supporting features that are
+easier to implement first. For example, handling the six new primitive
+types is relatively straightforward. After that, using recursion (or the
+group iterator interface used in **nccopy**) to support Groups is not too
+difficult. Providing support for user-defined types is more of a
+challenge, especially since they can be nested.
+
+The utility program **nccopy**, provided in releases 4.1 and later, shows
+how this can be done using the C interface. It copies an input netCDF
+file in any of the format variants, handling nested groups, strings, and
+any user-defined types, including arbitrarily nested compound types,
+variable-length types, and data of any valid netCDF-4 type. It also
+demonstrates how to handle variables that are too large to fit in memory
+by using an iterator interface. Other generic utility programs can make
+use of parts of **nccopy** for more complex operations on netCDF data.
+
+----------
+
+Shared Libraries {#Shared-Libraries}
+================
+
+What are shared libraries? {#What-are-shared-libraries}
+-----------------
+
+
+Shared libraries are libraries that can be shared by multiple running
+applications at the same time. This **may** improve performance.
+
+For example, if I have a library that provides function foo(), and I
+have two applications that call foo(), then with a shared library, only
+one copy of the foo() function will be loaded into memory, and both
+programs will use it. With static libraries, each application would have
+its own copy of the foo() function.
+
+More information on shared libraries can be found at the following
+external sites:
+
+- [The Program-Library HowTo](http://www.tldp.org/HOWTO/Program-Library-HOWTO/index.html),
+ by David Wheeler.
+
+- [Wikipedia Library Entry](http://en.wikipedia.org/wiki/Library_(computer_science))
+
+----------
+
+Can I build netCDF with shared libraries? {#Can-I-build-netCDF-with-shared-libraries}
+-----------------
+
+
+Starting with version 3.6.2, netCDF can build shared libraries on
+platforms that support them, but by default netCDF will build static
+libraries only. To turn on shared libraries, use the --enable-shared
+option to the [netCDF configure script](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/Running-the-configure-Script.html).
+
+----------
+
+How do I use netCDF shared libraries? {#How-do-I-use-netCDF-shared-libraries}
+-----------------
+
+
+With netCDF version 3.6.2, shared libraries can be built on platforms
+that support them by using the --enable-shared argument to [netCDF configure script](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/Running-the-configure-Script.html).
+
+Users of earlier versions of netCDF can build shared libraries by
+setting flags correctly during builds.
+
+When you use a static library, the code is copied from the library into
+your program when the program is built. The library is only needed at
+build time.
+
+With a shared library the code in the library is not copied into your
+executable, so the library is needed every time the program is run.
+
+If you write a program that uses the netCDF shared library, the
+operating system will have to find it every time your program is run. It
+will look in these places:
+
+1. Directories you specified as shared library locations at **build
+ time**. Unfortunately this is done differently with different
+ compilers.
+
+2. Directories specified in the environment variable LD\_RUN\_PATH at
+ **build time**.
+
+3. Directories specified in the OS-specific environment variable for
+ this purpose at **run time**. (LD\_LIBRARY\_PATH on Linux and many
+ other Unix variants, LOADLIBS on AIX systems, etc.)
+
+4. A default list of directories that includes /usr/lib (but don't
+ install software there!), and may or may not contain places you
+ might install netCDF, like /usr/local/lib.
+
+5. The directories specified in an OS file such as /etc/ld.conf.
+
+By default the netCDF library will be installed in /usr/local/lib. (This
+can be overridden with the --prefix option to the [netCDF configure script](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/Running-the-configure-Script.html)).
+
+An external site by Arnaud Desitter has a [table of different tools and command line options relating to shared libraries](http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html) on Linux, Solaris, HP-UX, Tru64, AIX, SGI, Win32, MacOS X, VMS (wow!), and OS/390.
+
+For more information about how do to this in Linux users may find it
+useful to read this external webpage, some documentation from Caldera, a
+Linux distributor: [Specifying directories to be searched by the dynamic linker](http://osr507doc.sco.com/en/tools/ccs_linkedit_dynamic_dirsearch.html).
+
+----------
+
+Large File Support {#Large-File-Support}
+================
+
+Was it possible to create netCDF files larger than 2 GiBytes before version 3.6? {#Was-it-possible-to-create-netCDF-files-larger-than-2-GiBytes-before-version-36}
+-----------------
+
+
+Yes, but there are significant restrictions on the structure of large
+netCDF files that result from the 32-bit relative offsets that are part
+of the classic netCDF format. For details, see [NetCDF Classic Format Limitations](netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations)
+in the User's Guide.
+
+----------
+
+What is Large File Support? {#What-is-Large-File-Support}
+-----------------
+
+
+Large File Support (LFS) refers to operating system and C library
+facilities to support files larger than 2 GiB. On a few 32-bit platforms
+the default size of a file offset is still a 4-byte signed integer,
+which limits the maximum size of a file to 2 GiB. Using LFS interfaces
+and the 64-bit file offset type, the maximum size of a file may be as
+large as 2^63^ bytes, or 8 EiB. For some current platforms, large file
+macros or appropriate compiler flags have to be set to build a library
+with support for large files. This is handled automatically in netCDF
+3.6 and later versions.
+
+More information about Large File Support is available from [Adding Large File Support to the Single UNIX Specification](http://www.unix.org/version2/whatsnew/lfs.html).
+
+----------
+
+What does Large File Support have to do with netCDF? {#What-does-Large-File-Support-have-to-do-with-netCDF}
+-----------------
+
+
+When the netCDF format was created in 1988, 4-byte fields were reserved
+for file offsets, specifying where the data for each variable started
+relative to the beginning of the file or the start of a record boundary.
+
+This first netCDF format variant, the only format supported in versions
+3.5.1 and earlier, is referred to as the netCDF *classic* format. The
+32-bit file offset in the classic format limits the total sizes of all
+but the last non-record variables in a file to less than 2 GiB, with a
+similar limitation for the data within each record for record variables.
+For more information see [Classic Format Limitations](http://www.unidata.ucar.edu/netcdf/docs/netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations).
+
+The netCDF classic format is also identified as *version 1* or *CDF1* in
+reference to the format label at the start of a file.
+
+With netCDF version 3.6 and later, a second variant of netCDF format is
+supported in addition to the classic format. The new variant is referred
+to as the *64-bit offset* format, *version 2*, or *CDF2*. The primary
+difference from the classic format is the use of 64-bit file offsets
+instead of 32-bit offsets, but it also supports larger variable and
+record sizes.
+
+----------
+
+Do I have to know which netCDF file format variant is used in order to access or modify a netCDF file? {#Do-I-have-to-know-which-netCDF-file-format-variant-is-used-in-order-to-access-or-modify-a-netCDF-file}
+-----------------
+
+
+No, version 3.6 and later versions of the netCDF C/Fortran library
+detect which variant of the format is used for each file when it is
+opened for reading or writing, so it is not necessary to know which
+variant of the format is used. The version of the format will be
+preserved by the library on writing. If you want to modify a classic
+format file to use the 64-bit offset format so you can make it much
+larger, you will have to create a new file and copy the data to it. The
+**nccopy** utility available in version 4.1 can copy a classic file to a
+64-bit offset file.
+
+----------
+
+Will future versions of the netCDF library continue to support accessing files in the classic format? {#Will-future-versions-of-the-netCDF-library-continue-to-support-accessing-files-in-the-classic-format}
+-----------------
+
+
+Yes, the 3.6 library and all planned future versions of the library will
+continue to support reading and writing files using the classic (32-bit
+offset) format as well as the 64-bit offset format. There is no need to
+convert existing archives from the classic to the 64-bit offset format.
+Even netCDF-4, which introduces a third variant of the netCDF format
+based on HDF5, continues to support accessing classic format netCDF
+files as well as 64-bit offset netCDF files. NetCDF-4 HDF5 files have
+even fewer restrictions on size than 64-bit offset netCDF files.
+
+----------
+
+Should I start using the new 64-bit offset format for all my netCDF files? {#Should-I-start-using-the-new-64-bit-offset-format-for-all-my-netCDF-files}
+-----------------
+
+
+No, we discourage users from making use of the 64-bit offset format
+unless they need it for large files. It may be some time until
+third-party software that uses the netCDF library is upgraded to 3.6 or
+later versions that support the large file facilities, so we advise
+continuing to use the classic netCDF format for data that doesn't
+require file offsets larger than 32 bits. The library makes this
+recommendation easy to follow, since the default for file creation is
+the classic format.
+
+----------
+
+How can I tell if a netCDF file uses the classic format or 64-bit offset format? {#How-can-I-tell-if-a-netCDF-file-uses-the-classic-format-or-64-bit-offset-format}
+-----------------
+
+
+The short answer is that under most circumstances, you should not care,
+if you use version 3.6.0 or later of the netCDF library. But the
+difference is indicated in the first four bytes of the file, which are
+'C', 'D', 'F', '\\001' for the classic netCDF format and 'C', 'D', 'F',
+'\\002' for the 64-bit offset format. On a Unix system, one way to
+display the first four bytes of a file, say foo.nc, is to run the
+following command:
+
+~~~~ {.boldcode}
+ od -An -c -N4 foo.nc
+~~~~
+
+which will output
+
+~~~~ {.boldcode}
+ C D F 001
+~~~~
+
+or
+
+~~~~ {.boldcode}
+ C D F 002
+~~~~
+
+depending on whether foo.nc is a classic or 64-bit offset netCDF file,
+respectively.
+
+With netCDF version 3.6.2 or later, there is an easier way, using the
+"-k" option to **ncdump** to determine the kind of file, for example:
+
+~~~~ {.boldcode}
+ ncdump -k foo.nc
+ classic
+~~~~
+
+----------
+
+What happens if I create a 64-bit offset format netCDF file and try to open it with an older netCDF application that hasn't been linked with netCDF 3.6? {#What-happens-if-I-create-a-64-bit-offset-format-netCDF-file-and-try-to-open-it-with-an-older-netCDF-application-that-hasnt-been-linked-with-netCDF-36}
+-----------------
+
+
+The application will indicate an error trying to open the file and
+present an error message equivalent to "not a netCDF file". This is why
+it's a good idea not to create 64-bit offset netCDF files until you
+actually need them.
+
+----------
+
+Can I create 64-bit offset files on 32-bit platforms? {#Can-I-create-64-bit-offset-files-on-32-bit-platforms}
+-----------------
+
+
+Yes, by specifying the appropriate file creation flag you can create
+64-bit offset netCDF files the same way on 32-bit platforms as on 64-bit
+platforms. You do not need to compile the C/Fortran libraries as 64-bit
+to support access to 64-bit offset netCDF files.
+
+----------
+
+How do I create a 64-bit offset netCDF file from C, Fortran-77, Fortran-90, or C++? {#How-do-I-create-a-64-bit-offset-netCDF-file-from-C-Fortran-77-Fortran-90-or-Cpp}
+-----------------
+
+
+With netCDF version 3.6.0 or later, use the NC\_64BIT\_OFFSET flag when
+you call nc\_create(), as in:
+
+~~~~ {.boldcode}
+ err = nc_create("foo.nc",
+ NC_NOCLOBBER | NC_64BIT_OFFSET,
+ &ncid);
+~~~~
+
+In Fortran-77, use the NF\_64BIT\_OFFSET flag when you call
+nf\_create(), as in:
+
+~~~~ {.boldcode}
+ iret = nf_create('foo.nc',
+ IOR(NF_NOCLOBBER,NF_64BIT_OFFSET),
+ ncid)
+~~~~
+
+In Fortran-90, use the NF90\_64BIT\_OFFSET flag when you call
+nf90\_create(), as in:
+
+~~~~ {.boldcode}
+ iret = nf90_create(path="foo.nc",
+ cmode=or(nf90_noclobber,nf90_64bit_offset),
+ ncid=ncFileID)
+~~~~
+
+In C++, use the Offset64Bits enum in the NcFile constructor, as in:
+
+~~~~ {.boldcode}
+ NcFile nc("foo.nc",
+ FileMode=NcFile::New,
+ FileFormat=NcFile::Offset64Bits);
+~~~~
+
+In Java, use the setLargeFile() method of the NetcdfFileWritable class.
+
+----------
+
+How do I create a 64-bit offset netCDF file using the ncgen utility? {#How-do-I-create-a-64-bit-offset-netCDF-file-using-the-ncgen-utility}
+-----------------
+
+
+A command-line option, '-k', specifies the kind of file format
+variant. By default or if '-k classic' is specified, the generated
+file will be in netCDF classic format. If '-k 64-bit-offset' is
+specified, the generated file will use the 64-bit offset format.
+
+----------
+
+Have all netCDF size limits been eliminated? {#Have-all-netCDF-size-limits-been-eliminated}
+-----------------
+
+
+The netCDF-4 HDF5-based format has no practical limits on the size of a
+variable.
+
+However, for the classic and 64-bit offset formats there are still
+limits on sizes of netCDF objects. Each fixed-size variable (except the
+last, when there are no record variables) and the data for one record's
+worth of a single record variable (except the last) are limited in size
+to a little less that 4 GiB, which is twice the size limit in versions
+earlier than netCDF 3.6.
+
+The maximum number of records remains 2^32^-1.
+
+----------
+
+Why are variables still limited in size? {#Why-are-variables-still-limited-in-size}
+-----------------
+
+
+While most platforms support a 64-bit file offset, many platforms only
+support a 32-bit size for allocated memory blocks, array sizes, and
+memory pointers. In C developer's jargon, these platforms have a 64-bit
+`off_t` type for file offsets, but a 32-bit `size_t` type for size of
+arrays. Changing netCDF to assume a 64-bit `size_t` would restrict
+netCDF's use to 64-bit platforms.
+
+----------
+
+How can I write variables larger than 4 GiB? {#How-can-I-write-variables-larger-than-4-GiB}
+-----------------
+
+
+You can overcome the 4 GiB size barrier by using the netCDF-4 HDF5
+format for your data. The only change required to the program that
+writes the data is an extra flag to the file creation call, followed by
+recompiling and relinking to the netCDF-4 library. Programs that access
+the data would also need to be recompiled and relinked to the netCDF-4
+library.
+
+For classic and 64-bit offset netCDF formats, if you change the first
+dimension of a variable from a fixed size to an unlimited size instead,
+the variable can be much larger. Even though record variables are
+restricted to 4 Gib per record, there may be 4 billion records. NetCDF
+classic or 64-bit offset files can only have one unlimited dimension, so
+this won't work if you are already using a record dimension for other
+purposes.
+
+It is also possible to overcome the 4 GiB variable restriction for a
+single fixed size variable, when there are no record variables, by
+making it the last variable, as explained in the example in [NetCDF Classic Format Limitations](netcdf/NetCDF-Classic-Format-Limitations.html#NetCDF-Classic-Format-Limitations).
+
+----------
+
+Why do I get an error message when I try to create a file larger than 2 GiB with the new library? {#Why-do-I-get-an-error-message-when-I-try-to-create-a-file-larger-than-2-GiB-with-the-new-library}
+-----------------
+
+
+There are several possible reasons why creating a large file can fail
+that are not related to the netCDF library:
+
+- User quotas may prevent you from creating large files. On a Unix
+ system, you can use the "ulimit" command to report limitations such
+ as the file-size writing limit.
+
+- There is insufficient disk space for the file you are trying to
+ write.
+
+- The file system in which you are writing may not be configured to
+ allow large files. On a Unix system, you can test this with a
+ commands such as
+
+ ~~~~ {.boldcode}
+ dd if=/dev/zero bs=1000000 count=3000 of=./largefile
+ ls -l largefile
+ rm largefile
+ ~~~~
+
+ which should write a 3 GByte file named "largefile" in the current
+ directory, verify its size, and remove it.
+
+If you get the netCDF library error "One or more variable sizes violate
+format constraints", you are trying to define a variable larger than
+permitted for the file format variant. This error typically occurs when
+leaving "define mode" rather than when defining a variable. The error
+status cannot be returned when a variable is first defined, because the
+last fixed-size variable defined is permitted to be larger than other
+fixed-size variables (when there are no record variables).
+
+Similarly, the last record variable may be larger than other record
+variables. This means that subsequently adding a small variable to an
+existing file may be invalid, because it makes what was previously the
+last variable now in violation of the format size constraints. For
+details on the format size constraints, see the Users Guide sections
+[NetCDF Classic Format Limitations](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#Classic-Limitations) and [NetCDF 64-bit Offset Format Limitations](http://www.unidata.ucar.edu/netcdf/docs/netcdf.html#64-bit-Offset-Limitations).
+
+If you get the netCDF library error "Invalid dimension size" for a
+non-negative size, you are exceeding the size limit of netCDF
+dimensions, which must be less than 2,147,483,644 for classic files with
+no large file support and otherwise less than 4,294,967,292.
+
+----------
+
+Do I need to use special compiler flags to compile and link my applications that use netCDF with Large File Support? {#Do-I-need-to-use-special-compiler-flags-to-compile-and-link-my-applications-that-use-netCDF-with-Large-File-Support}
+-----------------
+
+
+No, except that 32-bit applications should link with a 32-bit version of
+the library and 64-bit applications should link with a 64-bit library,
+similarly to use of other libraries that can support either a 32-bit or
+64-bit model of computation. But note that a 32-bit version of the
+netCDF library fully supports writing and reading 64-bit offset netCDF
+files.
+
+----------
+
+Is it possible to create a "classic" format netCDF file with netCDF version 3.6.0 that cannot be accessed by applications compiled and linked against earlier versions of the library? {#isitpossibleclassic360}
+----------------
+
+No, classic files created with the new library should be compatible with
+all older applications, both for reading and writing, with one minor
+exception. The exception is due to a correction of a netCDF bug that
+prevented creating records larger than 4 GiB in classic netCDF files
+with software linked against versions 3.5.1 and earlier. This limitation
+in total record size was not a limitation of the classic format, but an
+unnecessary restriction due to the use of too small a type in an
+internal data structure in the library.
+
+If you want to always make sure your classic netCDF files are readable
+by older applications, make sure you don't exceed 4 GiBytes for the
+total size of a record's worth of data. (All records are the same size,
+computed by adding the size for a record's worth of each record
+variable, with suitable padding to make sure each record begins on a
+byte boundary divisible by 4.)
+
+----------
+
+NetCDF and Other Software {#NetCDF-and-Other-Software}
+================
+
+What other software is available for accessing, displaying, and manipulating netCDF data? {#What-other-software-is-available-for-accessing-displaying-and-manipulating-netCDF-data}
+-----------------
+
+
+Utilities available in the current netCDF distribution from Unidata are
+**ncdump**, for converting netCDF files to an ASCII human-readable form,
+and **ncgen** for converting from the ASCII human-readable form back to
+a binary netCDF file or a C or FORTRAN program for generating the netCDF
+file. [Software for Manipulating or Displaying NetCDF Data](software.html) provides a list of other software useful for access, visualization, and analysis of netCDF data and data represented in other forms. Another useful [guide to netCDF utilities](http://nomads.gfdl.noaa.gov/sandbox/products/vis/data/netcdf/GFDL_VG_NetCDF_Utils.html) is available from NOAA's Geophysical Fluid Dynamics Laboratory.
+
+----------
+
+What other data access interfaces and formats are available for scientific data? {#What-other-data-access-interfaces-and-formats-are-available-for-scientific-data}
+-----------------
+
+
+The [Scientific Data Format Information FAQ](http://www.cv.nrao.edu/fits/traffic/scidataformats/faq.html) provides a somewhat dated description of other access interfaces and formats for scientific data, including [CDF](http://nssdc.gsfc.nasa.gov/cdf/cdf_home.html) and [HDF](http://hdf.ncsa.uiuc.edu/). A brief comparison of CDF, netCDF, and HDF is available in the [CDF FAQ](http://nssdc.gsfc.nasa.gov/cdf/html/FAQ.html). Another comparison is in Jan Heijmans' [An Introduction to Distribut [...]
+
+----------
+
+What is the connection between netCDF and CDF? {#What-is-the-connection-between-netCDF-and-CDF}
+-----------------
+
+
+[CDF](http://cdf.gsfc.nasa.gov/) was developed at the NASA Space Science
+Data Center at Goddard, and is freely available. It was originally a VMS
+FORTRAN interface for scientific data access. Unidata reimplemented the
+library from scratch to use [XDR](http://www.faqs.org/rfcs/rfc1832.html)
+for a machine-independent representation, designed the
+[CDL](netcdf/CDL-Syntax.htm) (network Common Data form Language) text
+representation for netCDF data, and added aggregate data access, a
+single-file implementation, named dimensions, and variable-specific
+attributes.
+
+NetCDF and CDF have evolved independently. CDF now supports many of the
+same features as netCDF (aggregate data access, XDR representation,
+single-file representation, variable-specific attributes), but some
+differences remain (netCDF doesn't support native-mode representation,
+CDF doesn't support named dimensions). There is no compatibility between
+data in CDF and netCDF form, but NASA makes available [some
+translators](http://cdf.gsfc.nasa.gov/html/dtws.html) between various
+scientific data formats. For a more detailed description of differences
+between CDF and netCDF, see the [CDF FAQ](http://cdf.gsfc.nasa.gov/html/FAQ.html).
+
+----------
+
+What is the connection between netCDF and HDF? {#What-is-the-connection-between-netCDF-and-HDF}
+-----------------
+
+
+The National Center for Supercomputing Applications (NCSA) originally
+developed [HDF4](http://hdf.ncsa.uiuc.edu/) and made it freely
+available. HDF4 is an extensible data format for self-describing files
+that was developed independently of netCDF. HDF4 supports both C and
+Fortran interfaces, and it has been successfully ported to a wide
+variety of machine architectures and operating systems. HDF4 emphasizes
+a single common format for data, on which many interfaces can be built.
+
+NCSA implemented software that provided a netCDF-2 interface to HDF4.
+With this software, it was possible to use the netCDF calling interface
+to place data into an HDF4 file.
+
+HDF5, developed and supported by The HDF Group, Inc., a non-profit
+spin-off from the NCSA group, provides a richer data model, with
+emphasis on efficiency of access, parallel I/O, and support for
+high-performance computing. The netCDF-4 project has implemented an
+enhanced netCDF interface on the HDF5 storage layer to preserve the
+desirable common characteristics of netCDF and HDF5 while taking
+advantage of their separate strengths: the widespread use and simplicity
+of netCDF and the generality and performance of HDF5.
+
+----------
+
+Has anyone implemented client-server access for netCDF data? {#Has-anyone-implemented-client-server-access-for-netCDF-data}
+-----------------
+
+
+Yes, as part of the [OPeNDAP](http://www.opendap.org/) framework,
+developers have implemented a client-server system for access to remote
+data that supports use of the netCDF interface for clients. A reference
+version of the software is available from the [OPeNDAP download site](http://www.opendap.org/download/index.html/). After linking your netCDF application with the OPeNDAP netCDF library, you can use URL's to access data from other sites running an OPeNDAP server. This supports accessing small subsets of large datasets remotely through the netCDF interfaces, without copying the datasets.
+
+The 4.1 release of netCDF will include OPeNDAP client support; an
+experimental version is available now in the snapshot distributions.
+
+Other clients and servers support access through a netCDF interface to
+netCDF and other kinds of data, including clients written using the
+[netCDF-Java library](http://www.unidata.ucar.edu/software/netcdf-java/) and servers that use the
+[THREDDS Data Server](/software/thredds/current/tds/TDS.html).
+
+The [GrADS Data Server](http://grads.iges.org/grads/gds/) provides
+subsetting and analysis services across the Internet for any
+GrADS-readable dataset, including suitable netCDF datasets. The latest
+version of the [PMEL Live Access Server](http://ferret.pmel.noaa.gov/LAS) uses THREDDS Data Server technology to provide flexible access to geo-referenced scientific data, including netCDF data.
+
+----------
+
+How do I convert between GRIB and netCDF? {#How-do-I-convert-between-GRIB-and-netCDF}
+-----------------
+
+
+Several programs and packages have been developed that convert between
+[GRIB](http://www.wmo.ch/web/www/DPS/grib-2.html) and netCDF data:
+[ncl_convert2nc](http://www.ncl.ucar.edu/Applications/grib2netCDF.shtml),
+[degrib](http://www.nws.noaa.gov/mdl/NDFD_GRIB2Decoder/),
+[CDAT](software.html#CDAT), [CDO](software.html#CDO),
+[GDAL](http://www.gdal.org/), [GrADS](software.html#GrADS), and
+[wgrib2](http://www.cpc.noaa.gov/products/wesley/wgrib2/).
+
+The Unidata [netCDF Java Library](http://www.unidata.ucar.edu/software/netcdf-java/index.html) can
+read GRIB1 and GRIB2 data (and many other data formats) through a netCDF
+interface. As a command-line example, you could convert *fileIn.grib* to
+*fileOut.nc* as follows:
+
+~~~~ {.boldcode}
+ java -Xmx1g -classpath netcdfAll-4.3.jar ucar.nc2.dataset.NetcdfDataset \
+ -in fileIn.grib -out fileOut.nc [-isLargeFile] [-netcdf4]
+~~~~
+
+For more details on using netCDF Java, see the CDM man pages for
+[nccopy](http://www.unidata.ucar.edu/software/netcdf-java/reference/manPages.html#nccopy).
+
+----------
+
+Problems and Bugs
+-----------------
+
+Can I recover data from a netCDF file that was not closed properly? {#Can-I-recover-data-from-a-netCDF-file-that-was-not-closed-properly}
+-----------------
+
+
+_I have some netcdf files which have data in them and were apparently
+not properly closed. When I examine them using **ncdump** they report zero
+data points, although the size is a few megabytes. Is there a way of
+recovering them?_
+
+If the files are in classic format or 64-bit offset format (if they were
+created by netCDF version 3.6.3 or earlier, for example), then you can
+use an editor that allows you to change binary files, such as emacs, to
+correct the four-byte number of records field in the file. This is a
+bigendian 4 byte integer that begins at the 4th byte in the file.
+
+This is what the first eight bytes would look like for classic format if
+you had zero records, where printable characters are specified as
+US-ASCII characters within single-quotes and non-printable bytes are
+denoted using a hexadecimal number with the notation '\\xDD', where each
+D is a hexadecimal digit:
+
+~~~~ {.boldcode}
+ 'C' 'D' 'F' \x01 \x00 \x00 \x00 \x00
+~~~~
+
+or
+
+~~~~ {.boldcode}
+ 'C' 'D' 'F' \x02 \x00 \x00 \x00 \x00
+~~~~
+
+for 64-bit-offset format.
+
+And this is what the first eight bytes should look like for classic
+format if you had 500 records (500 is 01F4 in hexadecimal)
+
+~~~~ {.boldcode}
+ 'C' 'D' 'F' \x01 \x00 \x01 \x0f \x04
+~~~~
+
+or
+
+~~~~ {.boldcode}
+ 'C' 'D' 'F' \x02 \x00 \x01 \x0f \x04
+~~~~
+
+for 64-bit-offset format.
+
+So if you can compute how many records should be in the file, you can
+edit the second four bytes to fix this. You can find out how many
+records should be in the file from the size of the file and from the
+variable types and their shapes. See the [description of the netCDF format](http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#File-Format)
+for classic and 64-bit offset files for how to figure out how large the
+file should be for fixed sized variables of particular shapes and for a
+specified number of record variables of particular shapes.
+
+Note that if you neglected to call the appropriate netCDF close function
+on a file, data in the last record written but not flushed to the disk
+may also be lost, but correcting the record count should allow recovery
+of the other records.
+
+----------
+
+Is there a list of reported problems and workarounds? {#Is-there-a-list-of-reported-problems-and-workarounds}
+-----------------
+
+
+Yes, the document [Known problems with the netCDF Distribution](known_problems.html) describes reported problems and workarounds in the latest version and some earlier releases.
+
+----------
+
+How do I make a bug report? {#How-do-I-make-a-bug-report}
+-----------------
+
+
+If you find a bug, send a description to
+support-netcdf at unidata.ucar.edu. This is also the address to use for
+questions or discussions about netCDF that are not appropriate for the
+entire netcdfgroup mailing list.
+
+----------
+
+How do I search through past problem reports? {#How-do-I-search-through-past-problem-reports}
+-----------------
+
+
+A search link is available at the bottom of the [netCDF homepage](http://www.unidata.ucar.edu/software/netcdf/), providing a full-text search of the
+support questions and answers about netCDF provided by Unidata support
+staff.
+
+----------
+
+Programming with NetCDF {#Programming-with-NetCDF}
+================
+
+Which programming languages have netCDF interfaces? {#Which-programming-languages-have-netCDF-interfaces}
+-----------------
+
+The netCDF distribution comes with interfaces for C, Fortran77,
+Fortran90, and C++. Other languages for which interfaces are available
+separately include:
+
+- [Ada](http://freshmeat.net/projects/adanetcdf/)
+- [IDL](software.html#IDL)
+- [Java](software.html#Java%20interface)
+- [MATLAB](software.html#MATLAB)
+- [Perl](software.html#Perl)
+- [Python](software.html#Python)
+- [R](software.html#R)
+- [Ruby](software.html#Ruby)
+- [Tcl/Tk](software.html#Tcl/Tk)
+
+----------
+
+Are the netCDF libraries thread-safe? {#Are-the-netCDF-libraries-thread-safe}
+-----------------
+
+The C-based libraries are *not* thread-safe. C-based libraries are those
+that depend on the C library, which currently include all language
+interfaces except for the Java interface. The Java interface is
+thread-safe when a few simple rules are followed, such as each thread
+getting their handle to a file.
+
+----------
+
+How does the C++ interface differ from the C interface? {#How-does-the-Cpp-interface-differ-from-the-C-interface}
+-----------------
+
+It provides all the functionality of the C interface (except for the
+generalized mapped access of ncvarputg() and ncvargetg()) and is
+somewhat simpler to use than the C interface. With the C++ interface, no
+IDs are needed for netCDF components, there is no need to specify types
+when creating attributes, and less indirection is required for dealing
+with dimensions. However, the C++ interface is less mature and
+less-widely used than the C interface, and the documentation for the C++
+interface is less extensive, assuming a familiarity with the netCDF data
+model and the C interface. Recently development of the C++ interface has
+languished as resources have been redirected to enhancing the Java
+interface.
+
+----------
+
+How does the Fortran interface differ from the C interface? {#How-does-the-Fortran-interface-differ-from-the-C-interface}
+-----------------
+
+It provides all the functionality of the C interface. The Fortran
+interface uses Fortran conventions for array indices, subscript order,
+and strings. There is no difference in the on-disk format for data
+written from the different language interfaces. Data written by a C
+language program may be read from a Fortran program and vice-versa. The
+Fortran-90 interface is much smaller than the FORTRAN 77 interface as a
+result of using optional arguments and overloaded functions wherever
+possible.
+
+----------
+
+How do the Java, Perl, Python, Ruby, ... interfaces differ from the C interface? {#How-do-the-Java-Perl-Python-Ruby-interfaces-differ-from-the-C-interface}
+-----------------
+
+They provide all the functionality of the C interface, using appropriate
+language conventions. There is no difference in the on-disk format for
+data written from the different language interfaces. Data written by a C
+language program may be read from programs that use other language
+interfaces, and vice-versa.
+
+----------
+
+How do I handle errors in C? {#How-do-I-handle-errors-in-C}
+-----------------
+
+For clarity, the NetCDF C Interface Guide contains examples which use a
+function called handle\_err() to handle potential errors like this:
+
+~~~~ {.boldcode}
+ status = nc_create("foo.nc", NC_NOCLOBBER, &ncid);
+ if (status != NC_NOERR) handle_error(status);
+~~~~
+
+Most developers use some sort of macro to invoke netCDF functions and
+test the status returned in the calling context without a function call,
+but using such a macro in the User's Guides arguably makes the examples
+needlessly complex. For example, some really excellent developers define
+an "ERR" macro and write code like this:
+
+~~~~ {.boldcode}
+ if (nc_create(testfile, NC_CLOBBER, &ncid)) ERR;
+~~~~
+
+where Err is defined in a header file:
+
+~~~~ {.boldcode}
+/* This macro prints an error message with line number and name of
+ * test program. */
+#define ERR do { \
+fflush(stdout); /* Make sure our stdout is synced with stderr. */ \
+err++; \
+fprintf(stderr, "Sorry! Unexpected result, %s, line: %d\n", \
+ __FILE__, __LINE__); \
+} while (0)
+~~~~
+
+Ultimately, error handling depends on the application which is calling
+netCDF functions. However we strongly suggest that some form of error
+checking be used for all netCDF function calls.
+
+----------
+
+
+CMake {#cmake_faq}
+==============================================
+
+Below are a list of commonly-asked questions regarding NetCDF and CMake.
+
+How can I see the options available to CMake? {#listoptions}
+---------------------------------------------
+
+ $ cmake [path to source tree] -L - This will show the basic options.
+ $ cmake [path to source tree] -LA - This will show the basic and advanced options.
+
+
+How do I specify how to build a shared or static library? {#sharedstatic}
+--------------------------------------------------------
+
+ This is controlled with the internal `cmake` option, `BUILD_SHARED_LIBS`.
+
+ $ cmake [Source Directory] -DBUILD_SHARED_LIBS=[ON/OFF]
+
+
+Can I build both shared and static libraries at the same time with cmake? {#sharedstaticboth}
+-------------------------------------------------------------------------
+
+Not at this time; it is required to instead build first one version, and then the other, if you need both.
+
+How can I specify linking against a particular library? {#partlib}
+-------------------------------------------------------
+
+It depends on the library. To specify a custom `ZLib`, for example, you would do the following:
+
+ $ cmake [Source Directory] -DZLIB_LIBRARY=/path/to/my/zlib.lib
+
+
+`HDF5` is more complex, since it requires both the `hdf5` and `hdf5_hl` libraries. You would specify custom `HDF5` libraries as follows:
+
+ $ cmake [Source Directory] -DHDF5_LIB=/path/to/hdf5.lib \
+ -DHDF5_HL_LIB=/path/to/hdf5_hl.lib \
+ -DHDF5_INCLUDE_DIR=/path/to/hdf5/include
+
+
+Alternatively, you may specify:
+
+ $ cmake [Source Directory] \
+ -DHDF5_LIBRARIES="/path/to/hdf5.lib;/path/to/hdf5_hl.lib" \
+ -DHDF5_INCLUDE_DIRS=/path/to/hdf5/include/
+
+
+What if I want to link against multiple libraries in a non-standard location {#nonstdloc}
+----------------------------------------------------------------------------
+
+ You can specify the path to search when looking for dependencies and header files using the `CMAKE_PREFIX_PATH` variable:
+
+* Windows:
+
+ $ cmake [Source Directory] -DCMAKE_PREFIX_PATH=c:\shared\libs\
+
+
+* Linux/Unix/OSX:
+
+ $ cmake [Source Directory] -DCMAKE_PREFIX_PATH=/usr/custom_library_locations/
+
+How can I specify a Parallel Build using HDF5 {#parallelhdf}
+----------------------------------------------
+
+If cmake is having problems finding the parallel `HDF5` install, you can specify the location manually:
+
+
+ $ cmake [Source Directory] -DENABLE_PARALLEL=ON \
+ -DHDF5_LIB=/usr/lib64/openmpi/lib/libhdf5.so \
+ -DHDF5_HL_LIB=/usr/lib64/openmpi/lib/libhdf5.hl.so \
+ -DHDF5_INCLUDE_DIR=/usr/include/openmpi-x86_64 \
+
+You will, of course, need to use the location of the libraries specific to your development environment.
+
+----------------
+
+Plans {#Plans}
+================
+
+What other future work on netCDF is planned? {#What-other-future-work-on-netCDF-is-planned}
+-----------------
+
+Issues, bugs, and plans for netCDF are maintained in the Unidata issue
+tracker sites for
+[netCDF-C](https://www.unidata.ucar.edu/jira/browse/NCF), [Common Data Model / NetCDF-Java](https://www.unidata.ucar.edu/jira/browse/CDM),
+[netCDF-Fortran](https://www.unidata.ucar.edu/jira/browse/NCFORTRAN),
+and [netCDF-CXX4](https://www.unidata.ucar.edu/jira/browse/NCXXF), and
+[old netCDF-C++
+(deprecated)](https://www.unidata.ucar.edu/jira/browse/NCCPP).
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 75ee6b5..1eaf629 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -9,9 +9,8 @@ EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html \
guide.dox types.dox notes.dox cdl.dox \
architecture.dox internal.dox windows-binaries.md \
building-with-cmake.md CMakeLists.txt \
- Doxyfile.guide.in Doxyfile.tutorial.in \
groups.dox install.md install-fortran.md \
- all-error-codes.md cmake_faq.md
+ all-error-codes.md cmake_faq.md credits.md
# Turn off parallel builds in this directory.
.NOTPARALLEL:
@@ -42,7 +41,7 @@ clean-local:
rm -rf $(top_builddir)/docs/man
rm -rf $(top_builddir)/docs/html
rm -rf $(top_builddir)/docs/latex
-endif
+endif
# Timestamp to prevent rebuilds.
# We must do this twice. The first time
@@ -51,12 +50,6 @@ endif
doxyfile.stamp:
$(DOXYGEN) Doxyfile
- $(DOXYGEN) Doxyfile.guide
- $(DOXYGEN) Doxyfile.tutorial
-
- $(DOXYGEN) Doxyfile
- $(DOXYGEN) Doxyfile.guide
- $(DOXYGEN) Doxyfile.tutorial
echo Timestamp > doxyfile.stamp
CLEANFILES = doxyfile.stamp html latex man
diff --git a/docs/Makefile.in b/docs/Makefile.in
new file mode 100644
index 0000000..b064a67
--- /dev/null
+++ b/docs/Makefile.in
@@ -0,0 +1,726 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005-2011, see the COPYRIGHT file for more information.
+# This file builds the netcdf documentation.
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = docs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = Doxyfile
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# These files will be included with the dist.
+EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in footer.html \
+ mainpage.dox tutorial.dox install.dox dispatch.dox \
+ guide.dox types.dox notes.dox cdl.dox \
+ architecture.dox internal.dox windows-binaries.md \
+ building-with-cmake.md CMakeLists.txt \
+ groups.dox install.md install-fortran.md \
+ all-error-codes.md cmake_faq.md credits.md
+
+
+# To build documentation you must have M4 in their path.
+M4 = m4
+SUBDIRS = images
+CLEANFILES = doxyfile.stamp html latex man
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign docs/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+ at BUILD_DOCS_FALSE@all-local:
+all-am: Makefile all-local
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ at BUILD_DOCS_FALSE@clean-local:
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
+ check check-am clean clean-generic clean-libtool clean-local \
+ cscopelist-am ctags ctags-am distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Turn off parallel builds in this directory.
+.NOTPARALLEL:
+
+# Copy man pages.
+#directory = $(top_srcdir)/docs/man/man3/
+#dist_man_MANS = $(docsdirectory)/man_page_1.3 $(directory)/man_page_2.3
+# $(directory)/man_page_1.3: doxyfile.stamp
+# $(directory)/man_page_2.3: doxyfile.stamp
+
+# Note: in order to work with distcheck,
+# the Doxyfile needs to be preprocessed
+# to insert actual location of $(srcdir)
+#BUILT_SOURCES = Doxyfile.tmp
+
+#Doxyfile.tmp: Doxyfile
+# sed -e 's|$$[({]rootdir[})]|$(abs_top_srcdir)|g' <Doxyfile > ./Doxyfile.tmp
+
+ at BUILD_DOCS_TRUE@all-local: doxyfile.stamp
+ at BUILD_DOCS_TRUE@clean-local:
+ at BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/man
+ at BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/html
+ at BUILD_DOCS_TRUE@ rm -rf $(top_builddir)/docs/latex
+
+# Timestamp to prevent rebuilds.
+# We must do this twice. The first time
+# builds the tag files. The second time
+# includes them in the documentation.
+
+doxyfile.stamp:
+ $(DOXYGEN) Doxyfile
+ echo Timestamp > doxyfile.stamp
+
+# 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: doxyfile.stamp
+ cd html; tar cf ../netcdf_docs.tar *
+ gzip -f netcdf_docs.tar
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/all-error-codes.md b/docs/all-error-codes.md
index 4b92b2c..ff2c35d 100644
--- a/docs/all-error-codes.md
+++ b/docs/all-error-codes.md
@@ -1,51 +1,47 @@
NetCDF Error Code Listing {#nc-error-codes}
==================
-\ingroup error
-
-\todo Review list for completeness.
-
\tableofcontents
# NetCDF-3 Error Codes {#nc3-error-codes}
~~~~
-#define NC_NOERR 0 // No Error
-#define NC_EBADID (-33) // Not a netcdf id
-#define NC_ENFILE (-34) // Too many netcdfs open
-#define NC_EEXIST (-35) // netcdf file exists && NC_NOCLOBBER
-#define NC_EINVAL (-36) // Invalid Argument
-#define NC_EPERM (-37) // Write to read only
-#define NC_ENOTINDEFINE (-38) // Operation not allowed in data mode
-#define NC_EINDEFINE (-39) // Operation not allowed in define mode
-#define NC_EINVALCOORDS (-40) // Index exceeds dimension bound
-#define NC_EMAXDIMS (-41) // NC_MAX_DIMS exceeded
-#define NC_ENAMEINUSE (-42) // String match to name in use
-#define NC_ENOTATT (-43) // Attribute not found
-#define NC_EMAXATTS (-44) // NC_MAX_ATTRS exceeded
-#define NC_EBADTYPE (-45) // Not a netcdf data type
-#define NC_EBADDIM (-46) // Invalid dimension id or name
-#define NC_EUNLIMPOS (-47) // NC_UNLIMITED in the wrong index
-#define NC_EMAXVARS (-48) // NC_MAX_VARS exceeded
-#define NC_ENOTVAR (-49) // Variable not found
-#define NC_EGLOBAL (-50) // Action prohibited on NC_GLOBAL varid
-#define NC_ENOTNC (-51) // Not a netcdf file
-#define NC_ESTS (-52) // In Fortran, string too short
-#define NC_EMAXNAME (-53) // NC_MAX_NAME exceeded
-#define NC_EUNLIMIT (-54) // NC_UNLIMITED size already in use
-#define NC_ENORECVARS (-55) // nc_rec op when there are no record vars
-#define NC_ECHAR (-56) // Attempt to convert between text & numbers
-#define NC_EEDGE (-57) // Edge+start exceeds dimension bound
-#define NC_ESTRIDE (-58) // Illegal stride
-#define NC_EBADNAME (-59) // Attribute or variable name contains illegal characters
+#define NC_NOERR 0 // No Error
+#define NC_EBADID (-33) // Not a netcdf id
+#define NC_ENFILE (-34) // Too many netcdfs open
+#define NC_EEXIST (-35) // netcdf file exists && NC_NOCLOBBER
+#define NC_EINVAL (-36) // Invalid Argument
+#define NC_EPERM (-37) // Write to read only
+#define NC_ENOTINDEFINE (-38) // Operation not allowed in data mode
+#define NC_EINDEFINE (-39) // Operation not allowed in define mode
+#define NC_EINVALCOORDS (-40) // Index exceeds dimension bound
+#define NC_EMAXDIMS (-41) // NC_MAX_DIMS exceeded
+#define NC_ENAMEINUSE (-42) // String match to name in use
+#define NC_ENOTATT (-43) // Attribute not found
+#define NC_EMAXATTS (-44) // NC_MAX_ATTRS exceeded
+#define NC_EBADTYPE (-45) // Not a netcdf data type
+#define NC_EBADDIM (-46) // Invalid dimension id or name
+#define NC_EUNLIMPOS (-47) // NC_UNLIMITED in the wrong index
+#define NC_EMAXVARS (-48) // NC_MAX_VARS exceeded
+#define NC_ENOTVAR (-49) // Variable not found
+#define NC_EGLOBAL (-50) // Action prohibited on NC_GLOBAL varid
+#define NC_ENOTNC (-51) // Not a netcdf file
+#define NC_ESTS (-52) // In Fortran, string too short
+#define NC_EMAXNAME (-53) // NC_MAX_NAME exceeded
+#define NC_EUNLIMIT (-54) // NC_UNLIMITED size already in use
+#define NC_ENORECVARS (-55) // nc_rec op when there are no record vars
+#define NC_ECHAR (-56) // Attempt to convert between text & numbers
+#define NC_EEDGE (-57) // Edge+start exceeds dimension bound
+#define NC_ESTRIDE (-58) // Illegal stride
+#define NC_EBADNAME (-59) // Attribute or variable name contains illegal characters
-// N.B. following must match value in ncx.h
+// N.B. following must match value in ncx.h
-#define NC_ERANGE (-60) // Math result not representable
-#define NC_ENOMEM (-61) // Memory allocation (malloc) failure
-#define NC_EVARSIZE (-62) // One or more variable sizes violate format constraints
-#define NC_EDIMSIZE (-63) // Invalid dimension size
-#define NC_ETRUNC (-64) // File likely truncated or possibly corrupted
+#define NC_ERANGE (-60) // Math result not representable
+#define NC_ENOMEM (-61) // Memory allocation (malloc) failure
+#define NC_EVARSIZE (-62) // One or more variable sizes violate format constraints
+#define NC_EDIMSIZE (-63) // Invalid dimension size
+#define NC_ETRUNC (-64) // File likely truncated or possibly corrupted
~~~~
# NetCDF-4 Error Codes {#nc4-error-codes}
@@ -66,10 +62,10 @@ were added for new errors unique to netCDF-4.
#define NC_ENOCOMPOUND (-109)
#define NC_EATTEXISTS (-110)
#define NC_ENOTNC4 (-111) // Attempting netcdf-4 operation on netcdf-3 file.
-#define NC_ESTRICTNC3 (-112) // Attempting netcdf-4 operation on strict nc3 netcdf-4 file.
-#define NC_EBADGRPID (-113) // Bad group id. Bad!
-#define NC_EBADTYPEID (-114) // Bad type id.
-#define NC_EBADFIELDID (-115) // Bad field id.
+#define NC_ESTRICTNC3 (-112) // Attempting netcdf-4 operation on strict nc3 netcdf-4 file.
+#define NC_EBADGRPID (-113) // Bad group id. Bad!
+#define NC_EBADTYPEID (-114) // Bad type id.
+#define NC_EBADFIELDID (-115) // Bad field id.
#define NC_EUNKNAME (-116)
~~~~
@@ -79,25 +75,24 @@ If the DAP client is enabled, then the following additional error codes
may occur.
~~~~
-#define NC_EDAP (-66) // Generic DAP error
-#define NC_ECURL (-67) // Generic libcurl error
-#define NC_EIO (-68) // Generic IO error
-#define NC_ENODATA (-69) // Attempt to access variable with no data
-#define NC_EDAPSVC (-70) // DAP Server side error
-#define NC_EDAS (-71) // Malformed or inaccessible DAS
-#define NC_EDDS (-72) // Malformed or inaccessible DDS
-#define NC_EDATADDS (-73) // Malformed or inaccessible DATADDS
-#define NC_EDAPURL (-74) // Malformed DAP URL
+#define NC_EDAP (-66) // Generic DAP error
+#define NC_ECURL (-67) // Generic libcurl error
+#define NC_EIO (-68) // Generic IO error
+#define NC_ENODATA (-69) // Attempt to access variable with no data
+#define NC_EDAPSVC (-70) // DAP Server side error
+#define NC_EDAS (-71) // Malformed or inaccessible DAS
+#define NC_EDDS (-72) // Malformed or inaccessible DDS
+#define NC_EDATADDS (-73) // Malformed or inaccessible DATADDS
+#define NC_EDAPURL (-74) // Malformed DAP URL
#define NC_EDAPCONSTRAINT (-75) // Malformed DAP Constraint
-#define NC_EDAP (-66) // Generic DAP error
-#define NC_ECURL (-67) // Generic libcurl error
-#define NC_EIO (-68) // Generic IO error
-#define NC_ENODATA (-69) // Attempt to access variable with no data
-#define NC_EDAPSVC (-70) // DAP Server side error
-#define NC_EDAS (-71) // Malformed or inaccessible DAS
-#define NC_EDDS (-72) // Malformed or inaccessible DDS
-#define NC_EDATADDS (-73) // Malformed or inaccessible DATADDS
-#define NC_EDAPURL (-74) // Malformed DAP URL
+#define NC_EDAP (-66) // Generic DAP error
+#define NC_ECURL (-67) // Generic libcurl error
+#define NC_EIO (-68) // Generic IO error
+#define NC_ENODATA (-69) // Attempt to access variable with no data
+#define NC_EDAPSVC (-70) // DAP Server side error
+#define NC_EDAS (-71) // Malformed or inaccessible DAS
+#define NC_EDDS (-72) // Malformed or inaccessible DDS
+#define NC_EDATADDS (-73) // Malformed or inaccessible DATADDS
+#define NC_EDAPURL (-74) // Malformed DAP URL
#define NC_EDAPCONSTRAINT (-75) // Malformed DAP Constraint
~~~~
-
diff --git a/docs/building-with-cmake.md b/docs/building-with-cmake.md
index f50cbfc..3448976 100644
--- a/docs/building-with-cmake.md
+++ b/docs/building-with-cmake.md
@@ -14,7 +14,7 @@ In addition to providing new build options for netCDF-C, we will also provide pr
The following packages are required to build netCDF-C using CMake.
* netCDF-C Source Code
-* CMake version 2.8.9 or greater.
+* CMake version 2.8.12 or greater.
* Optional Requirements:
* HDF5 Libraries for netCDF4/HDF5 support.
* libcurl for DAP support.
diff --git a/docs/cdl.dox b/docs/cdl.dox
index ce99d60..8b1d418 100644
--- a/docs/cdl.dox
+++ b/docs/cdl.dox
@@ -4,7 +4,7 @@ Documentation for Common Data Language
\page CDL
-\section CDL Syntax
+\section cdl_syntax CDL Syntax
Below is an example of CDL, describing a netCDF dataset with several
named dimensions (lat, lon, time), variables (z, t, p, rh, lat, lon,
@@ -23,12 +23,12 @@ data.
double p(time,lat,lon);
int rh(time,lat,lon);
- lat:units = "degrees_north";
+ char lat:units = "degrees_north";
lon:units = "degrees_east";
time:units = "seconds";
z:units = "meters";
- z:valid_range = 0., 5000.;
- p:_FillValue = -9999.;
+ float z:valid_range = 0., 5000.;
+ double p:_FillValue = -9999.;
rh:_FillValue = -1;
data:
@@ -75,18 +75,26 @@ type, a length, and a value. In contrast to variables that are
intended for data, attributes are intended for ancillary data or
metadata (data about data).
-In CDL, an attribute is designated by a variable and attribute name,
-separated by a colon (':'). It is possible to assign global attributes
-to the netCDF dataset as a whole by omitting the variable name and
-beginning the attribute name with a colon (':'). The data type of an
-attribute in CDL, if not explicitly specified, is derived from the
-type of the value assigned to it. The length of an attribute is the
-number of data values or the number of characters in the character
-string assigned to it. Multiple values are assigned to non-character
-attributes by separating the values with commas (','). All values
-assigned to an attribute must be of the same type. In the netCDF-4
-enhanced model, attributes may be declared to be of user-defined type,
-like variables.
+In CDL, an attribute is designated by a data type, a
+variable, and an attribute name. The variable and the
+attribute name are separated by a colon (':'). If present,
+the data type precedes the variable name. It is possible to
+assign global attributes to the netCDF dataset as a whole by
+omitting the variable name and beginning the attribute name
+with a colon (':'). The data type of an attribute in CDL, if
+not explicitly specified, is derived from the type of the
+value assigned to it, with one exception. If the value is a
+string, then the inferred type is char, not string. If it
+is desired to have a string typed attribute, this must be
+stated explicitly.
+
+The length of an attribute is the number of data values or
+the number of characters in the character string assigned to
+it if the type is char. Multiple values are assigned to
+non-character attributes by separating the values with
+commas (','). All values assigned to an attribute must be of
+the same type. In the netCDF-4 enhanced model, attributes
+may be declared to be of user-defined type, like variables.
In CDL, just as for netCDF, the names of dimensions, variables and
attributes (and, in netCDF-4 files, groups, user-defined types,
@@ -136,7 +144,7 @@ conversions among primitive types are supported.
A special notation for fill values is supported: the ‘_’ character
designates a fill value for variables.
-\section CDL Data Types
+\section cdl_data_types CDL Data Types
The CDL primitive data types for the classic model are:
- char Characters.
@@ -176,7 +184,7 @@ floating-point numbers. The double type can hold values between about
standard normalized double-precision, floating-point numbers. The
string type holds variable length strings.
-\section CDL Notation for Data Constants
+\section cdl_notations_for_data_constants CDL Notation for Data Constants
This section describes the CDL notation for constants.
diff --git a/docs/cmake_faq.md b/docs/cmake_faq.md
index 58934d0..1a1621e 100644
--- a/docs/cmake_faq.md
+++ b/docs/cmake_faq.md
@@ -1,10 +1,6 @@
CMake-Related Frequently-Asked-Questions (FAQ) {#cmake_faq}
==============================================
-[TOC]
-
-# CMake Frequently Asked Questions (FAQ) {#cmake_faq_2}
-
Below are a list of commonly-asked questions regarding NetCDF and CMake.
## How can I see the options available to CMake? {#listoptions}
diff --git a/docs/credits.md b/docs/credits.md
new file mode 100644
index 0000000..e7c164a
--- /dev/null
+++ b/docs/credits.md
@@ -0,0 +1,120 @@
+NetCDF Credits {#netcdf-credits-page}
+==============
+
+[Unidata](http://www.unidata.ucar.edu/) is sponsored by the [National
+Science Foundation](http://www.nsf.gov/) and managed by the [University
+Corporation for Atmospheric Research](http://www.ucar.edu/).
+
+The NASA CDF data model, to which netCDF owes much, was developed by
+Michael Gough and Lloyd Treinish. Joe Fahle designed a C version for a
+CDF-like interface and discussions with Joe provided much of the
+inspiration for the original netCDF C interface. The netCDF C library
+and first version of the Java interface were written by Glenn Davis. The
+nctest test suite, ncdump, ncgen, the original C++ interface, and most
+of the original User's Guides were written by Russ Rew. The Fortran77
+test code was written by Cathy Cormack. The configure-based installation
+system, vars and varm array access implementation, Fortran77 interface,
+and original perl interface were written by Steve Emmerson. The netCDF-3
+interface design and the nc\_test exhaustive test code were developed by
+Glenn Davis and Harvey Davies. The Fortran77 interface uses Burkhard
+Burow's cfortran.h package. John Caron wrote the subsequent netCDF Java
+implementations. The Fortran90 interface and User's Guide were developed
+by Robert Pincus. Ed Hartnett updated and simplified the configure-based
+installation, enhanced Windows support, refactored the documentation
+while converting it into texinfo, and is the primary developer for
+netCDF-4. Dennis Heimbigner wrote the netCDF-4 version of ncgen, the C
+OPeNDAP client, the dispatch layer, and the implementation of diskless
+files. The nccopy utility was added by Russ Rew. Lynton Appel developed
+the C++ implementation for netCDF-4. Ward Fisher developed the netCDF
+Windows/Microsoft Visual Studio port and implemented the portable
+CMake-based netCDF build and test system.
+
+The following people have contributed related software, bug reports,
+fixes, valuable suggestions, and other kinds of useful support:
+
+Jennifer Adams, Bob Albrecht, Chuck Alexander, Dave Allured, Ethan
+Alpert, Chris Anderson, Ayal Anis, Harald Anlauf, Lynton Appel,
+Sylwester Arabas, Stephen Armstrong, Ben Auer, Phil Austin, Fedor Baart,
+Eric Bachalo, Jason Bacon, Larry Baker, Sandy Ballard, Matthew Banta,
+Christopher Bartz, Sourish Basu, Mike Berkley, Stephen Bespalko, Ingo
+Bethke, Sherman Beus, Sachin Kumar Bhate, John A. Biddiscombe, Lorenzo
+Bigagli, Mark Borges, Nicola Botta, Kenneth P. Bowman, Bill Boyd, Mark
+Bradford, Bernward Bretthauer, Paul A. Bristow, Roy Britten, Dave Brown,
+Alexander Bruhns, Ryan Cabell, Peter Cao, Jed O. Caplan, Glenn Carver,
+Tom Cavin, Morrell Chance, Susan C. Cherniss, Jason E. Christy, Gerardo
+Cisneros, Alain Coat, Carlie J. Coats, Jr., Antonio S. Cofiño, Tony
+Conrad, Jon Corbet, Alexandru Corlan, Gus Correa, Jim Cowie, Alex
+Crosby, Arlindo da Silva, Chris Dallimore, Rick Danielson, Alan Dawes,
+Donald W. Denbo, Charles R. Denham, Arnaud Desitter, Sue Dettling, Steve
+Diggs, Martin Dix, Michael Dixon, Jacek Dlugosz, Alastair Doherty,
+Charles Doutriaux, Bob Drach, Ludovic Drouineau, Huaiyu Duan, Patrice
+Dumas, Paul J. Durack, Frank Dzaak, Brian Eaton, Harry Edmon, Veit
+Eitner, Lee Elson, Mario Emmenlauer, Takeshi Enomoto, Ata Etemadi,
+Constantinos Evangelinos, John Evans, Joe Fahle, Gabor Fichtinger, Glenn
+Flierl, Connor J. Flynn, Shanna-Shaye Forbes, Anne Fouilloux,
+Jean-Francois Foccroulle, Mike Folk, David Forrest, David W. Forslund,
+Ben Foster, Masaki Fukuda, Dave Fulker, Ryo Furue, James Gallagher, Jose
+Luis Garcia, Rao Garimella, Bear Giles, Tom Glaess, Peter Gleckler,
+Christoph Gohlke, Paul Goodman, Nath Gopalaswamy, André Gosselin, Udo
+Grabowski, Gary Granger, Jonathan Gregory, Markus Gross, Lionel Guez,
+Patrick Guio, Mark Hadfield, Magnus Hagdorn, Paul Hamer, Steve Hankin,
+Petr Hanousek, Christopher Harrop, Bill Hart, David Hassell, Ros
+Hatcher, Mark Hedley, Kate Hedstrom, Charles Hemphill, Barron Henderson,
+Joerg Henrichs, Olaf Heudecker, Thijs Heus, Donn Hines, Konrad Hinsen,
+Yuan Ho, Kari Hoijarvi, Leigh Holcombe, Tim Holt, Toshinobu Hondo,
+Takeshi Horinouchi, Chris Houck, Wei Huang, Matt Huddleston, Matt
+Hughes, Tim Hume, Doug Hunt, Nathanael Hübbe, L. F. Hwang, Alan Imerito,
+Jouk Jansen, Steve Jardin, Rimvydas Jasinskas, Harry Jenter, Susan
+Jesuroga, Patrick Jöckel, Tomas Johannesson, Peter Gylling Jørgensen,
+Junchang Ju. Narita Kazumi, Maxwell Kelley, John Kemp, Jamie
+Kettleborough, Nikolay Khabarov, Constantine Khroulev, Steve Kirby,
+Heiko Klein, Luis Kornblueh, Frank Kreienkamp, Jeff Kuehn, Julian
+Kunkel, Jarle Ladstein, V. Lakshmanan, Bruce Langdon, Éric Larouche,
+Stephen Leak, Benoit Lecocq, Tom LeFebvre, JF Le Fillátre, Angel Li,
+Jianwei Li, Zhi Liang, Wei-keng Liao, Si Liu, Rick Light, Brian Lincoln,
+Keith Lindsay, Fei Liu, Josep Llodrà, Jeffery W. Long, Dave Lucas,
+Valerio Luccio, Lifeng Luo, John Lillibridge, Steve Luzmoor, Lawrence
+Lyjak, Rich Lysakowski, Sergey Malyshev, Len Makin, Harry Mangalam,
+Ansley Manke, David Mansbach, Jim Mansbridge, Andreas Manschke, Chris
+Marquardt, Marinna Martini, William C. Mattison, Craig Mattocks, Sean
+McBride, Mike McCarrick, Bill McKie, Ron Melton, Roy Mendelssohn, Pavel
+Michna, Barb Mihalas, Henry LeRoy Miller Jr., Philip Miller, Rakesh
+Mithal, Masahiro Miiyaki, Kengo Miyamoto, Tushar Mohan, Christine C.
+Molling, Skip Montanaro, Thomas L. Moore, Paidemwoyo Munhutu, Stefano
+Nativi, Gottfried Necker, Peter Neelin, Erik Noble, Michael Nolta, Bill
+Noon, Enda O'Brien, Thomas Orgis, Dave Osburn, Dan Packman, Mark Payne,
+Simon Paech, Doug Palmer, Gabor Papp, Stephen Pascoe, Morten Pedersen,
+Louise Perkins, Michael D Perryman, Hartmut Peters, Ron Pfaff, David
+Pierce, Alexander Pletzer, Philippe Poilbarbe, Dierk Polzin, Orion
+Poplawski, Jacob Weismann Poulsen, Ken Prada, Greg Rappa, Dave Raymond,
+Michael Redetzky, Rene Redler, Mark Reyes, Doug Reynolds, Jose Agustín
+García Reynoso, Mike Rilee, Mark Rivers, Randolph Roesler, Mike Romberg,
+Mathis Rosenhauer, Cédric Roux, Suzanne T. Rupert, Stephen Sachs,
+Toshihiro Sakakima, Eric Salathe, Sean Patrick Santos, Matthew H.
+Savoie, Marie Schall, Remko Scharroo, Brian Schlining, Nico Schlömer.
+Dan Schmitt, Robert B. Schmunk, Larry A. Schoof, Rich Schramm, William
+J. Schroeder, Karen Schuchardt, Uwe Schulzweida, Keith Searight, Johann
+Schmitz, Andreas Schwab, Guntram Seiß, John Sheldon, Sergei Shibaev,
+Masato Shiotani, Michael Shopsin, Richard P. Signell, Steve Simpson, Joe
+Sirott, Greg Sjaardema, Dirk Slawinski, Cathy Smith, Neil R. Smith,
+Ruben Smits, Peter P. Smolka, Nancy Soreide, Hudson Souza, Gunter
+Spranz, Richard Stallman, Bjorn Stevens, Reto Stöckli, Bob Swanson, John
+Tanski, Karl Taylor, Jason Thaxter, Kevin W. Thomas, Olivier Titaud,
+Jonathan Tomshine, Mark Tracy, Philippe Tulkens, Warren Turkal, Tom
+Umeda, Joe VanAndel, Paul van Delst, Gerald van der Grijn, Luuk van
+Dijk, Richard van Hees, Martin van Driel, Jànos Vègh, Jos Verdoold,
+Matthieu Verstraete, Pedro Vicente, Lykle Voort, Hailin Yan, Lianqing
+Yu, Bernhard Wagner, Thomas Wainwright, Stephen Walker, Ya-Qiang Wang,
+John C. Warner, Chris Webster, Richard Weed, Paul Wessel, Jeffrey S.
+Whitaker, Carsten Wieczorrek, Gerry Wiener, Ralf Wildenhues, David
+Wilensky, Hartmut Wilhelms, Gareth Williams, Florian Wobbe, David
+Wojtowicz, Jeff Wong, Randy Zagar, Charlie Zender, Remik Ziemlinski.
+
+Development and implementation of netCDF is supported by the National
+Science Foundation, Unidata's primary sponsor. Development of the
+netCDF-4 interface was initially funded by NASA's Earth Science
+Technology Office. Addition of OPeNDAP client support to the netCDF
+library is based on work supported by the National Science Foundation.
+Any opinions, findings and conclusions or recomendations expressed in
+this material are those of the authors and do not necessarily reflect
+the views of the sponsoring organizations.
diff --git a/docs/docmap.pdf b/docs/docmap.pdf
new file mode 100644
index 0000000..7d347f0
Binary files /dev/null and b/docs/docmap.pdf differ
diff --git a/docs/errors.dox.old b/docs/errors.dox.old
deleted file mode 100644
index 6e0300c..0000000
--- a/docs/errors.dox.old
+++ /dev/null
@@ -1,51 +0,0 @@
-/** \file
-Documentation of error handling.
-
-\page programming_notes Programming Notes
-
-\tableofcontents
-
-\section error_handling_notes Error Handling
-
-Each netCDF function returns an integer status value. Non-zero values
-indicate error.
-
-The nc_strerror function is available to convert a returned integer
-error status into an error message string.
-
-If the returned status value indicates an error, you may handle it in
-any way desired, from printing an associated error message and exiting
-to ignoring the error indication and proceeding (not
-recommended!). For simplicity, the examples in this guide check the
-error status and call a separate function, handle_err(), to handle any
-errors. One possible definition of handle_err() can be found within
-the documentation of nc_strerror().
-
-Occasionally, low-level I/O errors may occur in a layer below the
-netCDF library. For example, if a write operation causes you to exceed
-disk quotas or to attempt to write to a device that is no longer
-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
-
-Many of the argurments of netCDF functions are pointers. For example,
-the nc_inq() functions takes four pointers:
-
-\code
-int nc_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp);
-\endcode
-
-A NULL may be passed for any of these pointers, and it will be
-ignored. For example, interested in the number of dimensions only, the
-following code will work:
-
-\code
-int ndims;
-...
-if (nc_inq(ncid, &ndims, NULL, NULL, NULL))
- return SOME_ERROR;
-\endcode
-
-*/
diff --git a/docs/guide.dox b/docs/guide.dox
index 303bf3f..ee9f948 100644
--- a/docs/guide.dox
+++ b/docs/guide.dox
@@ -1,14 +1,11 @@
-/*! \file guide.dox The NetCDF User's Guide
+/*! \page guide.dox The NetCDF User's Guide
\brief The NetCDF User's Guide
-\mainpage
-
\tableofcontents
\section user_guide The NetCDF User's Guide
-- \ref mainpage_netcdf
- \subpage netcdf_summary
- \subpage netcdf_introduction
- \subpage file_structure_and_performance
@@ -51,7 +48,7 @@ that makes the data useful.
This User's Guide presents the netCDF data model. It explains how the
netCDF data model uses dimensions, variables, and attributes to store
-data.
+data.
Reference documentation for UNIX systems, in the form of UNIX 'man'
pages for the C and FORTRAN interfaces is also available at the netCDF
@@ -213,7 +210,7 @@ beginning of the file. In this documentation this format is called
“64-bit offset format.”
Since 64-bit offset format was introduced in version 3.6.0, earlier
-versions of the netCDF library can't read 64-bit offset files.
+versions of the netCDF library can't read 64-bit offset files.
\subsection netcdf_4_format NetCDF-4 Format
@@ -734,7 +731,7 @@ enumeration symbols) consist of arbitrary sequences of alphanumeric
characters, underscore '_', period '.', plus '+', hyphen '-', or at
sign '@', but beginning with an alphanumeric character or
underscore. However names commencing with underscore are reserved for
-system use.
+system use.
Beginning with versions 3.6.3 and 4.0, names may also include UTF-8
encoded Unicode characters as well as other special characters, except
@@ -742,11 +739,11 @@ for the character '/', which may not appear in a name.
Names that have trailing space characters are also not permitted.
-Case is significant in netCDF names.
+Case is significant in netCDF names.
\subsection Name Length
-A zero-length name is not allowed.
+A zero-length name is not allowed.
Names longer than ::NC_MAX_NAME will not be accepted any netCDF define
function. An error of ::NC_EMAXNAME will be returned.
@@ -759,7 +756,7 @@ characters.
\subsection NetCDF Conventions
Some widely used conventions restrict names to only alphanumeric
-characters or underscores.
+characters or underscores.
\section archival Is NetCDF a Good Archive Format?
@@ -783,7 +780,7 @@ and written compressed.
Attribute conventions are assumed by some netCDF generic applications,
e.g., ‘units’ as the name for a string attribute that gives the units
-for a netCDF variable.
+for a netCDF variable.
It is strongly recommended that applicable conventions be followed
unless there are good reasons for not doing so. Below we list the
@@ -890,7 +887,7 @@ If valid values are specified using the valid_min, valid_max,
valid_range, or _FillValue attributes, those values should be
specified in the domain of the data in the file (the packed data), so
that they can be interpreted before the scale_factor and add_offset
-are applied.
+are applied.
\subsection add_offset Add Offset
@@ -932,7 +929,7 @@ values should be treated as signed or unsigned. The attributes
valid_min and valid_max may be used for this purpose. For example, if
you intend that a byte variable store only non-negative values, you
can use valid_min = 0 and valid_max = 255. This attribute is ignored
-by the netCDF library.
+by the netCDF library.
\subsection C_format C Format
@@ -945,7 +942,7 @@ be appropriate to define the C_format attribute as "%.3g". The ncdump
utility program uses this attribute for variables for which it is
defined. The format applies to the scaled (internal) type and value,
regardless of the presence of the scaling attributes scale_factor and
-add_offset.
+add_offset.
\subsection FORTRAN_format FORTRAN format
@@ -957,7 +954,7 @@ be appropriate to define the FORTRAN_format attribute as "(G10.3)".
\subsection title Title
A global attribute that is a character array providing a succinct
-description of what is in the dataset.
+description of what is in the dataset.
\subsection history History
@@ -965,7 +962,7 @@ A global attribute for an audit trail. This is a character array with
a line for each invocation of a program that has modified the
dataset. Well-behaved generic netCDF applications should append a line
containing: date, time of day, user name, program name and command
-arguments.
+arguments.
\subsection Conventions Conventions
@@ -1003,7 +1000,7 @@ conventions.
It is possible for a netCDF file to adhere to more than one set of
conventions, even when there is no inheritance relationship among the
-conventions. In this case, the value of the `Conventions' attribute
+conventions. In this case, the value of the 'Conventions' attribute
may be a single text string containing a list of the convention names
separated by blank space (recommended) or commas (if a convention name
contains blanks).
@@ -1227,16 +1224,18 @@ Forecast (CF) metadata conventions.
In September, 2010, the Netcdf-Java/CDM (Common Data Model) version
4.2 library was declared stable and made available to users. This
-100%-Java implementation provides a read-write interface to netCDF-3
-classic and 64-bit offset data, as well as a read-onlt interface to
+100%-Java implementation provided a read-write interface to netCDF-3
+classic and 64-bit offset data, as well as a read-only interface to
netCDF-4 enhanced model data and many other formats of scientific data
-through a common (CDM) interface. The NetCDF-Java library also
-implements NcML, which allows you to add metadata to CDM datasets, as
-well as to create virtual datasets through aggregation. A ToolsUI
+through a common (CDM) interface. More recent releases support
+writing netCDF-4 data. The NetCDF-Java library also
+implements NcML, which allows you to add metadata to CDM datasets. A ToolsUI
application is also included that provides a graphical user interface
to capabilities similar to the C-based ncdump and ncgen utilities, as
well as CF-compliance checking and many other features.
+
+
\section remote_client The Remote Data Access Client
Starting with version 4.1.1 the netCDF C libraries and utilities have
@@ -1349,9 +1348,9 @@ declared as:
...
float temp[TIMES*LEVELS*LATS*LONS];
\endcode
-
+
to keep the data in a one-dimensional array, or
-
+
\code
...
float temp[TIMES][LEVELS][LATS][LONS];
@@ -1377,9 +1376,9 @@ lon, varying fastest:
temp[0][1][0][1]
temp[0][1][0][2]
temp[0][1][0][3]
-
+
...
-
+
temp[2][1][4][7]
temp[2][1][4][8]
temp[2][1][4][9]
@@ -1454,8 +1453,6 @@ array section access instead.
\tableofcontents
-\todo Indent the following part below this.
-
\section classic_file_parts Parts of a NetCDF Classic File
A netCDF classic or 64-bit offset dataset is stored as a single file
@@ -2011,12 +2008,12 @@ For illustrative purposes, the following example will be used.
Dataset {
Int32 f1;
Structure {
- Int32 f11;
+ Int32 f11;
Structure {
Int32 f1[3];
Int32 f2;
- } FS2[2];
- } S1;
+ } FS2[2];
+ } S1;
Structure {
Grid {
Array:
@@ -2054,7 +2051,7 @@ within grids are left out in order to mimic the behavior of libnc-dap.
S2.G1.temp
S2.G2.G2
lat
- lon
+ lon
\endcode
\subsection var_dim_trans Variable Dimension Translation
@@ -2090,7 +2087,7 @@ variables.
S2.G2.lat -> S2.G2.lat[lat=2]
S2.G2.lon -> S2.G2.lon[lon=2]
lat -> lat[lat=2]
- lon -> lon[lon=2]
+ lon -> lon[lon=2]
\endcode
Collect all of the dimension specifications from the DDS, both named
@@ -2105,7 +2102,7 @@ example, this would create the following dimensions.
S1.FS2.f1_1 = 3 ;
S1.FS2.f2_0 = 2 ;
S2.G2.lat_0 = 2 ;
- S2.G2.lon_0 = 2 ;
+ S2.G2.lon_0 = 2 ;
\endcode
If however, the anonymous dimension is the single dimension of a MAP
@@ -2114,7 +2111,7 @@ vector This leads to the following.
\code
S2.G2.lat_0 -> S2.G2.lat
- S2.G2.lon_0 -> S2.G2.lon
+ S2.G2.lon_0 -> S2.G2.lon
\endcode
For each unique named dimension "<name>=NN", create a netCDF dimension
@@ -2124,7 +2121,7 @@ duplicates are ignored. This produces the following.
\code
S2.G2.lat -> lat
- S2.G2.lon -> lon
+ S2.G2.lon -> lon
\endcode
Note that this produces duplicates that will be ignored later.
@@ -2166,16 +2163,16 @@ following fields would be collected.
S2.G1.temp
S2.G2.G2
lat
- lon
+ lon
\endcode
All grid array variables are renamed to be the same as the containing
grid and the grid prefix is removed. In the above DDS, this results in
the following changes.
-\code
+\code
G1.temp -> G1
- G2.G2 -> G2
+ G2.G2 -> G2
\endcode
It is important to note that this process could produce duplicate
@@ -2254,7 +2251,7 @@ Dataset {
Int32 f1[3];
Int32 f2;
} SQ1;
- } S1[2];
+ } S1[2];
Sequence {
Structure {
Int32 x1[7];
@@ -2428,56 +2425,52 @@ follows.
HTTP.VERBOSE
Type: boolean ("1"/"0")
Description: Produce verbose output, especially using SSL.
- Related CURL Flags: CURLOPT_VERBOSE
+ Related CURL Flags: CURLOPT_VERBOSE
HTTP.DEFLATE
Type: boolean ("1"/"0")
Description: Allow use of compression by the server.
- Related CURL Flags: CURLOPT_ENCODING
+ Related CURL Flags: CURLOPT_ENCODING
HTTP.COOKIEJAR
Type: String representing file path
Description: Specify the name of file into which to store cookies. Defaults to in-memory storage.
- Related CURL Flags:CURLOPT_COOKIEJAR
- HTTP.COOKIEFILE
- Type: String representing file path
- Description: Same as HTTP.COOKIEJAR.
- Related CURL Flags: CURLOPT_COOKIEFILE
+ Related CURL Flags:CURLOPT_COOKIEJAR
HTTP.CREDENTIALS.USER
Type: String representing user name
Description: Specify the user name for Digest and Basic authentication.
- Related CURL Flags:
+ Related CURL Flags:
HTTP.CREDENTIALS.PASSWORD
Type: String representing password
Type: boolean ("1"/"0")
Description: Specify the password for Digest and Basic authentication.
- Related CURL Flags:
+ Related CURL Flags:
HTTP.SSL.CERTIFICATE
Type: String representing file path
Description: Path to a file containing a PEM cerficate.
- Related CURL Flags: CURLOPT_CERT
+ Related CURL Flags: CURLOPT_CERT
HTTP.SSL.KEY
Type: String representing file path
Description: Same as HTTP.SSL.CERTIFICATE, and should usually have the same value.
- Related CURL Flags: CURLOPT_SSLKEY
+ Related CURL Flags: CURLOPT_SSLKEY
HTTP.SSL.KEYPASSWORD
Type: String representing password
Description: Password for accessing the HTTP.SSL.KEY/HTTP.SSL.CERTIFICATE
- Related CURL Flags: CURLOPT_KEYPASSWORD
+ Related CURL Flags: CURLOPT_KEYPASSWORD
HTTP.SSL.CAPATH
Type: String representing directory
Description: Path to a directory containing trusted certificates for validating server sertificates.
- Related CURL Flags: CURLOPT_CAPATH
+ Related CURL Flags: CURLOPT_CAPATH
HTTP.SSL.VALIDATE
Type: boolean ("1"/"0")
Description: Cause the client to verify the server's presented certificate.
- Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST
+ Related CURL Flags: CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST
HTTP.TIMEOUT
Type: String ("dddddd")
Description: Specify the maximum time in seconds that you allow the http transfer operation to take.
- Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL
+ Related CURL Flags: CURLOPT_TIMEOUT, CURLOPT_NOSIGNAL
HTTP.PROXY_SERVER
Type: String representing url to access the proxy: (e.g.http://[username:password@]host[:port])
Description: Specify the needed information for accessing a proxy.
- Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD
+ Related CURL Flags: CURLOPT_PROXY, CURLOPT_PROXYHOST, CURLOPT_PROXYUSERPWD
</pre>
The related curl flags line indicates the curl flags modified by this
@@ -2491,7 +2484,7 @@ For ESG client side key support, the following entries must be specified:
HTTP.COOKIEJAR
HTTP.SSL.CERTIFICATE
HTTP.SSL.KEY
- HTTP.SSL.CAPATH
+ HTTP.SSL.CAPATH
\endcode
Additionally, for ESG, the HTTP.SSL.CERTIFICATE and HTTP.SSL.KEY
@@ -2608,15 +2601,15 @@ in nc_test4/run_bm_elena.sh.
<pre>
#!/bin/sh
-
+
# This shell runs some benchmarks that Elena ran as described here:
# http://hdfeos.org/workshops/ws06/presentations/Pourmal/HDF5_IO_Perf.pdf
-
+
# $Id: netcdf.texi,v 1.82 2010/05/15 20:43:13 dmh Exp $
-
+
set -e
echo ""
-
+
echo "*** Testing the benchmarking program bm_file for simple float file, no compression..."
./bm_file -h -d -f 3 -o tst_elena_out.nc -c 0:-1:0:1024:16:256 tst_elena_int_3D.nc
./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:1024:256:256 tst_elena_int_3D.nc
@@ -2625,7 +2618,7 @@ in nc_test4/run_bm_elena.sh.
./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:256:64:256 tst_elena_int_3D.nc
./bm_file -d -f 3 -o tst_elena_out.nc -c 0:-1:0:256:256:256 tst_elena_int_3D.nc
echo '*** SUCCESS!!!'
-
+
exit 0
</pre>
@@ -2669,16 +2662,16 @@ data.
\code
netcdf foo { // example netCDF specification in CDL
-
+
dimensions:
lat = 10, lon = 5, time = unlimited;
-
+
variables:
int lat(lat), lon(lon), time(time);
float z(time,lat,lon), t(time,lat,lon);
double p(time,lat,lon);
int rh(time,lat,lon);
-
+
lat:units = "degrees_north";
lon:units = "degrees_east";
time:units = "seconds";
@@ -2686,7 +2679,7 @@ data.
z:valid_range = 0., 5000.;
p:_FillValue = -9999.;
rh:_FillValue = -1;
-
+
data:
lat = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90;
lon = -140, -118, -96, -84, -52;
@@ -2810,7 +2803,7 @@ The CDL primitive data types for the classic model are:
- long - (Deprecated, synonymous with int)
- float - IEEE single-precision floating point (32 bits).
- real - (Synonymous with float).
-- double - IEEE double-precision floating point (64 bits).
+- double - IEEE double-precision floating point (64 bits).
NetCDF-4 supports the additional primitive types:
- ubyte - Unsigned eight-bit integers.
@@ -2818,7 +2811,7 @@ NetCDF-4 supports the additional primitive types:
- uint - Unsigned 32-bit integers.
- int64 - 64-bit singed integers.
- uint64 - Unsigned 64-bit singed integers.
-- string - Variable-length string of characters
+- string - Variable-length string of characters
Except for the added numeric data-types byte and ubyte, CDL supports
the same numeric primitive
@@ -2984,7 +2977,7 @@ extended as necessary.
The ncgen man-page reference has more details about CDL representation
of constants of user-defined types.
-\section guide_ncdump ncdump
+\section guide_ncdump ncdump
Convert NetCDF file to text form (CDL)
@@ -3034,10 +3027,10 @@ data that has not yet been written. If a variable has no
type is used unless the variable is of byte type.
\b ncdump defines a default display format used for each type of
-netCDF data, but this can be changed if a `C_format' attribute
+netCDF data, but this can be changed if a 'C_format' attribute
is defined for a netCDF variable. In this case, \b ncdump will
-use the `C_format' attribute to format each value. For
-example, if floating-point data for the netCDF variable `Z' is
+use the 'C_format' attribute to format each value. For
+example, if floating-point data for the netCDF variable 'Z' is
known to be accurate to only three significant digits, it would
be appropriate to use the variable attribute
@@ -3047,7 +3040,7 @@ be appropriate to use the variable attribute
\subsection ncdump_OPTIONS ncdump options
- at par -c
+ at par -c
Show the values of \e coordinate \e variables (1D variables with the
same names as dimensions) as well as the declarations of all
dimensions, variables, attribute values, groups, and user-defined
@@ -3063,9 +3056,9 @@ for any variables. The output is identical to using the '-c' option
except that the values of coordinate variables are not included. (At
most one of '-c' or '-h' options may be present.)
- at par -v \a var1,...
+ at par -v \a var1,...
- at par
+ at par
The output will include data values for the specified variables, in
addition to the declarations of all dimensions, variables, and
attributes. One or more variables must be specified by name in the
@@ -3074,8 +3067,8 @@ argument to the command, hence cannot contain unescaped blanks or
other white space characters. The named variables must be valid netCDF
variables in the input-file. A variable within a group in a netCDF-4
file may be specified with an absolute path name, such as
-`/GroupA/GroupA2/var'. Use of a relative path name such as `var' or
-`grp/var' specifies all matching variable names in the file. The
+'/GroupA/GroupA2/var'. Use of a relative path name such as 'var' or
+'grp/var' specifies all matching variable names in the file. The
default, without this option and in the absence of the '-c' or '-h'
options, is to include data values for \e all variables in the output.
@@ -3156,7 +3149,7 @@ than the logical schema of the data. All the special virtual
attributes begin with '_' followed by an upper-case
letter. Currently they include the global attribute '_Format' and
the variable attributes '_ChunkSizes', '_DeflateLevel',
-'_Endianness', '_Fletcher32', '_NoFill', '_Shuffle', and '_Storage'.
+'_Endianness', '_Fletcher32', '_NoFill', '_Shuffle', and '_Storage'.
The \b ncgen utility recognizes these attributes and
supports them appropriately.
@@ -3231,7 +3224,7 @@ omega:
Examine the translated DDS for the DAP source from the specified URL:
\code
- ncdump -h http://test.opendap.org:8080/dods/dts/test.01
+ ncdump -h http://test.opendap.org:8080/dods/dts/test.01
\endcode
Without dumping all the data, show the special virtual attributes that indicate
@@ -3263,9 +3256,9 @@ Copy a netCDF file, optionally changing format, compression, or chunking in the
\subsection nccopy_SYNOPSIS nccopy synopsis
\code
-nccopy [-k kind] [-d n] [-s] [-c chunkspec] [-u] [-w] [-[v|V] var1,...]
- [-[g|G] grp1,...] [-m bufsize] [-h chunk_cache] [-e cache_elems]
- [-r] infile outfile
+nccopy [-k kind_name] [-kind_code] [-d n] [-s] [-c chunkspec] [-u] [-w]
+ [-[v|V] var1,...] [-[g|G] grp1,...] [-m bufsize] [-h chunk_cache]
+ [-e cache_elems] [-r] infile outfile
\endcode
\subsection nccopy_DESCRIPTION nccopy description
@@ -3281,6 +3274,17 @@ a netCDF-4 classic model file as well, permitting data compression,
efficient schema changes, larger variable sizes, and use of other
netCDF-4 features.
+If no output format is specified, with either \b -k \e kind_name
+or \e -kind_code, then the output will use the same
+format as the input, unless the input is classic or 64-bit offset
+and either chunking or compression is specified, in which case the
+output will be netCDF-4 classic model format. Attempting
+some kinds of format conversion will result in an error, if the
+conversion is not possible. For example, an attempt to copy a
+netCDF-4 file that uses features of the enhanced model, such as
+groups or variable-length strings, to any of the other kinds of netCDF
+formats that use the classic model will result in an error.
+
\b nccopy also serves as an example of a generic netCDF-4 program,
with its ability to read any valid netCDF file and handle nested
groups, strings, and user-defined types, including arbitrarily
@@ -3293,25 +3297,34 @@ local netCDF files.
\subsection nccopy_OPTIONS nccopy options
-\par -k \e kind
-Specifies the kind of file to be created (that is, the format variant)
-and, by inference, the data model (i.e. netcdf-3 (classic) versus
-netcdf-4 (enhanced)). The possible arguments are as follows. \n
- '1' or 'classic' => netCDF classic format \n
- '2', '64-bit-offset', or '64-bit offset' => netCDF 64-bit format \n
- '3', 'hdf5', 'netCDF-4', or 'enhanced' => netCDF-4 format (enhanced data model) \n
- '4', 'hdf5-nc3', 'netCDF-4 classic model', or 'enhanced-nc3' => netCDF-4 classic model format \n
+\par -k \e kind_name
+Use format name to specify the kind of file to be created
+and, by inference, the data model (i.e. netcdf-3 (classic) or
+netcdf-4 (enhanced)). The possible arguments are: \n
+ 'nc3' or 'classic' => netCDF classic format \n
+ 'nc6' or '64-bit offset' => netCDF 64-bit format \n
+ 'nc4' or 'netCDF-4' => netCDF-4 format (enhanced data model) \n
+ 'nc7' or 'netCDF-4 classic model' => netCDF-4 classic model format \n
\par
-If no value for -k is specified, then the output will use the same
-format as the input, except if the input is classic or 64-bit offset
-and either chunking or compression is specified, in which case the
-output will be netCDF-4 classic model format. Note that attempting
-some kinds of format conversion will result in an error, if the
-conversion is not possible. For example, an attempt to copy a
-netCDF-4 file that uses features of the enhanced model, such as groups
-or variable-length strings, to any of the other kinds of netCDF
-formats that use the classic model will result in an error.
+Note: The old format numbers '1', '2', '3', '4', equivalent
+to the format names 'nc3', 'nc6', 'nc4', or 'nc7' respectively, are
+also still accepted but deprecated, due to easy confusion between
+format numbers and format names.
+
+\par -k \e kind_code
+Use format numeric code (instead of format name) to specify the kind of file to be created
+and, by inference, the data model (i.e. netcdf-3 (classic) versus
+netcdf-4 (enhanced)). The numeric codes are: \n
+ 3 => netcdf classic format \n
+ 6 => netCDF 64-bit format \n
+ 4 => netCDF-4 format (enhanced data model) \n
+ 7 => netCDF-4 classic model format \n
+
+The numeric code "7" is used because "7=3+4", specifying the format
+that uses the netCDF-3 data model for compatibility with the netCDF-4
+storage format for performance. Credit is due to NCO for use of these
+numeric codes instead of the old and confusing format numbers.
\par -d \e n
For netCDF-4 output, including netCDF-4 classic model, specify
@@ -3329,10 +3342,11 @@ the input by default.
\par
Note that \b nccopy requires all variables to be compressed using the
-same compression level, but the API has no such restriction. With a
-program you can customize compression for each variable independently.
+same compression level, but the API has no such restriction. With
+a program you can customize compression for each variable independently.
-\par -s For netCDF-4 output, including netCDF-4 classic model, specify
+\par -s
+For netCDF-4 output, including netCDF-4 classic model, specify
shuffling of variable data bytes before compression or after
decompression. Shuffling refers to interlacing of bytes in a chunk so
that the first bytes of all values are contiguous in storage, followed
@@ -3367,21 +3381,21 @@ file can also greatly speedup access, by choosing chunk shapes that
are appropriate for the most common access patterns.
\par
-The chunkspec argument is a string of comma-separated associations,
+The \e chunkspec argument is a string of comma-separated associations,
each specifying a dimension name, a '/' character, and optionally the
corresponding chunk length for that dimension. No blanks should
appear in the chunkspec string, except possibly escaped blanks that
-are part of a dimension name. A chunkspec names dimensions along
-which chunking is to take place, and omits dimensions which are
-not to be chunked or for
+are part of a dimension name. A chunkspec names at least one
+dimension, and may omit dimensions which are not to be chunked or for
which the default chunk length is desired. If a dimension name is
followed by a '/' character but no subsequent chunk length, the actual
dimension length is assumed. If copying a classic model file to a
netCDF-4 output file and not naming all dimensions in the chunkspec,
unnamed dimensions will also use the actual dimension length for the
-chunk length. An example of a chunkspec for variables that use
-'m' and 'n' dimensions might be 'm/100,n/200' to specify 100 by 200
-chunks.
+chunk length. An example of a chunkspec for variables that use 'm'
+and 'n' dimensions might be 'm/100,n/200' to specify 100 by 200
+chunks. To see the chunking resulting from copying with a chunkspec,
+use the '-s' option of ncdump on the output file.
\par
The chunkspec '/' that omits all dimension names and
@@ -3402,9 +3416,9 @@ programming interface has no such restriction. If you need to
customize chunking for variables independently, you will need to use
the library API in a custom utility program.
-\par -v \a var1,...
+\par -v \a var1,...
-\par
+\par
The output will include data values for the specified variables, in
addition to the declarations of all dimensions, variables, and
attributes. One or more variables must be specified by name in the
@@ -3413,22 +3427,22 @@ argument to the command, hence cannot contain unescaped blanks or
other white space characters. The named variables must be valid netCDF
variables in the input-file. A variable within a group in a netCDF-4
file may be specified with an absolute path name, such as
-`/GroupA/GroupA2/var'. Use of a relative path name such as `var' or
-`grp/var' specifies all matching variable names in the file. The
+'/GroupA/GroupA2/var'. Use of a relative path name such as 'var' or
+'grp/var' specifies all matching variable names in the file. The
default, without this option, is to include data values for \e all variables
in the output.
-\par -V \a var1,...
+\par -V \a var1,...
-\par
+\par
The output will include the specified variables only but all dimensions and
global or group attributes. One or more variables must be specified by name in the
comma-delimited list following this option. The list must be a single argument
to the command, hence cannot contain unescaped blanks or other white space
characters. The named variables must be valid netCDF variables in the
input-file. A variable within a group in a netCDF-4 file may be specified with
-an absolute path name, such as `/GroupA/GroupA2/var'. Use of a relative path
-name such as `var' or `grp/var' specifies all matching variable names in the
+an absolute path name, such as '/GroupA/GroupA2/var'. Use of a relative path
+name such as 'var' or 'grp/var' specifies all matching variable names in the
file. The default, without this option, is to include \e all variables in the
output.
@@ -3485,7 +3499,7 @@ better performance, if the output fits in memory.
\par
For netCDF-4 output, including netCDF-4 classic model, specifies
number of chunks that the chunk cache can hold. A suffix of K, M, G,
-or T multiplies the number of chunks that can be held in the cache
+or T multiplies the number of chunks that can be held in the cache
by one thousand, million, billion, or trillion, respectively. This is not a
property of the file, but merely a performance tuning parameter for
avoiding compressing or decompressing the same data multiple times
@@ -3519,12 +3533,12 @@ through the netCDF interface. If the original file was generated in
alignment, the output file may have different padding bytes.
<H4> Uncompress Data </H4>
-Convert a netCDF-4 classic model file, compressed.nc, that uses
-compression, to a netCDF-3 file classic.nc:
+Convert a netCDF-4 classic model file, compressed.nc, that uses compression,
+to a netCDF-3 file classic.nc:
\code
nccopy -k classic compressed.nc classic.nc
\endcode
-Note that '1' could be used instead of 'classic'.
+Note that 'nc3' could be used instead of 'classic'.
<H4> Remote Access to Data Subset </H4>
@@ -3539,8 +3553,8 @@ characters such as '?'.
<H4> Compress Data </H4>
-Compress all the variables in the input file foo.nc, a netCDF file of
-any type, to the output file bar.nc:
+Compress all the variables in the input file foo.nc, a netCDF file of any
+type, to the output file bar.nc:
\code
nccopy -d1 foo.nc bar.nc
\endcode
@@ -3637,12 +3651,20 @@ should be used intstead.
-k
The -k file specifies the kind of netCDF file to generate. The
arguments to the -k flag can be as follows.
- 1, classic – Produce a netcdf classic file format file.
- 2, 64-bit-offset, '64-bit offset' – Produce a netcdf 64 bit classic file format file.
- 3, hdf5, netCDF-4, enhanced – Produce a netcdf-4 format file.
- 4, hdf5-nc3, 'netCDF-4 classic model', enhanced-nc3 – Produce a netcdf-4 file format, but restricted to netcdf-3 classic CDL input.
-
-Note that the -v flag is a deprecated alias for -k.
+ 'classic', 'nc3' – Produce a netcdf classic file format file.
+ '64-bit offset', 'nc6' – Produce a netcdf 64 bit classic file format file.
+ 'netCDF-4', 'nc4' – Produce a netcdf-4 format file.
+ 'netCDF-4 classic model', 'nc7' – Produce a netcdf-4 file format, but restricted to netcdf-3 classic CDL input.
+
+Note that the -v flag is a deprecated alias for -k. The code 'nc7' is
+used as a short form for the unwieldy 'netCDF-4 classic model' because
+7=3+4, a mnemonic for the format that uses the netCDF-3 data model for
+compatibility with the netCDF-4 storage format for performance. The
+old version format numbers '1', '2', '3', '4', equivalent to the
+format names 'nc3', 'nc6', 'nc4', or 'nc7' respectively, are also
+still accepted but deprecated, due to easy confusion between format
+numbers and format names. Various old format name aliases are also
+accepted but deprecated, e.g. 'hdf5', 'enhanced-nc3', for 'netCDF-4'.
-l
The -l file specifies that ncgen should output (to standard output)
@@ -3751,8 +3773,6 @@ inadvertent reading of values that haven't been written.
\tableofcontents
-\todo Wrap the following group of pages into this. From NetCDF Classic Format Spec through HDF4 SD Format.
-
\section classic_format_spec The NetCDF Classic Format Specification
To present the format more formally, we use a BNF grammar notation. In
@@ -3906,14 +3926,14 @@ the intent of elements of the format.
NC_DOUBLE = \\x00 \\x00 \\x00 \\x06 // IEEE double precision floats
// Default fill values for each type, may be
// overridden by variable attribute named
- // `_FillValue'. See "Note on fill values",
+ // '_FillValue'. See "Note on fill values",
// below.
FILL_CHAR = \\x00 // null byte
FILL_BYTE = \\x81 // (signed char) -127
FILL_SHORT = \\x80 \\x01 // (short) -32767
FILL_INT = \\x80 \\x00 \\x00 \\x01 // (int) -2147483647
FILL_FLOAT = \\x7C \\xF0 \\x00 \\x00 // (float) 9.9692099683868690e+36
- FILL_DOUBLE = \\x47 \\x9E \\x00 \\x00 \\x00 \\x00 //(double)9.9692099683868690e+36
+ FILL_DOUBLE = \\x47 \\x9E \\x00 \\x00 \\x00 \\x00 \\x00 \\x00 //(double)9.9692099683868690e+36
</pre>
Note on vsize: This number is the product of the dimension lengths
@@ -4094,7 +4114,7 @@ components and values.
C D F 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
17220 17921 00000 00000 00000 00000 00000 00000
[magic number ] [ 0 records ] [ 0 dimensions (ABSENT) ]
-
+
0000 0000 0000 0000 0000 0000 0000 0000
\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
00000 00000 00000 00000 00000 00000 00000 00000
@@ -4121,27 +4141,27 @@ which corresponds to a 92-byte netCDF file. The following is an edited dump of t
C D F 001 \0 \0 \0 \0 \0 \0 \0 \n \0 \0 \0 001
17220 17921 00000 00000 00000 00010 00000 00001
[magic number ] [ 0 records ] [NC_DIMENSION ] [ 1 dimension ]
-
+
0000 0003 6469 6d00 0000 0005 0000 0000
\0 \0 \0 003 d i m \0 \0 \0 \0 005 \0 \0 \0 \0
00000 00003 25705 27904 00000 00005 00000 00000
[ 3 char name = "dim" ] [ size = 5 ] [ 0 global atts
-
+
0000 0000 0000 000b 0000 0001 0000 0002
\0 \0 \0 \0 \0 \0 \0 013 \0 \0 \0 001 \0 \0 \0 002
00000 00000 00000 00011 00000 00001 00000 00002
(ABSENT) ] [NC_VARIABLE ] [ 1 variable ] [ 2 char name =
-
+
7678 0000 0000 0001 0000 0000 0000 0000
v x \0 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 \0 \0 \0
30328 00000 00000 00001 00000 00000 00000 00000
"vx" ] [1 dimension ] [ with ID 0 ] [ 0 attributes
-
+
0000 0000 0000 0003 0000 000c 0000 0050
\0 \0 \0 \0 \0 \0 \0 003 \0 \0 \0 \f \0 \0 \0 P
00000 00000 00000 00003 00000 00012 00000 00080
(ABSENT) ] [type NC_SHORT] [size 12 bytes] [offset: 80]
-
+
0003 0001 0004 0001 0005 8001
\0 003 \0 001 \0 004 \0 001 \0 005 200 001
00003 00001 00004 00001 00005 -32767
@@ -4336,11 +4356,11 @@ However, these may be different. Consider the following code:
\code
/* Create a test file. */
if (nc_create(FILE_NAME, NC_CLASSIC_MODEL|NC_NETCDF4, &ncid)) ERR;
-
+
/* Define dimensions in order. */
if (nc_def_dim(ncid, DIM0, NC_UNLIMITED, &dimids[0])) ERR;
if (nc_def_dim(ncid, DIM1, 4, &dimids[1])) ERR;
-
+
/* Define coordinate variables in a different order. */
if (nc_def_var(ncid, DIM1, NC_DOUBLE, 1, &dimids[1], &varid[1])) ERR;
if (nc_def_var(ncid, DIM0, NC_DOUBLE, 1, &dimids[0], &varid[0])) ERR;
@@ -4385,7 +4405,7 @@ little-endian has been specified for that variable.)
- NC_INT64 = H5T_NATIVE_LLONG
- NC_UINT64 = H5T_NATIVE_ULLONG
- NC_FLOAT = H5T_NATIVE_FLOAT
-- NC_DOUBLE = H5T_NATIVE_DOUBLE
+- NC_DOUBLE = H5T_NATIVE_DOUBLE
The NC_CHAR type represents a single character, and the NC_STRING an
array of characters. This can be confusing because a one-dimensional
@@ -4417,7 +4437,7 @@ ignored by the netCDF-4 API.
dimension scale API.
- NAME This attribute is created and maintained by the HDF5 dimension
scale API.
-- _Netcdf4Dimid Holds a scalar H5T_NATIVE_INT that is the (zero-based)
+- _Netcdf4Dimid Holds a scalar H5T_NATIVE_INT that is the (zero-based)
dimension ID for this dimension, needed when dimensions and
coordinate variables are defined in different orders.
@@ -4426,7 +4446,7 @@ ignored by the netCDF-4 API.
Each user-defined data type in an HDF5 file exactly corresponds to a
user-defined data type in the netCDF-4 file. Only base data types
which correspond to netCDF-4 data types may be used. (For example, no
-HDF5 reference data types may be used.)
+HDF5 reference data types may be used.)
\subsection compression_spec Compression
@@ -4491,7 +4511,7 @@ straighforward manner.
- DFNT_INT32 = NC_INT
- DFNT_UINT32 = NC_UINT
- DFNT_FLOAT32 = NC_FLOAT
-- DFNT_FLOAT64 = NC_DOUBLE
+- DFNT_FLOAT64 = NC_DOUBLE
*/
diff --git a/docs/images/InstallTreeWindows.jpg b/docs/images/InstallTreeWindows.jpg
deleted file mode 100644
index 8ad8f7f..0000000
Binary files a/docs/images/InstallTreeWindows.jpg and /dev/null differ
diff --git a/docs/images/InstallTreeWindows.png b/docs/images/InstallTreeWindows.png
index c672e10..ccd8014 100644
Binary files a/docs/images/InstallTreeWindows.png and b/docs/images/InstallTreeWindows.png differ
diff --git a/docs/images/Makefile.am b/docs/images/Makefile.am
index feb1d80..341f444 100644
--- a/docs/images/Makefile.am
+++ b/docs/images/Makefile.am
@@ -1,4 +1,4 @@
EXTRA_DIST = aqua.jpg chunking2.png compatibility3.png compression.png \
groups.png nc4-model.png ncatts.png nc-classic-uml.png nccoords.png \
-ncfile.png pnetcdf.png terra.jpg netcdf_architecture.png InstallTreeWindows.jpg \
+ncfile.png pnetcdf.png terra.jpg netcdf_architecture.png \
deptree.jpg InstallTreeWindows.png
diff --git a/docs/images/Makefile.in b/docs/images/Makefile.in
new file mode 100644
index 0000000..d3639d1
--- /dev/null
+++ b/docs/images/Makefile.in
@@ -0,0 +1,487 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = docs/images
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = aqua.jpg chunking2.png compatibility3.png compression.png \
+groups.png nc4-model.png ncatts.png nc-classic-uml.png nccoords.png \
+ncfile.png pnetcdf.png terra.jpg netcdf_architecture.png \
+deptree.jpg InstallTreeWindows.png
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/images/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign docs/images/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/install-fortran.md b/docs/install-fortran.md
index ef28823..d4246b2 100644
--- a/docs/install-fortran.md
+++ b/docs/install-fortran.md
@@ -141,3 +141,50 @@ libraries is to use the "nf-config" utility installed in *${DIR1}*/bin:
or the more general "pkg-config" utility, if you have it:
fortran_compiler my_prog.f -o my_prog `pkg-config --cflags --libs netcdf-fortran`
+
+
+Specifying The Environment for Building {#specify_build_env_fortran}
+========================================
+
+
+The netCDF configure script searches your path to find the compilers and tools it needed. To use compilers that can't be found in your path, set their environment variables.
+
+The configure script will use gcc and associated GNU tools if they are found. Many users, especially those with performance concerns, will wish to use a vendor supplied compiler.
+
+For example, on an AIX system, users may wish to use xlc (the AIX compiler) in one of its many flavors. Set environment variables before the build to achieve this.
+
+For example, to change the C compiler, set CC to xlc (in sh: export CC=xlc). (But don't forget to also set CXX to xlC, or else configure will try to use g++, the GNU C++ compiler to build the netCDF C++ API. Similarly set FC to xlf90 so that the Fortran APIs are built properly.)
+
+By default, the netCDF library is built with assertions turned on. If you wish to turn off assertions, set CPPFLAGS to -DNDEBUG (csh ex: setenv CPPFLAGS -DNDEBUG).
+
+If GNU compilers are used, the configure script sets CPPFLAGS to “-g -O2”. If this is not desired, set CPPFLAGS to nothing, or to whatever other value you wish to use, before running configure.
+
+For cross-compiles, the following environment variables can be used to override the default fortran/C type settings like this (in sh):
+
+ export NCBYTE_T=''integer(selected_int_kind(2))''
+ export NCSHORT_T=''integer*2''
+ export NF_INT1_T=''integer(selected_int_kind(2))''
+ export NF_INT2_T=''integer*2''
+ export NF_INT1_IS_C_SHORT=1
+ export NF_INT2_IS_C_SHORT=1
+ export NF_INT_IS_C_INT=1
+ export NF_REAL_IS_C_FLOAT=1
+ export NF_DOUBLEPRECISION_IS_C_DOUBLE=1
+
+In this case you will need to run configure with –disable-fortran-compiler-check and –disable-fortran-type-check.
+
+Variable Description Notes
+--------------------------
+
+Variable | Usage | Description
+---|---|---
+CC | C compiler | If you don't specify this, the configure script will try to find a suitable C compiler. The default choice is gcc. If you wish to use a vendor compiler you must set CC to that compiler, and set other environment variables (as described below) to appropriate settings.
+FC | Fortran compiler (if any)| If you don't specify this, the configure script will try to find a suitable Fortran and Fortran 77 compiler. Set FC to "" explicitly, or provide the –disable-f77 option to configure, if no Fortran interface (neither F90 nor F77) is desired. Use –disable-f90 to disable the netCDF Fortran 90 API, but build the netCDF Fortran 77 API.
+F77 | Fortran 77 compiler (if any) | Only specify this if your platform explicitly needs a different Fortran 77 compiler. Otherwise use FC to specify the Fortran compiler. If you don't specify this, the configure script will try to find a suitable Fortran compiler. For vendor compilers, make sure you're using the same vendor's Fortran 90 compiler. Using Fortran compilers from different vendors, or mixing vendor compilers with g77, the GNU F77 compiler, is not supported and may not work.
+CXX | C++ compiler | If you don't specify this, the configure script will try to find a suitable C++ compiler. Set CXX to "" explicitly, or use the –disable-cxx configure option, if no C++ interface is desired. If using a vendor C++ compiler, use that vendor's C compiler to compile the C interface. Using different vendor compilers for C and C++ may not work.
+CFLAGS | C compiler flags | "-O" or "-g", for example.
+CPPFLAGS | C preprocessor options | "-DNDEBUG" to omit assertion checks, for example.
+FCFLAGS| Fortran 90 compiler flags | "-O" or "-g", for example. These flags will be used for FORTRAN 90. If setting these you may also need to set FFLAGS for the FORTRAN 77 test programs.
+FFLAGS | Fortran 77 compiler flags | "-O" or "-g", for example. If you need to pass the same arguments to the FORTRAN 90 build, also set FCFLAGS.
+CXXFLAGS | C++ compiler flags | "-O" or "-g", for example.
+ARFLAGS, NMFLAGS, FPP, M4FLAGS, LIBS, FLIBS, FLDFLAGS | Miscellaneous | One or more of these were needed for some platforms, as specified below. Unless specified, you should not set these environment variables, because that may interfere with the configure script.
\ No newline at end of file
diff --git a/docs/install.dox b/docs/install.dox
index 9492317..5344a5c 100644
--- a/docs/install.dox
+++ b/docs/install.dox
@@ -121,14 +121,14 @@ services</a>.
Build zlib like this:
\verbatim
-./configure --prefix=/home/ed/local
+./configure --prefix=/home/username/local
make check install
\endverbatim
Then you build HDF5, specifying the location of the zlib library:
\verbatim
-./configure --with-zlib=/home/ed/local --prefix=/home/ed/local
+./configure --with-zlib=/home/username/local --prefix=/home/username/local
make check install
\endverbatim
@@ -149,7 +149,7 @@ HDF5, zlib, and (if built into HDF5) the szip header files and
libraries in the CPPFLAGS and LDFLAGS environment variables. For example:
\verbatim
-CPPFLAGS=-I/home/ed/local/include LDFLAGS=-L/home/ed/local/lib ./configure --prefix=/home/ed/local
+CPPFLAGS=-I/home/username/local/include LDFLAGS=-L/home/username/local/lib ./configure --prefix=/home/username/local
make check install
\endverbatim
@@ -157,8 +157,8 @@ The configure script will try to find necessary tools in your
path. When you run configure you may optionally use the <CODE>--prefix</CODE>
argument to change the default installation directory. The above
examples install the zlib, HDF5, and netCDF-4 libraries in
-/home/ed/local/lib, the header file in /home/ed/local/include, and the
-utilities in /home/ed/local/bin. If you don't provide a <CODE>--prefix</CODE>
+/home/username/local/lib, the header file in /home/username/local/include, and the
+utilities in /home/username/local/bin. If you don't provide a <CODE>--prefix</CODE>
option, installation will be in /usr/local/, in subdirectories lib/,
include/, and bin/. The installation location specified with the
<CODE>--prefix</CODE> option must be different from the source directory where the
@@ -178,11 +178,11 @@ To build without support for the netCDF-4 formats or the additional
netCDF-4 functions, but with remote access, use:
\verbatim
-./configure --prefix=/home/ed/local --disable-netcdf-4
+./configure --prefix=/home/username/local --disable-netcdf-4
make check install
\endverbatim
-(Replace ``/home/ed/local'' with the name of the directory where
+(Replace ``/home/username/local'' with the name of the directory where
netCDF is to be installed. The installation location specified with
the <CODE>--prefix</CODE> option must be different from the source directory where
the software is being built.)
@@ -193,14 +193,14 @@ with full support for netCDF-4 APIs and format but without remote
client access, use:
\verbatim
-./configure --prefix=/home/ed/local --disable-dap
+./configure --prefix=/home/username/local --disable-dap
make check install
\endverbatim
To build without netCDF-4 support or remote client access, use:
\verbatim
-./configure --prefix=/home/ed/local --disable-netcdf-4 --disable-dap
+./configure --prefix=/home/username/local --disable-netcdf-4 --disable-dap
make check install
\endverbatim
diff --git a/docs/install.md b/docs/install.md
index 0b448d7..265d8f6 100644
--- a/docs/install.md
+++ b/docs/install.md
@@ -32,7 +32,7 @@ Pre-release libraries for Windows may be found here: \ref winbin.
Getting the latest NetCDF-C Source Code {#sec_get_source}
----------------------------------------
-Starting with netCDF-C version 4.3.1, the netCDF-C source code is hosted at the
+Starting with netCDF-C version 4.3.1, the netCDF-C source code is hosted at the
Unidata GitHub repository, available at http://github.com/Unidata/netcdf-c.
Two options are available for building from source:
@@ -75,6 +75,14 @@ full functionality. (See \ref architecture).
- \ref building_netcdf_fortran
- \ref configure_options
+Requirements {#netcdf_requirements}
+----------------------------------
+
+* HDF5 1.8.9 (netcdf-4 support)
+* zlib 1.2.5
+* curl 7.18.0 (DAP support)
+
+
CMake and Windows support {#sub}
--------------------------------
@@ -86,7 +94,7 @@ Building with NetCDF-4 and the Remote Data Client {#build_default}
The usual way of building netCDF requires the HDF5, zlib, and curl
libraries. (And, optionally, the szlib library). Versions required are
-at least HDF5 1.8.8, zlib 1.2.5, and curl 7.18.0 or later.
+at least HDF5 1.8.9, zlib 1.2.5, and curl 7.18.0 or later.
(Optionally, if building with szlib, get szip 2.0 or later.)
HDF5 1.8.9 and zlib 1.2.7 packages are available from the <a
@@ -107,7 +115,7 @@ Fortran, C++, or Java API's. Only the HDF5 C library is used.
Optionally, you can also build netCDF-4 with the szip library
(a.k.a. szlib). NetCDF cannot create szipped data files, but can read
HDF5 data files that have used szip.
-
+8
There are license restrictions on the use of szip, see the section on
licensing terms in the <a
href="http://www.hdfgroup.org/doc_resource/SZIP/">web page on szip
@@ -127,14 +135,14 @@ services</a>.
Build zlib like this:
~~~
-$ ./configure --prefix=/home/ed/local
+$ ./configure --prefix=/home/username/local
$ make check install
~~~
Then you build HDF5, specifying the location of the zlib library:
~~~
-$ ./configure --with-zlib=/home/ed/local --prefix=/home/ed/local
+$ ./configure --with-zlib=/home/username/local --prefix=/home/username/local
$ make check install
~~~
@@ -155,7 +163,7 @@ HDF5, zlib, and (if built into HDF5) the szip header files and
libraries in the CPPFLAGS and LDFLAGS environment variables. For example:
~~~
-$ CPPFLAGS=-I/home/ed/local/include LDFLAGS=-L/home/ed/local/lib ./configure --prefix=/home/ed/local
+$ CPPFLAGS=-I/home/username/local/include LDFLAGS=-L/home/username/local/lib ./configure --prefix=/home/username/local
$ make check install
~~~
@@ -163,8 +171,8 @@ The configure script will try to find necessary tools in your
path. When you run configure you may optionally use the <CODE>--prefix</CODE>
argument to change the default installation directory. The above
examples install the zlib, HDF5, and netCDF-4 libraries in
-/home/ed/local/lib, the header file in /home/ed/local/include, and the
-utilities in /home/ed/local/bin. If you don't provide a <CODE>--prefix</CODE>
+/home/username/local/lib, the header file in /home/username/local/include, and the
+utilities in /home/username/local/bin. If you don't provide a <CODE>--prefix</CODE>
option, installation will be in /usr/local/, in subdirectories lib/,
include/, and bin/. The installation location specified with the
<CODE>--prefix</CODE> option must be different from the source directory where the
@@ -185,29 +193,29 @@ To build without support for the netCDF-4 formats or the additional
netCDF-4 functions, but with remote access, use:
~~~
-$ ./configure --prefix=/home/ed/local --disable-netcdf-4
+$ ./configure --prefix=/home/username/local --disable-netcdf-4
$ make check install
~~~
-(Replace `/home/ed/local` with the name of the directory where
+(Replace `/home/username/local` with the name of the directory where
netCDF is to be installed. The installation location specified with
the <CODE>--prefix</CODE> option must be different from the source directory where
the software is being built.)
Starting with version 4.1.1 the netCDF C libraries and utilities have
-supported remote data access, using the OPeNDAP protocols. To build
+supported remote data access, using the OPeNDAP protocols. To build
with full support for netCDF-4 APIs and format but without remote
client access, use:
~~~
-$ ./configure --prefix=/home/ed/local --disable-dap
+$ ./configure --prefix=/home/username/local --disable-dap
$ make check install
~~~
To build without netCDF-4 support or remote client access, use:
~~~
-$ ./configure --prefix=/home/ed/local --disable-netcdf-4 --disable-dap
+$ ./configure --prefix=/home/username/local --disable-netcdf-4 --disable-dap
$ make check install
~~~
@@ -218,7 +226,7 @@ Building with HDF4 Support {#build_hdf4}
---------------------
The netCDF-4 library can (since version 4.1) read HDF4 data files, if
-they were created with the SD (Scientific Data) API.
+they were created with the SD (Scientific Data) API.
For this to work, you must build the HDF4 library with the
configure option
@@ -229,7 +237,7 @@ to prevent it from building an HDF4 version of the netCDF-2 library
that conflicts with the netCDF-2 functions that are built into the Unidata
netCDF library.
-Then, when building netCDF-4, use the
+Then, when building netCDF-4, use the
~~~
--enable-hdf4
~~~
@@ -317,7 +325,7 @@ For example, one user reports that she can build other applications
with netCDF-4 by setting the LIBS environment variable:
~~~
-LIBS='-L/X/netcdf-4.0/lib -lnetcdf -L/X/hdf5-1.8.6/lib -lhdf5_hl -lhdf5 -lz -lm -L/X/szip-2.1/lib -lsz'
+LIBS='-L/X/netcdf-4.0/lib -lnetcdf -L/X/hdf5-1.8.9/lib -lhdf5_hl -lhdf5 -lz -lm -L/X/szip-2.1/lib -lsz'
~~~
For shared builds, only -lnetcdf is needed. All other libraries will
@@ -336,7 +344,7 @@ cc -o myapp myapp.c `nc-config --cflags --libs`
configure options {#configure_options}
-----------------------------
-These options are used for `autotools`-based builds. For `cmake` options, see \todo Finish this reference.
+These options are used for `autotools`-based builds. For `cmake` options, see
Note: --disable prefix indicates that the option is normally enabled.
<table>
@@ -388,14 +396,14 @@ Build Instructions for NetCDF-C using CMake {#netCDF-CMake}
Starting with netCDF-C 4.3.0, we are happy to announce the inclusion of CMake support. CMake will allow for building netCDF on a wider range of platforms, include Microsoft Windows with Visual Studio. CMake support also provides robust unit and regression testing tools. We will also maintain the standard autotools-based build system in parallel.
-In addition to providing new build options for netCDF-C, we will also provide pre-built binary downloads for the shared versions of netCDF for use with Visual Studio.
+In addition to providing new build options for netCDF-C, we will also provide pre-built binary downloads for the shared versions of netCDF for use with Visual Studio.
+
-
## Requirements {#cmake_requirements}
The following packages are required to build netCDF-C using CMake.
* netCDF-C Source Code
-* CMake version 2.8.9 or greater.
+* CMake version 2.8.12 or greater.
* Optional Requirements:
* HDF5 Libraries for netCDF4/HDF5 support.
* libcurl for DAP support.
@@ -450,7 +458,7 @@ If you have libraries installed in a custom directory, you may need to specify t
## Building {#cmake_building}
-The compiler can be executed directly with 'make' or the appropriate command for the configurator which was used.
+The compiler can be executed directly with 'make' or the appropriate command for the configurator which was used.
> $ make
@@ -478,12 +486,10 @@ Once netCDF has been built and tested, it may be installed using the following c
> $ make install
-or
+or
> $ cmake --build [Build Directory] --target install
## See Also {#cmake_see_also}
For further information regarding NetCDF and CMake, see \ref cmake_faq
-
-
diff --git a/docs/internal.dox b/docs/internal.dox
index 709aac4..3721b1a 100644
--- a/docs/internal.dox
+++ b/docs/internal.dox
@@ -1,4 +1,5 @@
/** \file
+
\internal
\page nc_dispatch Internal Dispatch Table Architecture
@@ -14,7 +15,14 @@ At least the following dispatch tables are supported.
- netcdf classic files (netcdf-3)
- netcdf enhanced files (netcdf-4)
- OPeNDAP to netcdf-3
-- OPeNDAP to netcdf-4
+- OPeNDAP to netcdf-4
+
+Internal Dispatch Tables
+- \subpage adding_dispatch
+- \subpage dispatch_notes
+- \subpage put_vara_dispatch
+- \subpage put_attr_dispatch
+
The dispatch table represents a distillation of the netcdf API down to
a minimal set of internal operations. The format of the dispatch table
@@ -23,15 +31,17 @@ table must define this minimal set of operations.
\page adding_dispatch Adding a New Dispatch Table
+\tableofcontents
+
In order to make this process concrete, let us assume we plan to add
-an in-memory implementation of netcdf-3.
+an in-memory implementation of netcdf-3.
\section dispatch_step1 Step 1.
Define a –enable flag and an AM_CONFIGURE flag in configure.ac. We
will use the flags –enable-netcdfm and USE_NETCDFM respectively.
-\section dispatch_step2 Step 2
+\section dispatch_step2 Step 2.
Choose some prefix of characters to identify the new dispatch
system. In effect we are defining a name-space. For our in-memory
@@ -69,7 +79,7 @@ Modify file libdispatch/netcdf.c as follows.
#endif
\endcode
- Add includes for any necessary header files as needed.
+ Add includes for any necessary header files as needed.
\section dispatch_step5 Step 5.
@@ -89,7 +99,7 @@ As part of the ncmdispatch.c file, you must define the following.
NCM_open,
...
};
-
+
int
NCM_initialize(void)
{
@@ -218,7 +228,7 @@ signatures respectively.
int useparallel, MPI_Comm comm, MPI_Info info,
struct NC_Dispatch*, struct NC** ncp);
\endcode
-
+
\code
int (*open)(const char *path, int mode,
int basepe, size_t *chunksizehintp,
@@ -273,7 +283,7 @@ replaced with a separate structure containing the common fields.
int (*put_vara)(int ncid, int varid, const size_t *start, const size_t *count,
const void *value, nc_type memtype);
\endcode
-
+
\code
int (*get_vara)(int ncid, int varid, const size_t *start, const size_t *count,
void *value, nc_type memtype);
@@ -292,7 +302,7 @@ to encounter the ::NC_INT64 type.
int (*get_att)(int ncid, int varid, const char *name,
void *value, nc_type memtype);
\endcode
-
+
\code
int (*put_att)(int ncid, int varid, const char *name, nc_type datatype, size_t len,
const void *value, nc_type memtype);
diff --git a/docs/mainpage.dox b/docs/mainpage.dox
index 41d8b65..73a5da2 100644
--- a/docs/mainpage.dox
+++ b/docs/mainpage.dox
@@ -1,40 +1,36 @@
-/** \file mainpage.dox Main Documentation Page
+/**
+\mainpage Overview
-\brief This header file holds the documentation for the main page.
-
-\mainpage
\tableofcontents
-\section mainpage_netcdf NetCDF Overview
-
-\subsection what_is_netcdf What is NetCDF?
+\section what_is_netcdf What is NetCDF?
NetCDF is a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. 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 is part of the University Corporation for Atmospheric Research (<a href="http://www.ucar.edu">UCAR</a>) Community Programs (<a hr [...]
The NetCDF homepage may be found at <a href="http://www.unidata.ucar.edu/netcdf">http://www.unidata.ucar.edu/netcdf</a>. The NetCDF source-code is hosted at <a href="http://github.com">GitHub</a>, and may be found directly at <a href="http://github.com/Unidata/netcdf-c">http://github.com/Unidata/netcdf-c</a>.
-\subsection this_release Learn more about the current NetCDF-C Release
+\section this_release Learn more about the current NetCDF-C Release
-- \ref release_notes
+- \subpage RELEASE_NOTES
- \ref getting_and_building_netcdf
-\subsubsection nightly_status The Latest NetCDF-C Build Status
+\subsection nightly_status The Latest NetCDF-C Build Status
- <A href="http://my.cdash.org/index.php?project=netcdf-c">The NetCDF-C Nightly and Continuous Integration Dashboard</A>
-\subsection learn-more Learn more about using NetCDF-C
+\section learn-more Learn more about using NetCDF-C
- \ref sec_tut
- \ref user_guide
- \ref netcdf_working_with_netcdf_files
- <a class="el" href="http://www.unidata.ucar.edu/software/netcdf/docs/index-413.html">Older Documentation, plus details regarding netcdf-fortran and netcdf-cxx.</a>
-\subsection netcdf-cmake-windows NetCDF CMake and Windows support:
+\section netcdf-cmake-windows NetCDF CMake and Windows support:
- \ref netCDF-CMake
- \ref winbin
-\subsection netcdf_credits Credits
+\section netcdf_credits About NetCDF
\authors Russ Rew, Glenn Davis, Steve Emmerson, Harvey Davies, Ed
Hartnett, Dennis Heimbigner and Ward Fisher
@@ -45,6 +41,7 @@ at <a href="http://www.unidata.ucar.edu">Unidata</a>, part of the
Programs</a> (UCP). Unidata is funded primarily by the National Science
Foundation.
+A complete list of credits and contributors to NetCDF may be found at the \subpage netcdf-credits-page page.
<a href="http://www.unidata.ucar.edu">Unidata</a> provides data and
software tools for use in geoscience education and research.
@@ -52,7 +49,7 @@ software tools for use in geoscience education and research.
\internal
-Internal Documentation
+Internal Documentation
The dispatch interface within the netCDF library allows the netCDF API
to be used for different types of back-ends, for example, the HDF5
diff --git a/docs/notes.dox b/docs/notes.dox
index a28e822..e30f1e3 100644
--- a/docs/notes.dox
+++ b/docs/notes.dox
@@ -1,33 +1,10 @@
-/** \file
+/** \file
Documentation of error handling.
\page programming_notes Programming Notes
\tableofcontents
-\section error_handling Error Handling
-
-Each netCDF function returns an integer status value. Non-zero values
-indicate error.
-
-The nc_strerror function is available to convert a returned integer
-error status into an error message string.
-
-If the returned status value indicates an error, you may handle it in
-any way desired, from printing an associated error message and exiting
-to ignoring the error indication and proceeding (not
-recommended!). For simplicity, the examples in this guide check the
-error status and call a separate function, handle_err(), to handle any
-errors. One possible definition of handle_err() can be found within
-the documentation of nc_strerror().
-
-Occasionally, low-level I/O errors may occur in a layer below the
-netCDF library. For example, if a write operation causes you to exceed
-disk quotas or to attempt to write to a device that is no longer
-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
Many of the argurments of netCDF functions are pointers. For example,
@@ -41,7 +18,7 @@ A NULL may be passed for any of these pointers, and it will be
ignored. For example, interested in the number of dimensions only, the
following code will work:
-\code
+\code
int ndims;
...
if (nc_inq(ncid, &ndims, NULL, NULL, NULL))
@@ -61,19 +38,19 @@ with vectors which specify the start, count, stride, and mapping.
\subsection start_vector A Vector Specifying Start Index for Each Dimension
A vector of size_t integers specifying the index in the
-variable where the first of the data values will be read.
+variable where the first of the data values will be read.
The indices are relative to 0, so for example, the first data value of
-a variable would have index (0, 0, ... , 0).
+a variable would have index (0, 0, ... , 0).
The length of start vector must be the same as the number of
dimensions of the specified variable. The elements of start
-correspond, in order, to the variable's dimensions.
+correspond, in order, to the variable's dimensions.
\subsection count_vector A Vector Specifying Count for Each Dimension
A vector of size_t integers specifying the edge lengths
-along each dimension of the block of data values to be read.
+along each dimension of the block of data values to be read.
To read a single value, for example, specify count as (1, 1, ... , 1).
@@ -91,7 +68,7 @@ indices.
A value of 1 accesses adjacent values of the netCDF variable in the
corresponding dimension; a value of 2 accesses every other value of
-the netCDF variable in the corresponding dimension; and so on.
+the netCDF variable in the corresponding dimension; and so on.
The elements of the stride vector correspond, in order, to the
variable's dimensions.
diff --git a/docs/tutorial.dox b/docs/tutorial.dox
index 4a0fa7d..7f1ecd6 100644
--- a/docs/tutorial.dox
+++ b/docs/tutorial.dox
@@ -1,8 +1,7 @@
-/*! \file tutorial.dox The NetCDF-C Tutorial
+/*! \page tutorial.dox The NetCDF-C Tutorial
\brief The NetCDF-C Tutorial
-\mainpage
\tableofcontents
@@ -10,35 +9,44 @@
This page contains refrences to various other NetCDF background and tutorial pages.
+\subsection tutorial_pages Tutorial Pages
+
+- \subpage netcdf_working_with_netcdf_files
+- \subpage tutorial_ncids
+- \subpage creating
+- \subpage reading_known
+- \subpage reading_unknown
+- \subpage accessing_subsets
+
\subsection background_further_reading Background and Further Reading
- \ref what_is_netcdf
-- \ref netcdf_documentation
+- \subpage netcdf_documentation
\subsection sub_sec_netcdf_data_model NetCDF Data Model:
-- \ref netcdf_data_model
+- \subpage netcdf_data_model
- \ref classic_model
- \ref enhanced_model
-- \ref unlimited_dims
-- \ref groups
-- \ref user_defined_types
-- \ref string_type
+- \subpage unlimited_dims
+- \subpage groups
+- \subpage user_defined_types
+- \subpage string_type
\subsection sub_sec_important_conventions Important Conventions:
-- \ref fill_values
+- \subpage fill_values
\subsection sub_sec_tools_for_netcdf Tools for NetCDF:
- \ref netcdf_utilities
- \ref external_netcdf_tools
\subsection sub_sec_programming_with_netcdf Programming with NetCDF:
-- \ref netcdf_apis
-- \ref error_handling
-- \ref interoperability_hdf5
-- \ref parallel_io
+- \subpage netcdf_apis
+- \subpage error_handling
+- \subpage interoperability_hdf5
+- \subpage parallel_io
\subsection sub_sec_example_programs Example Programs:
-- \ref examples1
+- \subpage examples1
\page netcdf_working_with_netcdf_files Working with NetCDF Files from the command line.
@@ -67,7 +75,7 @@ See also: \ref guide_ncdump
The ncgen utility can take an ASCII input file, in CDL format, and
generate a binary netCDF file. It is the opposite of ncdump.
-See also:
+See also:
- \ref guide_ncgen
- \ref guide_ncgen3
@@ -92,11 +100,11 @@ many situations. Some of the tools on this list are developed at
Unidata. The others are developed elsewhere, and we can make no
guarantees about their continued availability or success. All of these
tools are open-source.
-- <a href="http://www.unidata.ucar.edu/software/udunits">UDUNITS</a> - Unidata library to help with scientific units.
-- <a href="http://www.unidata.ucar.edu/software/idv">IDV</a> - Unidata's Integrated Data Viewer, a 3D visualization and analysis package (Java based).
-- <a href="http://www.ncl.ucar.edu">NCL</a> - NCAR Command Language, a graphics and data manipulation package.
-- <a href="http://grads.iges.org/grads/grads.html">GrADS</a> - The Grid Analysis and Display System package.
-- <a href="http://nco.sourceforge.net">NCO</a> - NetCDF Command line Operators, tools to manipulate netCDF files.
+- <a href="http://www.unidata.ucar.edu/software/udunits">UDUNITS</a> - Unidata library to help with scientific units.
+- <a href="http://www.unidata.ucar.edu/software/idv">IDV</a> - Unidata's Integrated Data Viewer, a 3D visualization and analysis package (Java based).
+- <a href="http://www.ncl.ucar.edu">NCL</a> - NCAR Command Language, a graphics and data manipulation package.
+- <a href="http://grads.iges.org/grads/grads.html">GrADS</a> - The Grid Analysis and Display System package.
+- <a href="http://nco.sourceforge.net">NCO</a> - NetCDF Command line Operators, tools to manipulate netCDF files.
A <a href="http://www.unidata.ucar.edu/netcdf/software.html">list of
netCDF tools</a> that we know about can be found on the website. If
@@ -118,7 +126,7 @@ utilities, ncgen/ncdump/nccopy.
The C++, Fortran 77 and Fortran 90 APIs are distributed separately
from the C library. The C library must be installed before any of
-these APIs may be built. They depend on the C API.
+these APIs may be built. They depend on the C API.
Due to the nature of C++ and Fortran 90, users of those languages can
also use the C and Fortran 77 APIs (respectively) directly.
@@ -161,7 +169,7 @@ C, C++, Fortran 77, Fortran 90, and Java APIs:
- C++ - The NetCDF C++ Interface Guide.
- Fortran 77 - The NetCDF Fortran 77 Interface Guide.
- Fortran 90 - The NetCDF Fortran 90 Interface Guide.
-- Java <a href="http://www.unidata.ucar.edu/software/netcdf-java/v2.1/NetcdfJavaUserManual.htm">The netCDF-Java Users Guide</a>.
+- Java <a href="http://www.unidata.ucar.edu/software/netcdf-java/v2.1/NetcdfJavaUserManual.htm">The netCDF-Java Users Guide</a>.
Man pages for the C, F77, and F90 interfaces, and ncgen and ncdump,
are available on the documentation page of the netCDF web site
@@ -190,7 +198,7 @@ created with the \ref classic_model.
<p>\image html nc4-model.png "The NetCDF Enhanced Data Model"
-\section classic_model The Classic Model
+\section 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
@@ -247,8 +255,8 @@ adds:
<li>groups - A way of hierarchically organizing data, similar to
directories in a Unix file system.
-<li>user-defined types - The user can now define compound types
-(like C structures), enumeration types, variable length arrays, and
+<li>user-defined types - The user can now define compound types
+(like C structures), enumeration types, variable length arrays, and
opaque types.
</ul>
@@ -474,7 +482,7 @@ ncdump and ncgen see NetCDF Utilities.
variables:
int data(x, y) ;
data:
-
+
data =
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
@@ -524,11 +532,11 @@ The CDL version of the data file, generated by ncdump, is shown below
float temperature(latitude, longitude) ;
temperature:units = "celsius" ;
data:
-
+
latitude = 25, 30, 35, 40, 45, 50 ;
-
+
longitude = -125, -120, -115, -110, -105, -100, -95, -90, -85, -80, -75, -70 ;
-
+
pressure =
900, 906, 912, 918, 924, 930, 936, 942, 948, 954, 960, 966,
901, 907, 913, 919, 925, 931, 937, 943, 949, 955, 961, 967,
@@ -536,7 +544,7 @@ The CDL version of the data file, generated by ncdump, is shown below
903, 909, 915, 921, 927, 933, 939, 945, 951, 957, 963, 969,
904, 910, 916, 922, 928, 934, 940, 946, 952, 958, 964, 970,
905, 911, 917, 923, 929, 935, 941, 947, 953, 959, 965, 971 ;
-
+
temperature =
9, 10.5, 12, 13.5, 15, 16.5, 18, 19.5, 21, 22.5, 24, 25.5,
9.25, 10.75, 12.25, 13.75, 15.25, 16.75, 18.25, 19.75, 21.25, 22.75, 24.25,
@@ -563,7 +571,7 @@ step at a time, as is typical in scientific applications that use the
unlimited dimension.
The sample data file created by pres_temp_4D_wr can be examined with
-the utility ncdump (see \ref netcdf_utilities).
+the utility ncdump (see \ref netcdf_utilities).
\code
netcdf pres_temp_4D {
@@ -582,11 +590,11 @@ the utility ncdump (see \ref netcdf_utilities).
float temperature(time, level, latitude, longitude) ;
temperature:units = "celsius" ;
data:
-
+
latitude = 25, 30, 35, 40, 45, 50 ;
-
+
longitude = -125, -120, -115, -110, -105, -100, -95, -90, -85, -80, -75, -70 ;
-
+
pressure =
900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911,
912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923,
@@ -612,7 +620,7 @@ the utility ncdump (see \ref netcdf_utilities).
1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031,
1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043 ;
-
+
temperature =
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
@@ -649,7 +657,7 @@ This example is only available in C for this version of netCDF-4. The example cr
The simple_xy.nc data file contains two dimensions, “x” and “y”, two groups, “grp1” and “grp2”, and two data variables, one in each group, both named: “data.” One data variable is an unsigned 64-bit integer, the other a user-defined compound type.
-The example program simple_nc4_wr.c creates the example data file simple_nc4.nc. The example program simple_nc4_rd.c reads the data file.
+The example program simple_nc4_wr.c creates the example data file simple_nc4.nc. The example program simple_nc4_rd.c reads the data file.
- simple_nc4_wr.c
- simple_nc4_rd.c
@@ -784,7 +792,7 @@ be opened or created for use with parallel I/O. (They may be opened
and created, but parallel I/O is not available.)
A few functions have been added to the netCDF C API to handle parallel
-I/O.
+I/O.
You must build netCDF-4 properly to take advantage of parallel
features (see \ref build_parallel).
@@ -912,7 +920,7 @@ num attributes.
- nc_inq_dimid() Find dimension ID from its name.
- nc_inq_varid() Find variable ID from its name.
- nc_inq_format() Find file format: classic or 64-bit offset
-- nc_inq_libvers() Find the netCDF library version.
+- nc_inq_libvers() Find the netCDF library version.
\page accessing_subsets Reading and Writing Subsets of Data
@@ -945,7 +953,7 @@ data, in both cases. They type of the file data is determined when the
netCDF variable is defined.
The type of the data may be automatically converted on read or
-write.
+write.
\example simple_xy_wr.c
\example simple_xy_rd.c
diff --git a/docs/types.dox b/docs/types.dox
index 32ccca9..699e1b3 100644
--- a/docs/types.dox
+++ b/docs/types.dox
@@ -127,7 +127,7 @@ attributes, or variables that refer to other attributes or variables,
provides a flexible mechanism for representing some kinds of complex
structures in netCDF datasets.
-\section user_defined_types NetCDF-4 User Defined Data Types
+\section nc4_user_defined_types NetCDF-4 User Defined Data Types
NetCDF supported six data types through version 3.6.0 (char, byte,
short, int, float, and double). Starting with version 4.0, many new
@@ -160,12 +160,16 @@ user-defined types or the new atomic data types.
Once types are defined, use their ID like any other type ID when
defining variables or attributes. Use functions
-nc_put_att()/nc_get_att() and the nc_put_var()/nc_get_var(),
-nc_put_var1()/nc_get_var1(), nc_put_vara()/nc_get_vara(), or
-nc_put_vars()/nc_get_vars() functons to access attribute and variable
-data of user defined type.
-\subsection compound_types Compound Types
+- nc_put_att() / nc_get_att()
+- nc_put_var() / nc_get_var()
+- nc_put_var1() / nc_get_var1()
+- nc_put_vara() / nc_get_vara()
+- nc_put_vars() / nc_get_vars()
+
+functons to access attribute and variable data of user defined type.
+
+\subsection types_compound_types Compound Types
Compound types allow the user to combine atomic and user-defined types
into C-like structs. Since users defined types may be used within a
@@ -174,7 +178,7 @@ compound type, they can contain nested compound types.
Users define a compound type, and (in their C code) a corresponding C
struct. They can then use nc_put_vara() and related functions to write
multi-dimensional arrays of these structs, and nc_get_vara() calls
-to read them.
+to read them.
While structs, in general, are not portable from platform to platform,
the HDF5 layer (when installed) performs the magic required to figure
@@ -212,7 +216,7 @@ and pointers to the data, rather than the actual data.
For more information on creating and using variable length arrays, see
Variable Length Arrays in The NetCDF C Interface Guide.
-\subsection opaque_types Opaque Types
+\subsection types_opaque_types Opaque Types
Opaque types allow the user to store arrays of data blobs of a fixed size.
@@ -224,7 +228,7 @@ Type in The NetCDF C Interface Guide.
Enum types allow the user to specify an enumeration.
For more information on creating and using enum types, see Enum Type
-in The NetCDF C Interface Guide.
+in The NetCDF C Interface Guide.
\section type_conversion Type Conversion
diff --git a/docs/windows-binaries.md b/docs/windows-binaries.md
index ffff602..310a6ec 100644
--- a/docs/windows-binaries.md
+++ b/docs/windows-binaries.md
@@ -23,27 +23,23 @@ Users who prefer to build the netCDF-C libraries from source in a Windows enviro
These libraries can be used with Visual Studio 2010 projects. The downloads are installer packages which contain the netCDF-C libraries and utilities (ncgen, ncgen3, ncdump and nccopy), as well as the associated dependencies.
-## Latest Stable Release (netCDF-C 4.3.2)
-
-Configuration | 32-bit | 64-bit |
-:-------------------|:-------- |:-------|
-netCDF 3 | [netCDF4.3.2-NC3-32.exe][r1] | [netCDF4.3.2-NC3-64.exe][r5]
-netCDF3+DAP | [netCDF4.3.2-NC3-DAP-32.exe][r2] | [netCDF4.3.2-NC3-DAP-64.exe][r6]
-netCDF4 | [netCDF4.3.2-NC4-32.exe][r3] | [netCDF4.3.2-NC4-64.exe][r7]
-netCDF4+DAP | [netCDF4.3.2-NC4-DAP-32.exe][r4] | [netCDF4.3.2-NC4-DAP-64.exe][r8]
+## Included Dependencies
+The included dependencies and versions are as follows:
-## Latest Release Candidate (netCDF-C 4.3.2-rc2)
+* `libhdf5`: 1.8.14
+* `libcurl`: 7.35.0
+* `zlib`: 1.2.8
-*Note: The latest release candidate may actually* **pre-date** *the latest stable release. If you are interested in using the latest developer snapshot on Windows, it may be downloaded from http://github.com/Unidata/netcdf-c but be warned,* **you will need to compile it yourself!**
+## Latest Release (netCDF-C 4.3.3-rc3)
Configuration | 32-bit | 64-bit |
:-------------------|:-------- |:-------|
-netCDF 3 | [netCDF4.3.2-rc2-NC3-32.exe][rc1] | [netCDF4.3.2-rc2-NC3-64.exe][rc6]
-netCDF3+DAP | [netCDF4.3.2-rc2-NC3-DAP-32.exe][rc2] | [netCDF4.3.2-rc2-NC3-DAP-64.exe][rc6]
-netCDF4 | [netCDF4.3.2-rc2-NC4-32.exe][rc3] | [netCDF4.3.2-rc2-NC4-64.exe][rc7]
-netCDF4+DAP | [netCDF4.3.2-rc2-NC4-DAP-32.exe][rc4] | [netCDF4.3.2-rc2-NC4-DAP-64.exe][rc8]
+netCDF 3 | [netCDF4.3.3-rc3-NC3-32.exe][r1] | [netCDF4.3.3-rc3-NC3-64.exe][r6]
+netCDF3+DAP | [netCDF4.3.3-rc3-NC3-DAP-32.exe][r2] | [netCDF4.3.3-rc3-NC3-DAP-64.exe][r6]
+netCDF4 | [netCDF4.3.3-rc3-NC4-32.exe][r3] | [netCDF4.3.3-rc3-NC4-64.exe][r7]
+netCDF4+DAP | [netCDF4.3.3-rc3-NC4-DAP-32.exe][r4] | [netCDF4.3.3-rc3-NC4-DAP-64.exe][r8]
# Using the netCDF-C Libraries with Visual Studio
In order to use the netcdf libraries, you must ensure that the .dll files (along with any dependencies from deps/shared/bin) are on the system path. In order to compile a program using these libraries, you must first link your program against the appropriate 'import' (.lib) libraries.
@@ -53,7 +49,7 @@ In order to use the netcdf libraries, you must ensure that the .dll files (along
When installed, the netCDF libraries are placed in the specified locations, along with the netCDF-C utilities and dependencies.
<center>
-<IMG SRC="InstallTreeWindows.png" width="1000"/>
+<IMG SRC="InstallTreeWindows.png" width="400"/>
</center>
# Notes
@@ -63,21 +59,11 @@ When installed, the netCDF libraries are placed in the specified locations, alon
1. When building the netCDF-C libraries with netCDF4 support, using the 'debug' libraries may cause extraneous warnings. These warnings are related to cross-dll memory management, and appear to be harmless. You can safely ignore them by using the 'release' libraries. [NCF-220]
-[r1]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC3-32.exe
-[r2]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC3-DAP-32.exe
-[r3]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC4-32.exe
-[r4]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC4-DAP-32.exe
-[r5]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC3-64.exe
-[r6]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC3-DAP-64.exe
-[r7]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC4-64.exe
-[r8]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-NC4-DAP-64.exe
-
-
-[rc1]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC3-32.exe
-[rc2]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC3-DAP-32.exe
-[rc3]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC4-32.exe
-[rc4]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC4-DAP-32.exe
-[rc6]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC3-64.exe
-[rc6]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC3-DAP-64.exe
-[rc7]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC4-64.exe
-[rc8]: http://www.unidata.ucar.edu/netcdf/win_netcdf/netCDF4.3.2-rc2-NC4-DAP-64.exe
+[r1]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC3-32.exe
+[r2]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC3-DAP-32.exe
+[r3]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC4-32.exe
+[r4]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC4-DAP-32.exe
+[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC3-64.exe
+[r6]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC3-DAP-64.exe
+[r7]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC4-64.exe
+[r8]: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netCDF4.3.3-rc3-NC4-DAP-64.exe
diff --git a/examples/C/Makefile.in b/examples/C/Makefile.in
new file mode 100644
index 0000000..cd09b2b
--- /dev/null
+++ b/examples/C/Makefile.in
@@ -0,0 +1,1207 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# This is a automake file, part of Unidata's netCDF package.
+# Copyright 2006, see the COPYRIGHT file for more information.
+
+# This file builds the C examples.
+
+# $Id: Makefile.am,v 1.26 2010/05/29 00:17:41 dmh Exp $
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+
+# To build netcdf-4, or not to build netcdf-4, that is the question...
+# These are the extra netCDF-4 examples.
+ at USE_NETCDF4_TRUE@am__append_1 = simple_nc4_wr simple_nc4_rd simple_xy_nc4_wr \
+ at USE_NETCDF4_TRUE@simple_xy_nc4_rd
+
+check_PROGRAMS = $(am__EXEEXT_2)
+TESTS = $(am__EXEEXT_2) $(am__append_2) $(am__append_3)
+
+# This will run a bunch of the test programs with valgrind, the memory
+# checking tool. (Valgrind must be present for this to work.)
+ at USE_VALGRIND_TESTS_TRUE@am__append_2 = run_valgrind_tests.sh
+ at USE_NETCDF4_TRUE@@USE_VALGRIND_TESTS_TRUE at am__append_3 = run_nc4_valgrind_tests.sh
+subdir = examples/C
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+ at USE_NETCDF4_TRUE@am__EXEEXT_1 = simple_nc4_wr$(EXEEXT) \
+ at USE_NETCDF4_TRUE@ simple_nc4_rd$(EXEEXT) \
+ at USE_NETCDF4_TRUE@ simple_xy_nc4_wr$(EXEEXT) \
+ at USE_NETCDF4_TRUE@ simple_xy_nc4_rd$(EXEEXT)
+am__EXEEXT_2 = simple_xy_wr$(EXEEXT) simple_xy_rd$(EXEEXT) \
+ sfc_pres_temp_wr$(EXEEXT) sfc_pres_temp_rd$(EXEEXT) \
+ pres_temp_4D_wr$(EXEEXT) pres_temp_4D_rd$(EXEEXT) \
+ $(am__EXEEXT_1)
+pres_temp_4D_rd_SOURCES = pres_temp_4D_rd.c
+pres_temp_4D_rd_OBJECTS = pres_temp_4D_rd.$(OBJEXT)
+pres_temp_4D_rd_LDADD = $(LDADD)
+pres_temp_4D_rd_DEPENDENCIES =
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+pres_temp_4D_wr_SOURCES = pres_temp_4D_wr.c
+pres_temp_4D_wr_OBJECTS = pres_temp_4D_wr.$(OBJEXT)
+pres_temp_4D_wr_LDADD = $(LDADD)
+pres_temp_4D_wr_DEPENDENCIES =
+sfc_pres_temp_rd_SOURCES = sfc_pres_temp_rd.c
+sfc_pres_temp_rd_OBJECTS = sfc_pres_temp_rd.$(OBJEXT)
+sfc_pres_temp_rd_LDADD = $(LDADD)
+sfc_pres_temp_rd_DEPENDENCIES =
+sfc_pres_temp_wr_SOURCES = sfc_pres_temp_wr.c
+sfc_pres_temp_wr_OBJECTS = sfc_pres_temp_wr.$(OBJEXT)
+sfc_pres_temp_wr_LDADD = $(LDADD)
+sfc_pres_temp_wr_DEPENDENCIES =
+simple_nc4_rd_SOURCES = simple_nc4_rd.c
+simple_nc4_rd_OBJECTS = simple_nc4_rd.$(OBJEXT)
+simple_nc4_rd_LDADD = $(LDADD)
+simple_nc4_rd_DEPENDENCIES =
+simple_nc4_wr_SOURCES = simple_nc4_wr.c
+simple_nc4_wr_OBJECTS = simple_nc4_wr.$(OBJEXT)
+simple_nc4_wr_LDADD = $(LDADD)
+simple_nc4_wr_DEPENDENCIES =
+simple_xy_nc4_rd_SOURCES = simple_xy_nc4_rd.c
+simple_xy_nc4_rd_OBJECTS = simple_xy_nc4_rd.$(OBJEXT)
+simple_xy_nc4_rd_LDADD = $(LDADD)
+simple_xy_nc4_rd_DEPENDENCIES =
+simple_xy_nc4_wr_SOURCES = simple_xy_nc4_wr.c
+simple_xy_nc4_wr_OBJECTS = simple_xy_nc4_wr.$(OBJEXT)
+simple_xy_nc4_wr_LDADD = $(LDADD)
+simple_xy_nc4_wr_DEPENDENCIES =
+simple_xy_rd_SOURCES = simple_xy_rd.c
+simple_xy_rd_OBJECTS = simple_xy_rd.$(OBJEXT)
+simple_xy_rd_LDADD = $(LDADD)
+simple_xy_rd_DEPENDENCIES =
+simple_xy_wr_SOURCES = simple_xy_wr.c
+simple_xy_wr_OBJECTS = simple_xy_wr.$(OBJEXT)
+simple_xy_wr_LDADD = $(LDADD)
+simple_xy_wr_DEPENDENCIES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = pres_temp_4D_rd.c pres_temp_4D_wr.c sfc_pres_temp_rd.c \
+ sfc_pres_temp_wr.c simple_nc4_rd.c simple_nc4_wr.c \
+ simple_xy_nc4_rd.c simple_xy_nc4_wr.c simple_xy_rd.c \
+ simple_xy_wr.c
+DIST_SOURCES = pres_temp_4D_rd.c pres_temp_4D_wr.c sfc_pres_temp_rd.c \
+ sfc_pres_temp_wr.c simple_nc4_rd.c simple_nc4_wr.c \
+ simple_xy_nc4_rd.c simple_xy_nc4_wr.c simple_xy_rd.c \
+ simple_xy_wr.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/liblib
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+LDADD = -lm
+
+# These are the netCDF-3 examples.
+TESTPROGRAMS = simple_xy_wr simple_xy_rd sfc_pres_temp_wr \
+ sfc_pres_temp_rd pres_temp_4D_wr pres_temp_4D_rd \
+ $(am__append_1)
+
+# These files are created by the tests.
+CLEANFILES = sfc_pres_temp.nc simple_xy.nc pres_temp_4D.nc \
+simple_nc4.nc simple_xy_nc4.nc
+
+EXTRA_DIST = run_valgrind_tests.sh run_nc4_valgrind_tests.sh CMakeLists.txt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/C/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign examples/C/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+pres_temp_4D_rd$(EXEEXT): $(pres_temp_4D_rd_OBJECTS) $(pres_temp_4D_rd_DEPENDENCIES) $(EXTRA_pres_temp_4D_rd_DEPENDENCIES)
+ @rm -f pres_temp_4D_rd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pres_temp_4D_rd_OBJECTS) $(pres_temp_4D_rd_LDADD) $(LIBS)
+
+pres_temp_4D_wr$(EXEEXT): $(pres_temp_4D_wr_OBJECTS) $(pres_temp_4D_wr_DEPENDENCIES) $(EXTRA_pres_temp_4D_wr_DEPENDENCIES)
+ @rm -f pres_temp_4D_wr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pres_temp_4D_wr_OBJECTS) $(pres_temp_4D_wr_LDADD) $(LIBS)
+
+sfc_pres_temp_rd$(EXEEXT): $(sfc_pres_temp_rd_OBJECTS) $(sfc_pres_temp_rd_DEPENDENCIES) $(EXTRA_sfc_pres_temp_rd_DEPENDENCIES)
+ @rm -f sfc_pres_temp_rd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sfc_pres_temp_rd_OBJECTS) $(sfc_pres_temp_rd_LDADD) $(LIBS)
+
+sfc_pres_temp_wr$(EXEEXT): $(sfc_pres_temp_wr_OBJECTS) $(sfc_pres_temp_wr_DEPENDENCIES) $(EXTRA_sfc_pres_temp_wr_DEPENDENCIES)
+ @rm -f sfc_pres_temp_wr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(sfc_pres_temp_wr_OBJECTS) $(sfc_pres_temp_wr_LDADD) $(LIBS)
+
+simple_nc4_rd$(EXEEXT): $(simple_nc4_rd_OBJECTS) $(simple_nc4_rd_DEPENDENCIES) $(EXTRA_simple_nc4_rd_DEPENDENCIES)
+ @rm -f simple_nc4_rd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(simple_nc4_rd_OBJECTS) $(simple_nc4_rd_LDADD) $(LIBS)
+
+simple_nc4_wr$(EXEEXT): $(simple_nc4_wr_OBJECTS) $(simple_nc4_wr_DEPENDENCIES) $(EXTRA_simple_nc4_wr_DEPENDENCIES)
+ @rm -f simple_nc4_wr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(simple_nc4_wr_OBJECTS) $(simple_nc4_wr_LDADD) $(LIBS)
+
+simple_xy_nc4_rd$(EXEEXT): $(simple_xy_nc4_rd_OBJECTS) $(simple_xy_nc4_rd_DEPENDENCIES) $(EXTRA_simple_xy_nc4_rd_DEPENDENCIES)
+ @rm -f simple_xy_nc4_rd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(simple_xy_nc4_rd_OBJECTS) $(simple_xy_nc4_rd_LDADD) $(LIBS)
+
+simple_xy_nc4_wr$(EXEEXT): $(simple_xy_nc4_wr_OBJECTS) $(simple_xy_nc4_wr_DEPENDENCIES) $(EXTRA_simple_xy_nc4_wr_DEPENDENCIES)
+ @rm -f simple_xy_nc4_wr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(simple_xy_nc4_wr_OBJECTS) $(simple_xy_nc4_wr_LDADD) $(LIBS)
+
+simple_xy_rd$(EXEEXT): $(simple_xy_rd_OBJECTS) $(simple_xy_rd_DEPENDENCIES) $(EXTRA_simple_xy_rd_DEPENDENCIES)
+ @rm -f simple_xy_rd$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(simple_xy_rd_OBJECTS) $(simple_xy_rd_LDADD) $(LIBS)
+
+simple_xy_wr$(EXEEXT): $(simple_xy_wr_OBJECTS) $(simple_xy_wr_DEPENDENCIES) $(EXTRA_simple_xy_wr_DEPENDENCIES)
+ @rm -f simple_xy_wr$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(simple_xy_wr_OBJECTS) $(simple_xy_wr_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pres_temp_4D_rd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pres_temp_4D_wr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sfc_pres_temp_rd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sfc_pres_temp_wr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_nc4_rd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_nc4_wr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_xy_nc4_rd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_xy_nc4_wr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_xy_rd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/simple_xy_wr.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+simple_xy_wr.log: simple_xy_wr$(EXEEXT)
+ @p='simple_xy_wr$(EXEEXT)'; \
+ b='simple_xy_wr'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_xy_rd.log: simple_xy_rd$(EXEEXT)
+ @p='simple_xy_rd$(EXEEXT)'; \
+ b='simple_xy_rd'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+sfc_pres_temp_wr.log: sfc_pres_temp_wr$(EXEEXT)
+ @p='sfc_pres_temp_wr$(EXEEXT)'; \
+ b='sfc_pres_temp_wr'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+sfc_pres_temp_rd.log: sfc_pres_temp_rd$(EXEEXT)
+ @p='sfc_pres_temp_rd$(EXEEXT)'; \
+ b='sfc_pres_temp_rd'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+pres_temp_4D_wr.log: pres_temp_4D_wr$(EXEEXT)
+ @p='pres_temp_4D_wr$(EXEEXT)'; \
+ b='pres_temp_4D_wr'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+pres_temp_4D_rd.log: pres_temp_4D_rd$(EXEEXT)
+ @p='pres_temp_4D_rd$(EXEEXT)'; \
+ b='pres_temp_4D_rd'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_nc4_wr.log: simple_nc4_wr$(EXEEXT)
+ @p='simple_nc4_wr$(EXEEXT)'; \
+ b='simple_nc4_wr'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_nc4_rd.log: simple_nc4_rd$(EXEEXT)
+ @p='simple_nc4_rd$(EXEEXT)'; \
+ b='simple_nc4_rd'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_xy_nc4_wr.log: simple_xy_nc4_wr$(EXEEXT)
+ @p='simple_xy_nc4_wr$(EXEEXT)'; \
+ b='simple_xy_nc4_wr'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_xy_nc4_rd.log: simple_xy_nc4_rd$(EXEEXT)
+ @p='simple_xy_nc4_rd$(EXEEXT)'; \
+ b='simple_xy_nc4_rd'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_valgrind_tests.sh.log: run_valgrind_tests.sh
+ @p='run_valgrind_tests.sh'; \
+ b='run_valgrind_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_nc4_valgrind_tests.sh.log: run_nc4_valgrind_tests.sh
+ @p='run_nc4_valgrind_tests.sh'; \
+ b='run_nc4_valgrind_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/CDL/Makefile.in b/examples/CDL/Makefile.in
new file mode 100644
index 0000000..d09a424
--- /dev/null
+++ b/examples/CDL/Makefile.in
@@ -0,0 +1,883 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2006, see the COPYRIGHT file for more information.
+
+# This file builds CDL examples.
+
+# $Id: Makefile.am,v 1.3 2009/05/19 11:56:50 ed Exp $
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = examples/CDL
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# All we do is run two shell scripts, which create the sample files
+# and then compare them with the C versions of the examples.
+#if !BUILD_DLL
+TESTS = create_sample_files.sh do_comps.sh
+#endif
+
+# Ship the scripts needed to create the sample files and compare them.
+EXTRA_DIST = do_comps.sh create_sample_files.sh simple_xy.cdl \
+sfc_pres_temp.cdl pres_temp_4D.cdl CMakeLists.txt
+
+
+# Clean up files created during the process.
+CLEANFILES = simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .log .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/CDL/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign examples/CDL/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+create_sample_files.sh.log: create_sample_files.sh
+ @p='create_sample_files.sh'; \
+ b='create_sample_files.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+do_comps.sh.log: do_comps.sh
+ @p='do_comps.sh'; \
+ b='do_comps.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ clean-libtool cscopelist-am ctags-am distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \
+ uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644
index 0000000..f39e344
--- /dev/null
+++ b/examples/Makefile.in
@@ -0,0 +1,675 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, 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
+# options selected during configure.
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = examples
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = C CDL
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Build ncgen/ncdump.
+ at BUILD_UTILITIES_TRUE@CDL_DIR = CDL
+
+# These are the subdirectories that will be built.
+SUBDIRS = C $(CDL_DIR)
+EXTRA_DIST = CMakeLists.txt
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign examples/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/h5_test/CMakeLists.txt b/h5_test/CMakeLists.txt
index e8f3d56..23e3d61 100644
--- a/h5_test/CMakeLists.txt
+++ b/h5_test/CMakeLists.txt
@@ -5,7 +5,11 @@ FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
FOREACH(CTEST ${H5TESTS})
ADD_EXECUTABLE(${CTEST} ${CTEST}.c)
- TARGET_LINK_LIBRARIES(${CTEST} netcdf)
+ TARGET_LINK_LIBRARIES(${CTEST}
+ netcdf
+ ${HDF5_C_LIBRARIES}
+ ${HDF5_HL_LIBRARIES}
+ )
ADD_TEST(${CTEST} ${EXECUTABLE_OUTPUT_PATH}/${CTEST})
ENDFOREACH()
diff --git a/h5_test/Makefile.in b/h5_test/Makefile.in
new file mode 100644
index 0000000..9cbffff
--- /dev/null
+++ b/h5_test/Makefile.in
@@ -0,0 +1,1499 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# This is part of the netCDF package.
+# Copyright 2011 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# This entire directory will be skipped, unless the configure script
+# is run with --enable-netcdf-4. This directory contains tests that
+# only use HDF5; these tests don't use netCDF at all.
+#
+# If one of these tests fails, then netCDF-4 will not work correctly.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+
+# If benchmarks were turned on, build and run a bunch more tests.
+ at BUILD_BENCHMARKS_TRUE@am__append_3 = tst_h_mem
+check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3)
+TESTS = $(am__EXEEXT_2) $(am__append_5) $(am__append_6)
+
+# The parallel program is run from a script.
+ at TEST_PARALLEL_TRUE@am__append_4 = tst_h_par
+ at TEST_PARALLEL_TRUE@am__append_5 = run_par_tests.sh
+
+# This will run a bunch of the test programs with valgrind, the memory
+# checking tool. (Valgrind must be present for this to work.)
+ at USE_VALGRIND_TESTS_TRUE@am__append_6 = run_valgrind_tests.sh
+subdir = h5_test
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+ at BUILD_BENCHMARKS_TRUE@am__EXEEXT_1 = tst_h_mem$(EXEEXT)
+am__EXEEXT_2 = tst_h_files$(EXEEXT) tst_h_files2$(EXEEXT) \
+ tst_h_files4$(EXEEXT) tst_h_atts$(EXEEXT) tst_h_atts3$(EXEEXT) \
+ tst_h_atts4$(EXEEXT) tst_h_vars$(EXEEXT) tst_h_vars2$(EXEEXT) \
+ tst_h_vars3$(EXEEXT) tst_h_grps$(EXEEXT) \
+ tst_h_compounds$(EXEEXT) tst_h_compounds2$(EXEEXT) \
+ tst_h_wrt_cmp$(EXEEXT) tst_h_rd_cmp$(EXEEXT) tst_h_vl$(EXEEXT) \
+ tst_h_opaques$(EXEEXT) tst_h_strings$(EXEEXT) \
+ tst_h_strings1$(EXEEXT) tst_h_strings2$(EXEEXT) \
+ tst_h_ints$(EXEEXT) tst_h_dimscales$(EXEEXT) \
+ tst_h_dimscales1$(EXEEXT) tst_h_dimscales2$(EXEEXT) \
+ tst_h_dimscales3$(EXEEXT) tst_h_enums$(EXEEXT) \
+ tst_h_dimscales4$(EXEEXT) $(am__EXEEXT_1)
+ at TEST_PARALLEL_TRUE@am__EXEEXT_3 = tst_h_par$(EXEEXT)
+tst_h_atts_SOURCES = tst_h_atts.c
+tst_h_atts_OBJECTS = tst_h_atts.$(OBJEXT)
+tst_h_atts_LDADD = $(LDADD)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+tst_h_atts3_SOURCES = tst_h_atts3.c
+tst_h_atts3_OBJECTS = tst_h_atts3.$(OBJEXT)
+tst_h_atts3_LDADD = $(LDADD)
+tst_h_atts4_SOURCES = tst_h_atts4.c
+tst_h_atts4_OBJECTS = tst_h_atts4.$(OBJEXT)
+tst_h_atts4_LDADD = $(LDADD)
+tst_h_compounds_SOURCES = tst_h_compounds.c
+tst_h_compounds_OBJECTS = tst_h_compounds.$(OBJEXT)
+tst_h_compounds_LDADD = $(LDADD)
+tst_h_compounds2_SOURCES = tst_h_compounds2.c
+tst_h_compounds2_OBJECTS = tst_h_compounds2.$(OBJEXT)
+tst_h_compounds2_LDADD = $(LDADD)
+tst_h_dimscales_SOURCES = tst_h_dimscales.c
+tst_h_dimscales_OBJECTS = tst_h_dimscales.$(OBJEXT)
+tst_h_dimscales_LDADD = $(LDADD)
+tst_h_dimscales1_SOURCES = tst_h_dimscales1.c
+tst_h_dimscales1_OBJECTS = tst_h_dimscales1.$(OBJEXT)
+tst_h_dimscales1_LDADD = $(LDADD)
+tst_h_dimscales2_SOURCES = tst_h_dimscales2.c
+tst_h_dimscales2_OBJECTS = tst_h_dimscales2.$(OBJEXT)
+tst_h_dimscales2_LDADD = $(LDADD)
+tst_h_dimscales3_SOURCES = tst_h_dimscales3.c
+tst_h_dimscales3_OBJECTS = tst_h_dimscales3.$(OBJEXT)
+tst_h_dimscales3_LDADD = $(LDADD)
+tst_h_dimscales4_SOURCES = tst_h_dimscales4.c
+tst_h_dimscales4_OBJECTS = tst_h_dimscales4.$(OBJEXT)
+tst_h_dimscales4_LDADD = $(LDADD)
+tst_h_enums_SOURCES = tst_h_enums.c
+tst_h_enums_OBJECTS = tst_h_enums.$(OBJEXT)
+tst_h_enums_LDADD = $(LDADD)
+tst_h_files_SOURCES = tst_h_files.c
+tst_h_files_OBJECTS = tst_h_files.$(OBJEXT)
+tst_h_files_LDADD = $(LDADD)
+tst_h_files2_SOURCES = tst_h_files2.c
+tst_h_files2_OBJECTS = tst_h_files2.$(OBJEXT)
+tst_h_files2_LDADD = $(LDADD)
+tst_h_files4_SOURCES = tst_h_files4.c
+tst_h_files4_OBJECTS = tst_h_files4.$(OBJEXT)
+tst_h_files4_LDADD = $(LDADD)
+tst_h_grps_SOURCES = tst_h_grps.c
+tst_h_grps_OBJECTS = tst_h_grps.$(OBJEXT)
+tst_h_grps_LDADD = $(LDADD)
+tst_h_ints_SOURCES = tst_h_ints.c
+tst_h_ints_OBJECTS = tst_h_ints.$(OBJEXT)
+tst_h_ints_LDADD = $(LDADD)
+tst_h_mem_SOURCES = tst_h_mem.c
+tst_h_mem_OBJECTS = tst_h_mem.$(OBJEXT)
+tst_h_mem_LDADD = $(LDADD)
+tst_h_opaques_SOURCES = tst_h_opaques.c
+tst_h_opaques_OBJECTS = tst_h_opaques.$(OBJEXT)
+tst_h_opaques_LDADD = $(LDADD)
+tst_h_par_SOURCES = tst_h_par.c
+tst_h_par_OBJECTS = tst_h_par.$(OBJEXT)
+tst_h_par_LDADD = $(LDADD)
+tst_h_rd_cmp_SOURCES = tst_h_rd_cmp.c
+tst_h_rd_cmp_OBJECTS = tst_h_rd_cmp.$(OBJEXT)
+tst_h_rd_cmp_LDADD = $(LDADD)
+tst_h_strings_SOURCES = tst_h_strings.c
+tst_h_strings_OBJECTS = tst_h_strings.$(OBJEXT)
+tst_h_strings_LDADD = $(LDADD)
+tst_h_strings1_SOURCES = tst_h_strings1.c
+tst_h_strings1_OBJECTS = tst_h_strings1.$(OBJEXT)
+tst_h_strings1_LDADD = $(LDADD)
+tst_h_strings2_SOURCES = tst_h_strings2.c
+tst_h_strings2_OBJECTS = tst_h_strings2.$(OBJEXT)
+tst_h_strings2_LDADD = $(LDADD)
+tst_h_vars_SOURCES = tst_h_vars.c
+tst_h_vars_OBJECTS = tst_h_vars.$(OBJEXT)
+tst_h_vars_LDADD = $(LDADD)
+tst_h_vars2_SOURCES = tst_h_vars2.c
+tst_h_vars2_OBJECTS = tst_h_vars2.$(OBJEXT)
+tst_h_vars2_LDADD = $(LDADD)
+tst_h_vars3_SOURCES = tst_h_vars3.c
+tst_h_vars3_OBJECTS = tst_h_vars3.$(OBJEXT)
+tst_h_vars3_LDADD = $(LDADD)
+tst_h_vl_SOURCES = tst_h_vl.c
+tst_h_vl_OBJECTS = tst_h_vl.$(OBJEXT)
+tst_h_vl_LDADD = $(LDADD)
+tst_h_wrt_cmp_SOURCES = tst_h_wrt_cmp.c
+tst_h_wrt_cmp_OBJECTS = tst_h_wrt_cmp.$(OBJEXT)
+tst_h_wrt_cmp_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = tst_h_atts.c tst_h_atts3.c tst_h_atts4.c tst_h_compounds.c \
+ tst_h_compounds2.c tst_h_dimscales.c tst_h_dimscales1.c \
+ tst_h_dimscales2.c tst_h_dimscales3.c tst_h_dimscales4.c \
+ tst_h_enums.c tst_h_files.c tst_h_files2.c tst_h_files4.c \
+ tst_h_grps.c tst_h_ints.c tst_h_mem.c tst_h_opaques.c \
+ tst_h_par.c tst_h_rd_cmp.c tst_h_strings.c tst_h_strings1.c \
+ tst_h_strings2.c tst_h_vars.c tst_h_vars2.c tst_h_vars3.c \
+ tst_h_vl.c tst_h_wrt_cmp.c
+DIST_SOURCES = tst_h_atts.c tst_h_atts3.c tst_h_atts4.c \
+ tst_h_compounds.c tst_h_compounds2.c tst_h_dimscales.c \
+ tst_h_dimscales1.c tst_h_dimscales2.c tst_h_dimscales3.c \
+ tst_h_dimscales4.c tst_h_enums.c tst_h_files.c tst_h_files2.c \
+ tst_h_files4.c tst_h_grps.c tst_h_ints.c tst_h_mem.c \
+ tst_h_opaques.c tst_h_par.c tst_h_rd_cmp.c tst_h_strings.c \
+ tst_h_strings1.c tst_h_strings2.c tst_h_vars.c tst_h_vars2.c \
+ tst_h_vars3.c tst_h_vl.c tst_h_wrt_cmp.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Set AM_CPPFLAGS and AM_LDFLAGS based on user choices.
+
+# These programs test HDF5 to make sure it will do (some of) the stuff
+# that netCDF-4 needs.
+H5TESTS = tst_h_files tst_h_files2 tst_h_files4 tst_h_atts tst_h_atts3 \
+ tst_h_atts4 tst_h_vars tst_h_vars2 tst_h_vars3 tst_h_grps \
+ tst_h_compounds tst_h_compounds2 tst_h_wrt_cmp tst_h_rd_cmp \
+ tst_h_vl tst_h_opaques tst_h_strings tst_h_strings1 \
+ tst_h_strings2 tst_h_ints tst_h_dimscales tst_h_dimscales1 \
+ tst_h_dimscales2 tst_h_dimscales3 tst_h_enums tst_h_dimscales4 \
+ $(am__append_3)
+
+# We must include these files in the distribution.
+EXTRA_DIST = run_par_tests.sh run_valgrind_tests.sh \
+ref_tst_h_compounds.h5 ref_tst_h_compounds2.h5 run_par_tests.sh \
+run_valgrind_tests.sh ref_tst_compounds.nc h5_err_macros.h CMakeLists.txt
+
+
+# Clean up test results.
+CLEANFILES = tst_h_*.h5
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign h5_test/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign h5_test/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+tst_h_atts$(EXEEXT): $(tst_h_atts_OBJECTS) $(tst_h_atts_DEPENDENCIES) $(EXTRA_tst_h_atts_DEPENDENCIES)
+ @rm -f tst_h_atts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_atts_OBJECTS) $(tst_h_atts_LDADD) $(LIBS)
+
+tst_h_atts3$(EXEEXT): $(tst_h_atts3_OBJECTS) $(tst_h_atts3_DEPENDENCIES) $(EXTRA_tst_h_atts3_DEPENDENCIES)
+ @rm -f tst_h_atts3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_atts3_OBJECTS) $(tst_h_atts3_LDADD) $(LIBS)
+
+tst_h_atts4$(EXEEXT): $(tst_h_atts4_OBJECTS) $(tst_h_atts4_DEPENDENCIES) $(EXTRA_tst_h_atts4_DEPENDENCIES)
+ @rm -f tst_h_atts4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_atts4_OBJECTS) $(tst_h_atts4_LDADD) $(LIBS)
+
+tst_h_compounds$(EXEEXT): $(tst_h_compounds_OBJECTS) $(tst_h_compounds_DEPENDENCIES) $(EXTRA_tst_h_compounds_DEPENDENCIES)
+ @rm -f tst_h_compounds$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_compounds_OBJECTS) $(tst_h_compounds_LDADD) $(LIBS)
+
+tst_h_compounds2$(EXEEXT): $(tst_h_compounds2_OBJECTS) $(tst_h_compounds2_DEPENDENCIES) $(EXTRA_tst_h_compounds2_DEPENDENCIES)
+ @rm -f tst_h_compounds2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_compounds2_OBJECTS) $(tst_h_compounds2_LDADD) $(LIBS)
+
+tst_h_dimscales$(EXEEXT): $(tst_h_dimscales_OBJECTS) $(tst_h_dimscales_DEPENDENCIES) $(EXTRA_tst_h_dimscales_DEPENDENCIES)
+ @rm -f tst_h_dimscales$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_dimscales_OBJECTS) $(tst_h_dimscales_LDADD) $(LIBS)
+
+tst_h_dimscales1$(EXEEXT): $(tst_h_dimscales1_OBJECTS) $(tst_h_dimscales1_DEPENDENCIES) $(EXTRA_tst_h_dimscales1_DEPENDENCIES)
+ @rm -f tst_h_dimscales1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_dimscales1_OBJECTS) $(tst_h_dimscales1_LDADD) $(LIBS)
+
+tst_h_dimscales2$(EXEEXT): $(tst_h_dimscales2_OBJECTS) $(tst_h_dimscales2_DEPENDENCIES) $(EXTRA_tst_h_dimscales2_DEPENDENCIES)
+ @rm -f tst_h_dimscales2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_dimscales2_OBJECTS) $(tst_h_dimscales2_LDADD) $(LIBS)
+
+tst_h_dimscales3$(EXEEXT): $(tst_h_dimscales3_OBJECTS) $(tst_h_dimscales3_DEPENDENCIES) $(EXTRA_tst_h_dimscales3_DEPENDENCIES)
+ @rm -f tst_h_dimscales3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_dimscales3_OBJECTS) $(tst_h_dimscales3_LDADD) $(LIBS)
+
+tst_h_dimscales4$(EXEEXT): $(tst_h_dimscales4_OBJECTS) $(tst_h_dimscales4_DEPENDENCIES) $(EXTRA_tst_h_dimscales4_DEPENDENCIES)
+ @rm -f tst_h_dimscales4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_dimscales4_OBJECTS) $(tst_h_dimscales4_LDADD) $(LIBS)
+
+tst_h_enums$(EXEEXT): $(tst_h_enums_OBJECTS) $(tst_h_enums_DEPENDENCIES) $(EXTRA_tst_h_enums_DEPENDENCIES)
+ @rm -f tst_h_enums$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_enums_OBJECTS) $(tst_h_enums_LDADD) $(LIBS)
+
+tst_h_files$(EXEEXT): $(tst_h_files_OBJECTS) $(tst_h_files_DEPENDENCIES) $(EXTRA_tst_h_files_DEPENDENCIES)
+ @rm -f tst_h_files$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_files_OBJECTS) $(tst_h_files_LDADD) $(LIBS)
+
+tst_h_files2$(EXEEXT): $(tst_h_files2_OBJECTS) $(tst_h_files2_DEPENDENCIES) $(EXTRA_tst_h_files2_DEPENDENCIES)
+ @rm -f tst_h_files2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_files2_OBJECTS) $(tst_h_files2_LDADD) $(LIBS)
+
+tst_h_files4$(EXEEXT): $(tst_h_files4_OBJECTS) $(tst_h_files4_DEPENDENCIES) $(EXTRA_tst_h_files4_DEPENDENCIES)
+ @rm -f tst_h_files4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_files4_OBJECTS) $(tst_h_files4_LDADD) $(LIBS)
+
+tst_h_grps$(EXEEXT): $(tst_h_grps_OBJECTS) $(tst_h_grps_DEPENDENCIES) $(EXTRA_tst_h_grps_DEPENDENCIES)
+ @rm -f tst_h_grps$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_grps_OBJECTS) $(tst_h_grps_LDADD) $(LIBS)
+
+tst_h_ints$(EXEEXT): $(tst_h_ints_OBJECTS) $(tst_h_ints_DEPENDENCIES) $(EXTRA_tst_h_ints_DEPENDENCIES)
+ @rm -f tst_h_ints$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_ints_OBJECTS) $(tst_h_ints_LDADD) $(LIBS)
+
+tst_h_mem$(EXEEXT): $(tst_h_mem_OBJECTS) $(tst_h_mem_DEPENDENCIES) $(EXTRA_tst_h_mem_DEPENDENCIES)
+ @rm -f tst_h_mem$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_mem_OBJECTS) $(tst_h_mem_LDADD) $(LIBS)
+
+tst_h_opaques$(EXEEXT): $(tst_h_opaques_OBJECTS) $(tst_h_opaques_DEPENDENCIES) $(EXTRA_tst_h_opaques_DEPENDENCIES)
+ @rm -f tst_h_opaques$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_opaques_OBJECTS) $(tst_h_opaques_LDADD) $(LIBS)
+
+tst_h_par$(EXEEXT): $(tst_h_par_OBJECTS) $(tst_h_par_DEPENDENCIES) $(EXTRA_tst_h_par_DEPENDENCIES)
+ @rm -f tst_h_par$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_par_OBJECTS) $(tst_h_par_LDADD) $(LIBS)
+
+tst_h_rd_cmp$(EXEEXT): $(tst_h_rd_cmp_OBJECTS) $(tst_h_rd_cmp_DEPENDENCIES) $(EXTRA_tst_h_rd_cmp_DEPENDENCIES)
+ @rm -f tst_h_rd_cmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_rd_cmp_OBJECTS) $(tst_h_rd_cmp_LDADD) $(LIBS)
+
+tst_h_strings$(EXEEXT): $(tst_h_strings_OBJECTS) $(tst_h_strings_DEPENDENCIES) $(EXTRA_tst_h_strings_DEPENDENCIES)
+ @rm -f tst_h_strings$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_strings_OBJECTS) $(tst_h_strings_LDADD) $(LIBS)
+
+tst_h_strings1$(EXEEXT): $(tst_h_strings1_OBJECTS) $(tst_h_strings1_DEPENDENCIES) $(EXTRA_tst_h_strings1_DEPENDENCIES)
+ @rm -f tst_h_strings1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_strings1_OBJECTS) $(tst_h_strings1_LDADD) $(LIBS)
+
+tst_h_strings2$(EXEEXT): $(tst_h_strings2_OBJECTS) $(tst_h_strings2_DEPENDENCIES) $(EXTRA_tst_h_strings2_DEPENDENCIES)
+ @rm -f tst_h_strings2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_strings2_OBJECTS) $(tst_h_strings2_LDADD) $(LIBS)
+
+tst_h_vars$(EXEEXT): $(tst_h_vars_OBJECTS) $(tst_h_vars_DEPENDENCIES) $(EXTRA_tst_h_vars_DEPENDENCIES)
+ @rm -f tst_h_vars$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_vars_OBJECTS) $(tst_h_vars_LDADD) $(LIBS)
+
+tst_h_vars2$(EXEEXT): $(tst_h_vars2_OBJECTS) $(tst_h_vars2_DEPENDENCIES) $(EXTRA_tst_h_vars2_DEPENDENCIES)
+ @rm -f tst_h_vars2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_vars2_OBJECTS) $(tst_h_vars2_LDADD) $(LIBS)
+
+tst_h_vars3$(EXEEXT): $(tst_h_vars3_OBJECTS) $(tst_h_vars3_DEPENDENCIES) $(EXTRA_tst_h_vars3_DEPENDENCIES)
+ @rm -f tst_h_vars3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_vars3_OBJECTS) $(tst_h_vars3_LDADD) $(LIBS)
+
+tst_h_vl$(EXEEXT): $(tst_h_vl_OBJECTS) $(tst_h_vl_DEPENDENCIES) $(EXTRA_tst_h_vl_DEPENDENCIES)
+ @rm -f tst_h_vl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_vl_OBJECTS) $(tst_h_vl_LDADD) $(LIBS)
+
+tst_h_wrt_cmp$(EXEEXT): $(tst_h_wrt_cmp_OBJECTS) $(tst_h_wrt_cmp_DEPENDENCIES) $(EXTRA_tst_h_wrt_cmp_DEPENDENCIES)
+ @rm -f tst_h_wrt_cmp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_wrt_cmp_OBJECTS) $(tst_h_wrt_cmp_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_atts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_atts3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_atts4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_compounds.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_compounds2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_dimscales.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_dimscales1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_dimscales2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_dimscales3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_dimscales4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_enums.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_files.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_files2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_files4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_grps.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_ints.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_mem.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_opaques.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_par.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_rd_cmp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_strings.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_strings1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_strings2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_vars.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_vars2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_vars3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_vl.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_wrt_cmp.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+tst_h_files.log: tst_h_files$(EXEEXT)
+ @p='tst_h_files$(EXEEXT)'; \
+ b='tst_h_files'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_files2.log: tst_h_files2$(EXEEXT)
+ @p='tst_h_files2$(EXEEXT)'; \
+ b='tst_h_files2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_files4.log: tst_h_files4$(EXEEXT)
+ @p='tst_h_files4$(EXEEXT)'; \
+ b='tst_h_files4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_atts.log: tst_h_atts$(EXEEXT)
+ @p='tst_h_atts$(EXEEXT)'; \
+ b='tst_h_atts'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_atts3.log: tst_h_atts3$(EXEEXT)
+ @p='tst_h_atts3$(EXEEXT)'; \
+ b='tst_h_atts3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_atts4.log: tst_h_atts4$(EXEEXT)
+ @p='tst_h_atts4$(EXEEXT)'; \
+ b='tst_h_atts4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_vars.log: tst_h_vars$(EXEEXT)
+ @p='tst_h_vars$(EXEEXT)'; \
+ b='tst_h_vars'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_vars2.log: tst_h_vars2$(EXEEXT)
+ @p='tst_h_vars2$(EXEEXT)'; \
+ b='tst_h_vars2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_vars3.log: tst_h_vars3$(EXEEXT)
+ @p='tst_h_vars3$(EXEEXT)'; \
+ b='tst_h_vars3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_grps.log: tst_h_grps$(EXEEXT)
+ @p='tst_h_grps$(EXEEXT)'; \
+ b='tst_h_grps'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_compounds.log: tst_h_compounds$(EXEEXT)
+ @p='tst_h_compounds$(EXEEXT)'; \
+ b='tst_h_compounds'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_compounds2.log: tst_h_compounds2$(EXEEXT)
+ @p='tst_h_compounds2$(EXEEXT)'; \
+ b='tst_h_compounds2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_wrt_cmp.log: tst_h_wrt_cmp$(EXEEXT)
+ @p='tst_h_wrt_cmp$(EXEEXT)'; \
+ b='tst_h_wrt_cmp'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_rd_cmp.log: tst_h_rd_cmp$(EXEEXT)
+ @p='tst_h_rd_cmp$(EXEEXT)'; \
+ b='tst_h_rd_cmp'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_vl.log: tst_h_vl$(EXEEXT)
+ @p='tst_h_vl$(EXEEXT)'; \
+ b='tst_h_vl'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_opaques.log: tst_h_opaques$(EXEEXT)
+ @p='tst_h_opaques$(EXEEXT)'; \
+ b='tst_h_opaques'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_strings.log: tst_h_strings$(EXEEXT)
+ @p='tst_h_strings$(EXEEXT)'; \
+ b='tst_h_strings'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_strings1.log: tst_h_strings1$(EXEEXT)
+ @p='tst_h_strings1$(EXEEXT)'; \
+ b='tst_h_strings1'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_strings2.log: tst_h_strings2$(EXEEXT)
+ @p='tst_h_strings2$(EXEEXT)'; \
+ b='tst_h_strings2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_ints.log: tst_h_ints$(EXEEXT)
+ @p='tst_h_ints$(EXEEXT)'; \
+ b='tst_h_ints'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_dimscales.log: tst_h_dimscales$(EXEEXT)
+ @p='tst_h_dimscales$(EXEEXT)'; \
+ b='tst_h_dimscales'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_dimscales1.log: tst_h_dimscales1$(EXEEXT)
+ @p='tst_h_dimscales1$(EXEEXT)'; \
+ b='tst_h_dimscales1'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_dimscales2.log: tst_h_dimscales2$(EXEEXT)
+ @p='tst_h_dimscales2$(EXEEXT)'; \
+ b='tst_h_dimscales2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_dimscales3.log: tst_h_dimscales3$(EXEEXT)
+ @p='tst_h_dimscales3$(EXEEXT)'; \
+ b='tst_h_dimscales3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_enums.log: tst_h_enums$(EXEEXT)
+ @p='tst_h_enums$(EXEEXT)'; \
+ b='tst_h_enums'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_dimscales4.log: tst_h_dimscales4$(EXEEXT)
+ @p='tst_h_dimscales4$(EXEEXT)'; \
+ b='tst_h_dimscales4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_mem.log: tst_h_mem$(EXEEXT)
+ @p='tst_h_mem$(EXEEXT)'; \
+ b='tst_h_mem'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_par_tests.sh.log: run_par_tests.sh
+ @p='run_par_tests.sh'; \
+ b='run_par_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_valgrind_tests.sh.log: run_valgrind_tests.sh
+ @p='run_valgrind_tests.sh'; \
+ b='run_valgrind_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/include/.gitignore b/include/.gitignore
new file mode 100644
index 0000000..a83b3f3
--- /dev/null
+++ b/include/.gitignore
@@ -0,0 +1 @@
+netcdf_meta.h
diff --git a/include/Makefile.am b/include/Makefile.am
index 849e249..186aed8 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -4,11 +4,11 @@
# This automake file generates the Makefile to build the include
# directory.
-include_HEADERS = netcdf.h
+include_HEADERS = netcdf.h netcdf_meta.h
if BUILD_PARALLEL
-include_HEADERS += netcdf_par.h
-endif
+include_HEADERS += netcdf_par.h
+endif
noinst_HEADERS = nc_logging.h nc_tests.h fbits.h nc.h \
nclist.h ncuri.h utf8proc.h ncdispatch.h ncdimscale.h \
@@ -17,8 +17,7 @@ nclog.h ncconfigure.h nc4internal.h nctime.h nc3dispatch.h nc3internal.h \
onstack.h
if USE_NETCDF4
-noinst_HEADERS += ncaux.h
+noinst_HEADERS += ncaux.h
endif
-EXTRA_DIST = CMakeLists.txt XGetopt.h
-
+EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in
diff --git a/include/Makefile.in b/include/Makefile.in
new file mode 100644
index 0000000..db1b14a
--- /dev/null
+++ b/include/Makefile.in
@@ -0,0 +1,625 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2010, see the COPYRIGHT file for more information.
+
+# This automake file generates the Makefile to build the include
+# directory.
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at BUILD_PARALLEL_TRUE@am__append_1 = netcdf_par.h
+ at USE_NETCDF4_TRUE@am__append_2 = ncaux.h
+subdir = include
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__include_HEADERS_DIST) \
+ $(am__noinst_HEADERS_DIST) $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = netcdf_meta.h
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__include_HEADERS_DIST = netcdf.h netcdf_meta.h netcdf_par.h
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(includedir)"
+am__noinst_HEADERS_DIST = nc_logging.h nc_tests.h fbits.h nc.h \
+ nclist.h ncuri.h utf8proc.h ncdispatch.h ncdimscale.h \
+ netcdf_f.h err_macros.h ncbytes.h nchashmap.h ceconstraints.h \
+ rnd.h nclog.h ncconfigure.h nc4internal.h nctime.h \
+ nc3dispatch.h nc3internal.h onstack.h ncaux.h
+HEADERS = $(include_HEADERS) $(noinst_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/netcdf_meta.h.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+include_HEADERS = netcdf.h netcdf_meta.h $(am__append_1)
+noinst_HEADERS = nc_logging.h nc_tests.h fbits.h nc.h nclist.h ncuri.h \
+ utf8proc.h ncdispatch.h ncdimscale.h netcdf_f.h err_macros.h \
+ ncbytes.h nchashmap.h ceconstraints.h rnd.h nclog.h \
+ ncconfigure.h nc4internal.h nctime.h nc3dispatch.h \
+ nc3internal.h onstack.h $(am__append_2)
+EXTRA_DIST = CMakeLists.txt XGetopt.h netcdf_meta.h.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign include/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+netcdf_meta.h: $(top_builddir)/config.status $(srcdir)/netcdf_meta.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-includeHEADERS: $(include_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+ done
+
+uninstall-includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(includedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-includeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-includeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool cscopelist-am ctags ctags-am distclean \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-includeHEADERS install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-includeHEADERS
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/include/nc4internal.h b/include/nc4internal.h
index 41e5075..88c64ff 100644
--- a/include/nc4internal.h
+++ b/include/nc4internal.h
@@ -148,7 +148,11 @@ typedef struct NC_VAR_INFO
NC_DIM_INFO_T **dim;
int varid;
int natts;
- nc_bool_t dirty; /* True if variable modified */
+ nc_bool_t is_new_var; /* True if variable is newly created */
+ nc_bool_t was_coord_var; /* True if variable was a coordinate var, but either the dim or var has been renamed */
+ nc_bool_t became_coord_var; /* True if variable _became_ a coordinate var, because either the dim or var has been renamed */
+ nc_bool_t fill_val_changed; /* True if variable's fill value changes after it has been created */
+ nc_bool_t attr_dirty; /* True if variable's attributes are dirty and should be rewritten */
nc_bool_t created; /* Variable has already been created (_not_ that it was just created) */
nc_bool_t written_to; /* True if variable has data written to it */
struct NC_TYPE_INFO *type_info;
@@ -322,14 +326,15 @@ int nc4_convert_type(const void *src, void *dest,
/* These functions do HDF5 things. */
int rec_detach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid);
+int rec_reattach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid);
int nc4_open_var_grp2(NC_GRP_INFO_T *grp, int varid, hid_t *dataset);
int nc4_put_vara(NC *nc, int ncid, int varid, const size_t *startp,
const size_t *countp, nc_type xtype, int is_long, void *op);
int nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
const size_t *countp, nc_type xtype, int is_long, void *op);
int nc4_rec_match_dimscales(NC_GRP_INFO_T *grp);
-int nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, int *bad_coord_orderp);
-int nc4_rec_write_metadata(NC_GRP_INFO_T *grp, int bad_coord_order);
+int nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, nc_bool_t *bad_coord_orderp);
+int nc4_rec_write_metadata(NC_GRP_INFO_T *grp, nc_bool_t bad_coord_order);
int nc4_rec_write_groups_types(NC_GRP_INFO_T *grp);
int nc4_enddef_netcdf4_file(NC_HDF5_FILE_INFO_T *h5);
int nc4_reopen_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var);
diff --git a/include/ncconfigure.h b/include/ncconfigure.h
index ec47935..c9cbe06 100644
--- a/include/ncconfigure.h
+++ b/include/ncconfigure.h
@@ -3,7 +3,7 @@
* Research/Unidata. See COPYRIGHT file for more info.
*
* This header file is for the parallel I/O functions of netCDF.
- *
+ *
*/
/* "$Id: netcdf_par.h,v 1.1 2010/06/01 15:46:49 ed Exp $" */
@@ -22,14 +22,14 @@ defined.
extern char* strdup(const char*);
#endif
-//#if HAVE_BASETSD_H
-//#ifndef ssize_t
-//#ifndef SSIZE_T
-//#include <BaseTsd.h>
-//#endif
-//#define ssize_t SSIZE_T
-//#endif
-//#endif
+/* #if HAVE_BASETSD_H */
+/* #ifndef ssize_t */
+/* #ifndef SSIZE_T */
+/* #include <BaseTsd.h> */
+/* #endif */
+/* #define ssize_t SSIZE_T */
+/* #endif */
+/* #endif */
@@ -40,7 +40,7 @@ extern char* strdup(const char*);
#else
char *nulldup(const char* s);
#endif
-#endif
+#endif
#ifndef nulldup
diff --git a/include/ncdispatch.h b/include/ncdispatch.h
index d2cd5d0..1556474 100644
--- a/include/ncdispatch.h
+++ b/include/ncdispatch.h
@@ -348,9 +348,9 @@ extern const char* NCDAP_urllookup(void* dapurl, const char* param);
# else
# define MSC_NCDISPATCH_EXTRA __declspec(dllimport)
# endif
-MSC_NCDISPATCH_EXTRA extern const char* NC_findtestserver(const char*);
+MSC_NCDISPATCH_EXTRA extern char* NC_findtestserver(const char*, const char**);
#else
-extern const char* NC_findtestserver(const char*);
+extern char* NC_findtestserver(const char*,const char**);
#endif
/* Ping a specific server */
diff --git a/include/nctime.h b/include/nctime.h
index 19f6356..7f0d291 100644
--- a/include/nctime.h
+++ b/include/nctime.h
@@ -33,6 +33,8 @@ typedef struct bounds_node bounds_node_t;
#define CD_NULL_MONTH 1 /* Null month value */
#define CD_NULL_YEAR 0 /* Null year value, component time */
+/* Why do we have same enum defined twice? */
+
typedef enum CdTimeUnit {
CdBadTimeUnit = 0,
CdMinute = 1,
@@ -46,7 +48,7 @@ typedef enum CdTimeUnit {
} CdTimeUnit;
typedef enum cdUnitTime {
- cdBadUnit = CdBadTimeUnit,
+ cdBadUnit = CdBadTimeUnit,
cdMinute = CdMinute,
cdHour = CdHour,
cdDay = CdDay,
diff --git a/include/netcdf.h b/include/netcdf.h
index fb61ebb..c9ca0af 100644
--- a/include/netcdf.h
+++ b/include/netcdf.h
@@ -3,9 +3,10 @@
Main header file for the C API.
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 University
-Corporation for Atmospheric Research/Unidata. See \ref copyright file
-for more info.
+2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
+University Corporation for Atmospheric Research/Unidata.
+
+See \ref copyright file for more info.
*/
#ifndef _NETCDF_
@@ -14,7 +15,7 @@ for more info.
#include <stddef.h> /* size_t, ptrdiff_t */
#include <errno.h> /* netcdf functions sometimes return system errors */
-/* Required for alloca on Windows */
+/* Required for alloca on Windows */
#if defined(_WIN32) || defined(_WIN64)
#include <malloc.h>
#endif
@@ -96,7 +97,7 @@ extern "C" {
#define NC_MIN_INT (-NC_MAX_INT - 1)
#define NC_MAX_FLOAT 3.402823466e+38f
#define NC_MIN_FLOAT (-NC_MAX_FLOAT)
-#define NC_MAX_DOUBLE 1.7976931348623157e+308
+#define NC_MAX_DOUBLE 1.7976931348623157e+308
#define NC_MIN_DOUBLE (-NC_MAX_DOUBLE)
#define NC_MAX_UBYTE NC_MAX_CHAR
#define NC_MAX_USHORT 65535U
@@ -139,17 +140,17 @@ extern "C" {
* nc_open() or nc_create() may someday support use of advisory
* locking to prevent multiple writers from clobbering a file
*/
-#define NC_LOCK 0x0400
+#define NC_LOCK 0x0400
/** Share updates, limit cacheing.
Use this in mode flags for both nc_create() and nc_open(). */
-#define NC_SHARE 0x0800
+#define NC_SHARE 0x0800
#define NC_NETCDF4 0x1000 /**< Use netCDF-4/HDF5 format. Mode flag for nc_create(). */
/** Turn on MPI I/O.
Use this in mode flags for both nc_create() and nc_open(). */
-#define NC_MPIIO 0x2000
+#define NC_MPIIO 0x2000
/** Turn on MPI POSIX I/O.
Use this in mode flags for both nc_create() and nc_open(). */
#define NC_MPIPOSIX 0x4000 /**< \deprecated As of libhdf5 1.8.13. */
@@ -169,7 +170,7 @@ Use this in mode flags for both nc_create() and nc_open(). */
/**@}*/
-/** Extended format specifier returned by nc_inq_format_extended()
+/** Extended format specifier returned by nc_inq_format_extended()
* Added in version 4.3.1. This returns the true format of the
* underlying data.
* The function returns two values
@@ -186,8 +187,8 @@ Use this in mode flags for both nc_create() and nc_open(). */
*/
/**@{*/
#define NC_FORMAT_NC3 (1)
-#define NC_FORMAT_NC_HDF5 (2) /*cdf 4 subset of HDF5 */
-#define NC_FORMAT_NC_HDF4 (3) /* netcdf 4 subset of HDF4 */
+#define NC_FORMAT_NC_HDF5 (2) /* netCDF-4 subset of HDF5 */
+#define NC_FORMAT_NC_HDF4 (3) /* netCDF-4 subset of HDF4 */
#define NC_FORMAT_PNETCDF (4)
#define NC_FORMAT_DAP2 (5)
#define NC_FORMAT_DAP4 (6)
@@ -206,7 +207,7 @@ Use this in mode flags for both nc_create() and nc_open(). */
/** Attribute id to put/get a global attribute. */
#define NC_GLOBAL -1
-/**
+/**
Maximum for classic library.
In the classic netCDF model there are maximum values for the number of
@@ -225,18 +226,18 @@ created with the ::NC_CLASSIC_MODEL flag.
As a rule, NC_MAX_VAR_DIMS <= NC_MAX_DIMS.
*/
/**@{*/
-#define NC_MAX_DIMS 1024
-#define NC_MAX_ATTRS 8192
-#define NC_MAX_VARS 8192
-#define NC_MAX_NAME 256
+#define NC_MAX_DIMS 1024
+#define NC_MAX_ATTRS 8192
+#define NC_MAX_VARS 8192
+#define NC_MAX_NAME 256
#define NC_MAX_VAR_DIMS 1024 /**< max per variable dimensions */
/**@}*/
/** This is the max size of an SD dataset name in HDF4 (from HDF4 documentation).*/
-#define NC_MAX_HDF4_NAME 64
+#define NC_MAX_HDF4_NAME 64
/** In HDF5 files you can set the endianness of variables with
- nc_def_var_endian(). This define is used there. */
+ nc_def_var_endian(). This define is used there. */
/**@{*/
#define NC_ENDIAN_NATIVE 0
#define NC_ENDIAN_LITTLE 1
@@ -282,7 +283,7 @@ there. */
The specified netCDF ID does not refer to an
open netCDF dataset. */
-#define NC_EBADID (-33)
+#define NC_EBADID (-33)
#define NC_ENFILE (-34) /**< Too many netcdfs open */
#define NC_EEXIST (-35) /**< netcdf file exists && NC_NOCLOBBER */
#define NC_EINVAL (-36) /**< Invalid Argument */
@@ -291,23 +292,23 @@ open netCDF dataset. */
/** Operation not allowed in data mode. This is returned for netCDF
classic or 64-bit offset files, or for netCDF-4 files, when they were
been created with ::NC_CLASSIC_MODEL flag in nc_create(). */
-#define NC_ENOTINDEFINE (-38)
+#define NC_ENOTINDEFINE (-38)
/** Operation not allowed in define mode.
-The specified netCDF is in define mode rather than data mode.
+The specified netCDF is in define mode rather than data mode.
With netCDF-4/HDF5 files, this error will not occur, unless
::NC_CLASSIC_MODEL was used in nc_create().
*/
-#define NC_EINDEFINE (-39)
+#define NC_EINDEFINE (-39)
/** Index exceeds dimension bound.
The specified corner indices were out of range for the rank of the
specified variable. For example, a negative index or an index that is
larger than the corresponding dimension length will cause an error. */
-#define NC_EINVALCOORDS (-40)
+#define NC_EINVALCOORDS (-40)
#define NC_EMAXDIMS (-41) /**< NC_MAX_DIMS exceeded */
#define NC_ENAMEINUSE (-42) /**< String match to name in use */
#define NC_ENOTATT (-43) /**< Attribute not found */
@@ -319,12 +320,12 @@ larger than the corresponding dimension length will cause an error. */
/** NC_MAX_VARS exceeded. Max number of variables exceeded in a
classic or 64-bit offset file, or an netCDF-4 file with
::NC_CLASSIC_MODEL on. */
-#define NC_EMAXVARS (-48)
+#define NC_EMAXVARS (-48)
/** Variable not found.
The variable ID is invalid for the specified netCDF dataset. */
-#define NC_ENOTVAR (-49)
+#define NC_ENOTVAR (-49)
#define NC_EGLOBAL (-50) /**< Action prohibited on NC_GLOBAL varid */
#define NC_ENOTNC (-51) /**< Not a netcdf file */
#define NC_ESTS (-52) /**< In Fortran, string too short */
@@ -340,7 +341,7 @@ referenced data out of range for the rank of the specified
variable. For example, an edge length that is larger than the
corresponding dimension length minus the corner index will cause an
error. */
-#define NC_EEDGE (-57)
+#define NC_EEDGE (-57)
#define NC_ESTRIDE (-58) /**< Illegal stride */
#define NC_EBADNAME (-59) /**< Attribute or variable name contains illegal characters */
/* N.B. following must match value in ncx.h */
@@ -349,9 +350,9 @@ error. */
One or more of the values are out of the range of values representable
by the desired type. */
-#define NC_ERANGE (-60)
+#define NC_ERANGE (-60)
#define NC_ENOMEM (-61) /**< Memory allocation (malloc) failure */
-#define NC_EVARSIZE (-62) /**< One or more variable sizes violate format constraints */
+#define NC_EVARSIZE (-62) /**< One or more variable sizes violate format constraints */
#define NC_EDIMSIZE (-63) /**< Invalid dimension size */
#define NC_ETRUNC (-64) /**< File likely truncated or possibly corrupted */
#define NC_EAXISTYPE (-65) /**< Unknown axis type. */
@@ -381,7 +382,7 @@ by the desired type. */
#define NC4_FIRST_ERROR (-100)
/** Error at HDF5 layer. */
-#define NC_EHDFERR (-101)
+#define NC_EHDFERR (-101)
#define NC_ECANTREAD (-102) /**< Can't read. */
#define NC_ECANTWRITE (-103) /**< Can't write. */
#define NC_ECANTCREATE (-104) /**< Can't create. */
@@ -391,19 +392,19 @@ by the desired type. */
#define NC_EVARMETA (-108) /**< Problem with variable metadata. */
#define NC_ENOCOMPOUND (-109) /**< Not a compound type. */
#define NC_EATTEXISTS (-110) /**< Attribute already exists. */
-#define NC_ENOTNC4 (-111) /**< Attempting netcdf-4 operation on netcdf-3 file. */
-
-/** Attempting netcdf-4 operation on strict nc3 netcdf-4 file. */
-#define NC_ESTRICTNC3 (-112)
-#define NC_ENOTNC3 (-113) /**< Attempting netcdf-3 operation on netcdf-4 file. */
-#define NC_ENOPAR (-114) /**< Parallel operation on file opened for non-parallel access. */
-#define NC_EPARINIT (-115) /**< Error initializing for parallel access. */
-#define NC_EBADGRPID (-116) /**< Bad group ID. */
-#define NC_EBADTYPID (-117) /**< Bad type ID. */
+#define NC_ENOTNC4 (-111) /**< Attempting netcdf-4 operation on netcdf-3 file. */
+
+/** Attempting netcdf-4 operation on strict nc3 netcdf-4 file. */
+#define NC_ESTRICTNC3 (-112)
+#define NC_ENOTNC3 (-113) /**< Attempting netcdf-3 operation on netcdf-4 file. */
+#define NC_ENOPAR (-114) /**< Parallel operation on file opened for non-parallel access. */
+#define NC_EPARINIT (-115) /**< Error initializing for parallel access. */
+#define NC_EBADGRPID (-116) /**< Bad group ID. */
+#define NC_EBADTYPID (-117) /**< Bad type ID. */
#define NC_ETYPDEFINED (-118) /**< Type has already been defined and may not be edited. */
-#define NC_EBADFIELD (-119) /**< Bad field ID. */
-#define NC_EBADCLASS (-120) /**< Bad class. */
-#define NC_EMAPTYPE (-121) /**< Mapped access for atomic types only. */
+#define NC_EBADFIELD (-119) /**< Bad field ID. */
+#define NC_EBADCLASS (-120) /**< Bad class. */
+#define NC_EMAPTYPE (-121) /**< Mapped access for atomic types only. */
#define NC_ELATEFILL (-122) /**< Attempt to define fill value when data already exists. */
#define NC_ELATEDEF (-123) /**< Attempt to define var properties, like deflate, after enddef. */
#define NC_EDIMSCALE (-124) /**< Probem with HDF5 dimscales. */
@@ -411,11 +412,11 @@ by the desired type. */
#define NC_ESTORAGE (-126) /**< Can't specify both contiguous and chunking. */
#define NC_EBADCHUNK (-127) /**< Bad chunksize. */
#define NC_ENOTBUILT (-128) /**< Attempt to use feature that was not turned on when netCDF was built. */
-#define NC_EDISKLESS (-129) /**< Error in using diskless access. */
-#define NC_ECANTEXTEND (-130) /**< Attempt to extend dataset during ind. I/O operation. */
-#define NC_EMPI (-131) /**< MPI operation failed. */
+#define NC_EDISKLESS (-129) /**< Error in using diskless access. */
+#define NC_ECANTEXTEND (-130) /**< Attempt to extend dataset during ind. I/O operation. */
+#define NC_EMPI (-131) /**< MPI operation failed. */
-#define NC4_LAST_ERROR (-131)
+#define NC4_LAST_ERROR (-131)
/* This is used in netCDF-4 files for dimensions without coordinate
* vars. */
@@ -468,7 +469,7 @@ EXTERNL int
nc_create(const char *path, int cmode, int *ncidp);
EXTERNL int
-nc__open(const char *path, int mode,
+nc__open(const char *path, int mode,
size_t *chunksizehintp, int *ncidp);
EXTERNL int
@@ -514,22 +515,22 @@ EXTERNL int
nc_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid);
/* Get a list of ids for all the variables in a group. */
-EXTERNL int
+EXTERNL int
nc_inq_varids(int ncid, int *nvars, int *varids);
/* Find all dimids for a location. This finds all dimensions in a
* group, or any of its parents. */
-EXTERNL int
+EXTERNL int
nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents);
/* Find all user-defined types for a location. This finds all
* user-defined types in a group. */
-EXTERNL int
+EXTERNL int
nc_inq_typeids(int ncid, int *ntypes, int *typeids);
/* Are two types equal? */
EXTERNL int
-nc_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
+nc_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
nc_type typeid2, int *equal);
/* Create a group. its ncid is returned in the new_ncid pointer. */
@@ -548,12 +549,12 @@ nc_def_compound(int ncid, size_t size, const char *name, nc_type *typeidp);
/* Insert a named field into a compound type. */
EXTERNL int
-nc_insert_compound(int ncid, nc_type xtype, const char *name,
+nc_insert_compound(int ncid, nc_type xtype, const char *name,
size_t offset, nc_type field_typeid);
/* Insert a named array into a compound type. */
EXTERNL int
-nc_insert_array_compound(int ncid, nc_type xtype, const char *name,
+nc_insert_array_compound(int ncid, nc_type xtype, const char *name,
size_t offset, nc_type field_typeid,
int ndims, const int *dim_sizes);
@@ -567,7 +568,7 @@ nc_inq_typeid(int ncid, const char *name, nc_type *typeidp);
/* Get the name, size, and number of fields in a compound type. */
EXTERNL int
-nc_inq_compound(int ncid, nc_type xtype, char *name, size_t *sizep,
+nc_inq_compound(int ncid, nc_type xtype, char *name, size_t *sizep,
size_t *nfieldsp);
/* Get the name of a compound type. */
@@ -584,40 +585,40 @@ nc_inq_compound_nfields(int ncid, nc_type xtype, size_t *nfieldsp);
/* Given the xtype and the fieldid, get all info about it. */
EXTERNL int
-nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, char *name,
- size_t *offsetp, nc_type *field_typeidp, int *ndimsp,
+nc_inq_compound_field(int ncid, nc_type xtype, int fieldid, char *name,
+ size_t *offsetp, nc_type *field_typeidp, int *ndimsp,
int *dim_sizesp);
/* Given the typeid and the fieldid, get the name. */
EXTERNL int
-nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid,
+nc_inq_compound_fieldname(int ncid, nc_type xtype, int fieldid,
char *name);
/* Given the xtype and the name, get the fieldid. */
EXTERNL int
-nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name,
+nc_inq_compound_fieldindex(int ncid, nc_type xtype, const char *name,
int *fieldidp);
/* Given the xtype and fieldid, get the offset. */
EXTERNL int
-nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid,
+nc_inq_compound_fieldoffset(int ncid, nc_type xtype, int fieldid,
size_t *offsetp);
/* Given the xtype and the fieldid, get the type of that field. */
EXTERNL int
-nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid,
+nc_inq_compound_fieldtype(int ncid, nc_type xtype, int fieldid,
nc_type *field_typeidp);
/* Given the xtype and the fieldid, get the number of dimensions for
* that field (scalars are 0). */
EXTERNL int
-nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid,
+nc_inq_compound_fieldndims(int ncid, nc_type xtype, int fieldid,
int *ndimsp);
/* Given the xtype and the fieldid, get the sizes of dimensions for
* that field. User must have allocated storage for the dim_sizes. */
EXTERNL int
-nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid,
+nc_inq_compound_fielddim_sizes(int ncid, nc_type xtype, int fieldid,
int *dim_sizes);
/** This is the type of arrays of vlens. */
@@ -638,7 +639,7 @@ nc_def_vlen(int ncid, const char *name, nc_type base_typeid, nc_type *xtypep);
/* Find out about a vlen. */
EXTERNL int
-nc_inq_vlen(int ncid, nc_type xtype, char *name, size_t *datum_sizep,
+nc_inq_vlen(int ncid, nc_type xtype, char *name, size_t *datum_sizep,
nc_type *base_nc_typep);
/* When you read VLEN type the library will actually allocate the
@@ -653,13 +654,13 @@ nc_free_vlens(size_t len, nc_vlen_t vlens[]);
/* Put or get one element in a vlen array. */
EXTERNL int
-nc_put_vlen_element(int ncid, int typeid1, void *vlen_element,
+nc_put_vlen_element(int ncid, int typeid1, void *vlen_element,
size_t len, const void *data);
EXTERNL int
-nc_get_vlen_element(int ncid, int typeid1, const void *vlen_element,
+nc_get_vlen_element(int ncid, int typeid1, const void *vlen_element,
size_t *len, void *data);
-
+
/* When you read the string type the library will allocate the storage
* space for the data. This storage space must be freed, so pass the
* pointer back to this function, when you're done with the data, and
@@ -669,12 +670,12 @@ nc_free_string(size_t len, char **data);
/* Find out about a user defined type. */
EXTERNL int
-nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size,
+nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size,
nc_type *base_nc_typep, size_t *nfieldsp, int *classp);
/* Write an attribute of any type. */
EXTERNL int
-nc_put_att(int ncid, int varid, const char *name, nc_type xtype,
+nc_put_att(int ncid, int varid, const char *name, nc_type xtype,
size_t len, const void *op);
/* Read an attribute of any type. */
@@ -686,25 +687,25 @@ nc_get_att(int ncid, int varid, const char *name, void *ip);
/* Create an enum type. Provide a base type and a name. At the moment
* only ints are accepted as base types. */
EXTERNL int
-nc_def_enum(int ncid, nc_type base_typeid, const char *name,
+nc_def_enum(int ncid, nc_type base_typeid, const char *name,
nc_type *typeidp);
/* Insert a named value into an enum type. The value must fit within
* the size of the enum type, the name size must be <= NC_MAX_NAME. */
EXTERNL int
-nc_insert_enum(int ncid, nc_type xtype, const char *name,
+nc_insert_enum(int ncid, nc_type xtype, const char *name,
const void *value);
/* Get information about an enum type: its name, base type and the
* number of members defined. */
EXTERNL int
-nc_inq_enum(int ncid, nc_type xtype, char *name, nc_type *base_nc_typep,
+nc_inq_enum(int ncid, nc_type xtype, char *name, nc_type *base_nc_typep,
size_t *base_sizep, size_t *num_membersp);
/* Get information about an enum member: a name and value. Name size
* will be <= NC_MAX_NAME. */
EXTERNL int
-nc_inq_enum_member(int ncid, nc_type xtype, int idx, char *name,
+nc_inq_enum_member(int ncid, nc_type xtype, int idx, char *name,
void *value);
@@ -741,35 +742,35 @@ nc_get_var1(int ncid, int varid, const size_t *indexp, void *ip);
/* Write an array of values. */
EXTERNL int
-nc_put_vara(int ncid, int varid, const size_t *startp,
+nc_put_vara(int ncid, int varid, const size_t *startp,
const size_t *countp, const void *op);
/* Read an array of values. */
EXTERNL int
-nc_get_vara(int ncid, int varid, const size_t *startp,
+nc_get_vara(int ncid, int varid, const size_t *startp,
const size_t *countp, void *ip);
/* Write slices of an array of values. */
EXTERNL int
-nc_put_vars(int ncid, int varid, const size_t *startp,
+nc_put_vars(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const void *op);
/* Read slices of an array of values. */
EXTERNL int
-nc_get_vars(int ncid, int varid, const size_t *startp,
+nc_get_vars(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
void *ip);
/* Write mapped slices of an array of values. */
EXTERNL int
-nc_put_varm(int ncid, int varid, const size_t *startp,
+nc_put_varm(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const void *op);
/* Read mapped slices of an array of values. */
EXTERNL int
-nc_get_varm(int ncid, int varid, const size_t *startp,
+nc_get_varm(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, void *ip);
@@ -778,12 +779,12 @@ nc_get_varm(int ncid, int varid, const size_t *startp,
/* Set compression settings for a variable. Lower is faster, higher is
* better. Must be called after nc_def_var and before nc_enddef. */
EXTERNL int
-nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate,
+nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate,
int deflate_level);
/* Find out compression settings of a var. */
EXTERNL int
-nc_inq_var_deflate(int ncid, int varid, int *shufflep,
+nc_inq_var_deflate(int ncid, int varid, int *shufflep,
int *deflatep, int *deflate_levelp);
/* Find out szip settings of a var. */
@@ -794,7 +795,7 @@ nc_inq_var_szip(int ncid, int varid, int *options_maskp, int *pixels_per_blockp)
and before nc_enddef. */
EXTERNL int
nc_def_var_fletcher32(int ncid, int varid, int fletcher32);
-
+
/* Inquire about fletcher32 checksum for a var. */
EXTERNL int
nc_inq_var_fletcher32(int ncid, int varid, int *fletcher32p);
@@ -844,12 +845,12 @@ nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp);
/* Set the per-variable cache size, nelems, and preemption policy. */
EXTERNL int
-nc_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems,
+nc_set_var_chunk_cache(int ncid, int varid, size_t size, size_t nelems,
float preemption);
/* Set the per-variable cache size, nelems, and preemption policy. */
EXTERNL int
-nc_get_var_chunk_cache(int ncid, int varid, size_t *sizep, size_t *nelemsp,
+nc_get_var_chunk_cache(int ncid, int varid, size_t *sizep, size_t *nelemsp,
float *preemptionp);
EXTERNL int
@@ -875,20 +876,20 @@ nc_close(int ncid);
EXTERNL int
nc_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp);
-EXTERNL int
+EXTERNL int
nc_inq_ndims(int ncid, int *ndimsp);
-EXTERNL int
+EXTERNL int
nc_inq_nvars(int ncid, int *nvarsp);
-EXTERNL int
+EXTERNL int
nc_inq_natts(int ncid, int *nattsp);
-EXTERNL int
+EXTERNL int
nc_inq_unlimdim(int ncid, int *unlimdimidp);
/* The next function is for NetCDF-4 only */
-EXTERNL int
+EXTERNL int
nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp);
/* Added in 3.6.1 to return format of netCDF file. */
@@ -910,10 +911,10 @@ nc_inq_dimid(int ncid, const char *name, int *idp);
EXTERNL int
nc_inq_dim(int ncid, int dimid, char *name, size_t *lenp);
-EXTERNL int
+EXTERNL int
nc_inq_dimname(int ncid, int dimid, char *name);
-EXTERNL int
+EXTERNL int
nc_inq_dimlen(int ncid, int dimid, size_t *lenp);
EXTERNL int
@@ -926,13 +927,13 @@ EXTERNL int
nc_inq_att(int ncid, int varid, const char *name,
nc_type *xtypep, size_t *lenp);
-EXTERNL int
+EXTERNL int
nc_inq_attid(int ncid, int varid, const char *name, int *idp);
-EXTERNL int
+EXTERNL int
nc_inq_atttype(int ncid, int varid, const char *name, nc_type *xtypep);
-EXTERNL int
+EXTERNL int
nc_inq_attlen(int ncid, int varid, const char *name, size_t *lenp);
EXTERNL int
@@ -1032,11 +1033,11 @@ nc_put_att_ulonglong(int ncid, int varid, const char *name, nc_type xtype,
size_t len, const unsigned long long *op);
EXTERNL int
-nc_get_att_ulonglong(int ncid, int varid, const char *name,
+nc_get_att_ulonglong(int ncid, int varid, const char *name,
unsigned long long *ip);
EXTERNL int
-nc_put_att_string(int ncid, int varid, const char *name,
+nc_put_att_string(int ncid, int varid, const char *name,
size_t len, const char **op);
EXTERNL int
@@ -1046,29 +1047,29 @@ nc_get_att_string(int ncid, int varid, const char *name, char **ip);
/* Begin _var */
EXTERNL int
-nc_def_var(int ncid, const char *name, nc_type xtype, int ndims,
+nc_def_var(int ncid, const char *name, nc_type xtype, int ndims,
const int *dimidsp, int *varidp);
EXTERNL int
-nc_inq_var(int ncid, int varid, char *name, nc_type *xtypep,
+nc_inq_var(int ncid, int varid, char *name, nc_type *xtypep,
int *ndimsp, int *dimidsp, int *nattsp);
EXTERNL int
nc_inq_varid(int ncid, const char *name, int *varidp);
-EXTERNL int
+EXTERNL int
nc_inq_varname(int ncid, int varid, char *name);
-EXTERNL int
+EXTERNL int
nc_inq_vartype(int ncid, int varid, nc_type *xtypep);
-EXTERNL int
+EXTERNL int
nc_inq_varndims(int ncid, int varid, int *ndimsp);
-EXTERNL int
+EXTERNL int
nc_inq_vardimid(int ncid, int varid, int *dimidsp);
-EXTERNL int
+EXTERNL int
nc_inq_varnatts(int ncid, int varid, int *nattsp);
EXTERNL int
@@ -1140,90 +1141,90 @@ EXTERNL int
nc_get_var1_double(int ncid, int varid, const size_t *indexp, double *ip);
EXTERNL int
-nc_put_var1_ushort(int ncid, int varid, const size_t *indexp,
+nc_put_var1_ushort(int ncid, int varid, const size_t *indexp,
const unsigned short *op);
EXTERNL int
-nc_get_var1_ushort(int ncid, int varid, const size_t *indexp,
+nc_get_var1_ushort(int ncid, int varid, const size_t *indexp,
unsigned short *ip);
EXTERNL int
-nc_put_var1_uint(int ncid, int varid, const size_t *indexp,
+nc_put_var1_uint(int ncid, int varid, const size_t *indexp,
const unsigned int *op);
EXTERNL int
-nc_get_var1_uint(int ncid, int varid, const size_t *indexp,
+nc_get_var1_uint(int ncid, int varid, const size_t *indexp,
unsigned int *ip);
EXTERNL int
-nc_put_var1_longlong(int ncid, int varid, const size_t *indexp,
+nc_put_var1_longlong(int ncid, int varid, const size_t *indexp,
const long long *op);
EXTERNL int
-nc_get_var1_longlong(int ncid, int varid, const size_t *indexp,
+nc_get_var1_longlong(int ncid, int varid, const size_t *indexp,
long long *ip);
EXTERNL int
-nc_put_var1_ulonglong(int ncid, int varid, const size_t *indexp,
+nc_put_var1_ulonglong(int ncid, int varid, const size_t *indexp,
const unsigned long long *op);
EXTERNL int
-nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp,
+nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp,
unsigned long long *ip);
EXTERNL int
-nc_put_var1_string(int ncid, int varid, const size_t *indexp,
+nc_put_var1_string(int ncid, int varid, const size_t *indexp,
const char **op);
EXTERNL int
-nc_get_var1_string(int ncid, int varid, const size_t *indexp,
+nc_get_var1_string(int ncid, int varid, const size_t *indexp,
char **ip);
/* End {put,get}_var1 */
/* Begin {put,get}_vara */
EXTERNL int
-nc_put_vara_text(int ncid, int varid, const size_t *startp,
+nc_put_vara_text(int ncid, int varid, const size_t *startp,
const size_t *countp, const char *op);
EXTERNL int
-nc_get_vara_text(int ncid, int varid, const size_t *startp,
+nc_get_vara_text(int ncid, int varid, const size_t *startp,
const size_t *countp, char *ip);
EXTERNL int
-nc_put_vara_uchar(int ncid, int varid, const size_t *startp,
+nc_put_vara_uchar(int ncid, int varid, const size_t *startp,
const size_t *countp, const unsigned char *op);
EXTERNL int
-nc_get_vara_uchar(int ncid, int varid, const size_t *startp,
+nc_get_vara_uchar(int ncid, int varid, const size_t *startp,
const size_t *countp, unsigned char *ip);
EXTERNL int
-nc_put_vara_schar(int ncid, int varid, const size_t *startp,
+nc_put_vara_schar(int ncid, int varid, const size_t *startp,
const size_t *countp, const signed char *op);
EXTERNL int
-nc_get_vara_schar(int ncid, int varid, const size_t *startp,
+nc_get_vara_schar(int ncid, int varid, const size_t *startp,
const size_t *countp, signed char *ip);
EXTERNL int
-nc_put_vara_short(int ncid, int varid, const size_t *startp,
+nc_put_vara_short(int ncid, int varid, const size_t *startp,
const size_t *countp, const short *op);
EXTERNL int
-nc_get_vara_short(int ncid, int varid, const size_t *startp,
+nc_get_vara_short(int ncid, int varid, const size_t *startp,
const size_t *countp, short *ip);
EXTERNL int
-nc_put_vara_int(int ncid, int varid, const size_t *startp,
+nc_put_vara_int(int ncid, int varid, const size_t *startp,
const size_t *countp, const int *op);
EXTERNL int
-nc_get_vara_int(int ncid, int varid, const size_t *startp,
+nc_get_vara_int(int ncid, int varid, const size_t *startp,
const size_t *countp, int *ip);
EXTERNL int
-nc_put_vara_long(int ncid, int varid, const size_t *startp,
+nc_put_vara_long(int ncid, int varid, const size_t *startp,
const size_t *countp, const long *op);
EXTERNL int
@@ -1239,51 +1240,51 @@ nc_get_vara_float(int ncid, int varid,
const size_t *startp, const size_t *countp, float *ip);
EXTERNL int
-nc_put_vara_double(int ncid, int varid, const size_t *startp,
+nc_put_vara_double(int ncid, int varid, const size_t *startp,
const size_t *countp, const double *op);
EXTERNL int
-nc_get_vara_double(int ncid, int varid, const size_t *startp,
+nc_get_vara_double(int ncid, int varid, const size_t *startp,
const size_t *countp, double *ip);
EXTERNL int
-nc_put_vara_ushort(int ncid, int varid, const size_t *startp,
+nc_put_vara_ushort(int ncid, int varid, const size_t *startp,
const size_t *countp, const unsigned short *op);
EXTERNL int
-nc_get_vara_ushort(int ncid, int varid, const size_t *startp,
+nc_get_vara_ushort(int ncid, int varid, const size_t *startp,
const size_t *countp, unsigned short *ip);
EXTERNL int
-nc_put_vara_uint(int ncid, int varid, const size_t *startp,
+nc_put_vara_uint(int ncid, int varid, const size_t *startp,
const size_t *countp, const unsigned int *op);
EXTERNL int
-nc_get_vara_uint(int ncid, int varid, const size_t *startp,
+nc_get_vara_uint(int ncid, int varid, const size_t *startp,
const size_t *countp, unsigned int *ip);
EXTERNL int
-nc_put_vara_longlong(int ncid, int varid, const size_t *startp,
+nc_put_vara_longlong(int ncid, int varid, const size_t *startp,
const size_t *countp, const long long *op);
EXTERNL int
-nc_get_vara_longlong(int ncid, int varid, const size_t *startp,
+nc_get_vara_longlong(int ncid, int varid, const size_t *startp,
const size_t *countp, long long *ip);
EXTERNL int
-nc_put_vara_ulonglong(int ncid, int varid, const size_t *startp,
+nc_put_vara_ulonglong(int ncid, int varid, const size_t *startp,
const size_t *countp, const unsigned long long *op);
EXTERNL int
-nc_get_vara_ulonglong(int ncid, int varid, const size_t *startp,
+nc_get_vara_ulonglong(int ncid, int varid, const size_t *startp,
const size_t *countp, unsigned long long *ip);
EXTERNL int
-nc_put_vara_string(int ncid, int varid, const size_t *startp,
+nc_put_vara_string(int ncid, int varid, const size_t *startp,
const size_t *countp, const char **op);
EXTERNL int
-nc_get_vara_string(int ncid, int varid, const size_t *startp,
+nc_get_vara_string(int ncid, int varid, const size_t *startp,
const size_t *countp, char **ip);
/* End {put,get}_vara */
@@ -1325,7 +1326,7 @@ nc_put_vars_short(int ncid, int varid,
const short *op);
EXTERNL int
-nc_get_vars_short(int ncid, int varid, const size_t *startp,
+nc_get_vars_short(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
short *ip);
@@ -1365,191 +1366,191 @@ nc_put_vars_double(int ncid, int varid,
const double *op);
EXTERNL int
-nc_get_vars_double(int ncid, int varid, const size_t *startp,
+nc_get_vars_double(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
double *ip);
EXTERNL int
-nc_put_vars_ushort(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_vars_ushort(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const unsigned short *op);
EXTERNL int
-nc_get_vars_ushort(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_vars_ushort(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
unsigned short *ip);
EXTERNL int
-nc_put_vars_uint(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_vars_uint(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const unsigned int *op);
EXTERNL int
-nc_get_vars_uint(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_vars_uint(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
unsigned int *ip);
EXTERNL int
-nc_put_vars_longlong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_vars_longlong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const long long *op);
EXTERNL int
-nc_get_vars_longlong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_vars_longlong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
long long *ip);
EXTERNL int
-nc_put_vars_ulonglong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_vars_ulonglong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const unsigned long long *op);
EXTERNL int
-nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
unsigned long long *ip);
EXTERNL int
-nc_put_vars_string(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_vars_string(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const char **op);
EXTERNL int
-nc_get_vars_string(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_vars_string(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
char **ip);
/* End {put,get}_vars */
/* Begin {put,get}_varm */
EXTERNL int
-nc_put_varm_text(int ncid, int varid, const size_t *startp,
+nc_put_varm_text(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const char *op);
EXTERNL int
-nc_get_varm_text(int ncid, int varid, const size_t *startp,
+nc_get_varm_text(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, char *ip);
EXTERNL int
-nc_put_varm_uchar(int ncid, int varid, const size_t *startp,
+nc_put_varm_uchar(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const unsigned char *op);
EXTERNL int
-nc_get_varm_uchar(int ncid, int varid, const size_t *startp,
+nc_get_varm_uchar(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, unsigned char *ip);
EXTERNL int
-nc_put_varm_schar(int ncid, int varid, const size_t *startp,
+nc_put_varm_schar(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const signed char *op);
EXTERNL int
-nc_get_varm_schar(int ncid, int varid, const size_t *startp,
+nc_get_varm_schar(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, signed char *ip);
EXTERNL int
-nc_put_varm_short(int ncid, int varid, const size_t *startp,
+nc_put_varm_short(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const short *op);
EXTERNL int
-nc_get_varm_short(int ncid, int varid, const size_t *startp,
+nc_get_varm_short(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, short *ip);
EXTERNL int
-nc_put_varm_int(int ncid, int varid, const size_t *startp,
+nc_put_varm_int(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const int *op);
EXTERNL int
-nc_get_varm_int(int ncid, int varid, const size_t *startp,
+nc_get_varm_int(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, int *ip);
EXTERNL int
-nc_put_varm_long(int ncid, int varid, const size_t *startp,
+nc_put_varm_long(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const long *op);
EXTERNL int
-nc_get_varm_long(int ncid, int varid, const size_t *startp,
+nc_get_varm_long(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, long *ip);
EXTERNL int
-nc_put_varm_float(int ncid, int varid,const size_t *startp,
+nc_put_varm_float(int ncid, int varid,const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const float *op);
EXTERNL int
-nc_get_varm_float(int ncid, int varid,const size_t *startp,
+nc_get_varm_float(int ncid, int varid,const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, float *ip);
EXTERNL int
-nc_put_varm_double(int ncid, int varid, const size_t *startp,
+nc_put_varm_double(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, const double *op);
EXTERNL int
-nc_get_varm_double(int ncid, int varid, const size_t *startp,
+nc_get_varm_double(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, double *ip);
EXTERNL int
-nc_put_varm_ushort(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_varm_ushort(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, const unsigned short *op);
EXTERNL int
-nc_get_varm_ushort(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_ushort(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, unsigned short *ip);
EXTERNL int
-nc_put_varm_uint(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_varm_uint(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, const unsigned int *op);
EXTERNL int
-nc_get_varm_uint(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_uint(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, unsigned int *ip);
EXTERNL int
-nc_put_varm_longlong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_varm_longlong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, const long long *op);
EXTERNL int
-nc_get_varm_longlong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_longlong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, long long *ip);
EXTERNL int
-nc_put_varm_ulonglong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_varm_ulonglong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, const unsigned long long *op);
EXTERNL int
-nc_get_varm_ulonglong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_ulonglong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, unsigned long long *ip);
EXTERNL int
-nc_put_varm_string(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_varm_string(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, const char **op);
EXTERNL int
-nc_get_varm_string(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_string(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, char **ip);
/* End {put,get}_varm */
@@ -1638,35 +1639,35 @@ EXTERNL int
nc_put_att_ubyte(int ncid, int varid, const char *name, nc_type xtype,
size_t len, const unsigned char *op);
EXTERNL int
-nc_get_att_ubyte(int ncid, int varid, const char *name,
+nc_get_att_ubyte(int ncid, int varid, const char *name,
unsigned char *ip);
EXTERNL int
-nc_put_var1_ubyte(int ncid, int varid, const size_t *indexp,
+nc_put_var1_ubyte(int ncid, int varid, const size_t *indexp,
const unsigned char *op);
EXTERNL int
-nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp,
+nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp,
unsigned char *ip);
EXTERNL int
-nc_put_vara_ubyte(int ncid, int varid, const size_t *startp,
+nc_put_vara_ubyte(int ncid, int varid, const size_t *startp,
const size_t *countp, const unsigned char *op);
EXTERNL int
-nc_get_vara_ubyte(int ncid, int varid, const size_t *startp,
+nc_get_vara_ubyte(int ncid, int varid, const size_t *startp,
const size_t *countp, unsigned char *ip);
EXTERNL int
-nc_put_vars_ubyte(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_vars_ubyte(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const unsigned char *op);
EXTERNL int
-nc_get_vars_ubyte(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_vars_ubyte(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
unsigned char *ip);
EXTERNL int
-nc_put_varm_ubyte(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_put_varm_ubyte(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, const unsigned char *op);
EXTERNL int
-nc_get_varm_ubyte(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_ubyte(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t * imapp, unsigned char *ip);
EXTERNL int
nc_put_var_ubyte(int ncid, int varid, const unsigned char *op);
@@ -1692,7 +1693,7 @@ nc_set_log_level(int new_level);
#endif /* LOGGING */
/* Show the netCDF library's in-memory metadata for a file. */
-EXTERNL int
+EXTERNL int
nc_show_metadata(int ncid);
/* End {put,get}_var */
@@ -1786,7 +1787,7 @@ nc_advise(const char *cdf_routine_name, int err, const char *fmt,...);
/*
* C data type corresponding to a netCDF NC_LONG argument,
* a signed 32 bit object.
- *
+ *
* This is the only thing in this file which architecture dependent.
*/
typedef int nclong;
@@ -1875,7 +1876,7 @@ ncvarput(int ncid, int varid, const long *startp, const long *countp,
const void *op);
EXTERNL int
-ncvarget(int ncid, int varid, const long *startp, const long *countp,
+ncvarget(int ncid, int varid, const long *startp, const long *countp,
void *ip);
EXTERNL int
@@ -1914,30 +1915,21 @@ ncrecput(int ncid, long recnum, void *const *datap);
#endif
/* Temporary hack to shut up warnings */
-#ifndef __MINGW32_VERSION
+#ifndef __MINGW32_VERSION
#define END_OF_MAIN()
#endif
-
-/* Allow dependent software to tell if
- nc_rename_grp() is available, as requested
- by Charlie Zender. */
+/* Define two hard-coded functionality-related
+ macros, but this is not going to be
+ standard practice. */
#ifndef NC_HAVE_RENAME_GRP
-#define NC_HAVE_RENAME_GRP
+#define NC_HAVE_RENAME_GRP /*!< rename_grp() support. */
#endif
-/* Allow dependent software to tell if
- inq_format_extended() is available.
-
- This is not a scalable approach to querying
- the functionality of the netcdf library, but
- it will do for the time being. */
#ifndef NC_HAVE_INQ_FORMAT_EXTENDED
-#define NC_HAVE_INQ_FORMAT_EXTENDED
+#define NC_HAVE_INQ_FORMAT_EXTENDED /*!< inq_format_extended() support. */
#endif
+#define NC_HAVE_META_H
#endif /* _NETCDF_ */
-
-
-
diff --git a/include/netcdf_meta.h.in b/include/netcdf_meta.h.in
new file mode 100644
index 0000000..d93c958
--- /dev/null
+++ b/include/netcdf_meta.h.in
@@ -0,0 +1,52 @@
+/*! \file netcdf_meta.h
+ *
+ * Meta information for libnetcdf which can be used by other packages which
+ * depend on libnetcdf.
+ *
+ * This file is automatically generated by the build system
+ * at configure time, and contains information related to
+ * how libnetcdf was built. It will not be required to
+ * include this file unless you want to probe the capabilities
+ * of libnetcdf. This should ideally only happen when configuring
+ * a project which depends on libnetcdf. At configure time,
+ * the dependant project can set its own macros which can be used
+ * in conditionals.
+ *
+ * Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+ * 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
+ * University Corporation for Atmospheric Research/Unidata.
+ * See \ref copyright file for more info.
+ */
+
+#ifndef NETCDF_META_H
+#define NETCDF_META_H
+
+#define NC_VERSION_MAJOR @NC_VERSION_MAJOR@ /*!< netcdf-c major version. */
+#define NC_VERSION_MINOR @NC_VERSION_MINOR@ /*!< netcdf-c minor version. */
+#define NC_VERSION_PATCH @NC_VERSION_PATCH@ /*!< netcdf-c patch version. */
+#define NC_VERSION_NOTE "@NC_VERSION_NOTE@" /*!< netcdf-c note. May be blank. */
+
+/*! netcdf-c version string.
+ *
+ * The format of the netcdf-c version string is as follows:
+ * \code
+ * NC_VERSION_MAJOR.NC_VERSION_MINOR.NC_VERSION_PATCH.NC_VERSION_NOTE
+ * \endcode
+ * Note that the trailing NC_VERSION_NOTE may be empty. It serves for
+ * identifiers such as '-rc1', etc.
+ */
+#define NC_VERSION "@NC_VERSION@"
+
+#define NC_HAS_NC2 @NC_HAS_NC2@ /*!< API version 2 support. */
+#define NC_HAS_NC4 @NC_HAS_NC4@ /*!< API version 4 support. */
+#define NC_HAS_HDF4 @NC_HAS_HDF4@ /*!< hdf4 support. */
+#define NC_HAS_HDF5 @NC_HAS_HDF5@ /*!< hdf5 support. */
+#define NC_HAS_SZIP @NC_HAS_SZIP@ /*!< szip support (hdf5 only) */
+#define NC_HAS_DAP @NC_HAS_DAP@ /*!< DAP support. */
+#define NC_HAS_DISKLESS @NC_HAS_DISKLESS@ /*!< diskless support. */
+#define NC_HAS_MMAP @NC_HAS_MMAP@ /*!< mmap support. */
+#define NC_HAS_JNA @NC_HAS_JNA@ /*!< jna support. */
+#define NC_HAS_PNETCDF @NC_HAS_PNETCDF@ /*!< pnetcdf support. */
+#define NC_HAS_PARALLEL @NC_HAS_PARALLEL@ /*!< parallel IO support via hdf5. */
+
+#endif
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..0b0fdcb
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,501 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2013-12-25.23; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab=' '
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
+
+ -T) is_target_a_directory=never;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call 'install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names problematic for 'test' and other utilities.
+ case $src in
+ -* | [=\(\)!]) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+ dst=$dst_arg
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ dstdir=`dirname "$dst"`
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ oIFS=$IFS
+ IFS=/
+ set -f
+ set fnord $dstdir
+ shift
+ set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ set +f &&
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/libdap2/Make0 b/libdap2/Make0
index 5fd7746..167eafd 100755
--- a/libdap2/Make0
+++ b/libdap2/Make0
@@ -257,7 +257,7 @@ e::
cc -E -g -c ${E}.c ${INCL} -I../oc2 >${E}.txt
##################################################
-T=test_varm3
+T=test_nstride_cached
v::
cc -g -c ${T}.c ${INCL}
diff --git a/libdap2/Makefile.in b/libdap2/Makefile.in
new file mode 100644
index 0000000..18511af
--- /dev/null
+++ b/libdap2/Makefile.in
@@ -0,0 +1,855 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This automake file generates the Makefile to libdap2. Whatever that
+# is!
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+
+#SRC += cdf4.c constraints4.c ncd4dispatch.c ncdap4.c getvara4.c
+#HDRS +=constraints4.h ncd4dispatch.h ncdap4.h
+ at BUILD_DAP_TRUE@@USE_NETCDF4_TRUE at am__append_3 = -I$(top_srcdir)/libsrc4
+subdir = libdap2
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libdap2_la_DEPENDENCIES =
+am__libdap2_la_SOURCES_DIST = constraints.c dapcvt.c dapalign.c \
+ dapodom.c daputil.c ncdaperr.c cdf.c cache.c dapdump.c \
+ dapdebug.c dapattr.c ncd2dispatch.c getvara.c dceconstraints.c \
+ dcetab.c dceparse.c dcelex.c nccommon.h constraints.h \
+ ncd2dispatch.h ncdap.h dapalign.h dapodom.h getvara.h dapnc.h \
+ daputil.h dapdebug.h dapdump.h dceconstraints.h dcetab.h \
+ dceparselex.h
+am__objects_1 = libdap2_la-constraints.lo libdap2_la-dapcvt.lo \
+ libdap2_la-dapalign.lo libdap2_la-dapodom.lo \
+ libdap2_la-daputil.lo libdap2_la-ncdaperr.lo libdap2_la-cdf.lo \
+ libdap2_la-cache.lo libdap2_la-dapdump.lo \
+ libdap2_la-dapdebug.lo libdap2_la-dapattr.lo \
+ libdap2_la-ncd2dispatch.lo libdap2_la-getvara.lo \
+ libdap2_la-dceconstraints.lo libdap2_la-dcetab.lo \
+ libdap2_la-dceparse.lo libdap2_la-dcelex.lo
+am__objects_2 =
+ at BUILD_DAP_TRUE@am_libdap2_la_OBJECTS = $(am__objects_1) \
+ at BUILD_DAP_TRUE@ $(am__objects_2)
+libdap2_la_OBJECTS = $(am_libdap2_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+ at BUILD_DAP_TRUE@am_libdap2_la_rpath =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libdap2_la_SOURCES)
+DIST_SOURCES = $(am__libdap2_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \
+ $(am__append_3)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+
+# We may have to add to these later.
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+CLEANFILES =
+
+#if USE_NETCDF4
+#LDADD += ${top_builddir}/libsrc4/libnetcdf4.la
+#endif
+#
+#LDADD += ${top_builddir}/libsrc/libnetcdf3.la \
+# ${top_builddir}/oc2/liboc.la \
+# ${top_builddir}/libdispatch/libdispatch.la
+#
+
+# These rule are used if someone wants to rebuild the grammar files.
+# Otherwise never invoked, but records how to do it.
+# BTW: note that renaming is essential because otherwise
+# autoconf will forcibly delete files of the name *.tab.*
+EXTRA_DIST = CMakeLists.txt dce.y
+LDADD =
+SRC = constraints.c dapcvt.c dapalign.c dapodom.c daputil.c \
+ncdaperr.c cdf.c cache.c dapdump.c dapdebug.c dapattr.c \
+ncd2dispatch.c getvara.c dceconstraints.c dcetab.c \
+dceparse.c dcelex.c
+
+HDRS = nccommon.h constraints.h ncd2dispatch.h ncdap.h dapalign.h \
+dapodom.h getvara.h dapnc.h daputil.h dapdebug.h dapdump.h \
+dceconstraints.h dcetab.h dceparselex.h
+
+
+# Build convenience library
+ at BUILD_DAP_TRUE@noinst_LTLIBRARIES = libdap2.la
+ at BUILD_DAP_TRUE@libdap2_la_SOURCES = $(SRC) $(HDRS)
+ at BUILD_DAP_TRUE@libdap2_la_CPPFLAGS = $(AM_CPPFLAGS)
+ at BUILD_DAP_TRUE@libdap2_la_LIBADD =
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libdap2/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libdap2/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libdap2.la: $(libdap2_la_OBJECTS) $(libdap2_la_DEPENDENCIES) $(EXTRA_libdap2_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(am_libdap2_la_rpath) $(libdap2_la_OBJECTS) $(libdap2_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-cache.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-cdf.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-constraints.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dapalign.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dapattr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dapcvt.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dapdebug.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dapdump.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dapodom.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-daputil.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dceconstraints.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dcelex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dceparse.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-dcetab.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-getvara.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-ncd2dispatch.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdap2_la-ncdaperr.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libdap2_la-constraints.lo: constraints.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-constraints.lo -MD -MP -MF $(DEPDIR)/libdap2_la-constraints.Tpo -c -o libdap2_la-constraints.lo `test -f 'constraints.c' || echo '$(srcdir)/'`constraints.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-constraints.Tpo $(DEPDIR)/libdap2_la-constraints.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='constraints.c' object='libdap2_la-constraints.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-constraints.lo `test -f 'constraints.c' || echo '$(srcdir)/'`constraints.c
+
+libdap2_la-dapcvt.lo: dapcvt.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapcvt.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapcvt.Tpo -c -o libdap2_la-dapcvt.lo `test -f 'dapcvt.c' || echo '$(srcdir)/'`dapcvt.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapcvt.Tpo $(DEPDIR)/libdap2_la-dapcvt.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapcvt.c' object='libdap2_la-dapcvt.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapcvt.lo `test -f 'dapcvt.c' || echo '$(srcdir)/'`dapcvt.c
+
+libdap2_la-dapalign.lo: dapalign.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapalign.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapalign.Tpo -c -o libdap2_la-dapalign.lo `test -f 'dapalign.c' || echo '$(srcdir)/'`dapalign.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapalign.Tpo $(DEPDIR)/libdap2_la-dapalign.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapalign.c' object='libdap2_la-dapalign.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapalign.lo `test -f 'dapalign.c' || echo '$(srcdir)/'`dapalign.c
+
+libdap2_la-dapodom.lo: dapodom.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapodom.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapodom.Tpo -c -o libdap2_la-dapodom.lo `test -f 'dapodom.c' || echo '$(srcdir)/'`dapodom.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapodom.Tpo $(DEPDIR)/libdap2_la-dapodom.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapodom.c' object='libdap2_la-dapodom.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapodom.lo `test -f 'dapodom.c' || echo '$(srcdir)/'`dapodom.c
+
+libdap2_la-daputil.lo: daputil.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-daputil.lo -MD -MP -MF $(DEPDIR)/libdap2_la-daputil.Tpo -c -o libdap2_la-daputil.lo `test -f 'daputil.c' || echo '$(srcdir)/'`daputil.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-daputil.Tpo $(DEPDIR)/libdap2_la-daputil.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='daputil.c' object='libdap2_la-daputil.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-daputil.lo `test -f 'daputil.c' || echo '$(srcdir)/'`daputil.c
+
+libdap2_la-ncdaperr.lo: ncdaperr.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-ncdaperr.lo -MD -MP -MF $(DEPDIR)/libdap2_la-ncdaperr.Tpo -c -o libdap2_la-ncdaperr.lo `test -f 'ncdaperr.c' || echo '$(srcdir)/'`ncdaperr.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-ncdaperr.Tpo $(DEPDIR)/libdap2_la-ncdaperr.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncdaperr.c' object='libdap2_la-ncdaperr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-ncdaperr.lo `test -f 'ncdaperr.c' || echo '$(srcdir)/'`ncdaperr.c
+
+libdap2_la-cdf.lo: cdf.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-cdf.lo -MD -MP -MF $(DEPDIR)/libdap2_la-cdf.Tpo -c -o libdap2_la-cdf.lo `test -f 'cdf.c' || echo '$(srcdir)/'`cdf.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-cdf.Tpo $(DEPDIR)/libdap2_la-cdf.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cdf.c' object='libdap2_la-cdf.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-cdf.lo `test -f 'cdf.c' || echo '$(srcdir)/'`cdf.c
+
+libdap2_la-cache.lo: cache.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-cache.lo -MD -MP -MF $(DEPDIR)/libdap2_la-cache.Tpo -c -o libdap2_la-cache.lo `test -f 'cache.c' || echo '$(srcdir)/'`cache.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-cache.Tpo $(DEPDIR)/libdap2_la-cache.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cache.c' object='libdap2_la-cache.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-cache.lo `test -f 'cache.c' || echo '$(srcdir)/'`cache.c
+
+libdap2_la-dapdump.lo: dapdump.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapdump.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapdump.Tpo -c -o libdap2_la-dapdump.lo `test -f 'dapdump.c' || echo '$(srcdir)/'`dapdump.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapdump.Tpo $(DEPDIR)/libdap2_la-dapdump.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapdump.c' object='libdap2_la-dapdump.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapdump.lo `test -f 'dapdump.c' || echo '$(srcdir)/'`dapdump.c
+
+libdap2_la-dapdebug.lo: dapdebug.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapdebug.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapdebug.Tpo -c -o libdap2_la-dapdebug.lo `test -f 'dapdebug.c' || echo '$(srcdir)/'`dapdebug.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapdebug.Tpo $(DEPDIR)/libdap2_la-dapdebug.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapdebug.c' object='libdap2_la-dapdebug.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapdebug.lo `test -f 'dapdebug.c' || echo '$(srcdir)/'`dapdebug.c
+
+libdap2_la-dapattr.lo: dapattr.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dapattr.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dapattr.Tpo -c -o libdap2_la-dapattr.lo `test -f 'dapattr.c' || echo '$(srcdir)/'`dapattr.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dapattr.Tpo $(DEPDIR)/libdap2_la-dapattr.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapattr.c' object='libdap2_la-dapattr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dapattr.lo `test -f 'dapattr.c' || echo '$(srcdir)/'`dapattr.c
+
+libdap2_la-ncd2dispatch.lo: ncd2dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-ncd2dispatch.lo -MD -MP -MF $(DEPDIR)/libdap2_la-ncd2dispatch.Tpo -c -o libdap2_la-ncd2dispatch.lo `test -f 'ncd2dispatch.c' || echo '$(srcdir)/'`ncd2dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-ncd2dispatch.Tpo $(DEPDIR)/libdap2_la-ncd2dispatch.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncd2dispatch.c' object='libdap2_la-ncd2dispatch.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-ncd2dispatch.lo `test -f 'ncd2dispatch.c' || echo '$(srcdir)/'`ncd2dispatch.c
+
+libdap2_la-getvara.lo: getvara.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-getvara.lo -MD -MP -MF $(DEPDIR)/libdap2_la-getvara.Tpo -c -o libdap2_la-getvara.lo `test -f 'getvara.c' || echo '$(srcdir)/'`getvara.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-getvara.Tpo $(DEPDIR)/libdap2_la-getvara.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getvara.c' object='libdap2_la-getvara.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-getvara.lo `test -f 'getvara.c' || echo '$(srcdir)/'`getvara.c
+
+libdap2_la-dceconstraints.lo: dceconstraints.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dceconstraints.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dceconstraints.Tpo -c -o libdap2_la-dceconstraints.lo `test -f 'dceconstraints.c' || echo '$(srcdir)/'`dceconstraints.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dceconstraints.Tpo $(DEPDIR)/libdap2_la-dceconstraints.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dceconstraints.c' object='libdap2_la-dceconstraints.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dceconstraints.lo `test -f 'dceconstraints.c' || echo '$(srcdir)/'`dceconstraints.c
+
+libdap2_la-dcetab.lo: dcetab.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dcetab.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dcetab.Tpo -c -o libdap2_la-dcetab.lo `test -f 'dcetab.c' || echo '$(srcdir)/'`dcetab.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dcetab.Tpo $(DEPDIR)/libdap2_la-dcetab.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcetab.c' object='libdap2_la-dcetab.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dcetab.lo `test -f 'dcetab.c' || echo '$(srcdir)/'`dcetab.c
+
+libdap2_la-dceparse.lo: dceparse.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dceparse.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dceparse.Tpo -c -o libdap2_la-dceparse.lo `test -f 'dceparse.c' || echo '$(srcdir)/'`dceparse.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dceparse.Tpo $(DEPDIR)/libdap2_la-dceparse.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dceparse.c' object='libdap2_la-dceparse.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dceparse.lo `test -f 'dceparse.c' || echo '$(srcdir)/'`dceparse.c
+
+libdap2_la-dcelex.lo: dcelex.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdap2_la-dcelex.lo -MD -MP -MF $(DEPDIR)/libdap2_la-dcelex.Tpo -c -o libdap2_la-dcelex.lo `test -f 'dcelex.c' || echo '$(srcdir)/'`dcelex.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdap2_la-dcelex.Tpo $(DEPDIR)/libdap2_la-dcelex.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcelex.c' object='libdap2_la-dcelex.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdap2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdap2_la-dcelex.lo `test -f 'dcelex.c' || echo '$(srcdir)/'`dcelex.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+makece::
+ bison -v -d -t -p dce dce.y
+ rm -f dcetab.c dcetab.h
+ mv dce.tab.c dcetab.c
+ mv dce.tab.h dcetab.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libdap2/cache.c b/libdap2/cache.c
index 6b32f2e..56fa0d9 100644
--- a/libdap2/cache.c
+++ b/libdap2/cache.c
@@ -6,6 +6,13 @@
#include "ncdap.h"
#include "dapdump.h"
+/*
+Grads servers always require a constraint,
+which does not necessarily happen during prefetch.
+So this flag controls this. By default, it is on.
+*/
+#define GRADS_PREFETCH
+
static int iscacheableconstraint(DCEconstraint* con);
/* Return 1 if we can reuse cached data to address
@@ -97,7 +104,7 @@ prefetchdata(NCDAPCOMMON* nccomm)
if(FLAGSET(nccomm->controls,NCF_UNCONSTRAINABLE)) {
/* If we cannot constrain and caching is enabled,
then pull in everything */
- if(FLAGSET(nccomm->controls,NCF_CACHE)) {
+ if(FLAGSET(nccomm->controls,NCF_CACHE)) {
for(i=0;i<nclistlength(allvars);i++) {
nclistpush(vars,nclistget(allvars,i));
}
@@ -136,7 +143,7 @@ nclog(NCLOGDBG,"prefetch: %s",var->ncfullname);
/* Create a single constraint consisting of the projections for the variables;
each projection is whole variable. The selections are passed on as is.
- The exception is if we are prefetching everything.
+ Conditionally, The exception is if we are prefetching everything.
*/
newconstraint = (DCEconstraint*)dcecreate(CES_CONSTRAINT);
@@ -158,7 +165,9 @@ nullfree(s);
}
flags = NCF_PREFETCH;
+#ifndef GRADS_PREFETCH
if(nclistlength(allvars) == nclistlength(vars)) flags |= NCF_PREFETCH_ALL;
+#endif
ncstat = buildcachenode(nccomm,newconstraint,vars,&cache,flags);
newconstraint = NULL; /* buildcachenodetakes control of newconstraint */
if(ncstat != OC_NOERR) goto done;
@@ -190,7 +199,7 @@ ncbytesfree(buf);
done:
nclistfree(vars);
- dcefree((DCEnode*)newconstraint);
+ dcefree((DCEnode*)newconstraint);
if(ncstat && cache != NULL) freenccachenode(nccomm,cache);
return THROW(ncstat);
}
@@ -212,10 +221,12 @@ buildcachenode(NCDAPCOMMON* nccomm,
int isprefetch = 0;
if((flags & NCF_PREFETCH) != 0)
- isprefetch = 1;
+ isprefetch = 1;
+#ifndef GRADS_PREFETCH
if((flags & NCF_PREFETCH_ALL) == 0)
- ce = buildconstraintstring(constraint);
+#endif
+ ce = dcebuildconstraintstring(constraint);
ncstat = dap_fetch(nccomm,conn,ce,OCDATADDS,&ocroot);
nullfree(ce);
@@ -359,7 +370,7 @@ iscacheableprojection(DCEprojection* proj)
cacheable = 1; /* assume so */
for(i=0;i<nclistlength(proj->var->segments);i++) {
DCEsegment* segment = (DCEsegment*)nclistget(proj->var->segments,i);
- if(!iswholesegment(segment)) {cacheable = 0; break;}
+ if(!dapiswholesegment(segment)) {cacheable = 0; break;}
}
return cacheable;
}
@@ -408,16 +419,18 @@ markprefetch(NCDAPCOMMON* nccomm)
CDFnode* dim = (CDFnode*)nclistget(var->array.dimsettrans,j);
nelems *= dim->dim.declsize;
}
- if(nelems <= nccomm->cdf.smallsizelimit
- && FLAGSET(nccomm->controls,NCF_PREFETCH)) {
- var->prefetchable = 1;
-if(SHOWFETCH)
- {
- extern char* ocfqn(OCddsnode);
- nclog(NCLOGDBG,"prefetchable: %s=%lu",
- ocfqn(var->ocnode),(unsigned long)nelems);
- }
- }
+ if(nelems <= nccomm->cdf.smallsizelimit
+ && FLAGSET(nccomm->controls,NCF_PREFETCH)) {
+ var->prefetchable = 1;
+ if(SHOWFETCH)
+ {
+ extern char* ocfqn(OCddsnode);
+ char *tmp = ocfqn(var->ocnode);
+ nclog(NCLOGDBG,"prefetchable: %s=%lu",
+ tmp,(unsigned long)nelems);
+ free(tmp);
+ }
+ }
}
return NC_NOERR;
}
diff --git a/libdap2/cdf.c b/libdap2/cdf.c
index e50cf59..8f9fc2d 100644
--- a/libdap2/cdf.c
+++ b/libdap2/cdf.c
@@ -41,7 +41,7 @@ computecdfnodesets(NCDAPCOMMON* nccomm, CDFtree* tree)
NClist* allnodes;
allnodes = tree->nodes;
- varnodes = nclistnew();
+ varnodes = nclistnew();
if(tree->seqnodes == NULL) tree->seqnodes = nclistnew();
if(tree->gridnodes == NULL) tree->gridnodes = nclistnew();
@@ -140,7 +140,7 @@ fixgrid(NCDAPCOMMON* nccomm, CDFnode* grid)
CDFnode* array;
glen = nclistlength(grid->subnodes);
- array = (CDFnode*)nclistget(grid->subnodes,0);
+ array = (CDFnode*)nclistget(grid->subnodes,0);
if(nccomm->controls.flags & (NCF_NC3)) {
/* Rename grid Array: variable, but leave its oc base name alone */
nullfree(array->ncbasename);
@@ -298,7 +298,7 @@ NCerror
sequencecheck(NCDAPCOMMON* nccomm)
{
(void)sequencecheckr(nccomm->cdf.ddsroot,
- nccomm->cdf.ddsroot->tree->varnodes,NULL);
+ nccomm->cdf.ddsroot->tree->varnodes,NULL);
return NC_NOERR;
}
@@ -556,7 +556,7 @@ findin(CDFnode* parent, CDFnode* child)
this occurs because some servers (that means you ferret and you thredds!)
do not adhere to the DAP2 protocol spec.
*/
-
+
static CDFnode*
makenewstruct(NCDAPCOMMON* ncc, CDFnode* node, CDFnode* templatenode)
{
@@ -599,7 +599,7 @@ mapnodesr(CDFnode* connode, CDFnode* fullnode, int depth)
NCerror ncstat = NC_NOERR;
ASSERT((simplenodematch(connode,fullnode)));
-
+
#ifdef DEBUG
{
char* path1 = makecdfpathstring(fullnode,".");
@@ -667,7 +667,7 @@ unmap(CDFnode* root)
}
}
-/*
+/*
Move dimension data from basenodes to nodes
*/
@@ -700,7 +700,7 @@ fprintf(stderr,"dimimprint %s/%d -> %s/%d\n",
for(j=0;j<noderank;j++) {
CDFnode* dim = (CDFnode*)nclistget(node->array.dimset0,j);
CDFnode* basedim = (CDFnode*)nclistget(basenode->array.dimset0,j);
- dim->dim.declsize0 = basedim->dim.declsize;
+ dim->dim.declsize0 = basedim->dim.declsize;
#ifdef DEBUG
fprintf(stderr,"dimimprint: %d: %lu -> %lu\n",i,basedim->dim.declsize,dim->dim.declsize0);
#endif
@@ -944,6 +944,9 @@ buildcdftree(NCDAPCOMMON* nccomm, OCddsnode ocroot, OCdxd occlass, CDFnode** cdf
CDFnode* root = NULL;
CDFtree* tree = (CDFtree*)calloc(1,sizeof(CDFtree));
NCerror err = NC_NOERR;
+ if(!tree)
+ return OC_ENOMEM;
+
tree->ocroot = ocroot;
tree->nodes = nclistnew();
tree->occlass = occlass;
@@ -956,7 +959,7 @@ buildcdftree(NCDAPCOMMON* nccomm, OCddsnode ocroot, OCdxd occlass, CDFnode** cdf
if(cdfrootp) *cdfrootp = root;
}
return err;
-}
+}
static NCerror
buildcdftreer(NCDAPCOMMON* nccomm, OCddsnode ocnode, CDFnode* container,
@@ -1002,7 +1005,7 @@ buildcdftreer(NCDAPCOMMON* nccomm, OCddsnode ocnode, CDFnode* container,
if(tree->root == NULL) {
tree->root = cdfnode;
cdfnode->tree = tree;
- }
+ }
#endif
break;
@@ -1013,7 +1016,7 @@ buildcdftreer(NCDAPCOMMON* nccomm, OCddsnode ocnode, CDFnode* container,
if(tree->root == NULL) {
tree->root = cdfnode;
cdfnode->tree = tree;
- }
+ }
#endif
break;
@@ -1021,7 +1024,7 @@ buildcdftreer(NCDAPCOMMON* nccomm, OCddsnode ocnode, CDFnode* container,
default: PANIC1("buildcdftree: unexpect OC node type: %d",(int)octype);
}
- /* Avoid a rare but perhaps possible null-dereference
+ /* Avoid a rare but perhaps possible null-dereference
of cdfnode. Not sure what error to throw, so using
NC_EDAP: generic DAP error. */
if(!cdfnode) {
@@ -1040,7 +1043,10 @@ buildcdftreer(NCDAPCOMMON* nccomm, OCddsnode ocnode, CDFnode* container,
CDFnode* subnode;
oc_dds_ithfield(nccomm->oc.conn,ocnode,i,&ocsubnode);
ncerr = buildcdftreer(nccomm,ocsubnode,cdfnode,tree,&subnode);
- if(ncerr) return ncerr;
+ if(ncerr) {
+ if(ocname) free(ocname);
+ return ncerr;
+ }
nclistpush(cdfnode->subnodes,(void*)subnode);
}
nullfree(ocname);
@@ -1074,7 +1080,7 @@ freecdfroot(CDFnode* root)
/* Free up a single node, but not any
nodes it points to.
-*/
+*/
static void
free1cdfnode(CDFnode* node)
{
@@ -1193,7 +1199,7 @@ static void
defdimensions(OCddsnode ocnode, CDFnode* cdfnode, NCDAPCOMMON* nccomm, CDFtree* tree)
{
size_t i,ocrank;
-
+
oc_dds_rank(nccomm->oc.conn,ocnode,&ocrank);
assert(ocrank > 0);
for(i=0;i<ocrank;i++) {
@@ -1201,7 +1207,7 @@ defdimensions(OCddsnode ocnode, CDFnode* cdfnode, NCDAPCOMMON* nccomm, CDFtree*
OCddsnode ocdim;
char* ocname;
size_t declsize;
-
+
oc_dds_ithdimension(nccomm->oc.conn,ocnode,i,&ocdim);
oc_dimension_properties(nccomm->oc.conn,ocdim,&declsize,&ocname);
@@ -1212,9 +1218,8 @@ defdimensions(OCddsnode ocnode, CDFnode* cdfnode, NCDAPCOMMON* nccomm, CDFtree*
/* Initially, constrained and unconstrained are same */
cdfdim->dim.declsize = declsize;
cdfdim->dim.array = cdfnode;
- if(cdfnode->array.dimset0 == NULL)
+ if(cdfnode->array.dimset0 == NULL)
cdfnode->array.dimset0 = nclistnew();
nclistpush(cdfnode->array.dimset0,(void*)cdfdim);
- }
+ }
}
-
diff --git a/libdap2/constraints.c b/libdap2/constraints.c
index 5d38e1e..8db4116 100644
--- a/libdap2/constraints.c
+++ b/libdap2/constraints.c
@@ -1,16 +1,16 @@
/*********************************************************************
* Copyright 1993, UCAR/Unidata
- * See netcdf/COPYRIGHT file for copying and redistribution conditions.
+ * See netcdf/COPYRIGHT filey for copying and redistribution conditions.
*********************************************************************/
#include "ncdap.h"
#include "dapdump.h"
-#include "dapdump.h"
#include "dceparselex.h"
static void completesegments(NClist* fullpath, NClist* segments);
static NCerror qualifyprojectionnames(DCEprojection* proj);
static NCerror qualifyprojectionsizes(DCEprojection* proj);
+static NCerror qualifyprojectionnames(DCEprojection* proj);
static NCerror matchpartialname(NClist* nodes, NClist* segments, CDFnode** nodep);
static int matchsuffix(NClist* matchpath, NClist* segments);
static int iscontainer(CDFnode* node);
@@ -20,7 +20,7 @@ static int slicematch(NClist* seglist1, NClist* seglist2);
/* Parse incoming url constraints, if any,
to check for syntactic correctness */
NCerror
-parsedapconstraints(NCDAPCOMMON* dapcomm, char* constraints,
+dapparsedapconstraints(NCDAPCOMMON* dapcomm, char* constraints,
DCEconstraint* dceconstraint)
{
NCerror ncstat = NC_NOERR;
@@ -50,7 +50,7 @@ parsedapconstraints(NCDAPCOMMON* dapcomm, char* constraints,
*/
NCerror
-mapconstraints(DCEconstraint* constraint,
+dapmapconstraints(DCEconstraint* constraint,
CDFnode* root)
{
int i;
@@ -62,7 +62,7 @@ mapconstraints(DCEconstraint* constraint,
for(i=0;i<nclistlength(dceprojections);i++) {
CDFnode* cdfmatch = NULL;
DCEprojection* proj = (DCEprojection*)nclistget(dceprojections,i);
- if(proj->discrim != CES_VAR) continue; // ignore functions
+ if(proj->discrim != CES_VAR) continue; /* ignore functions */
ncstat = matchpartialname(nodes,proj->var->segments,&cdfmatch);
if(ncstat) goto done;
/* Cross links */
@@ -81,12 +81,12 @@ done:
3. selection path
*/
NCerror
-qualifyconstraints(DCEconstraint* constraint)
+dapqualifyconstraints(DCEconstraint* constraint)
{
NCerror ncstat = NC_NOERR;
int i;
#ifdef DEBUG
-fprintf(stderr,"qualifyconstraints.before: %s\n",
+fprintf(stderr,"ncqualifyconstraints.before: %s\n",
dumpconstraint(constraint));
#endif
if(constraint != NULL) {
@@ -97,7 +97,7 @@ fprintf(stderr,"qualifyconstraints.before: %s\n",
}
}
#ifdef DEBUG
-fprintf(stderr,"qualifyconstraints.after: %s\n",
+fprintf(stderr,"ncqualifyconstraints.after: %s\n",
dumpconstraint(constraint));
#endif
return ncstat;
@@ -372,36 +372,12 @@ matchsuffix(NClist* matchpath, NClist* segments)
return 1; /* all segs matched */
}
-
-/* Convert a DCEprojection instance into a string
- that can be used with the url
-*/
-
-char*
-buildprojectionstring(NClist* projections)
-{
- return dcebuildprojectionstring(projections);
-}
-
-char*
-buildselectionstring(NClist* selections)
-{
- return dcebuildselectionstring(selections);
-}
-
-char*
-buildconstraintstring(DCEconstraint* constraints)
-{
- return dcebuildconstraintstring(constraints);
-}
-
-
/* Given the arguments to vara
construct a corresponding projection
with any pseudo dimensions removed
*/
NCerror
-buildvaraprojection(CDFnode* var,
+dapbuildvaraprojection(CDFnode* var,
const size_t* startp, const size_t* countp, const ptrdiff_t* stridep,
DCEprojection** projectionp)
{
@@ -419,7 +395,6 @@ buildvaraprojection(CDFnode* var,
*/
ncstat = dapvar2projection(var,&projection);
-
#ifdef DEBUG
fprintf(stderr,"buildvaraprojection: skeleton: %s\n",dumpprojection(projection));
#endif
@@ -467,7 +442,7 @@ fprintf(stderr,"buildvaraprojection3: final: projection=%s\n",
}
int
-iswholeslice(DCEslice* slice, CDFnode* dim)
+dapiswholeslice(DCEslice* slice, CDFnode* dim)
{
if(slice->first != 0 || slice->stride != 1) return 0;
if(dim != NULL) {
@@ -481,7 +456,7 @@ iswholeslice(DCEslice* slice, CDFnode* dim)
}
int
-iswholesegment(DCEsegment* seg)
+dapiswholesegment(DCEsegment* seg)
{
int i,whole;
NClist* dimset = NULL;
@@ -495,13 +470,13 @@ iswholesegment(DCEsegment* seg)
whole = 1; /* assume so */
for(i=0;i<rank;i++) {
CDFnode* dim = (CDFnode*)nclistget(dimset,i);
- if(!iswholeslice(&seg->slices[i],dim)) {whole = 0; break;}
+ if(!dapiswholeslice(&seg->slices[i],dim)) {whole = 0; break;}
}
return whole;
}
int
-iswholeprojection(DCEprojection* proj)
+dapiswholeprojection(DCEprojection* proj)
{
int i,whole;
@@ -510,19 +485,19 @@ iswholeprojection(DCEprojection* proj)
whole = 1; /* assume so */
for(i=0;i<nclistlength(proj->var->segments);i++) {
DCEsegment* segment = (DCEsegment*)nclistget(proj->var->segments,i);
- if(!iswholesegment(segment)) {whole = 0; break;}
+ if(!dapiswholesegment(segment)) {whole = 0; break;}
}
return whole;
}
int
-iswholeconstraint(DCEconstraint* con)
+dapiswholeconstraint(DCEconstraint* con)
{
int i;
if(con == NULL) return 1;
if(con->projections != NULL) {
for(i=0;i<nclistlength(con->projections);i++) {
- if(!iswholeprojection((DCEprojection*)nclistget(con->projections,i)))
+ if(!dapiswholeprojection((DCEprojection*)nclistget(con->projections,i)))
return 0;
}
}
@@ -546,7 +521,7 @@ The term "expanded" means
*/
NCerror
-fixprojections(NClist* list)
+dapfixprojections(NClist* list)
{
int i,j,k;
NCerror ncstat = NC_NOERR;
@@ -865,7 +840,7 @@ fprintf(stderr,"dapshiftprojection.after: %s\n",dumpprojection(projection));
of the input constraint.
*/
NCerror
-computeprojectedvars(NCDAPCOMMON* dapcomm, DCEconstraint* constraint)
+dapcomputeprojectedvars(NCDAPCOMMON* dapcomm, DCEconstraint* constraint)
{
NCerror ncstat = NC_NOERR;
NClist* vars = NULL;
diff --git a/libdap2/constraints.h b/libdap2/constraints.h
index 95f9d04..2231b43 100644
--- a/libdap2/constraints.h
+++ b/libdap2/constraints.h
@@ -1,31 +1,27 @@
- /*********************************************************************
- * Copyright 1993, UCAR/Unidata
- * See netcdf/COPYRIGHT file for copying and redistribution conditions.
- *********************************************************************/
+/*********************************************************************
+ * Copyright 1993, UCAR/Unidata
+ * See netcdf/COPYRIGHT file for copying and redistribution conditions.
+ *********************************************************************/
#ifndef CONSTRAINTS_H
#define CONSTRAINTS_H 1
-extern NCerror parsedapconstraints(NCDAPCOMMON*, char*, DCEconstraint*);
-extern NCerror mapconstraints(DCEconstraint*,CDFnode*);
-extern NCerror qualifyconstraints(DCEconstraint* constraint);
-extern NCerror computeprojectedvars(NCDAPCOMMON*,DCEconstraint*);
+extern NCerror dapparsedapconstraints(NCDAPCOMMON*, char*, DCEconstraint*);
+extern NCerror dapmapconstraints(DCEconstraint*,CDFnode*);
+extern NCerror dapqualifyconstraints(DCEconstraint* constraint);
+extern NCerror dapcomputeprojectedvars(NCDAPCOMMON*,DCEconstraint*);
-extern char* simplepathstring(NClist* segments, char* separator);
-extern void makesegmentstring(NClist* segments, NCbytes* buf, char* separator);
+extern char* dapsimplepathstring(NClist* segments, char* separator);
+extern void dapmakesegmentstring(NClist* segments, NCbytes* buf, char* separator);
-extern int iswholeslice(DCEslice*, struct CDFnode* dim);
-extern int iswholesegment(DCEsegment*);
+extern int dapiswholeslice(DCEslice*, struct CDFnode* dim);
+extern int dapiswholesegment(DCEsegment*);
-extern int iswholeconstraint(DCEconstraint* con);
+extern int dapiswholeconstraint(DCEconstraint* con);
-extern char* buildprojectionstring(NClist* projections);
-extern char* buildselectionstring(NClist* selections);
-extern char* buildconstraintstring(DCEconstraint* constraints);
+extern void dapmakewholesegment(DCEsegment*,struct CDFnode*);
+extern void dapmakewholeslice(DCEslice* slice, struct CDFnode* dim);
-extern void makewholesegment(DCEsegment*,struct CDFnode*);
-extern void makewholeslice(DCEslice* slice, struct CDFnode* dim);
-
-extern NCerror fixprojections(NClist* list);
+extern NCerror dapfixprojections(NClist* list);
extern int dapvar2projection(CDFnode* var, DCEprojection** projectionp);
extern int daprestrictprojection(NClist* projections, DCEprojection* var, DCEprojection** resultp);
diff --git a/libdap2/dapdebug.h b/libdap2/dapdebug.h
index 9a9806d..e2fd32c 100644
--- a/libdap2/dapdebug.h
+++ b/libdap2/dapdebug.h
@@ -5,7 +5,6 @@
#ifndef DEBUG_H
#define DEBUG_H
-
#if 0
#define DAPDEBUG 1
#define OCDEBUG 1
diff --git a/libdap2/dapdump.c b/libdap2/dapdump.c
index 73fa4b6..735bf0d 100644
--- a/libdap2/dapdump.c
+++ b/libdap2/dapdump.c
@@ -509,7 +509,7 @@ dumpcachenode(NCcachenode* node)
if(node == NULL) return strdup("cachenode{null}");
buf = ncbytesnew();
- result = buildconstraintstring(node->constraint);
+ result = dcebuildconstraintstring(node->constraint);
snprintf(tmp,sizeof(tmp),"cachenode%s(%lx){size=%lu; constraint=%s; vars=",
node->isprefetch?"*":"",
(unsigned long)node,
diff --git a/libdap2/dcelex.c b/libdap2/dcelex.c
index c454d1a..c615371 100644
--- a/libdap2/dcelex.c
+++ b/libdap2/dcelex.c
@@ -109,7 +109,7 @@ dcelex(YYSTYPE* lvalp, DCEparsestate* state)
isnumber = 1; /* maybe */
}
/* A number followed by an id char is assumed to just be
- a funny id */
+ a funny id */
if(isnumber && (*p == '\0' || strchr(wordcharsn,*p) == NULL)) {
token = SCAN_NUMBERCONST;
} else {
@@ -191,9 +191,22 @@ void
dcelexinit(char* input, DCElexstate** lexstatep)
{
DCElexstate* lexstate = (DCElexstate*)malloc(sizeof(DCElexstate));
- if(lexstatep) *lexstatep = lexstate;
+
+ /* If lexstatep is NULL,
+ we want to free lexstate and
+ return to avoid a memory leak. */
+ if(lexstatep) {
+ *lexstatep = lexstate;
+ } else {
+ if(lexstate) free(lexstate);
+ return;
+ }
+
if(lexstate == NULL) return;
memset((void*)lexstate,0,sizeof(DCElexstate));
+
+
+
#ifdef URLDECODE
lexstate->input = ncuridecode(input);
#else
@@ -221,4 +234,3 @@ dcelexcleanup(DCElexstate** lexstatep)
free(lexstate);
*lexstatep = NULL;
}
-
diff --git a/libdap2/dceparse.c b/libdap2/dceparse.c
index 355d95a..9507fa3 100644
--- a/libdap2/dceparse.c
+++ b/libdap2/dceparse.c
@@ -203,7 +203,7 @@ array_indices(DCEparsestate* state, Object list0, Object indexno)
if(start < 0) {
dceerror(state,"Illegal array index");
start = 1;
- }
+ }
slice = (DCEslice*)dcecreate(CES_SLICE);
slice->first = start;
slice->stride = 1;
@@ -221,13 +221,13 @@ indexer(DCEparsestate* state, Object name, Object indices)
NClist* list = (NClist*)indices;
DCEsegment* seg = (DCEsegment*)dcecreate(CES_SEGMENT);
seg->name = strdup((char*)name);
- for(i=0;i<nclistlength(list);i++) {
+ for(i=0;i<nclistlength(list);i++) {
DCEslice* slice = (DCEslice*)nclistget(list,i);
seg->slices[i] = *slice;
free(slice);
}
nclistfree(indices);
- return seg;
+ return seg;
}
Object
@@ -271,7 +271,7 @@ Object
var(DCEparsestate* state, Object indexpath)
{
DCEvar* v = (DCEvar*)dcecreate(CES_VAR);
- v->segments = (NClist*)indexpath;
+ v->segments = (NClist*)indexpath;
return v;
}
@@ -334,18 +334,18 @@ dce_parse_cleanup(DCEparsestate* state)
static DCEparsestate*
ce_parse_init(char* input, DCEconstraint* constraint)
{
- DCEparsestate* state = NULL;
- if(input==NULL) {
- dceerror(state,"ce_parse_init: no input buffer");
- } else {
- state = (DCEparsestate*)calloc(1,sizeof(DCEparsestate));
- if(state==NULL) return (DCEparsestate*)NULL;
- state->errorbuf[0] = '\0';
- state->errorcode = 0;
- dcelexinit(input,&state->lexstate);
+ DCEparsestate* state = (DCEparsestate*)calloc(1,sizeof(DCEparsestate));;
+ if(state==NULL) return (DCEparsestate*)NULL;
+
+ if(input==NULL) {
+ dceerror(state,"ce_parse_init: no input buffer");
+ } else {
+ state->errorbuf[0] = '\0';
+ state->errorcode = 0;
+ dcelexinit(input,&state->lexstate);
state->constraint = constraint;
- }
- return state;
+ }
+ return state;
}
#ifdef PARSEDEBUG
diff --git a/libdap2/env b/libdap2/env
index c0123c9..b1aa564 100644
--- a/libdap2/env
+++ b/libdap2/env
@@ -1,17 +1,18 @@
+TOP="/home/dmh/git/netcdf-c"
+#TOP="/cygdrive/f/git/netcdf-c"
+
alias xx="cd ..;make; cd libdap2"
PARMS=""; ARGS=""; CON="" ; CE=""; OCON="" ; VAR=""; SHARP='#'
alias q0=;alias qq=;alias qv=;alias q=;alias qh=;alias qqh=;alias qall=;alias qv=;alias qo=;
-#TOP="/home/dmh/mach/netcdf-c"
-TOP="/cygdrive/f/git/netcdf-c"
-
-F="http://thredds1.nkn.uidaho.edu:8080/thredds/dodsC/NWCSC_INTEGRATED_SCENARIOS_ALL_CLIMATE/macav2livneh/TEST/macav2livneh_nocompress_tasmax_CSIRO-Mk3-6-0_historical_1980_1989_CONUS.nc"
-
-#VAR=SPEED
+F="file://${TOP}/ncdap_test/testdata3/test.02"
-#PROG=./ncd
+if test -f ./ncd ; then
+PROG=./ncd
+else
PROG="$TOP/ncdump/ncdump"
+fi
P=`pwd`
@@ -22,9 +23,10 @@ PARMS="log"
#PARMS="${PARMS}&nocache"
#PARMS="${PARMS}&wholevar"
PARMS="${PARMS}&show=fetch"
-PARMS="${PARMS}&noprefetch"
+#PARMS="${PARMS}&noprefetch"
#PARMS="${PARMS}&prefetch"
#PARMS="${PARMS}&prefetch=eager"
+PARMS="[log][cache][noprefetch]"
VARGS="--leak-check=full"
diff --git a/libdap2/getvara.c b/libdap2/getvara.c
index 054609a..69eabc3 100644
--- a/libdap2/getvara.c
+++ b/libdap2/getvara.c
@@ -1,6 +1,6 @@
/*********************************************************************
* Copyright 1993, UCAR/Unidata
- * See netcdf/COPYRIGHT file for copying and redistribution conditions.
+ * See netcdf/COPYRIGHT file for copying and redistribuution conditions.
*********************************************************************/
@@ -19,7 +19,7 @@ static DCEnode* save = NULL;
struct NCMEMORY {
void* memory;
char* next; /* where to store the next chunk of data*/
-};
+};
/* Forward:*/
static NCerror moveto(NCDAPCOMMON*, Getvara*, CDFnode* dataroot, void* memory);
@@ -125,7 +125,7 @@ nc3d_getvarx(int ncid, int varid,
ncstat = NC_check_id(ncid, (NC**)&drno);
if(ncstat != NC_NOERR) goto fail;
dapcomm = (NCDAPCOMMON*)drno->dispatchdata;
-
+
ncstat = NC_check_id(drno->substrate, (NC**)&substrate);
if(ncstat != NC_NOERR) goto fail;
@@ -152,7 +152,7 @@ nc3d_getvarx(int ncid, int varid,
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
}
}
-
+
/* Get the dimension info */
ncdimsall = cdfvar->array.dimsetall;
ncrank = nclistlength(ncdimsall);
@@ -191,27 +191,26 @@ fprintf(stderr,"\n");
for(i=0;i<ncrank;i++) {
CDFnode* dim = (CDFnode*)nclistget(ncdimsall,i);
/* countp and startp are unsigned, so will never be < 0 */
- //if(startp[i] < 0 || countp[i] < 0 || stridep[i] < 1) {
if(stridep[i] < 1) {
ncstat = NC_EINVALCOORDS;
- goto fail;
+ goto fail;
}
if(startp[i] >= dim->dim.declsize
|| startp[i]+(stridep[i]*(countp[i]-1)) >= dim->dim.declsize) {
ncstat = NC_EINVALCOORDS;
- goto fail;
+ goto fail;
}
- }
+ }
#ifdef DEBUG
{
NClist* dims = cdfvar->array.dimsetall;
fprintf(stderr,"getvarx: %s",cdfvar->ncfullname);
if(nclistlength(dims) > 0) {int i;
-for(i=0;i<nclistlength(dims);i++)
+for(i=0;i<nclistlength(dims);i++)
fprintf(stderr,"(%lu:%lu:%lu)",(unsigned long)startp[i],(unsigned long)countp[i],(unsigned long)stridep[i]);
fprintf(stderr," -> ");
-for(i=0;i<nclistlength(dims);i++)
+for(i=0;i<nclistlength(dims);i++)
if(stridep[i]==1)
fprintf(stderr,"[%lu:%lu]",(unsigned long)startp[i],(unsigned long)((startp[i]+countp[i])-1));
else {
@@ -248,7 +247,7 @@ fprintf(stderr,"\n");
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
/* Compile the start/stop/stride info into a projection */
- ncstat = buildvaraprojection(varainfo->target,
+ ncstat = dapbuildvaraprojection(varainfo->target,
startp,countp,stridep,
&varaprojection);
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
@@ -288,7 +287,7 @@ fprintf(stderr,"var is in cache\n");
else
state = FETCHPART;
}
- ASSERT(state != 0);
+ ASSERT(state != 0);
switch (state) {
@@ -306,7 +305,9 @@ fprintf(stderr,"getvarx: FETCHWHOLE: fetchconstraint: %s\n",dumpconstraint(fetch
#endif
ncstat = buildcachenode(dapcomm,fetchconstraint,vars,&cachenode,0);
fetchconstraint = NULL; /*buildcachenode34 takes control of fetchconstraint.*/
- if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
+ if(ncstat != NC_NOERR) {THROWCHK(ncstat); nullfree(varainfo);
+ varainfo=NULL;
+ goto fail;}
} break;
case CACHED: {
@@ -325,7 +326,7 @@ fprintf(stderr,"getvarx: FETCHWHOLE: fetchconstraint: %s\n",dumpconstraint(fetch
dcemakewholeprojection(fetchprojection);
#ifdef DEBUG
-fprintf(stderr,"getvarx: FETCHVAR: fetchprojection: |%s|\n",dumpprojection(fetchprojection));
+ fprintf(stderr,"getvarx: FETCHVAR: fetchprojection: |%s|\n",dumpprojection(fetchprojection));
#endif
/* Build the complete constraint to use in the fetch */
@@ -334,15 +335,15 @@ fprintf(stderr,"getvarx: FETCHVAR: fetchprojection: |%s|\n",dumpprojection(fetch
fetchconstraint->selections = dceclonelist(dapcomm->oc.dapconstraint->selections);
/* and the created fetch projection */
fetchconstraint->projections = nclistnew();
- nclistpush(fetchconstraint->projections,(void*)fetchprojection);
+ nclistpush(fetchconstraint->projections,(void*)fetchprojection);
#ifdef DEBUG
fprintf(stderr,"getvarx: FETCHVAR: fetchconstraint: %s\n",dumpconstraint(fetchconstraint));
#endif
/* buildcachenode3 will create a new cachenode and
will also fetch the corresponding datadds.
*/
- ncstat = buildcachenode(dapcomm,fetchconstraint,vars,&cachenode,0);
- fetchconstraint = NULL; /*buildcachenode34 takes control of fetchconstraint.*/
+ ncstat = buildcachenode(dapcomm,fetchconstraint,vars,&cachenode,0);
+ fetchconstraint = NULL; /*buildcachenode34 takes control of fetchconstraint.*/
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
} break;
@@ -356,12 +357,12 @@ fprintf(stderr,"getvarx: FETCHVAR: fetchconstraint: %s\n",dumpconstraint(fetchco
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
/* Shift the varaprojection for simple walk */
- dcefree((DCEnode*)walkprojection) ; /* reclaim any existing walkprojection */
+ dcefree((DCEnode*)walkprojection) ; /* reclaim any existing walkprojection */
walkprojection = (DCEprojection*)dceclone((DCEnode*)varaprojection);
dapshiftprojection(walkprojection);
#ifdef DEBUG
-fprintf(stderr,"getvarx: FETCHPART: fetchprojection: |%s|\n",dumpprojection(fetchprojection));
+ fprintf(stderr,"getvarx: FETCHPART: fetchprojection: |%s|\n",dumpprojection(fetchprojection));
#endif
/* Build the complete constraint to use in the fetch */
@@ -370,9 +371,9 @@ fprintf(stderr,"getvarx: FETCHPART: fetchprojection: |%s|\n",dumpprojection(fetc
fetchconstraint->selections = dceclonelist(dapcomm->oc.dapconstraint->selections);
/* and the created fetch projection */
fetchconstraint->projections = nclistnew();
- nclistpush(fetchconstraint->projections,(void*)fetchprojection);
+ nclistpush(fetchconstraint->projections,(void*)fetchprojection);
#ifdef DEBUG
-fprintf(stderr,"getvarx: FETCHPART: fetchconstraint: %s\n",dumpconstraint(fetchconstraint));
+ fprintf(stderr,"getvarx: FETCHPART: fetchconstraint: %s\n",dumpconstraint(fetchconstraint));
#endif
/* buildcachenode3 will create a new cachenode and
will also fetch the corresponding datadds.
@@ -395,7 +396,7 @@ fprintf(stderr,"cache.datadds=%s\n",dumptree(cachenode->datadds));
/* attach DATADDS to (constrained) DDS */
unattach(dapcomm->cdf.ddsroot);
ncstat = attachsubset(cachenode->datadds,dapcomm->cdf.ddsroot);
- if(ncstat) goto fail;
+ if(ncstat) goto fail;
/* Fix up varainfo to use the cache */
varainfo->cache = cachenode;
@@ -406,7 +407,7 @@ fprintf(stderr,"cache.datadds=%s\n",dumptree(cachenode->datadds));
/* Get the var correlate from the datadds */
target = varainfo->target;
xtarget = target->attachment;
- if(xtarget == NULL)
+ if(xtarget == NULL)
{THROWCHK(ncstat=NC_ENODATA); goto fail;}
/* Switch to datadds tree space*/
@@ -415,11 +416,11 @@ save = (DCEnode*)varaprojection;
ncstat = moveto(dapcomm,varainfo,varainfo->cache->datadds,data);
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
- nclistfree(vars);
- dcefree((DCEnode*)varaprojection);
- dcefree((DCEnode*)fetchconstraint);
- freegetvara(varainfo);
fail:
+ if(vars != NULL) nclistfree(vars);
+ if(varaprojection != NULL) dcefree((DCEnode*)varaprojection);
+ if(fetchconstraint != NULL) dcefree((DCEnode*)fetchconstraint);
+ if(varainfo != NULL) freegetvara(varainfo);
if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat);
return THROW(ncstat);
}
@@ -551,6 +552,7 @@ fprintf(stderr," segment=%s hasstringdim=%d\n",
dapodom_next(odom);
}
dapodom_free(odom);
+ odom = NULL;
} else {/* scalar instance */
ncstat = movetofield(nccomm,currentcontent,path,depth,xgetvar,dimindex,memory,segments);
if(ocstat != OC_NOERR) {THROWCHK(ocstat); goto done;}
@@ -566,7 +568,7 @@ fprintf(stderr," segment=%s hasstringdim=%d\n",
for the case when the user set a limit and that limit
is not actually reached in this request.
*/
- /* By construction, this sequence represents the first
+ /* By construction, this sequence represents the first
(and only) dimension of this segment */
odom = dapodom_fromsegment(segment,0,1);
while(dapodom_more(odom)) {
@@ -597,7 +599,7 @@ fprintf(stderr," segment=%s hasstringdim=%d\n",
if(hasstringdim)
ncstat = extractstring(nccomm, xgetvar, xnode, segment, dimindex, conn, currentcontent, memory);
- else
+ else
ncstat = extract(nccomm, xgetvar, xnode, segment, dimindex, conn, currentcontent, memory);
break;
@@ -608,6 +610,7 @@ done:
oc_data_free(conn,fieldcontent);
oc_data_free(conn,reccontent);
if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat);
+ if(odom) dapodom_free(odom);
return THROW(ncstat);
}
@@ -631,11 +634,25 @@ movetofield(NCDAPCOMMON* nccomm,
OCdatanode fieldcontent = NULL;
CDFnode* xnext;
int newdepth;
+ int ffield;
/* currentcontent points to the grid/dataset/structure/record instance */
xnext = (CDFnode*)nclistget(path,depth+1);
ASSERT((xnext != NULL));
- fieldindex = findfield(xnode,xnext);
+
+ /* If findfield is less than 0,
+ and passes through this stanza,
+ an undefined value will be passed to
+ oc_data_ithfield. See coverity
+ issue 712596. */
+ ffield = findfield(xnode, xnext);
+ if(ffield < 0) {
+ ncstat = NC_EBADFIELD;
+ goto done;
+ } else {
+ fieldindex = findfield(xnode,xnext);
+ }
+
/* If the next node is a nc_virtual node, then
we need to effectively
ignore it and use the appropriate subnode.
@@ -673,7 +690,7 @@ done:
the odometer will be walking the whole subslice
This will allow us to optimize.
*/
-static int
+static int
wholeslicepoint(Dapodometer* odom)
{
unsigned int i;
@@ -686,7 +703,7 @@ wholeslicepoint(Dapodometer* odom)
}
if(point == -1)
point = 0; /* wholevariable */
- else if(point == (odom->rank - 1))
+ else if(point == (odom->rank - 1))
point = -1; /* no whole point */
else
point += 1; /* intermediate point */
@@ -751,7 +768,7 @@ extract(
size_t externtypesize;
size_t interntypesize;
int requireconversion;
- char value[16];
+ char value[16];
ASSERT((segment != NULL));
@@ -881,7 +898,7 @@ slicestring(OClink conn, char* stringmem, DCEslice* slice, struct NCMEMORY* memo
/* libnc-dap chooses to convert string escapes to the corresponding
character; so we do likewise.
*/
- dapexpandescapes(stringmem);
+ dapexpandescapes(stringmem);
stringlen = strlen(stringmem);
#ifdef DEBUG2
@@ -933,7 +950,7 @@ extractstring(
ASSERT(xnode->etype == NC_STRING || xnode->etype == NC_URL);
- /* Compute rank minus string dimension */
+ /* Compute rank minus string dimension */
rank0 = nclistlength(xnode->array.dimset0);
/* keep whole extracted strings stored in an NClist */
@@ -943,7 +960,7 @@ extractstring(
char* value = NULL;
ocstat = oc_data_readscalar(conn,currentcontent,sizeof(value),&value);
if(ocstat != OC_NOERR) goto done;
- nclistpush(strings,(void*)value);
+ nclistpush(strings,(void*)value);
} else {
/* Use the odometer to walk to the appropriate fields*/
odom = dapodom_fromsegment(segment,0,rank0);
@@ -952,10 +969,11 @@ extractstring(
ocstat = oc_data_readn(conn,currentcontent,odom->index,1,sizeof(value),&value);
if(ocstat != OC_NOERR)
goto done;
- nclistpush(strings,(void*)value);
+ nclistpush(strings,(void*)value);
dapodom_next(odom);
}
dapodom_free(odom);
+ odom = NULL;
}
/* Get each string in turn, slice it by applying the string dimm
and store in user supplied memory
@@ -963,10 +981,10 @@ extractstring(
for(i=0;i<nclistlength(strings);i++) {
char* s = (char*)nclistget(strings,i);
slicestring(conn,s,&segment->slices[rank0],memory);
- free(s);
- }
- nclistfree(strings);
+ free(s);
+ }
done:
+ if(strings != NULL) nclistfree(strings);
if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat);
return THROW(ncstat);
}
@@ -1040,7 +1058,7 @@ fprintf(stderr,"attachdim: %s->%s\n",xdim->ocname,tdim->ocname);
return NC_NOERR;
}
-/*
+/*
Match a DATADDS node to a DDS node.
It is assumed that both trees have been re-struct'ed if necessary.
*/
@@ -1059,7 +1077,7 @@ attachr(CDFnode* xnode, NClist* templatepath, int depth)
lastnode = (depth == (plen-1));
templatepathnode = (CDFnode*)nclistget(templatepath,depth);
ASSERT((simplenodematch(xnode,templatepathnode)));
- setattach(xnode,templatepathnode);
+ setattach(xnode,templatepathnode);
#ifdef DEBUG2
fprintf(stderr,"attachnode: %s->%s\n",xnode->ocname,templatepathnode->ocname);
#endif
@@ -1149,10 +1167,10 @@ done:
}
-/*
+/*
Match nodes in template tree to nodes in target tree;
template tree is typically a structural superset of target tree.
-WARNING: Dimensions are not attached
+WARNING: Dimensions are not attached
*/
static NCerror
@@ -1243,7 +1261,7 @@ nc3d_getvarmx(int ncid, int varid,
NULL,NULL,NULL,
data,dsttype0));
}
-
+
dsttype = (dsttype0);
/* Default to using the inquiry type for this var*/
@@ -1334,7 +1352,7 @@ fprintf(stderr,"new: %lu -> %lu %f\n",
*(float*)localpos);
*/
dapodom_next(odom);
- }
+ }
#else
odom = dapodom_new(ncrank,start,edges,stride,NULL);
while(dapodom_more(odom)) {
@@ -1358,11 +1376,10 @@ fprintf(stderr,"old: %lu -> %lu %f\n",
*(float*)externalmem);
*/
dapodom_next(odom);
- }
+ }
#endif
done:
return ncstat;
}
#endif /*EXTERN_UNUSED*/
-
diff --git a/libdap2/ncd2dispatch.c b/libdap2/ncd2dispatch.c
index ba22475..b14da84 100644
--- a/libdap2/ncd2dispatch.c
+++ b/libdap2/ncd2dispatch.c
@@ -45,7 +45,7 @@ static NCerror makeseqdim(NCDAPCOMMON*, CDFnode* seq, size_t count, CDFnode** sq
static NCerror countsequence(NCDAPCOMMON*, CDFnode* xseq, size_t* sizep);
static NCerror freeNCDAPCOMMON(NCDAPCOMMON*);
static NCerror fetchtemplatemetadata(NCDAPCOMMON*);
-static int fieldindex(CDFnode* parent, CDFnode* child);
+static size_t fieldindex(CDFnode* parent, CDFnode* child);
static NCerror computeseqcountconstraints(NCDAPCOMMON*, CDFnode*, NCbytes*);
static void computeseqcountconstraintsr(NCDAPCOMMON*, CDFnode*, CDFnode**);
static void estimatevarsizes(NCDAPCOMMON*);
@@ -188,7 +188,7 @@ NCD2_initialize(void)
int i;
/* Create our dispatch table as the merge of NCD2 table and NCSUBSTRATE */
/* watch the order because we want NCD2 to overwrite NCSUBSTRATE */
- NC_dispatch_overlay(&NCD2_dispatch_base, NCSUBSTRATE_dispatch_table, &NCD2_dispatcher);
+ NC_dispatch_overlay(&NCD2_dispatch_base, NCSUBSTRATE_dispatch_table, &NCD2_dispatcher);
NCD2_dispatch_table = &NCD2_dispatcher;
/* Local Initialization */
compute_nccalignments();
@@ -316,7 +316,7 @@ NCD2_open(const char * path, int mode,
/* set the compile flag by default */
dapcomm->oc.rawurltext = (char*)emalloc(strlen(path)+strlen("[compile]")+1);
strcpy(dapcomm->oc.rawurltext,"[compile]");
- strcat(dapcomm->oc.rawurltext, path);
+ strcat(dapcomm->oc.rawurltext, path);
#else
dapcomm->oc.rawurltext = strdup(path);
#endif
@@ -339,7 +339,7 @@ NCD2_open(const char * path, int mode,
SETFLAG(dapcomm->controls,NCF_COLUMBIA);
}
}
- }
+ }
#endif
/* fail if we are unconstrainable but have constraints */
@@ -372,9 +372,9 @@ NCD2_open(const char * path, int mode,
dapcomm->oc.dapconstraint = (DCEconstraint*)dcecreate(CES_CONSTRAINT);
dapcomm->oc.dapconstraint->projections = nclistnew();
dapcomm->oc.dapconstraint->selections = nclistnew();
-
+
/* Parse constraints to make sure they are syntactically correct */
- ncstat = parsedapconstraints(dapcomm,dapcomm->oc.url->constraint,dapcomm->oc.dapconstraint);
+ ncstat = dapparsedapconstraints(dapcomm,dapcomm->oc.url->constraint,dapcomm->oc.dapconstraint);
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;}
/* Construct a url for oc minus any constraint and params*/
@@ -484,7 +484,7 @@ fprintf(stderr,"constrained dds: %s\n",dumptree(dapcomm->cdf.ddsroot));
if(dapcomm->cdf.recorddimname != NULL
&& nclistlength(dapcomm->cdf.ddsroot->tree->seqnodes) > 0) {
/*nclog(NCLOGWARN,"unlimited dimension specified, but sequences exist in DDS");*/
- PANIC("unlimited dimension specified, but sequences exist in DDS");
+ PANIC("unlimited dimension specified, but sequences exist in DDS");
}
/* Re-compute the var names*/
@@ -499,19 +499,19 @@ fprintf(stderr,"constrained dds: %s\n",dumptree(dapcomm->cdf.ddsroot));
/* Process the constraints to map to the constrained CDF tree */
/* (must follow fixgrids3 */
- ncstat = mapconstraints(dapcomm->oc.dapconstraint,dapcomm->cdf.ddsroot);
+ ncstat = dapmapconstraints(dapcomm->oc.dapconstraint,dapcomm->cdf.ddsroot);
if(ncstat != NC_NOERR) goto done;
/* Canonicalize the constraint */
- ncstat = fixprojections(dapcomm->oc.dapconstraint->projections);
+ ncstat = dapfixprojections(dapcomm->oc.dapconstraint->projections);
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;}
/* Fill in segment information */
- ncstat = qualifyconstraints(dapcomm->oc.dapconstraint);
+ ncstat = dapqualifyconstraints(dapcomm->oc.dapconstraint);
if(ncstat != NC_NOERR) goto done;
/* Accumulate set of variables in the constraint's projections */
- ncstat = computeprojectedvars(dapcomm,dapcomm->oc.dapconstraint);
+ ncstat = dapcomputeprojectedvars(dapcomm,dapcomm->oc.dapconstraint);
if(ncstat) {THROWCHK(ncstat); goto done;}
/* using the modified constraint, rebuild the constraint string */
@@ -519,7 +519,7 @@ fprintf(stderr,"constrained dds: %s\n",dumptree(dapcomm->cdf.ddsroot));
/* ignore all constraints */
dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL,0);
} else {
- char* constraintstring = buildconstraintstring(dapcomm->oc.dapconstraint);
+ char* constraintstring = dcebuildconstraintstring(dapcomm->oc.dapconstraint);
ncurisetconstraints(dapcomm->oc.url,constraintstring);
nullfree(constraintstring);
dapcomm->oc.urltext = ncuribuild(dapcomm->oc.url,NULL,NULL,NCURICONSTRAINTS);
@@ -544,7 +544,7 @@ fprintf(stderr,"ncdap3: final constraint: %s\n",dapcomm->oc.url->constraint);
if(ncstat != NC_NOERR && ncstat != NC_EVARSIZE)
{THROWCHK(ncstat); goto done;}
#endif
-
+
{
NC* ncsub;
NC* drno = dapcomm->controller;
@@ -564,7 +564,7 @@ fprintf(stderr,"ncdap3: final constraint: %s\n",dapcomm->oc.url->constraint);
/* Pretend the substrate is read-only */
NC_set_readonly(nc3i);
-
+
}
/* Do any necessary data prefetch */
@@ -592,7 +592,7 @@ NCD2_close(int ncid)
NCDAPCOMMON* dapcomm;
int ncstatus = NC_NOERR;
- ncstatus = NC_check_id(ncid, (NC**)&drno);
+ ncstatus = NC_check_id(ncid, (NC**)&drno);
if(ncstatus != NC_NOERR) return THROW(ncstatus);
dapcomm = (NCDAPCOMMON*)drno->dispatchdata;
@@ -663,7 +663,7 @@ builddims(NCDAPCOMMON* dapcomm)
if(!swap) break;
}
- /* Define unlimited only if needed */
+ /* Define unlimited only if needed */
if(dapcomm->cdf.recorddim != NULL) {
CDFnode* unlimited = dapcomm->cdf.recorddim;
definename = getdefinename(unlimited);
@@ -696,7 +696,7 @@ fprintf(stderr,"define: dim: %s=%ld\n",dim->ncfullname,(long)dim->dim.declsize);
definename = getdefinename(dim);
ncstat = nc_def_dim(drno->substrate,definename,dim->dim.declsize,&dimid);
if(ncstat != NC_NOERR) {
- THROWCHK(ncstat); goto done;
+ THROWCHK(ncstat); nullfree(definename); goto done;
}
nullfree(definename);
dim->ncid = dimid;
@@ -748,7 +748,7 @@ fprintf(stderr,"buildvars.candidate=|%s|\n",var->ncfullname);
CDFnode* dim = (CDFnode*)nclistget(vardims,j);
dimids[j] = dim->ncid;
}
- }
+ }
@@ -788,7 +788,7 @@ fprintf(stderr,"\n");
/* Tag the variable with its DAP path */
if(dapparamcheck(dapcomm,"show","projection"))
showprojection(dapcomm,var);
- }
+ }
done:
return THROW(ncstat);
}
@@ -889,14 +889,16 @@ buildattribute(NCDAPCOMMON* dapcomm, NCattribute* att, nc_type vartype, int vari
modified: 10/28/09 to interpret escapes
*/
if(att->etype == NC_STRING || att->etype == NC_URL) {
- char* newstring;
+ char* newstring = NULL;
size_t newlen = 0;
for(i=0;i<nvalues;i++) {
char* s = (char*)nclistget(att->values,i);
newlen += (1+strlen(s));
}
- newstring = (char*)malloc(newlen);
- MEMCHECK(newstring,NC_ENOMEM);
+ if(newlen > 0)
+ newstring = (char*)malloc(newlen);
+
+ MEMCHECK(newstring,NC_ENOMEM);
newstring[0] = '\0';
for(i=0;i<nvalues;i++) {
char* s = (char*)nclistget(att->values,i);
@@ -912,7 +914,7 @@ buildattribute(NCDAPCOMMON* dapcomm, NCattribute* att, nc_type vartype, int vari
} else {
nc_type atype;
unsigned int typesize;
- void* mem;
+ void* mem = NULL;
/* It turns out that some servers upgrade the type
of _FillValue in order to correctly preserve the
original value. However, since the type of the
@@ -925,9 +927,10 @@ buildattribute(NCDAPCOMMON* dapcomm, NCattribute* att, nc_type vartype, int vari
else
atype = nctypeconvert(dapcomm,att->etype);
typesize = nctypesizeof(atype);
- mem = malloc(typesize * nvalues);
- ncstat = dapcvtattrval(atype,mem,att->values);
- ncstat = nc_put_att(drno->substrate,varid,att->name,atype,nvalues,mem);
+ if(nvalues > 0)
+ mem = malloc(typesize * nvalues);
+ ncstat = dapcvtattrval(atype,mem,att->values);
+ ncstat = nc_put_att(drno->substrate,varid,att->name,atype,nvalues,mem);
nullfree(mem);
}
return THROW(ncstat);
@@ -950,7 +953,7 @@ getdefinename(CDFnode* node)
case NC_Dimension:
/* Return just the node's ncname */
- spath = nulldup(node->ncbasename);
+ spath = nulldup(node->ncbasename);
break;
default:
@@ -994,10 +997,10 @@ computecdfdimnames(NCDAPCOMMON* nccomm)
NClist* varnodes = nccomm->cdf.ddsroot->tree->varnodes;
NClist* alldims;
NClist* basedims;
-
+
/* Collect all dimension nodes from dimsetall lists */
- alldims = getalldims(nccomm,0);
+ alldims = getalldims(nccomm,0);
/* Assign an index to all anonymous dimensions
vis-a-vis its containing variable
@@ -1238,7 +1241,7 @@ applyclientparams(NCDAPCOMMON* nccomm)
pathstr = makeocpathstring(conn,var->ocnode,".");
strncat(tmpname,pathstr,NC_MAX_NAME);
nullfree(pathstr);
- value = oc_clientparam_get(conn,tmpname);
+ value = oc_clientparam_get(conn,tmpname);
if(value != NULL && strlen(value) != 0) {
if(sscanf(value,"%d",&len) && len > 0) var->maxstringlength = len;
}
@@ -1317,7 +1320,7 @@ replacedims(NClist* dims)
Two dimensions are equivalent if
1. they have the same size
2. neither are anonymous
- 3. they ave the same names.
+ 3. they ave the same names.
*/
static int
equivalentdim(CDFnode* basedim, CDFnode* dupdim)
@@ -1409,7 +1412,7 @@ addstringdims(NCDAPCOMMON* dapcomm)
dimsize = var->maxstringlength;
/* check is a variable-specific string length was specified */
- if(dimsize == 0)
+ if(dimsize == 0)
sdim = dapcomm->cdf.globalstringdim; /* use default */
else {
/* create a psuedo dimension for the charification of the string*/
@@ -1488,7 +1491,7 @@ defseqdims(NCDAPCOMMON* dapcomm)
if(container->nctype != NC_Structure
|| nclistlength(container->array.dimset0) > 0)
{seq->usesequence = 0; break;}/* no good */
- }
+ }
/* Does the user want us to compute the actual sequence dim size? */
if(seq->usesequence && seqdims) {
ncstat = getseqdimsize(dapcomm,seq,&seqsize);
@@ -1497,7 +1500,7 @@ defseqdims(NCDAPCOMMON* dapcomm)
seq->usesequence = 0;
}
} else { /* !seqdims default to size = 1 */
- seqsize = 1;
+ seqsize = 1;
}
if(seq->usesequence) {
/* Note: we are making the dimension in the dds root tree */
@@ -1528,6 +1531,7 @@ showprojection(NCDAPCOMMON* dapcomm, CDFnode* var)
if(i > 0) ncbytescat(projection,".");
ncbytescat(projection,node->ocname);
}
+ nclistfree(path);
/* Now, add the dimension info */
rank = nclistlength(var->array.dimset0);
for(i=0;i<rank;i++) {
@@ -1537,12 +1541,13 @@ showprojection(NCDAPCOMMON* dapcomm, CDFnode* var)
snprintf(tmp,sizeof(tmp),"%lu",(unsigned long)dim->dim.declsize);
ncbytescat(projection,tmp);
ncbytescat(projection,"]");
- }
+ }
/* Define the attribute */
ncstat = nc_put_att_text(getncid(drno),var->ncid,
"_projection",
ncbyteslength(projection),
ncbytescontents(projection));
+ ncbytesfree(projection);
return ncstat;
}
@@ -1574,15 +1579,15 @@ fprintf(stderr,"seqcountconstraints: %s\n",ncbytescontents(seqcountconstraints))
if(ncstat) goto fail;
ncstat = buildcdftree(dapcomm,ocroot,OCDATA,&dxdroot);
- if(ncstat) goto fail;
+ if(ncstat) goto fail;
/* attach DATADDS to DDS */
ncstat = attach(dxdroot,seq);
- if(ncstat) goto fail;
+ if(ncstat) goto fail;
/* WARNING: we are now switching to datadds tree */
xseq = seq->attachment;
ncstat = countsequence(dapcomm,xseq,&seqsize);
- if(ncstat) goto fail;
+ if(ncstat != NC_NOERR) goto fail;
#ifdef DEBUG
fprintf(stderr,"sequencesize: %s = %lu\n",seq->ocname,(unsigned long)seqsize);
@@ -1591,6 +1596,8 @@ fprintf(stderr,"sequencesize: %s = %lu\n",seq->ocname,(unsigned long)seqsize);
/* throw away the fetch'd trees */
unattach(dapcomm->cdf.ddsroot);
freecdfroot(dxdroot);
+#if 1
+/*Note sure what this is doing?*/
if(ncstat != NC_NOERR) {
/* Cannot get DATADDDS*/
char* code;
@@ -1602,13 +1609,15 @@ fprintf(stderr,"sequencesize: %s = %lu\n",seq->ocname,(unsigned long)seqsize);
code,msg,httperr);
}
ocstat = OC_NOERR;
- }
+ }
+#endif
+
if(sizep) *sizep = seqsize;
fail:
ncbytesfree(seqcountconstraints);
oc_data_free(conn,rootcontent);
- if(ocstat) ncstat = ocerrtoncerr(ocstat);
+ if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat);
return ncstat;
}
@@ -1665,7 +1674,7 @@ countsequence(NCDAPCOMMON* dapcomm, CDFnode* xseq, size_t* sizep)
CDFnode* current = (CDFnode*)nclistget(path,i);
OCdatanode nextdata = NULL;
CDFnode* next = NULL;
-
+
/* invariant: current = ith node in path; data = corresponding
datanode
*/
@@ -1706,7 +1715,7 @@ countsequence(NCDAPCOMMON* dapcomm, CDFnode* xseq, size_t* sizep)
done:
nclistfree(path);
- if(ocstat) ncstat = ocerrtoncerr(ocstat);
+ if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat);
return THROW(ncstat);
}
@@ -1738,7 +1747,7 @@ freeNCDAPCOMMON(NCDAPCOMMON* dapcomm)
return NC_NOERR;
}
-static int
+static size_t
fieldindex(CDFnode* parent, CDFnode* child)
{
unsigned int i;
@@ -1805,7 +1814,7 @@ computeseqcountconstraints(NCDAPCOMMON* dapcomm, CDFnode* seq, NCbytes* seqcount
if(dapcomm->oc.url->selection != NULL)
ncbytescat(seqcountconstraints,dapcomm->oc.url->selection);
nclistfree(path);
- return NC_NOERR;
+ return NC_NOERR;
}
@@ -1834,7 +1843,7 @@ prefer(CDFnode* candidate, CDFnode* newchoice)
canisscalar = (nclistlength(candidate->array.dimset0) == 0);
ASSERT(candidate->nctype == NC_Atomic && newchoice->nctype == NC_Atomic);
-
+
/* choose non-string over string */
if(canisstring && !newisstring)
return newchoice;
@@ -1975,7 +1984,7 @@ fetchtemplatemetadata(NCDAPCOMMON* dapcomm)
if(ncstat != NC_NOERR) {
/* Ignore but complain */
nclog(NCLOGWARN,"Could not read DAS; ignored");
- dapcomm->oc.ocdasroot = NULL;
+ dapcomm->oc.ocdasroot = NULL;
ncstat = NC_NOERR;
}
@@ -2014,7 +2023,7 @@ fetchconstrainedmetadata(NCDAPCOMMON* dapcomm)
if(FLAGSET(dapcomm->controls,NCF_UNCONSTRAINABLE))
ce = NULL;
else
- ce = buildconstraintstring(dapcomm->oc.dapconstraint);
+ ce = dcebuildconstraintstring(dapcomm->oc.dapconstraint);
{
ncstat = dap_fetch(dapcomm,dapcomm->oc.conn,ce,OCDDS,&ocroot);
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto fail;}
@@ -2029,7 +2038,7 @@ fetchconstrainedmetadata(NCDAPCOMMON* dapcomm)
if(!FLAGSET(dapcomm->controls,NCF_UNCONSTRAINABLE)) {
/* fix DAP server problem by adding back any inserting needed structure nodes */
- ncstat = restruct(dapcomm, dapcomm->cdf.ddsroot,dapcomm->cdf.fullddsroot,dapcomm->oc.dapconstraint->projections);
+ ncstat = restruct(dapcomm, dapcomm->cdf.ddsroot,dapcomm->cdf.fullddsroot,dapcomm->oc.dapconstraint->projections);
if(ncstat) goto fail;
}
@@ -2128,7 +2137,7 @@ applyclientparamcontrols(NCDAPCOMMON* dapcomm)
CLRFLAG(dapcomm->controls,NCF_PREFETCH_EAGER);
/* Turn on any default on flags */
- SETFLAG(dapcomm->controls,DFALT_ON_FLAGS);
+ SETFLAG(dapcomm->controls,DFALT_ON_FLAGS);
SETFLAG(dapcomm->controls,(NCF_NC3|NCF_NCDAP));
/* enable/disable caching */
diff --git a/libdap2/ncdap.h b/libdap2/ncdap.h
index e210c0e..e3f6fc0 100644
--- a/libdap2/ncdap.h
+++ b/libdap2/ncdap.h
@@ -110,7 +110,7 @@ extern void dereference(NCconstraint* constraint);
extern NCerror rereference(NCconstraint*, NClist*);
*/
-extern NCerror buildvaraprojection(CDFnode*,
+extern NCerror dapbuildvaraprojection(CDFnode*,
const size_t* startp, const size_t* countp, const ptrdiff_t* stridep,
struct DCEprojection** projectionlist);
diff --git a/libdap2/ncdaperr.c b/libdap2/ncdaperr.c
index adae257..476cd55 100644
--- a/libdap2/ncdaperr.c
+++ b/libdap2/ncdaperr.c
@@ -8,7 +8,7 @@
NCerror
ocerrtoncerr(OCerror ocerr)
{
- if(ocerr >= 0) return ocerr; /* really a system error*/
+ if(ocerr > 0) return ocerr; /* really a system error*/
switch (ocerr) {
case OC_NOERR: return NC_NOERR;
case OC_EBADID: return NC_EBADID;
diff --git a/libdispatch/Makefile.am b/libdispatch/Makefile.am
index e8a539b..b3afd32 100755
--- a/libdispatch/Makefile.am
+++ b/libdispatch/Makefile.am
@@ -1,44 +1,64 @@
-## This is a automake file, part of Unidata's netCDF package.
-# Copyright 2005, see the COPYRIGHT file for more information.
-
-# This Makefile controls the building of the dispatch layer of the
-# netCDF library. The dispatch layer decides whether to call the
-# netcdf-classic code, netcdf-4 code, nc3 dap code, or nc4 dap
-# code. It also contains code that sit above the dispatch layer, like
-# the v2 API.
-
-# Put together AM_CPPFLAGS and AM_LDFLAGS.
-include $(top_srcdir)/lib_flags.am
-
-# This is our output, the dispatch convenience library.
-noinst_LTLIBRARIES = libdispatch.la
-libdispatch_la_CPPFLAGS = ${AM_CPPFLAGS}
-
-# The source files.
-libdispatch_la_SOURCES = dparallel.c dcopy.c dfile.c ddim.c datt.c \
-dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c dvarput.c \
-dvarinq.c ddispatch.c \
-nclog.c dstring.c dutf8proc.c utf8proc_data.h \
-ncuri.c nclist.c ncbytes.c nchashmap.c nctime.c \
-dsubstrate.c \
-nc.c nclistmgr.c
-
-# Add functions only found in netCDF-4.
-if USE_NETCDF4
-libdispatch_la_SOURCES += dgroup.c dvlen.c dcompound.c dtype.c denum.c \
-dopaque.c ncaux.c
-endif # USE_NETCDF4
-
-# Turn on pre-processor flag when building a DLL for windows.
-if BUILD_DLL
-libdispatch_la_CPPFLAGS += -DDLL_EXPORT
-endif # BUILD_DLL
-
-# Add V2 API convenience library if needed.
-if BUILD_V2
-noinst_LTLIBRARIES += libnetcdf2.la
-libnetcdf2_la_SOURCES = dv2i.c
-libnetcdf2_la_CPPFLAGS = ${AM_CPPFLAGS} -DDLL_EXPORT
-endif # BUILD_V2
-
-EXTRA_DIST=CMakeLists.txt
+## This is a automake file, part of Unidata's netCDF package.
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This Makefile controls the building of the dispatch layer of the
+# netCDF library. The dispatch layer decides whether to call the
+# netcdf-classic code, netcdf-4 code, nc3 dap code, or nc4 dap
+# code. It also contains code that sit above the dispatch layer, like
+# the v2 API.
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+include $(top_srcdir)/lib_flags.am
+
+# This is our output, the dispatch convenience library.
+noinst_LTLIBRARIES = libdispatch.la
+libdispatch_la_CPPFLAGS = ${AM_CPPFLAGS}
+
+# The source files.
+libdispatch_la_SOURCES = dparallel.c dcopy.c dfile.c ddim.c datt.c \
+dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c dvarput.c \
+dvarinq.c ddispatch.c \
+nclog.c dstring.c dutf8proc.c utf8proc_data.h \
+ncuri.c nclist.c ncbytes.c nchashmap.c nctime.c \
+dsubstrate.c \
+nc.c nclistmgr.c
+
+# Add functions only found in netCDF-4.
+if USE_NETCDF4
+libdispatch_la_SOURCES += dgroup.c dvlen.c dcompound.c dtype.c denum.c \
+dopaque.c ncaux.c
+endif # USE_NETCDF4
+
+# Turn on pre-processor flag when building a DLL for windows.
+if BUILD_DLL
+libdispatch_la_CPPFLAGS += -DDLL_EXPORT
+endif # BUILD_DLL
+
+# Add V2 API convenience library if needed.
+if BUILD_V2
+noinst_LTLIBRARIES += libnetcdf2.la
+libnetcdf2_la_SOURCES = dv2i.c
+libnetcdf2_la_CPPFLAGS = ${AM_CPPFLAGS} -DDLL_EXPORT
+endif # BUILD_V2
+
+EXTRA_DIST=CMakeLists.txt ncsettings.hdr
+
+# Build ncsettings.c as follows:
+# 1. copy ncsettings.hdr to ncsettings.c
+# 2. append libnetcdf.settings to ncsettings.c after
+# processing it as follows:
+# 1. convert tabs and cr to blanks
+# 2. convert embedded double quote (") to escaped form (\").
+# 3. append newline (\n) to each line
+# 4. surround each line with double quotes.
+# 3. finally, add a semicolon to the end of ncsettings.c
+# to complete the string constant.
+
+ncsettings.c: $(top_srcdir)/libnetcdf.settings ncsettings.hdr
+ rm -f ncsettings.c
+ cat ncsettings.hdr > ncsettings.c
+ tr '\t\r' ' ' <${top_srcdir}/libnetcdf.settings | \
+ sed -e 's/"/\\"/g' | \
+ sed -e 's/\(.*\)/\"\1\\n\"/' | \
+ cat >> ncsettings.c
+ echo ';' >> ncsettings.c
diff --git a/libdispatch/Makefile.in b/libdispatch/Makefile.in
new file mode 100644
index 0000000..7c9a132
--- /dev/null
+++ b/libdispatch/Makefile.in
@@ -0,0 +1,998 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This Makefile controls the building of the dispatch layer of the
+# netCDF library. The dispatch layer decides whether to call the
+# netcdf-classic code, netcdf-4 code, nc3 dap code, or nc4 dap
+# code. It also contains code that sit above the dispatch layer, like
+# the v2 API.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+
+# Add functions only found in netCDF-4.
+ at USE_NETCDF4_TRUE@am__append_3 = dgroup.c dvlen.c dcompound.c dtype.c denum.c \
+ at USE_NETCDF4_TRUE@dopaque.c ncaux.c
+
+
+# Turn on pre-processor flag when building a DLL for windows.
+ at BUILD_DLL_TRUE@am__append_4 = -DDLL_EXPORT
+
+# Add V2 API convenience library if needed.
+ at BUILD_V2_TRUE@am__append_5 = libnetcdf2.la
+subdir = libdispatch
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libdispatch_la_LIBADD =
+am__libdispatch_la_SOURCES_DIST = dparallel.c dcopy.c dfile.c ddim.c \
+ datt.c dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c \
+ dvarput.c dvarinq.c ddispatch.c nclog.c dstring.c dutf8proc.c \
+ utf8proc_data.h ncuri.c nclist.c ncbytes.c nchashmap.c \
+ nctime.c dsubstrate.c nc.c nclistmgr.c dgroup.c dvlen.c \
+ dcompound.c dtype.c denum.c dopaque.c ncaux.c
+ at USE_NETCDF4_TRUE@am__objects_1 = libdispatch_la-dgroup.lo \
+ at USE_NETCDF4_TRUE@ libdispatch_la-dvlen.lo \
+ at USE_NETCDF4_TRUE@ libdispatch_la-dcompound.lo \
+ at USE_NETCDF4_TRUE@ libdispatch_la-dtype.lo \
+ at USE_NETCDF4_TRUE@ libdispatch_la-denum.lo \
+ at USE_NETCDF4_TRUE@ libdispatch_la-dopaque.lo \
+ at USE_NETCDF4_TRUE@ libdispatch_la-ncaux.lo
+am_libdispatch_la_OBJECTS = libdispatch_la-dparallel.lo \
+ libdispatch_la-dcopy.lo libdispatch_la-dfile.lo \
+ libdispatch_la-ddim.lo libdispatch_la-datt.lo \
+ libdispatch_la-dattinq.lo libdispatch_la-dattput.lo \
+ libdispatch_la-dattget.lo libdispatch_la-derror.lo \
+ libdispatch_la-dvar.lo libdispatch_la-dvarget.lo \
+ libdispatch_la-dvarput.lo libdispatch_la-dvarinq.lo \
+ libdispatch_la-ddispatch.lo libdispatch_la-nclog.lo \
+ libdispatch_la-dstring.lo libdispatch_la-dutf8proc.lo \
+ libdispatch_la-ncuri.lo libdispatch_la-nclist.lo \
+ libdispatch_la-ncbytes.lo libdispatch_la-nchashmap.lo \
+ libdispatch_la-nctime.lo libdispatch_la-dsubstrate.lo \
+ libdispatch_la-nc.lo libdispatch_la-nclistmgr.lo \
+ $(am__objects_1)
+libdispatch_la_OBJECTS = $(am_libdispatch_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+libnetcdf2_la_LIBADD =
+am__libnetcdf2_la_SOURCES_DIST = dv2i.c
+ at BUILD_V2_TRUE@am_libnetcdf2_la_OBJECTS = libnetcdf2_la-dv2i.lo
+libnetcdf2_la_OBJECTS = $(am_libnetcdf2_la_OBJECTS)
+ at BUILD_V2_TRUE@am_libnetcdf2_la_rpath =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libdispatch_la_SOURCES) $(libnetcdf2_la_SOURCES)
+DIST_SOURCES = $(am__libdispatch_la_SOURCES_DIST) \
+ $(am__libnetcdf2_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+
+# This is our output, the dispatch convenience library.
+noinst_LTLIBRARIES = libdispatch.la $(am__append_5)
+libdispatch_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_4)
+
+# The source files.
+libdispatch_la_SOURCES = dparallel.c dcopy.c dfile.c ddim.c datt.c \
+ dattinq.c dattput.c dattget.c derror.c dvar.c dvarget.c \
+ dvarput.c dvarinq.c ddispatch.c nclog.c dstring.c dutf8proc.c \
+ utf8proc_data.h ncuri.c nclist.c ncbytes.c nchashmap.c \
+ nctime.c dsubstrate.c nc.c nclistmgr.c $(am__append_3)
+ at BUILD_V2_TRUE@libnetcdf2_la_SOURCES = dv2i.c
+ at BUILD_V2_TRUE@libnetcdf2_la_CPPFLAGS = ${AM_CPPFLAGS} -DDLL_EXPORT
+EXTRA_DIST = CMakeLists.txt ncsettings.hdr
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libdispatch/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libdispatch/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libdispatch.la: $(libdispatch_la_OBJECTS) $(libdispatch_la_DEPENDENCIES) $(EXTRA_libdispatch_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(libdispatch_la_OBJECTS) $(libdispatch_la_LIBADD) $(LIBS)
+
+libnetcdf2.la: $(libnetcdf2_la_OBJECTS) $(libnetcdf2_la_DEPENDENCIES) $(EXTRA_libnetcdf2_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(am_libnetcdf2_la_rpath) $(libnetcdf2_la_OBJECTS) $(libnetcdf2_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-datt.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dattget.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dattinq.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dattput.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dcompound.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dcopy.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-ddim.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-ddispatch.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-denum.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-derror.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dfile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dgroup.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dopaque.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dparallel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dstring.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dsubstrate.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dtype.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dutf8proc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dvar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dvarget.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dvarinq.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dvarput.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-dvlen.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-nc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-ncaux.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-ncbytes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-nchashmap.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-nclist.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-nclistmgr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-nclog.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-nctime.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libdispatch_la-ncuri.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf2_la-dv2i.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libdispatch_la-dparallel.lo: dparallel.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dparallel.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dparallel.Tpo -c -o libdispatch_la-dparallel.lo `test -f 'dparallel.c' || echo '$(srcdir)/'`dparallel.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dparallel.Tpo $(DEPDIR)/libdispatch_la-dparallel.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dparallel.c' object='libdispatch_la-dparallel.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dparallel.lo `test -f 'dparallel.c' || echo '$(srcdir)/'`dparallel.c
+
+libdispatch_la-dcopy.lo: dcopy.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dcopy.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dcopy.Tpo -c -o libdispatch_la-dcopy.lo `test -f 'dcopy.c' || echo '$(srcdir)/'`dcopy.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dcopy.Tpo $(DEPDIR)/libdispatch_la-dcopy.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcopy.c' object='libdispatch_la-dcopy.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dcopy.lo `test -f 'dcopy.c' || echo '$(srcdir)/'`dcopy.c
+
+libdispatch_la-dfile.lo: dfile.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dfile.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dfile.Tpo -c -o libdispatch_la-dfile.lo `test -f 'dfile.c' || echo '$(srcdir)/'`dfile.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dfile.Tpo $(DEPDIR)/libdispatch_la-dfile.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dfile.c' object='libdispatch_la-dfile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dfile.lo `test -f 'dfile.c' || echo '$(srcdir)/'`dfile.c
+
+libdispatch_la-ddim.lo: ddim.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ddim.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ddim.Tpo -c -o libdispatch_la-ddim.lo `test -f 'ddim.c' || echo '$(srcdir)/'`ddim.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ddim.Tpo $(DEPDIR)/libdispatch_la-ddim.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ddim.c' object='libdispatch_la-ddim.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ddim.lo `test -f 'ddim.c' || echo '$(srcdir)/'`ddim.c
+
+libdispatch_la-datt.lo: datt.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-datt.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-datt.Tpo -c -o libdispatch_la-datt.lo `test -f 'datt.c' || echo '$(srcdir)/'`datt.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-datt.Tpo $(DEPDIR)/libdispatch_la-datt.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='datt.c' object='libdispatch_la-datt.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-datt.lo `test -f 'datt.c' || echo '$(srcdir)/'`datt.c
+
+libdispatch_la-dattinq.lo: dattinq.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dattinq.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dattinq.Tpo -c -o libdispatch_la-dattinq.lo `test -f 'dattinq.c' || echo '$(srcdir)/'`dattinq.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dattinq.Tpo $(DEPDIR)/libdispatch_la-dattinq.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dattinq.c' object='libdispatch_la-dattinq.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dattinq.lo `test -f 'dattinq.c' || echo '$(srcdir)/'`dattinq.c
+
+libdispatch_la-dattput.lo: dattput.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dattput.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dattput.Tpo -c -o libdispatch_la-dattput.lo `test -f 'dattput.c' || echo '$(srcdir)/'`dattput.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dattput.Tpo $(DEPDIR)/libdispatch_la-dattput.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dattput.c' object='libdispatch_la-dattput.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dattput.lo `test -f 'dattput.c' || echo '$(srcdir)/'`dattput.c
+
+libdispatch_la-dattget.lo: dattget.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dattget.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dattget.Tpo -c -o libdispatch_la-dattget.lo `test -f 'dattget.c' || echo '$(srcdir)/'`dattget.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dattget.Tpo $(DEPDIR)/libdispatch_la-dattget.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dattget.c' object='libdispatch_la-dattget.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dattget.lo `test -f 'dattget.c' || echo '$(srcdir)/'`dattget.c
+
+libdispatch_la-derror.lo: derror.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-derror.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-derror.Tpo -c -o libdispatch_la-derror.lo `test -f 'derror.c' || echo '$(srcdir)/'`derror.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-derror.Tpo $(DEPDIR)/libdispatch_la-derror.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='derror.c' object='libdispatch_la-derror.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-derror.lo `test -f 'derror.c' || echo '$(srcdir)/'`derror.c
+
+libdispatch_la-dvar.lo: dvar.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvar.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvar.Tpo -c -o libdispatch_la-dvar.lo `test -f 'dvar.c' || echo '$(srcdir)/'`dvar.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvar.Tpo $(DEPDIR)/libdispatch_la-dvar.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvar.c' object='libdispatch_la-dvar.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvar.lo `test -f 'dvar.c' || echo '$(srcdir)/'`dvar.c
+
+libdispatch_la-dvarget.lo: dvarget.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvarget.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvarget.Tpo -c -o libdispatch_la-dvarget.lo `test -f 'dvarget.c' || echo '$(srcdir)/'`dvarget.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvarget.Tpo $(DEPDIR)/libdispatch_la-dvarget.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvarget.c' object='libdispatch_la-dvarget.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvarget.lo `test -f 'dvarget.c' || echo '$(srcdir)/'`dvarget.c
+
+libdispatch_la-dvarput.lo: dvarput.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvarput.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvarput.Tpo -c -o libdispatch_la-dvarput.lo `test -f 'dvarput.c' || echo '$(srcdir)/'`dvarput.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvarput.Tpo $(DEPDIR)/libdispatch_la-dvarput.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvarput.c' object='libdispatch_la-dvarput.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvarput.lo `test -f 'dvarput.c' || echo '$(srcdir)/'`dvarput.c
+
+libdispatch_la-dvarinq.lo: dvarinq.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvarinq.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvarinq.Tpo -c -o libdispatch_la-dvarinq.lo `test -f 'dvarinq.c' || echo '$(srcdir)/'`dvarinq.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvarinq.Tpo $(DEPDIR)/libdispatch_la-dvarinq.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvarinq.c' object='libdispatch_la-dvarinq.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvarinq.lo `test -f 'dvarinq.c' || echo '$(srcdir)/'`dvarinq.c
+
+libdispatch_la-ddispatch.lo: ddispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ddispatch.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ddispatch.Tpo -c -o libdispatch_la-ddispatch.lo `test -f 'ddispatch.c' || echo '$(srcdir)/'`ddispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ddispatch.Tpo $(DEPDIR)/libdispatch_la-ddispatch.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ddispatch.c' object='libdispatch_la-ddispatch.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ddispatch.lo `test -f 'ddispatch.c' || echo '$(srcdir)/'`ddispatch.c
+
+libdispatch_la-nclog.lo: nclog.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nclog.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nclog.Tpo -c -o libdispatch_la-nclog.lo `test -f 'nclog.c' || echo '$(srcdir)/'`nclog.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nclog.Tpo $(DEPDIR)/libdispatch_la-nclog.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nclog.c' object='libdispatch_la-nclog.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nclog.lo `test -f 'nclog.c' || echo '$(srcdir)/'`nclog.c
+
+libdispatch_la-dstring.lo: dstring.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dstring.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dstring.Tpo -c -o libdispatch_la-dstring.lo `test -f 'dstring.c' || echo '$(srcdir)/'`dstring.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dstring.Tpo $(DEPDIR)/libdispatch_la-dstring.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dstring.c' object='libdispatch_la-dstring.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dstring.lo `test -f 'dstring.c' || echo '$(srcdir)/'`dstring.c
+
+libdispatch_la-dutf8proc.lo: dutf8proc.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dutf8proc.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dutf8proc.Tpo -c -o libdispatch_la-dutf8proc.lo `test -f 'dutf8proc.c' || echo '$(srcdir)/'`dutf8proc.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dutf8proc.Tpo $(DEPDIR)/libdispatch_la-dutf8proc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dutf8proc.c' object='libdispatch_la-dutf8proc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dutf8proc.lo `test -f 'dutf8proc.c' || echo '$(srcdir)/'`dutf8proc.c
+
+libdispatch_la-ncuri.lo: ncuri.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ncuri.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ncuri.Tpo -c -o libdispatch_la-ncuri.lo `test -f 'ncuri.c' || echo '$(srcdir)/'`ncuri.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ncuri.Tpo $(DEPDIR)/libdispatch_la-ncuri.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncuri.c' object='libdispatch_la-ncuri.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ncuri.lo `test -f 'ncuri.c' || echo '$(srcdir)/'`ncuri.c
+
+libdispatch_la-nclist.lo: nclist.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nclist.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nclist.Tpo -c -o libdispatch_la-nclist.lo `test -f 'nclist.c' || echo '$(srcdir)/'`nclist.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nclist.Tpo $(DEPDIR)/libdispatch_la-nclist.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nclist.c' object='libdispatch_la-nclist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nclist.lo `test -f 'nclist.c' || echo '$(srcdir)/'`nclist.c
+
+libdispatch_la-ncbytes.lo: ncbytes.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ncbytes.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ncbytes.Tpo -c -o libdispatch_la-ncbytes.lo `test -f 'ncbytes.c' || echo '$(srcdir)/'`ncbytes.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ncbytes.Tpo $(DEPDIR)/libdispatch_la-ncbytes.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncbytes.c' object='libdispatch_la-ncbytes.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ncbytes.lo `test -f 'ncbytes.c' || echo '$(srcdir)/'`ncbytes.c
+
+libdispatch_la-nchashmap.lo: nchashmap.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nchashmap.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nchashmap.Tpo -c -o libdispatch_la-nchashmap.lo `test -f 'nchashmap.c' || echo '$(srcdir)/'`nchashmap.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nchashmap.Tpo $(DEPDIR)/libdispatch_la-nchashmap.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nchashmap.c' object='libdispatch_la-nchashmap.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nchashmap.lo `test -f 'nchashmap.c' || echo '$(srcdir)/'`nchashmap.c
+
+libdispatch_la-nctime.lo: nctime.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nctime.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nctime.Tpo -c -o libdispatch_la-nctime.lo `test -f 'nctime.c' || echo '$(srcdir)/'`nctime.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nctime.Tpo $(DEPDIR)/libdispatch_la-nctime.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nctime.c' object='libdispatch_la-nctime.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nctime.lo `test -f 'nctime.c' || echo '$(srcdir)/'`nctime.c
+
+libdispatch_la-dsubstrate.lo: dsubstrate.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dsubstrate.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dsubstrate.Tpo -c -o libdispatch_la-dsubstrate.lo `test -f 'dsubstrate.c' || echo '$(srcdir)/'`dsubstrate.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dsubstrate.Tpo $(DEPDIR)/libdispatch_la-dsubstrate.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dsubstrate.c' object='libdispatch_la-dsubstrate.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dsubstrate.lo `test -f 'dsubstrate.c' || echo '$(srcdir)/'`dsubstrate.c
+
+libdispatch_la-nc.lo: nc.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nc.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nc.Tpo -c -o libdispatch_la-nc.lo `test -f 'nc.c' || echo '$(srcdir)/'`nc.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nc.Tpo $(DEPDIR)/libdispatch_la-nc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc.c' object='libdispatch_la-nc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nc.lo `test -f 'nc.c' || echo '$(srcdir)/'`nc.c
+
+libdispatch_la-nclistmgr.lo: nclistmgr.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-nclistmgr.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-nclistmgr.Tpo -c -o libdispatch_la-nclistmgr.lo `test -f 'nclistmgr.c' || echo '$(srcdir)/'`nclistmgr.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-nclistmgr.Tpo $(DEPDIR)/libdispatch_la-nclistmgr.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nclistmgr.c' object='libdispatch_la-nclistmgr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-nclistmgr.lo `test -f 'nclistmgr.c' || echo '$(srcdir)/'`nclistmgr.c
+
+libdispatch_la-dgroup.lo: dgroup.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dgroup.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dgroup.Tpo -c -o libdispatch_la-dgroup.lo `test -f 'dgroup.c' || echo '$(srcdir)/'`dgroup.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dgroup.Tpo $(DEPDIR)/libdispatch_la-dgroup.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dgroup.c' object='libdispatch_la-dgroup.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dgroup.lo `test -f 'dgroup.c' || echo '$(srcdir)/'`dgroup.c
+
+libdispatch_la-dvlen.lo: dvlen.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dvlen.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dvlen.Tpo -c -o libdispatch_la-dvlen.lo `test -f 'dvlen.c' || echo '$(srcdir)/'`dvlen.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dvlen.Tpo $(DEPDIR)/libdispatch_la-dvlen.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dvlen.c' object='libdispatch_la-dvlen.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dvlen.lo `test -f 'dvlen.c' || echo '$(srcdir)/'`dvlen.c
+
+libdispatch_la-dcompound.lo: dcompound.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dcompound.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dcompound.Tpo -c -o libdispatch_la-dcompound.lo `test -f 'dcompound.c' || echo '$(srcdir)/'`dcompound.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dcompound.Tpo $(DEPDIR)/libdispatch_la-dcompound.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dcompound.c' object='libdispatch_la-dcompound.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dcompound.lo `test -f 'dcompound.c' || echo '$(srcdir)/'`dcompound.c
+
+libdispatch_la-dtype.lo: dtype.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dtype.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dtype.Tpo -c -o libdispatch_la-dtype.lo `test -f 'dtype.c' || echo '$(srcdir)/'`dtype.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dtype.Tpo $(DEPDIR)/libdispatch_la-dtype.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dtype.c' object='libdispatch_la-dtype.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dtype.lo `test -f 'dtype.c' || echo '$(srcdir)/'`dtype.c
+
+libdispatch_la-denum.lo: denum.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-denum.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-denum.Tpo -c -o libdispatch_la-denum.lo `test -f 'denum.c' || echo '$(srcdir)/'`denum.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-denum.Tpo $(DEPDIR)/libdispatch_la-denum.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='denum.c' object='libdispatch_la-denum.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-denum.lo `test -f 'denum.c' || echo '$(srcdir)/'`denum.c
+
+libdispatch_la-dopaque.lo: dopaque.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-dopaque.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-dopaque.Tpo -c -o libdispatch_la-dopaque.lo `test -f 'dopaque.c' || echo '$(srcdir)/'`dopaque.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-dopaque.Tpo $(DEPDIR)/libdispatch_la-dopaque.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dopaque.c' object='libdispatch_la-dopaque.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-dopaque.lo `test -f 'dopaque.c' || echo '$(srcdir)/'`dopaque.c
+
+libdispatch_la-ncaux.lo: ncaux.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdispatch_la-ncaux.lo -MD -MP -MF $(DEPDIR)/libdispatch_la-ncaux.Tpo -c -o libdispatch_la-ncaux.lo `test -f 'ncaux.c' || echo '$(srcdir)/'`ncaux.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdispatch_la-ncaux.Tpo $(DEPDIR)/libdispatch_la-ncaux.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncaux.c' object='libdispatch_la-ncaux.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdispatch_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdispatch_la-ncaux.lo `test -f 'ncaux.c' || echo '$(srcdir)/'`ncaux.c
+
+libnetcdf2_la-dv2i.lo: dv2i.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf2_la-dv2i.lo -MD -MP -MF $(DEPDIR)/libnetcdf2_la-dv2i.Tpo -c -o libnetcdf2_la-dv2i.lo `test -f 'dv2i.c' || echo '$(srcdir)/'`dv2i.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf2_la-dv2i.Tpo $(DEPDIR)/libnetcdf2_la-dv2i.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dv2i.c' object='libnetcdf2_la-dv2i.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf2_la-dv2i.lo `test -f 'dv2i.c' || echo '$(srcdir)/'`dv2i.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Build ncsettings.c as follows:
+# 1. copy ncsettings.hdr to ncsettings.c
+# 2. append libnetcdf.settings to ncsettings.c after
+# processing it as follows:
+# 1. convert tabs and cr to blanks
+# 2. convert embedded double quote (") to escaped form (\").
+# 3. append newline (\n) to each line
+# 4. surround each line with double quotes.
+# 3. finally, add a semicolon to the end of ncsettings.c
+# to complete the string constant.
+
+ncsettings.c: $(top_srcdir)/libnetcdf.settings ncsettings.hdr
+ rm -f ncsettings.c
+ cat ncsettings.hdr > ncsettings.c
+ tr '\t\r' ' ' <${top_srcdir}/libnetcdf.settings | \
+ sed -e 's/"/\\"/g' | \
+ sed -e 's/\(.*\)/\"\1\\n\"/' | \
+ cat >> ncsettings.c
+ echo ';' >> ncsettings.c
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libdispatch/dcopy.c b/libdispatch/dcopy.c
index 0ac019c..3fe25af 100644
--- a/libdispatch/dcopy.c
+++ b/libdispatch/dcopy.c
@@ -371,9 +371,13 @@ nc_copy_var(int ncid_in, int varid_in, int ncid_out)
goto exit;
/* Allocate memory for one record. */
- if (!(data = malloc(reclen * type_size)))
- return NC_ENOMEM;
-
+ if (!(data = malloc(reclen * type_size))) {
+ if(count) free(count);
+ if(dimlen) free(dimlen);
+ if(start) free(start);
+ return NC_ENOMEM;
+ }
+
/* Copy the var data one record at a time. */
for (start[0]=0; !retval && start[0]<(size_t)dimlen[0]; start[0]++)
{
diff --git a/libdispatch/ddim.c b/libdispatch/ddim.c
index 0c3c657..c791664 100644
--- a/libdispatch/ddim.c
+++ b/libdispatch/ddim.c
@@ -1,4 +1,4 @@
-/** \file
+/** \file
Dimension functions
These functions define and inquire about dimensions.
@@ -9,7 +9,7 @@ Research/Unidata. See COPYRIGHT file for more info.
#include "ncdispatch.h"
-/*! \defgroup dimensions Dimensions
+/*! \defgroup dimensions Dimensions
Dimensions are used to define the shape of data in netCDF.
@@ -57,7 +57,7 @@ Operations supported on dimensions are:
- Create a dimension, given its name and length.
- Get a dimension ID from its name.
- Get a dimension's name and length from its ID.
-- Rename a dimension.
+- Rename a dimension.
*/
@@ -68,7 +68,7 @@ Operations supported on dimensions are:
Functions to delete or rename an dimension. */
/*! \{ */ /* All these functions are part of this named group... */
-/*!
+/*!
Define a new dimension. The function nc_def_dim adds a new
dimension to an open netCDF dataset in define mode. It returns (as an
@@ -79,7 +79,7 @@ netCDF dataset. NetCDF-4 datasets may have multiple unlimited
dimensions.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param name Name of the dimension to be created.
@@ -120,8 +120,7 @@ named foo.nc:
\endcode
*/
-int
-nc_def_dim(int ncid, const char *name, size_t len, int *idp)
+int nc_def_dim(int ncid, const char *name, size_t len, int *idp)
{
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
@@ -138,7 +137,7 @@ dimensions defined for a netCDF dataset, each dimension has an ID
between 0 and ndims-1.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param name Name of the dimension.
@@ -165,7 +164,7 @@ The length for the unlimited dimension, if any, is the number of
records written so far.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param dimid Dimension ID, from a previous call to nc_inq_dimid() or
@@ -198,7 +197,7 @@ unlimited dimension for an existing netCDF dataset named foo.nc:
size_t latlength, recs;
char recname[NC_MAX_NAME+1];
...
- status = nc_open("foo.nc", NC_NOWRITE, &ncid);
+ status = nc_open("foo.nc", NC_NOWRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
status = nc_inq_unlimdim(ncid, &recid);
if (status != NC_NOERR) handle_error(status);
@@ -235,7 +234,7 @@ For netCDF-4 files the dataset is switched to define more for the
rename, regardless of the name length.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param dimid Dimension ID, from a previous call to nc_inq_dimid() or
@@ -260,10 +259,10 @@ latitude in an existing netCDF dataset named foo.nc:
...
int status, ncid, latid;
...
- status = nc_open("foo.nc", NC_WRITE, &ncid);
+ status = nc_open("foo.nc", NC_WRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
...
- status = nc_redef(ncid);
+ status = nc_redef(ncid);
if (status != NC_NOERR) handle_error(status);
status = nc_inq_dimid(ncid, "lat", &latid);
if (status != NC_NOERR) handle_error(status);
@@ -293,7 +292,7 @@ netCDF-4/HDF5 file, dimensions are in all sub-groups, sub-sub-groups,
etc.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param ndimsp Pointer where number of dimensions will be
@@ -322,7 +321,7 @@ dimension), the ID of the first unlimited dimesnion is returned. For
these files, nc_inq_unlimdims() will return all the unlimited dimension IDs.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param unlimdimidp Pointer where unlimited dimension ID will be
@@ -346,7 +345,7 @@ nc_inq_unlimdim(int ncid, int *unlimdimidp)
Find out the name of a dimension.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param dimid Dimension ID, from a previous call to nc_inq_dimid() or
@@ -378,7 +377,7 @@ unlimited dimension for an existing netCDF dataset named foo.nc:
...
status = nc_open("foo.nc", NC_NOWRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
- status = nc_inq_unlimdim(ncid, &recid);
+ status = nc_inq_unlimdim(ncid, &recid);
if (status != NC_NOERR) handle_error(status);
...
status = nc_inq_dimid(ncid, "lat", &latid);
@@ -408,7 +407,7 @@ The length for the unlimited dimension, if any, is the number of
records written so far.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param dimid Dimension ID, from a previous call to nc_inq_dimid() or
@@ -435,12 +434,12 @@ unlimited dimension for an existing netCDF dataset named foo.nc:
...
status = nc_open("foo.nc", NC_NOWRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
- status = nc_inq_unlimdim(ncid, &recid);
+ status = nc_inq_unlimdim(ncid, &recid);
if (status != NC_NOERR) handle_error(status);
...
- status = nc_inq_dimid(ncid, "lat", &latid);
+ status = nc_inq_dimid(ncid, "lat", &latid);
if (status != NC_NOERR) handle_error(status);
- status = nc_inq_dimlen(ncid, latid, &latlength);
+ status = nc_inq_dimlen(ncid, latid, &latlength);
if (status != NC_NOERR) handle_error(status);
status = nc_inq_dim(ncid, recid, recname, &recs);
diff --git a/libdispatch/ddispatch.c b/libdispatch/ddispatch.c
index 8989190..c808212 100644
--- a/libdispatch/ddispatch.c
+++ b/libdispatch/ddispatch.c
@@ -1,6 +1,8 @@
#include "ncdispatch.h"
#include "ncuri.h"
+#define MAXSERVERURL 4096
+
extern int NCSUBSTRATE_intialize(void);
/* Define vectors of zeros and ones for use with various nc_get_varX function*/
@@ -26,11 +28,11 @@ static struct NCPROTOCOLLIST {
{NULL,NULL,0} /* Terminate search */
};
-/* Define the server to ping in order;
+/* Define the default servers to ping in order;
make the order attempt to optimize
against future changes.
*/
-static const char* servers[] = {
+static const char* default_servers[] = {
"http://remotetest.unidata.ucar.edu",
NULL
};
@@ -56,27 +58,39 @@ NCDISPATCH_initialize(void)
}
/* search list of servers and return first that succeeds when
- concatenated with the specified path part
+ concatenated with the specified path part.
+ Search list can be prefixed by the second argument.
*/
-const char*
-NC_findtestserver(const char* path)
+char*
+NC_findtestserver(const char* path, const char** servers)
{
#ifdef USE_DAP
#ifdef ENABLE_DAP_REMOTE_TESTS
/* NCDAP_ping is defined in libdap2/ncdap.c */
const char** svc;
+ int stat;
+ char* url = (char*)malloc(MAXSERVERURL);
+
if(path == NULL) path = "";
- for(svc=servers;*svc != NULL;svc++) {
- int stat;
- char url[4096];
- snprintf(url,sizeof(url),"%s%s%s",
- *svc,
- (path[0] == '/' ? "" : "/"),
- path);
- stat = NCDAP_ping(url);
- if(stat == NC_NOERR)
- return *svc;
+ if(strlen(path) > 0 && path[0] == '/')
+ path++;
+
+ if(servers != NULL) {
+ for(svc=servers;*svc != NULL;svc++) {
+ snprintf(url,MAXSERVERURL,"%s/%s",*svc,path);
+ stat = NCDAP_ping(url);
+ if(stat == NC_NOERR)
+ return url;
+ }
+ }
+ /* not found in user supplied list; try defaults */
+ for(svc=default_servers;*svc != NULL;svc++) {
+ snprintf(url,MAXSERVERURL,"%s/%s",*svc,path);
+ stat = NCDAP_ping(url);
+ if(stat == NC_NOERR)
+ return url;
}
+ if(url) free(url);
#endif
#endif
return NULL;
@@ -108,7 +122,7 @@ NC_testurl(const char* path)
if(strcmp(tmpurl->protocol,protolist->protocol) == 0) {
isurl=1;
break;
- }
+ }
}
ncurifree(tmpurl);
return isurl;
@@ -143,18 +157,17 @@ NC_urlmodel(const char* path)
}
if(model == 0) {
- /* Now look at the protocol */
for(protolist=ncprotolist;protolist->protocol;protolist++) {
if(strcmp(tmpurl->protocol,protolist->protocol) == 0) {
model |= protolist->modelflags;
if(protolist->substitute) {
- if(tmpurl->protocol) free(tmpurl->protocol);
+ free(tmpurl->protocol);
tmpurl->protocol = strdup(protolist->substitute);
}
- break;
+ break;
}
}
- }
+ }
/* Force NC_DISPATCH_NC3 if necessary */
if((model & NC_DISPATCH_NC4) == 0)
diff --git a/libdispatch/defcheck.c b/libdispatch/defcheck.c
index 7d22075..9d92822 100644
--- a/libdispatch/defcheck.c
+++ b/libdispatch/defcheck.c
@@ -4,7 +4,7 @@
#include <string.h>
#include <netcdf.h>
-#define URL "http://remotetest.unidata.ucar.edu/dts/test.02"
+#define URL "http://%s/dts/test.02"
#define VAR "i32"
#define ERRCODE 2
@@ -21,8 +21,16 @@ main()
size_t start[1];
size_t count[1];
int ok = 1;
+ char url[1024];
- if ((retval = nc_open(URL, 0, &ncid)))
+ {
+ char* evv = getenv("REMOTETESTSERVER");
+ if(evv == NULL)
+ evv = "remotetest.unidata.ucar.edu";
+ snprintf(url,sizeof(url),URL,evv);
+ }
+
+ if ((retval = nc_open(url, 0, &ncid)))
ERR(retval);
if ((retval = nc_inq_varid(ncid, VAR, &varid)))
ERR(retval);
diff --git a/libdispatch/derror.c b/libdispatch/derror.c
index bf5e011..1180cdf 100644
--- a/libdispatch/derror.c
+++ b/libdispatch/derror.c
@@ -13,10 +13,12 @@ Research/Unidata. See COPYRIGHT file for more info.
static const char nc_libvers[] = PACKAGE_VERSION " of "__DATE__" "__TIME__" $";
/**
-\ingroup lib_version
-Return the library version.
+\defgroup lib_version Library Version
+ Functions related to querying the library version.
-\returns short string that contains the version information for the
+ Return the library version.
+
+ \returns short string that contains the version information for the
library.
*/
const char *
@@ -25,9 +27,11 @@ nc_inq_libvers(void)
return nc_libvers;
}
-/** \addtogroup error NetCDF Error Handling
+/*! NetCDF Error Handling
+
+\addtogroup error NetCDF Error Handling
-NetCDF functions non-zero status codes on error.
+NetCDF functions return a non-zero status codes on error.
Each netCDF function returns an integer status value. If the returned
status value indicates an error, you may handle it in any way desired,
@@ -48,10 +52,11 @@ 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.
- */
+*/
-/*! Given an error number, return an error message.
-\addtogroup error
+/** \{ */
+
+/*! Given an error number, return an error message.
This function returns a static reference to an error message string
corresponding to an integer netCDF error status or to a system error
@@ -62,10 +67,8 @@ function. The error codes are defined in netcdf.h.
\returns short string containing error message.
-\section handle_error_example nc_strerror Example
-
Here is an example of a simple error handling function that uses
-nc_strerror to print the error message corresponding to the netCDF
+nc_strerror() to print the error message corresponding to the netCDF
error status returned from any netCDF function call and then exit:
\code
@@ -79,8 +82,7 @@ error status returned from any netCDF function call and then exit:
}
\endcode
*/
-const char *
-nc_strerror(int ncerr1)
+const char *nc_strerror(int ncerr1)
{
/* System error? */
if(NC_ISSYSERR(ncerr1))
@@ -190,6 +192,8 @@ nc_strerror(int ncerr1)
return "NetCDF: Authorization failure";
case NC_ENOTFOUND:
return "NetCDF: file not found";
+ case NC_ECANTEXTEND:
+ return "NetCDF: Attempt to extend dataset during NC_INDEPENDENT I/O operation. Use nc_var_par_access to set mode NC_COLLECTIVE before extending variable.";
case NC_ECANTREMOVE:
return "NetCDF: cannot delete file";
case NC_EHDFERR:
@@ -202,7 +206,7 @@ nc_strerror(int ncerr1)
return "NetCDF: Can't create file";
case NC_EFILEMETA:
return "NetCDF: Can't add HDF5 file metadata";
- case NC_EDIMMETA:
+ case NC_EDIMMETA:
return "NetCDF: Can't define dimensional metadata";
case NC_EATTMETA:
return "NetCDF: Can't open HDF5 attribute";
@@ -256,4 +260,4 @@ nc_strerror(int ncerr1)
}
}
-
+/** \} */
diff --git a/libdispatch/dfile.c b/libdispatch/dfile.c
index 1eb55d8..a0b2c8b 100644
--- a/libdispatch/dfile.c
+++ b/libdispatch/dfile.c
@@ -24,17 +24,6 @@ Research/Unidata. See COPYRIGHT file for more info.
#endif
#include "ncdispatch.h"
-/* Define an enum over the possible set of
- File Types
-*/
-enum FileType {
-FT_UNKNOWN,
-FT_HDF,
-FT_NC,
-FT_PNETCDF
-};
-
-
static int nc_initialized = 0;
/** \defgroup datasets NetCDF Files
@@ -90,11 +79,12 @@ nc_local_initialize(void)
static int
NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
- enum FileType* filetype, int* version)
+ int* model, int* version)
{
char magic[MAGIC_NUMBER_LEN];
+ int status = NC_NOERR;
- *filetype = FT_UNKNOWN;
+ *model = 0;
/* Get the 4-byte magic from the beginning of the file. Don't use posix
* for parallel, use the MPI functions instead. */
@@ -102,7 +92,7 @@ NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
if (use_parallel)
{
MPI_File fh;
- MPI_Status status;
+ MPI_Status mstatus;
int retval;
MPI_Comm comm = MPI_COMM_WORLD;
MPI_Info info = MPI_INFO_NULL;
@@ -113,12 +103,12 @@ NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
}
if((retval = MPI_File_open(comm, (char *)path, MPI_MODE_RDONLY,info,
&fh)) != MPI_SUCCESS)
- return NC_EPARINIT;
+ {status = NC_EPARINIT; goto done;}
if((retval = MPI_File_read(fh, magic, MAGIC_NUMBER_LEN, MPI_CHAR,
- &status)) != MPI_SUCCESS)
- return NC_EPARINIT;
+ &mstatus)) != MPI_SUCCESS)
+ {status = NC_EPARINIT; goto done;}
if((retval = MPI_File_close(&fh)) != MPI_SUCCESS)
- return NC_EPARINIT;
+ {status = NC_EPARINIT; goto done;}
} else
#endif /* USE_PARALLEL */
{
@@ -129,10 +119,10 @@ NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
#endif
if(path == NULL || strlen(path)==0)
- return NC_EINVAL;
+ {status = NC_EINVAL; goto done;}
if (!(fp = fopen(path, "r")))
- return errno;
+ {status = errno; goto done;}
#ifdef HAVE_SYS_STAT_H
/* The file must be at least MAGIC_NUMBER_LEN in size,
@@ -140,47 +130,56 @@ NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
behavior. */
if(!(fstat(fileno(fp),&st) == 0)) {
fclose(fp);
- return errno;
+ status = errno;
+ goto done;
}
if(st.st_size < MAGIC_NUMBER_LEN) {
fclose(fp);
- return NC_ENOTNC;
+ status = NC_ENOTNC;
+ goto done;
}
#endif
-
i = fread(magic, MAGIC_NUMBER_LEN, 1, fp);
fclose(fp);
- if(i == 0)
- return NC_ENOTNC;
+ if(i == 0)
+ {status = NC_ENOTNC; goto done;}
if(i != 1)
- return errno;
+ {status = errno; goto done;}
}
/* Look at the magic number */
/* Ignore the first byte for HDF */
+#ifdef USE_NETCDF4
if(magic[1] == 'H' && magic[2] == 'D' && magic[3] == 'F') {
- *filetype = FT_HDF;
+ *model = NC_DISPATCH_NC4;
*version = 5;
+#ifdef USE_HDF4
} else if(magic[0] == '\016' && magic[1] == '\003'
&& magic[2] == '\023' && magic[3] == '\001') {
- *filetype = FT_HDF;
+ *model = NC_DISPATCH_NC4;
*version = 4;
- } else if(magic[0] == 'C' && magic[1] == 'D' && magic[2] == 'F') {
- *filetype = FT_NC;
- if(magic[3] == '\001')
+#endif
+ } else
+#endif
+ if(magic[0] == 'C' && magic[1] == 'D' && magic[2] == 'F') {
+ if(magic[3] == '\001')
*version = 1; /* netcdf classic version 1 */
- else if(magic[3] == '\002')
+ else if(magic[3] == '\002')
*version = 2; /* netcdf classic version 2 */
- else if(magic[3] == '\005') {
- *filetype = FT_PNETCDF;
+#ifdef USE_PNETCDF
+ else if(magic[3] == '\005')
*version = 5; /* pnetcdf file */
- } else
- return NC_ENOTNC;
+#endif
+ else
+ {status = NC_ENOTNC; goto done;}
+ *model = (use_parallel || *version == 5)?NC_DISPATCH_NC5:NC_DISPATCH_NC3;
} else
- return NC_ENOTNC;
- return NC_NOERR;
+ {status = NC_ENOTNC; goto done;}
+
+done:
+ return status;
}
/** \ingroup datasets
@@ -1534,11 +1533,17 @@ NC_create(const char *path, int cmode, size_t initialsz,
/* Look to the incoming cmode for hints */
if(model == 0) {
+#ifdef USE_NETCDF4
if(cmode & NC_NETCDF4)
model = NC_DISPATCH_NC4;
- else if(cmode & NC_PNETCDF)
+ else
+#endif
+#ifdef USE_PNETCDF
+ if(cmode & NC_PNETCDF)
model = NC_DISPATCH_NC5;
- else if(cmode & NC_CLASSIC_MODEL)
+ else
+#endif
+ if(cmode & NC_CLASSIC_MODEL)
model = NC_DISPATCH_NC3;
}
@@ -1655,7 +1660,6 @@ NC_open(const char *path, int cmode,
int model = 0;
int isurl = 0;
int version = 0;
- enum FileType filetype = FT_UNKNOWN;
if(!nc_initialized) {
stat = NC_initialize();
@@ -1679,38 +1683,32 @@ NC_open(const char *path, int cmode,
if(isurl)
model = NC_urlmodel(path);
else {
- filetype = FT_UNKNOWN;
version = 0;
model = 0;
/* Look at the file if it exists */
stat = NC_check_file_type(path,useparallel,mpi_info,
- &filetype,&version);
+ &model,&version);
if(stat == NC_NOERR) {
- switch (filetype) {
- case FT_NC:
- if(version == 1 || version == 2)
- model = NC_DISPATCH_NC3;
- break;
- case FT_HDF:
- model = NC_DISPATCH_NC4;
- break;
- case FT_PNETCDF:
- model = NC_DISPATCH_NC5;
- break;
- default:
+ if(model == 0)
return NC_ENOTNC;
- }
} else /* presumably not a netcdf file */
return stat;
}
- /* Look to the incoming cmode for hints */
+#if 1
if(model == 0) {
- if(cmode & NC_PNETCDF) model |= NC_DISPATCH_NC5;
- else if(cmode & NC_NETCDF4) model |= NC_DISPATCH_NC4;
+ fprintf(stderr,"Model != 0\n");
+ return NC_ENOTNC;
}
-
+#else
+Not longer needed
+ /* Look to the incoming cmode for hints */
+ if(model == 0) {
+ if(cmode & NC_PNETCDF) model = NC_DISPATCH_NC5;
+ else if(cmode & NC_NETCDF4) model = NC_DISPATCH_NC4;
+ }
if(model == 0) model = NC_DISPATCH_NC3; /* final default */
+#endif
/* Force flag consistentcy */
if(model & NC_DISPATCH_NC4)
@@ -1719,7 +1717,12 @@ NC_open(const char *path, int cmode,
cmode &= ~NC_NETCDF4; /* must be netcdf-3 */
if(version == 2) cmode |= NC_64BIT_OFFSET;
} else if(model & NC_DISPATCH_NC5) {
+#if 0
+It appears that pnetcdf can read NC_64_BIT_OFFSET
cmode &= ~(NC_NETCDF4 | NC_64BIT_OFFSET); /* must be pnetcdf */
+#else
+ cmode &= ~(NC_NETCDF4);
+#endif
cmode |= NC_PNETCDF;
}
diff --git a/libdispatch/dgroup.c b/libdispatch/dgroup.c
index 412e72c..c93b854 100644
--- a/libdispatch/dgroup.c
+++ b/libdispatch/dgroup.c
@@ -2,43 +2,10 @@
Functions for netCDF-4 features.
Copyright 2010 University Corporation for Atmospheric
-Research/Unidata. See \ref COPYRIGHT file for more info. */
+Research/Unidata. See \ref copyright file for more info. */
#include "ncdispatch.h"
-/** \defgroup user_types User-Defined Types
-
-User defined types allow for more complex data structures.
-
-NetCDF-4 has added support for four different user defined data
-types. User defined type may only be used in files created with the
-::NC_NETCDF4 and without ::NC_CLASSIC_MODEL.
-- compound type: like a C struct, a compound type is a collection of
-types, including other user defined types, in one package.
-- variable length array type: used to store ragged arrays.
-- opaque type: This type has only a size per element, and no other
- type information.
-- enum type: Like an enumeration in C, this type lets you assign text
- values to integer values, and store the integer values.
-
-Users may construct user defined type with the various nc_def_*
-functions described in this section. They may learn about user defined
-types by using the nc_inq_ functions defined in this section.
-
-Once types are constructed, define variables of the new type with
-nc_def_var (see nc_def_var). Write to them with nc_put_var1,
-nc_put_var, nc_put_vara, or nc_put_vars. Read data of user-defined
-type with nc_get_var1, nc_get_var, nc_get_vara, or nc_get_vars (see
-\ref variables).
-
-Create attributes of the new type with nc_put_att (see nc_put_att_
-type). Read attributes of the new type with nc_get_att (see
-\ref attributes).
-*/
-/** \{ */
-
-/** \} */
-
/** \defgroup groups Groups
NetCDF-4 added support for hierarchical groups within netCDF datasets.
@@ -73,9 +40,9 @@ than 32767. Similarly, the number of simultaneously open netCDF-4
files in one program context is limited to 32767.
*/
-/** \{ */
-int
-nc_inq_ncid(int ncid, const char *name, int *grp_ncid)
+/** \{ */
+
+int nc_inq_ncid(int ncid, const char *name, int *grp_ncid)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -83,8 +50,7 @@ nc_inq_ncid(int ncid, const char *name, int *grp_ncid)
return ncp->dispatch->inq_ncid(ncid,name,grp_ncid);
}
-int
-nc_inq_grps(int ncid, int *numgrps, int *ncids)
+int nc_inq_grps(int ncid, int *numgrps, int *ncids)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -92,8 +58,7 @@ nc_inq_grps(int ncid, int *numgrps, int *ncids)
return ncp->dispatch->inq_grps(ncid,numgrps,ncids);
}
-int
-nc_inq_grpname(int ncid, char *name)
+int nc_inq_grpname(int ncid, char *name)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -101,8 +66,7 @@ nc_inq_grpname(int ncid, char *name)
return ncp->dispatch->inq_grpname(ncid,name);
}
-int
-nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name)
+int nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -110,15 +74,13 @@ nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name)
return ncp->dispatch->inq_grpname_full(ncid,lenp,full_name);
}
-int
-nc_inq_grpname_len(int ncid, size_t *lenp)
+int nc_inq_grpname_len(int ncid, size_t *lenp)
{
- int stat = nc_inq_grpname_full(ncid,lenp,NULL);
+ int stat = nc_inq_grpname_full(ncid,lenp,NULL);
return stat;
}
-int
-nc_inq_grp_parent(int ncid, int *parent_ncid)
+int nc_inq_grp_parent(int ncid, int *parent_ncid)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -126,15 +88,15 @@ nc_inq_grp_parent(int ncid, int *parent_ncid)
return ncp->dispatch->inq_grp_parent(ncid,parent_ncid);
}
-/* This has same semantics as nc_inq_ncid */
-int
-nc_inq_grp_ncid(int ncid, const char *grp_name, int *grp_ncid)
+/*! This has same semantics as nc_inq_ncid
+
+*/
+int nc_inq_grp_ncid(int ncid, const char *grp_name, int *grp_ncid)
{
- return nc_inq_ncid(ncid,grp_name,grp_ncid);
+ return nc_inq_ncid(ncid,grp_name,grp_ncid);
}
-int
-nc_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid)
+int nc_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -142,8 +104,7 @@ nc_inq_grp_full_ncid(int ncid, const char *full_name, int *grp_ncid)
return ncp->dispatch->inq_grp_full_ncid(ncid,full_name,grp_ncid);
}
-int
-nc_inq_varids(int ncid, int *nvars, int *varids)
+int nc_inq_varids(int ncid, int *nvars, int *varids)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -151,8 +112,7 @@ nc_inq_varids(int ncid, int *nvars, int *varids)
return ncp->dispatch->inq_varids(ncid,nvars,varids);
}
-int
-nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents)
+int nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -160,8 +120,7 @@ nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents)
return ncp->dispatch->inq_dimids(ncid,ndims,dimids,include_parents);
}
-int
-nc_inq_typeids(int ncid, int *ntypes, int *typeids)
+int nc_inq_typeids(int ncid, int *ntypes, int *typeids)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -169,8 +128,7 @@ nc_inq_typeids(int ncid, int *ntypes, int *typeids)
return ncp->dispatch->inq_typeids(ncid,ntypes,typeids);
}
-int
-nc_def_grp(int parent_ncid, const char *name, int *new_ncid)
+int nc_def_grp(int parent_ncid, const char *name, int *new_ncid)
{
NC* ncp;
int stat = NC_check_id(parent_ncid,&ncp);
@@ -178,8 +136,7 @@ nc_def_grp(int parent_ncid, const char *name, int *new_ncid)
return ncp->dispatch->def_grp(parent_ncid,name,new_ncid);
}
-int
-nc_rename_grp(int grpid, const char *name)
+int nc_rename_grp(int grpid, const char *name)
{
NC* ncp;
int stat = NC_check_id(grpid,&ncp);
@@ -187,8 +144,7 @@ nc_rename_grp(int grpid, const char *name)
return ncp->dispatch->rename_grp(grpid,name);
}
-int
-nc_show_metadata(int ncid)
+int nc_show_metadata(int ncid)
{
NC* ncp;
int stat = NC_check_id(ncid,&ncp);
@@ -196,4 +152,4 @@ nc_show_metadata(int ncid)
return ncp->dispatch->show_metadata(ncid);
}
-/** \} */
+/** \} */
diff --git a/libdispatch/dtype.c b/libdispatch/dtype.c
index 3594867..a4eaa75 100644
--- a/libdispatch/dtype.c
+++ b/libdispatch/dtype.c
@@ -6,6 +6,39 @@
#include "ncdispatch.h"
+/** \defgroup user_types User-Defined Types
+
+User defined types allow for more complex data structures.
+
+NetCDF-4 has added support for four different user defined data
+types. User defined type may only be used in files created with the
+::NC_NETCDF4 and without ::NC_CLASSIC_MODEL.
+- compound type: like a C struct, a compound type is a collection of
+types, including other user defined types, in one package.
+- variable length array type: used to store ragged arrays.
+- opaque type: This type has only a size per element, and no other
+ type information.
+- enum type: Like an enumeration in C, this type lets you assign text
+ values to integer values, and store the integer values.
+
+Users may construct user defined type with the various nc_def_*
+functions described in this section. They may learn about user defined
+types by using the nc_inq_ functions defined in this section.
+
+Once types are constructed, define variables of the new type with
+nc_def_var (see nc_def_var). Write to them with nc_put_var1,
+nc_put_var, nc_put_vara, or nc_put_vars. Read data of user-defined
+type with nc_get_var1, nc_get_var, nc_get_vara, or nc_get_vars (see
+\ref variables).
+
+Create attributes of the new type with nc_put_att (see nc_put_att_
+type). Read attributes of the new type with nc_get_att (see
+\ref attributes).
+*/
+
+/** \{ */
+
+
/** \internal
\ingroup user_types
Learn if two types are equal
@@ -24,7 +57,7 @@ the two types are equal, a zero if they are not equal.
\returns ::NC_EHDFERR An error was reported by the HDF5 layer.
*/
int
-nc_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
+nc_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
nc_type typeid2, int *equal)
{
NC* ncp1;
@@ -38,7 +71,7 @@ nc_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
Functions to learn about any kind of user-defined type. */
/*! \{ */ /* All these functions are part of this named group... */
-/** \ingroup user_types
+/** \ingroup user_types
Find a type by name. Given a group ID and a type name, find the ID of
the type. If the type is not found in the group, then the parents are
@@ -99,7 +132,7 @@ compound types. \ref ignored_if_null.
\returns ::NC_EHDFERR An error was reported by the HDF5 layer.
*/
int
-nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size,
+nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size,
nc_type *base_nc_typep, size_t *nfieldsp, int *classp)
{
NC *ncp;
@@ -109,3 +142,5 @@ nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t *size,
base_nc_typep, nfieldsp, classp);
}
/*! \} */ /* End of named group ...*/
+
+/** \} */
diff --git a/libdispatch/dv2i.c b/libdispatch/dv2i.c
index 10c8bd2..48e83d9 100644
--- a/libdispatch/dv2i.c
+++ b/libdispatch/dv2i.c
@@ -247,7 +247,6 @@ nc_inq_rec(
if(status != NC_NOERR)
return status;
- *nrecvarsp = 0;
if (recdimid == -1)
return NC_NOERR;
@@ -257,6 +256,7 @@ nc_inq_rec(
if (nrecvarsp != NULL)
*nrecvarsp = (size_t)nrvars;
+
if (recvarids != NULL)
for (varid = 0; varid < nrvars; varid++)
recvarids[varid] = rvarids[varid];
diff --git a/libdispatch/dvarget.c b/libdispatch/dvarget.c
index e967160..cd0e832 100644
--- a/libdispatch/dvarget.c
+++ b/libdispatch/dvarget.c
@@ -2,12 +2,18 @@
Functions for getting data from variables.
Copyright 2011 University Corporation for Atmospheric
-Research/Unidata. See \ref COPYRIGHT file for more info. */
+Research/Unidata. See \ref copyright file for more info.
+
+*/
#include "ncdispatch.h"
#undef VARS_USES_VARM
#ifndef VARS_USES_VARM
+
+/*! \internal
+
+ */
struct GETodometer {
int rank;
size_t index[NC_MAX_VAR_DIMS];
@@ -17,6 +23,10 @@ struct GETodometer {
size_t stop[NC_MAX_VAR_DIMS];
};
+
+/** \internal
+
+ */
static void
odom_init(struct GETodometer* odom,
int rank,
@@ -32,15 +42,21 @@ odom_init(struct GETodometer* odom,
odom->stride[i] = (stride != NULL ? stride[i] : 1);
odom->stop[i] = odom->start[i] + (odom->edges[i]*((size_t)odom->stride[i]));
odom->index[i] = odom->start[i];
- }
+ }
}
+/** \internal
+
+ */
static int
odom_more(struct GETodometer* odom)
{
return (odom->index[0] < odom->stop[0]);
}
+/** \internal
+
+ */
static int
odom_next(struct GETodometer* odom)
{
@@ -57,7 +73,7 @@ odom_next(struct GETodometer* odom)
#endif
/** \internal
-\ingroup variables
+\ingroup variables
*/
int
@@ -75,7 +91,7 @@ NC_get_vara(int ncid, int varid,
if(edges == NULL) {
size_t shape[NC_MAX_VAR_DIMS];
int ndims;
- stat = nc_inq_varndims(ncid, varid, &ndims);
+ stat = nc_inq_varndims(ncid, varid, &ndims);
if(stat != NC_NOERR) return stat;
stat = NC_getshape(ncid,varid,ndims,shape);
if(stat != NC_NOERR) return stat;
@@ -85,7 +101,7 @@ NC_get_vara(int ncid, int varid,
return stat;
}
-/** \ingroup variables
+/** \ingroup variables
\internal
*/
static int
@@ -101,7 +117,7 @@ NC_get_var(int ncid, int varid, void *value, nc_type memtype)
}
/** \internal
-\ingroup variables
+\ingroup variables
Most dispatch tables will use the default procedures
*/
int
@@ -117,7 +133,7 @@ NCDEFAULT_get_vars(int ncid, int varid, const size_t * start,
return ncp->dispatch->get_varm(ncid,varid,start,edges,stride,NULL,value0,memtype);
#else
/* Rebuilt get_vars code to simplify and avoid use of get_varm */
-
+
int status = NC_NOERR;
int i,simplestride,isrecvar;
int rank;
@@ -137,7 +153,7 @@ NCDEFAULT_get_vars(int ncid, int varid, const size_t * start,
status = NC_check_id (ncid, &ncp);
if(status != NC_NOERR) return status;
- status = nc_inq_vartype(ncid, varid, &vartype);
+ status = nc_inq_vartype(ncid, varid, &vartype);
if(status != NC_NOERR) return status;
if(memtype == NC_NAT) memtype = vartype;
@@ -163,12 +179,12 @@ NCDEFAULT_get_vars(int ncid, int varid, const size_t * start,
}
/* Get the variable rank */
- status = nc_inq_varndims(ncid, varid, &rank);
+ status = nc_inq_varndims(ncid, varid, &rank);
if(status != NC_NOERR) return status;
/* Get variable dimension sizes */
isrecvar = NC_is_recvar(ncid,varid,&numrecs);
- NC_getshape(ncid,varid,rank,varshape);
+ NC_getshape(ncid,varid,rank,varshape);
/* Optimize out using various checks */
if (rank == 0) {
@@ -200,15 +216,13 @@ NCDEFAULT_get_vars(int ncid, int varid, const size_t * start,
/* cast needed for braindead systems with signed size_t */
|| ((unsigned long) mystride[i] >= X_INT_MAX))
return NC_ESTRIDE;
- if(mystride[i] != 1) simplestride = 0;
+ if(mystride[i] != 1) simplestride = 0;
/* illegal value checks */
dimlen = (i == 0 && isrecvar ? numrecs : varshape[i]);
- /* mystart is unsigned, never < 0 */
- //if(mystart[i] < 0 || mystart[i] >= dimlen)
+ /* mystart is unsigned, never < 0 */
if(mystart[i] >= dimlen)
return NC_EINVALCOORDS;
/* myedges is unsigned, never < 0 */
- //if(myedges[i] < 0 || (mystart[i] + myedges[i] > dimlen))
if(mystart[i] + myedges[i] > dimlen)
return NC_EEDGE;
}
@@ -241,17 +255,17 @@ NCDEFAULT_get_vars(int ncid, int varid, const size_t * start,
}
/** \internal
-\ingroup variables
+\ingroup variables
*/
static int
-NC_get_var1(int ncid, int varid, const size_t *coord, void* value,
+NC_get_var1(int ncid, int varid, const size_t *coord, void* value,
nc_type memtype)
{
return NC_get_vara(ncid, varid, coord, NC_coord_one, value, memtype);
}
/** \internal
-\ingroup variables
+\ingroup variables
*/
int
NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
@@ -273,13 +287,13 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
if(NC_indef(ncp)) return NC_EINDEFINE;
*/
- status = nc_inq_vartype(ncid, varid, &vartype);
+ status = nc_inq_vartype(ncid, varid, &vartype);
if(status != NC_NOERR) return status;
/* Check that this is an atomic type */
if(vartype > NC_MAX_ATOMIC_TYPE)
return NC_EMAPTYPE;
- status = nc_inq_varndims(ncid, varid, &varndims);
+ status = nc_inq_varndims(ncid, varid, &varndims);
if(status != NC_NOERR) return status;
if(memtype == NC_NAT) {
@@ -303,7 +317,7 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
if(memtype == NC_CHAR && vartype != NC_CHAR)
return NC_ECHAR;
- else if(memtype != NC_CHAR && vartype == NC_CHAR)
+ else if(memtype != NC_CHAR && vartype == NC_CHAR)
return NC_ECHAR;
memtypelen = nctypelen(memtype);
@@ -340,7 +354,7 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
/* Compute some dimension related values */
isrecvar = NC_is_recvar(ncid,varid,&numrecs);
- NC_getshape(ncid,varid,varndims,varshape);
+ NC_getshape(ncid,varid,varndims,varshape);
/*
* Verify stride argument; also see if stride is all ones
@@ -357,7 +371,7 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
}
if(stride[idim] != 1) stride1 = 0;
}
- /* If stride1 is true, and there is no imap
+ /* If stride1 is true, and there is no imap
then call get_vara directly.
*/
if(stride1 && imapp == NULL) {
@@ -422,7 +436,7 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
else if (idim == maxidim)
mymap[idim] = 1;
else
- mymap[idim] =
+ mymap[idim] =
mymap[idim + 1] * (ptrdiff_t) myedges[idim + 1];
#endif
iocount[idim] = 1;
@@ -435,7 +449,7 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
*/
for (idim = maxidim; idim >= 0; --idim)
{
- size_t dimlen =
+ size_t dimlen =
idim == 0 && isrecvar
? numrecs
: varshape[idim];
@@ -456,7 +470,7 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
/* Lower body */
/*
- * As an optimization, adjust I/O parameters when the fastest
+ * As an optimization, adjust I/O parameters when the fastest
* dimension has unity stride both externally and internally.
* In this case, the user could have called a simpler routine
* (i.e. ncvar$1()
@@ -469,7 +483,7 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
mymap[maxidim] = (ptrdiff_t) length[maxidim];
}
- /*
+ /*
* Perform I/O. Exit when done.
*/
for (;;)
@@ -507,11 +521,11 @@ NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
return status;
}
-/** \ingroup variables
+/** \ingroup variables
\internal
Called by externally visible nc_get_vars_xxx routines */
static int
-NC_get_vars(int ncid, int varid, const size_t *start,
+NC_get_vars(int ncid, int varid, const size_t *start,
const size_t *edges, const ptrdiff_t *stride, void *value,
nc_type memtype)
{
@@ -525,12 +539,12 @@ NC_get_vars(int ncid, int varid, const size_t *start,
return ncp->dispatch->get_vars(ncid,varid,start,edges,stride,value,memtype);
}
-/** \ingroup variables
+/** \ingroup variables
\internal
-Called by externally visible nc_get_varm_xxx routines
+Called by externally visible nc_get_varm_xxx routines
*/
static int
-NC_get_varm(int ncid, int varid, const size_t *start,
+NC_get_varm(int ncid, int varid, const size_t *start,
const size_t *edges, const ptrdiff_t *stride, const ptrdiff_t* map,
void *value, nc_type memtype)
{
@@ -550,10 +564,10 @@ Functions to read data from variables. */
/*! \{ */ /* All these functions are part of this named group... */
/** \ingroup variables
-Read an array of values from a variable.
+Read an array of values from a variable.
The array to be read is specified by giving a corner and a vector of
-edge lengths to \ref specify_hyperslab.
+edge lengths to \ref specify_hyperslab.
The data values are read into consecutive locations with the last
dimension varying fastest. The netCDF dataset must be in data mode
@@ -569,7 +583,7 @@ Other nc_get_vara_ functions will convert data to the desired output
type as needed.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param varid Variable ID
@@ -605,12 +619,12 @@ values, five lat values, and ten lon values.
#define TIMES 3
#define LATS 5
#define LONS 10
- int status;
- int ncid;
- int rh_id;
+ int status;
+ int ncid;
+ int rh_id;
static size_t start[] = {0, 0, 0};
static size_t count[] = {TIMES, LATS, LONS};
- double rh_vals[TIMES*LATS*LONS];
+ double rh_vals[TIMES*LATS*LONS];
...
status = nc_open("foo.nc", NC_NOWRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
@@ -624,7 +638,7 @@ values, five lat values, and ten lon values.
*/
/**@{*/
int
-nc_get_vara(int ncid, int varid, const size_t *startp,
+nc_get_vara(int ncid, int varid, const size_t *startp,
const size_t *countp, void *ip)
{
NC* ncp = NULL;
@@ -637,46 +651,46 @@ nc_get_vara(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vara_text(int ncid, int varid, const size_t *startp,
+nc_get_vara_text(int ncid, int varid, const size_t *startp,
const size_t *countp, char *ip)
{
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
- return NC_get_vara(ncid, varid, startp, countp,
+ return NC_get_vara(ncid, varid, startp, countp,
(void *)ip, NC_CHAR);
}
int
-nc_get_vara_schar(int ncid, int varid, const size_t *startp,
+nc_get_vara_schar(int ncid, int varid, const size_t *startp,
const size_t *countp, signed char *ip)
{
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
- return NC_get_vara(ncid, varid, startp, countp,
+ return NC_get_vara(ncid, varid, startp, countp,
(void *)ip, NC_BYTE);
}
int
-nc_get_vara_uchar(int ncid, int varid, const size_t *startp,
+nc_get_vara_uchar(int ncid, int varid, const size_t *startp,
const size_t *countp, unsigned char *ip)
{
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
- return NC_get_vara(ncid, varid, startp, countp,
+ return NC_get_vara(ncid, varid, startp, countp,
(void *)ip, T_uchar);
}
int
-nc_get_vara_short(int ncid, int varid, const size_t *startp,
+nc_get_vara_short(int ncid, int varid, const size_t *startp,
const size_t *countp, short *ip)
{
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
- return NC_get_vara(ncid, varid, startp, countp,
+ return NC_get_vara(ncid, varid, startp, countp,
(void *)ip, NC_SHORT);
}
@@ -712,7 +726,7 @@ nc_get_vara_float(int ncid, int varid,
int
-nc_get_vara_double(int ncid, int varid, const size_t *startp,
+nc_get_vara_double(int ncid, int varid, const size_t *startp,
const size_t *countp, double *ip)
{
NC* ncp;
@@ -786,7 +800,7 @@ nc_get_vara_string(int ncid, int varid,
/**@}*/
/** \ingroup variables
-Read a single datum from a variable.
+Read a single datum from a variable.
Inputs are the netCDF ID, the variable ID, a multidimensional index
that specifies which value to get, and the address of a location into
@@ -801,7 +815,7 @@ Other nc_get_var1_ functions will convert data to the desired output
type as needed.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param varid Variable ID
@@ -871,7 +885,7 @@ nc_get_var1_int(int ncid, int varid, const size_t *indexp, int *ip)
}
int
-nc_get_var1_long(int ncid, int varid, const size_t *indexp,
+nc_get_var1_long(int ncid, int varid, const size_t *indexp,
long *ip)
{
NC* ncp;
@@ -881,7 +895,7 @@ nc_get_var1_long(int ncid, int varid, const size_t *indexp,
}
int
-nc_get_var1_float(int ncid, int varid, const size_t *indexp,
+nc_get_var1_float(int ncid, int varid, const size_t *indexp,
float *ip)
{
NC* ncp;
@@ -891,7 +905,7 @@ nc_get_var1_float(int ncid, int varid, const size_t *indexp,
}
int
-nc_get_var1_double(int ncid, int varid, const size_t *indexp,
+nc_get_var1_double(int ncid, int varid, const size_t *indexp,
double *ip)
{
NC* ncp;
@@ -901,7 +915,7 @@ nc_get_var1_double(int ncid, int varid, const size_t *indexp,
}
int
-nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp,
+nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp,
unsigned char *ip)
{
NC* ncp;
@@ -911,7 +925,7 @@ nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp,
}
int
-nc_get_var1_ushort(int ncid, int varid, const size_t *indexp,
+nc_get_var1_ushort(int ncid, int varid, const size_t *indexp,
unsigned short *ip)
{
NC* ncp;
@@ -921,7 +935,7 @@ nc_get_var1_ushort(int ncid, int varid, const size_t *indexp,
}
int
-nc_get_var1_uint(int ncid, int varid, const size_t *indexp,
+nc_get_var1_uint(int ncid, int varid, const size_t *indexp,
unsigned int *ip)
{
NC* ncp;
@@ -931,7 +945,7 @@ nc_get_var1_uint(int ncid, int varid, const size_t *indexp,
}
int
-nc_get_var1_longlong(int ncid, int varid, const size_t *indexp,
+nc_get_var1_longlong(int ncid, int varid, const size_t *indexp,
long long *ip)
{
NC* ncp;
@@ -941,7 +955,7 @@ nc_get_var1_longlong(int ncid, int varid, const size_t *indexp,
}
int
-nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp,
+nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp,
unsigned long long *ip)
{
NC* ncp;
@@ -963,7 +977,7 @@ nc_get_var1_string(int ncid, int varid, const size_t *indexp, char* *ip)
/** \} */
/** \ingroup variables
-Read an entire variable in one call.
+Read an entire variable in one call.
This function will read all the values from a netCDF variable of an
open netCDF dataset.
@@ -990,7 +1004,7 @@ user defined type. For this function, the type of the data in memory
must match the type of the variable - no data conversion is done.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param varid Variable ID
@@ -1141,7 +1155,7 @@ nc_get_var_string(int ncid, int varid, char* *ip)
/** \} */
/** \ingroup variables
-Read a strided array from a variable.
+Read a strided array from a variable.
This function reads a subsampled (strided) array section of values
from a netCDF variable of an open netCDF dataset. The subsampled array
@@ -1155,7 +1169,7 @@ user defined type. For this function, the type of the data in memory
must match the type of the variable - no data conversion is done.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param varid Variable ID
@@ -1195,7 +1209,7 @@ nc_get_vars (int ncid, int varid, const size_t * startp,
}
int
-nc_get_vars_text(int ncid, int varid, const size_t *startp,
+nc_get_vars_text(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
char *ip)
{
@@ -1207,7 +1221,7 @@ nc_get_vars_text(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_schar(int ncid, int varid, const size_t *startp,
+nc_get_vars_schar(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
signed char *ip)
{
@@ -1219,7 +1233,7 @@ nc_get_vars_schar(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_uchar(int ncid, int varid, const size_t *startp,
+nc_get_vars_uchar(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
unsigned char *ip)
{
@@ -1231,19 +1245,19 @@ nc_get_vars_uchar(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_short(int ncid, int varid, const size_t *startp,
+nc_get_vars_short(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t *stridep,
short *ip)
{
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
- return NC_get_vars(ncid,varid,startp, countp, stridep,
+ return NC_get_vars(ncid,varid,startp, countp, stridep,
(void *)ip, NC_SHORT);
}
int
-nc_get_vars_int(int ncid, int varid, const size_t *startp,
+nc_get_vars_int(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
int *ip)
{
@@ -1255,7 +1269,7 @@ nc_get_vars_int(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_long(int ncid, int varid, const size_t *startp,
+nc_get_vars_long(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
long *ip)
{
@@ -1267,7 +1281,7 @@ nc_get_vars_long(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_float(int ncid, int varid, const size_t *startp,
+nc_get_vars_float(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
float *ip)
{
@@ -1279,7 +1293,7 @@ nc_get_vars_float(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_double(int ncid, int varid, const size_t *startp,
+nc_get_vars_double(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
double *ip)
{
@@ -1291,7 +1305,7 @@ nc_get_vars_double(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_ubyte(int ncid, int varid, const size_t *startp,
+nc_get_vars_ubyte(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
unsigned char *ip)
{
@@ -1303,7 +1317,7 @@ nc_get_vars_ubyte(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_ushort(int ncid, int varid, const size_t *startp,
+nc_get_vars_ushort(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
unsigned short *ip)
{
@@ -1315,7 +1329,7 @@ nc_get_vars_ushort(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_uint(int ncid, int varid, const size_t *startp,
+nc_get_vars_uint(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
unsigned int *ip)
{
@@ -1327,7 +1341,7 @@ nc_get_vars_uint(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_longlong(int ncid, int varid, const size_t *startp,
+nc_get_vars_longlong(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
long long *ip)
{
@@ -1339,7 +1353,7 @@ nc_get_vars_longlong(int ncid, int varid, const size_t *startp,
}
int
-nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp,
+nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp,
const size_t *countp, const ptrdiff_t * stridep,
unsigned long long *ip)
{
@@ -1360,14 +1374,14 @@ nc_get_vars_string(int ncid, int varid,
NC* ncp;
int stat = NC_check_id(ncid, &ncp);
if(stat != NC_NOERR) return stat;
- return NC_get_vars(ncid, varid, startp, countp, stridep,
+ return NC_get_vars(ncid, varid, startp, countp, stridep,
(void *)ip, NC_STRING);
}
#endif /*USE_NETCDF4*/
/** \} */
/** \ingroup variables
-Read a mapped array from a variable.
+Read a mapped array from a variable.
The nc_get_varm_ type family of functions reads a mapped array section
of values from a netCDF variable of an open netCDF dataset. The mapped
@@ -1387,12 +1401,13 @@ atomic type; it will not read user defined types. For this
function, the type of the data in memory must match the type
of the variable - no data conversion is done.
-Use of this family of functions is discouraged, although not
-formally deprecated. The reason is the complexity of the
+ at deprecated Use of this family of functions is discouraged,
+although it will continue to be supported.
+The reason is the complexity of the
algorithm makes its use difficult for users to properly use.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
-nc_create(), nc_def_grp(), or associated inquiry functions such as
+nc_create(), nc_def_grp(), or associated inquiry functions such as
nc_inq_ncid().
\param varid Variable ID
@@ -1430,14 +1445,14 @@ nc_get_varm(int ncid, int varid, const size_t * startp,
if ((stat = NC_check_id(ncid, &ncp)))
return stat;
- return ncp->dispatch->get_varm(ncid, varid, startp, countp,
+ return ncp->dispatch->get_varm(ncid, varid, startp, countp,
stridep, imapp, ip, NC_NAT);
}
int
nc_get_varm_schar(int ncid, int varid,
const size_t *startp, const size_t *countp,
- const ptrdiff_t *stridep,
+ const ptrdiff_t *stridep,
const ptrdiff_t *imapp, signed char *ip)
{
NC *ncp;
@@ -1460,8 +1475,8 @@ nc_get_varm_uchar(int ncid, int varid,
}
int
-nc_get_varm_short(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_short(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, short *ip)
{
NC *ncp;
@@ -1558,8 +1573,8 @@ nc_get_varm_uint(int ncid, int varid,
}
int
-nc_get_varm_longlong(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_longlong(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, long long *ip)
{
NC *ncp;
@@ -1583,8 +1598,8 @@ nc_get_varm_ulonglong(int ncid, int varid,
}
int
-nc_get_varm_text(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_text(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, char *ip)
{
NC *ncp;
@@ -1596,8 +1611,8 @@ nc_get_varm_text(int ncid, int varid, const size_t *startp,
#ifdef USE_NETCDF4
int
-nc_get_varm_string(int ncid, int varid, const size_t *startp,
- const size_t *countp, const ptrdiff_t *stridep,
+nc_get_varm_string(int ncid, int varid, const size_t *startp,
+ const size_t *countp, const ptrdiff_t *stridep,
const ptrdiff_t *imapp, char **ip)
{
NC *ncp;
@@ -1611,4 +1626,3 @@ nc_get_varm_string(int ncid, int varid, const size_t *startp,
/*! \} */ /* End of named group... */
-
diff --git a/libdispatch/dvarput.c b/libdispatch/dvarput.c
index 38a4952..8a2e71c 100644
--- a/libdispatch/dvarput.c
+++ b/libdispatch/dvarput.c
@@ -210,11 +210,9 @@ NCDEFAULT_put_vars(int ncid, int varid, const size_t * start,
if(i == 0 && isrecvar) {/*do nothing*/}
else {
/* mystart is unsigned, will never be < 0 */
- //if(mystart[i] < 0 || mystart[i] > dimlen)
if(mystart[i] > dimlen)
return NC_EINVALCOORDS;
/* myediges is unsigned, will never be < 0 */
- //if(myedges[i] < 0 || (mystart[i] + myedges[i] > dimlen))
if(mystart[i] + myedges[i] > dimlen)
return NC_EEDGE;
}
@@ -1312,8 +1310,9 @@ atomic type; it will not write user defined types. For this
function, the type of the data in memory must match the type
of the variable - no data conversion is done.
-Use of this family of functions is discouraged, although not
-formally deprecated. The reason is the complexity of the
+ at deprecated Use of this family of functions is discouraged,
+although it will continue to be supported.
+The reason is the complexity of the
algorithm makes its use difficult for users to properly use.
\param ncid NetCDF or group ID, from a previous call to nc_open(),
diff --git a/libdispatch/ncaux.c b/libdispatch/ncaux.c
index 046f22c..5571c26 100644
--- a/libdispatch/ncaux.c
+++ b/libdispatch/ncaux.c
@@ -72,8 +72,11 @@ ncaux_begin_compound(int ncid, const char *name, int alignmode, void** tagp)
cmpd->name = strdup(name);
if(cmpd->name == NULL) {status = NC_ENOMEM; goto fail;}
- if(tagp) *tagp = (void*)cmpd;
-
+ if(tagp) {
+ *tagp = (void*)cmpd;
+ } else { /* Error, free cmpd to avoid memory leak. */
+ free(cmpd);
+ }
return status;
fail:
diff --git a/libdispatch/ncsettings.hdr b/libdispatch/ncsettings.hdr
new file mode 100644
index 0000000..1a31030
--- /dev/null
+++ b/libdispatch/ncsettings.hdr
@@ -0,0 +1,245 @@
+/*********************************************************************
+ * Copyright 2014, UCAR/Unidata
+ * See netcdf/COPYRIGHT file for copying and redistribution conditions.
+ *********************************************************************/
+
+#include "config.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/* General rule
+try to avoid any obscure string functions.
+We currently use
+- strcasecmp
+- strchr
+- strndup
+- strlen
+*/
+
+#undef DEBUG
+
+/* Define the legal leading key characters */
+#define KEYCHARS1 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_."
+
+/*forward*/
+static const char* ncsettings_text;
+
+static char** lines;
+static int nlines;
+static char* dup;
+static char** map = NULL;
+
+/*forward*/
+static void parse();
+static int parseline(const char* line, int keypos);
+static int iskeyline(const char* line);
+static void preprocess();
+
+const char*
+nc_settings(const char* key)
+{
+ char** mapp;
+ if(map == NULL)
+ parse();
+ for(mapp=map;*mapp != NULL;mapp+=2) {
+ /* Note this assumes that no key is a prefix of another */
+ if(strcasecmp(*mapp,key)==0) {
+ return mapp[1];
+ }
+ }
+ return NULL;
+}
+
+const char**
+nc_settings_all()
+{
+ if(map == NULL)
+ parse();
+ return (const char**)map;
+}
+
+const char*
+nc_settings_text()
+{
+ return ncsettings_text;
+}
+
+static void
+parse()
+{
+ int i,keypos;
+ int nkeys;
+ const char** line;
+
+ preprocess();
+
+ nkeys = 0;
+ /* Count # of key lines */
+ for(i=0;i<nlines;i++) {
+ const char* line = lines[i];
+#ifdef DEBUG
+ printf("testing: %s\n",line);
+#endif
+ if(iskeyline(line)) {
+#ifdef DEBUG
+ printf("keyline: %s\n",line);
+#endif
+ nkeys++;
+ }
+ }
+#ifdef DEBUG
+ fflush(stdout);
+#endif
+ /* Create the map of proper size */
+ map = (char**)malloc(((2*nkeys)+1) * sizeof(char*));/*+1 for terminating null*/
+ if(map == NULL) {
+ fprintf(stderr,"ncsettings: out of memory\n");
+ return;
+ }
+ map[2*nkeys] = NULL; /* pre-insert terminating null */
+ /* parse the keylines only */
+ keypos = 0;
+ for(i=0;i<nlines;i++) {
+ const char* line = lines[i];
+ if(!iskeyline(line)) continue;
+ if(!parseline(line,keypos))
+ return;
+ keypos+=2;
+ }
+}
+
+/*
+We assume that each key starts with an alphanumeric character.
+*/
+static int
+parseline(const char* line, int keypos)
+{
+ const char* p;
+ const char* r;
+ char* q;
+ ptrdiff_t delta;
+ char* key;
+ char* value;
+ /* find colon ending of the key */
+ r = strchr(line,':');
+ if(r == NULL) { /* malformed */
+ fprintf(stderr,"malformed libnetcdf.settings file: %s\n,line");
+ return 0;
+ }
+ /* back up from the colon to the first non-blank */
+ for(p=r;p != line;p--) {
+ if(*p != ' ') break;
+ }
+ if(p == line) {/* empty key */
+ fprintf(stderr,"malformed libnetcdf.settings file: %s\n,line");
+ return 0;
+ }
+ delta = p - line;
+ key = strndup(line,delta);
+ /* skip post ':' blanks */
+ for(p=r+1;;p++) {
+ if(*p != ' ') break;
+ }
+ if(*p == '\0') /* empty value */
+ value = strdup("");
+ else { /* assert value is not empty */
+ value = strdup(p);
+ size_t len = strlen(value);
+ q = value + (len - 1); /* point to last char before trailing nul */
+ /* back up to the first non-blank */
+ for(;(*q == ' ');q--); /* will always terminate at value at least */
+ q[1] = '\0'; /* artificial end */
+ }
+ /* Append to the map */
+ map[keypos] = key;
+ map[keypos+1] = value;
+ return 1;
+}
+
+/* We assume that each key starts with an alphanumeric character. */
+static int
+iskeyline(const char* line)
+{
+ if(line == NULL || strlen(line) == 0)
+ return 0;
+ if(line[0] == '#' || line[0] == ' ')
+ return 0;
+ if(strchr(KEYCHARS1,line[0]) == NULL)
+ return 0;
+ return 1;
+}
+
+/* We need to process the text as follows:
+1. convert tabs and \r to blanks
+2. convert \n to EOL (\0)
+3. remove leading and trailing blanks from each line
+*/
+static void
+preprocess()
+{
+ int c,i;
+ const char* p;
+ char* q;
+ char* r;
+
+#ifdef DEBUG
+ printf("input: %s\n",ncsettings_text);
+ fflush(stdout);
+#endif
+ dup = (char*)malloc(strlen(ncsettings_text)+1);
+ nlines = 0;
+ /* steps 1 and 2 */
+ for(p=ncsettings_text,q=dup;(c=*p);p++) {
+ switch (c) {
+ case '\r': case '\t': *q++ = ' '; break;
+ case '\n': nlines++; *q++ = '\0'; break;
+ default: *q++ = c; break;
+ }
+ }
+ /* step 3 */
+ lines = (char**)malloc(nlines*sizeof(char*));
+ r = dup;
+ for(i=0;i<nlines;i++) {
+ int suppress;
+ lines[i] = r;
+ r += strlen(r);
+ r++; /* skip terminating nul */
+ }
+ for(i=0;i<nlines;i++) {
+ char* line = lines[i];
+ p = line;
+ for(;(c=*p);p++) {
+ if(c != ' ')
+ break;
+ }
+ strcpy(line,p); /* remove leading blanks */
+ q = line+strlen(line); /* terminating nul */
+ while((c=*(--q))) {
+ if(c != ' ')
+ break;
+ }
+ /* terminate */
+ q++;
+ *q = '\0';
+#ifdef DEBUG
+ printf("processed: %s\n",line);
+#endif
+ }
+#ifdef DEBUG
+ fflush(stdout);
+#endif
+}
+
+void
+nc_settings_reclaim()
+{
+ if(lines != NULL) free(lines);
+ if(dup != NULL) free(dup);
+ if(map != NULL) free(map);
+ lines = NULL;
+ dup = NULL;
+ map = NULL;
+}
+
+static const char* ncsettings_text =
diff --git a/libdispatch/nctime.c b/libdispatch/nctime.c
index 539a673..0f27d73 100644
--- a/libdispatch/nctime.c
+++ b/libdispatch/nctime.c
@@ -35,6 +35,8 @@ static int cuErrorOccurred = 0; /* True iff cdError was called */
#define VALCMP(a,b) ((a)<(b)?-1:(b)<(a)?1:0)
/* forward declarations */
+static void CdMonthDay(int *doy, CdTime *date);
+static void CdDayOfYear(CdTime *date, int *doy);
static void cdComp2Rel(cdCalenType timetype, cdCompTime comptime, char* relunits, double* reltime);
static void cdRel2CompMixed(double reltime, cdUnitTime unit, cdCompTime basetime, cdCompTime *comptime);
static void cdRel2Comp(cdCalenType timetype, char* relunits, double reltime, cdCompTime* comptime);
@@ -188,7 +190,6 @@ Cde2h(double etime, CdTimeType timeType, long baseYear, CdTime *htime)
int doy; /* day of year */
int daysInLeapYear; /* number of days in a leap year */
int daysInYear; /* days in non-leap year */
- extern void CdMonthDay(int *doy, CdTime *date);
doy = (int) floor(etime / 24.) + 1;
htime->hour = etime - (double) (doy - 1) * 24.;
@@ -624,7 +625,6 @@ Cdh2e(CdTime *htime, double *etime)
long baseYear; /* base year for epochal time */
int daysInLeapYear; /* number of days in a leap year */
int daysInYear; /* days in non-leap year */
- extern void CdDayOfYear(CdTime *date, int *doy);
CdDayOfYear(htime,&doy);
@@ -827,6 +827,7 @@ cdComp2Rel(cdCalenType timetype, cdCompTime comptime, char* relunits, double* re
Cdh2e(&humantime,&etm);
/* Calculate relative time value for months or hours */
deltime.count = 1;
+ /* Coverity[MIXED_ENUMS] */
deltime.units = (CdTimeUnit)unit;
switch(unit){
case cdWeek: case cdDay: case cdHour: case cdMinute: case cdSecond:
@@ -1040,6 +1041,7 @@ cdRel2Comp(cdCalenType timetype, char* relunits, double reltime, cdCompTime* com
}
deltime.count = 1;
+ /* Coverity[MIXED_ENUMS] */
deltime.units = (CdTimeUnit)baseunits;
humantime.year = base_comptime.year;
diff --git a/libdispatch/ncuri.c b/libdispatch/ncuri.c
index 85ed455..5858e5e 100644
--- a/libdispatch/ncuri.c
+++ b/libdispatch/ncuri.c
@@ -11,13 +11,17 @@
#include "ncuri.h"
+/* Include netcdf.h to allow access to
+ NC_ error return codes. */
+#include "netcdf.h"
+
#define NCURIDEBUG
#ifdef NCURIDEBUG
static int failpoint = 0;
#define THROW(n) {failpoint=(n); goto fail;}
#else
-#define THROW(n)
+#define THROW(n) {goto fail;}
#endif
@@ -54,12 +58,27 @@ int filelike; /* 1=>this protocol has no host, user+pwd, or port */
};
/* Allowable character sets for encode */
-static char* fileallow =
+static char* fileallow =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~";
-static char* queryallow =
+static char* queryallow =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~";
+#ifndef HAVE_STRNCMP
+#define strndup ncstrndup
+/* Not all systems have strndup, so provide one*/
+char*
+ncstrndup(const char* s, size_t len)
+{
+ char* dup;
+ if(s == NULL) return NULL;
+ dup = (char*)malloc(len+1);
+ if(dup == NULL) return NULL;
+ memcpy((void*)dup,s,len);
+ dup[len] = '\0';
+ return dup;
+}
+#endif
/* Forward */
static void ncparamfree(char** params);
static int ncfind(char** params, const char* key);
@@ -90,12 +109,12 @@ ncuriparse(const char* uri0, NCURI** durip)
char* suffixparams = NULL;
if(uri0 == NULL || strlen(uri0) == 0)
- {THROW(1); goto fail;}
+ {THROW(1);}
duri = (NCURI*)calloc(1,sizeof(NCURI));
if(duri == NULL)
- {THROW(2); goto fail;}
-
+ {THROW(2);}
+
/* save original uri */
duri->uri = nulldup(uri0);
@@ -103,13 +122,13 @@ ncuriparse(const char* uri0, NCURI** durip)
uri = (char*)malloc(strlen(uri0)+1+PADDING); /* +1 for trailing null,
+PADDING for shifting */
if(uri == NULL)
- {THROW(3); goto fail;}
+ {THROW(3);}
/* strings will be broken into pieces with intermixed '\0; characters;
first char is guaranteed to be '\0' */
duri->strings = uri;
- uri++;
+ uri++;
/* dup the incoming url */
strcpy(uri,uri0);
@@ -122,7 +141,7 @@ ncuriparse(const char* uri0, NCURI** durip)
for(p=uri;*p;p++) {
if(*p == '\\' || *p < ' ')
nclshift1(p); /* compress out */
- }
+ }
p = uri;
@@ -142,17 +161,17 @@ ncuriparse(const char* uri0, NCURI** durip)
break;
}
if(*p == 0)
- {THROW(4); goto fail; /* malformed client params*/}
+ {THROW(4); /* malformed client params*/}
terminate(p); /* nul term the prefixparams (overwrites
the final RBRACKET) */
p++; /* move past the final RBRACKET */
}
/* Tag the protocol */
- protocol = p;
+ protocol = p;
p = strchr(p,':');
if(!p)
- {THROW(5); goto fail;}
+ {THROW(5);}
terminate(p); /*overwrite colon*/
p++; /* skip the colon */
@@ -162,20 +181,20 @@ ncuriparse(const char* uri0, NCURI** durip)
for(i=0;i<nprotos;i++) {
if(strcmp(protocol,legalprotocols[i].name)==0) {
proto = &legalprotocols[i];
- break;
+ break;
}
}
if(proto == NULL)
- {THROW(6); goto fail; /* illegal protocol*/}
+ {THROW(6); /* illegal protocol*/}
/* skip // */
- if(p[0] != '/' && p[1] != '/')
- {THROW(7); goto fail;}
+ if(p[0] != '/' || p[1] != '/')
+ {THROW(7);}
p += 2;
/* If this is all we have (proto://) then fail */
if(*p == EOFCHAR)
- {THROW(8); goto fail;}
+ {THROW(8);}
/* establish the start of the file section */
if(proto->filelike) {/* everything after proto:// */
@@ -195,7 +214,7 @@ ncuriparse(const char* uri0, NCURI** durip)
file = p+1; /* +1 becauseof the shift */
}
}
-
+
/* If you shift in the code below, you must reset file beginning */
if(host != NULL) {/* Parse the host section */
@@ -203,13 +222,13 @@ ncuriparse(const char* uri0, NCURI** durip)
p = strchr(host,'@');
if(p) {
if(p == host)
- {THROW(9); goto fail; /* we have proto://@ */}
+ {THROW(9); /* we have proto://@ */}
user = host;
terminate(p); /* overwrite '@' */
host = p+1; /* start of host ip name */
p = strchr(user,':');
if(p == NULL)
- {THROW(10); goto fail; /* malformed */}
+ {THROW(10); /* malformed */}
terminate(p); /*overwrite colon */
pwd = p+1;
}
@@ -222,18 +241,18 @@ ncuriparse(const char* uri0, NCURI** durip)
p++;
port = p;
if(*port == EOFCHAR)
- {THROW(11); goto fail; /* we have proto://...:/ */}
+ {THROW(11); /* we have proto://...:/ */}
/* The port must look something like a number */
for(;*p;p++) {
if(strchr("0123456789-",*p) == NULL)
- {THROW(12); goto fail; /* probably not a real port, fail */}
+ {THROW(12); /* probably not a real port, fail */}
}
} /* else *p == NULL */
/* check for empty host section */
if(*host == EOFCHAR)
- {THROW(13); goto fail;}
+ {THROW(13);}
}
@@ -246,7 +265,7 @@ ncuriparse(const char* uri0, NCURI** durip)
p = nclocate(p,"?#");
if(p != NULL) { /* we have constraint and/or suffixparams */
char* fileend = p; /* save the end of the file section */
- char* constraintend = NULL;
+ char* constraintend = NULL;
if(*p == '?')
constraint = p+1;
else
@@ -295,8 +314,8 @@ ncuriparse(const char* uri0, NCURI** durip)
}
/* do last minute empty check */
-
- if(protocol != NULL && *protocol == EOFCHAR) protocol = NULL;
+
+ if(*protocol == EOFCHAR) protocol = NULL;
if(user != NULL && *user == EOFCHAR) user = NULL;
if(pwd != NULL && *pwd == EOFCHAR) pwd = NULL;
if(host != NULL && *host == EOFCHAR) host = NULL;
@@ -344,7 +363,7 @@ ncuriparse(const char* uri0, NCURI** durip)
fprintf(stderr,"\n");
}
#endif
- if(durip != NULL)
+ if(durip != NULL)
*durip = duri;
else
ncurifree(duri);
@@ -383,8 +402,8 @@ ncurisetconstraints(NCURI* duri,const char* constraints)
if(duri->constraint != NULL) free(duri->constraint);
if(duri->projection != NULL) free(duri->projection);
if(duri->selection != NULL) free(duri->selection);
- duri->constraint = NULL;
- duri->projection = NULL;
+ duri->constraint = NULL;
+ duri->projection = NULL;
duri->selection = NULL;
if(constraints == NULL || strlen(constraints)==0) return;
@@ -443,9 +462,9 @@ ncuribuild(NCURI* duri, const char* prefix, const char* suffix, int flags)
int withconstraints = ((flags&NCURICONSTRAINTS)!=0
&& duri->constraint != NULL);
#ifdef NEWESCAPE
- int encode = (flags&NCURIENCODE);
+ const int encode = (flags&NCURIENCODE);
#else
- int encode = 0;
+ const int encode = 0;
#endif
if(prefix != NULL) len += NILLEN(prefix);
@@ -457,7 +476,7 @@ ncuribuild(NCURI* duri, const char* prefix, const char* suffix, int flags)
if(duri->port != NULL) {
len += (NILLEN(":")+NILLEN(duri->port));
}
-
+
tmpfile = duri->file;
if(encode)
tmpfile = ncuriencode(tmpfile,fileallow);
@@ -481,7 +500,7 @@ ncuribuild(NCURI* duri, const char* prefix, const char* suffix, int flags)
char** p;
if(duri->paramlist == NULL)
if(!ncuridecodeparams(duri))
- return NULL;
+ return NULL;
for(paramslen=0,nparams=0,p=duri->paramlist;*p;p++) {
nparams++;
paramslen += NILLEN(*p);
@@ -496,7 +515,7 @@ ncuribuild(NCURI* duri, const char* prefix, const char* suffix, int flags)
}
len += 1; /* null terminator */
-
+
newuri = (char*)malloc(len);
if(newuri == NULL) return NULL;
@@ -511,11 +530,11 @@ ncuribuild(NCURI* duri, const char* prefix, const char* suffix, int flags)
if(withuserpwd) {
strcat(newuri,duri->user);
strcat(newuri,":");
- strcat(newuri,duri->password);
+ strcat(newuri,duri->password);
strcat(newuri,"@");
}
if(duri->host != NULL) { /* may be null if using file: protocol */
- strcat(newuri,duri->host);
+ strcat(newuri,duri->host);
}
if(duri->port != NULL) {
strcat(newuri,":");
@@ -578,16 +597,19 @@ suceeded, 0 otherwise; */
int
ncuridecodeparams(NCURI* ncuri)
{
- char* cp;
+ char* cp = NULL;
int i,c;
size_t nparams;
- char* params;
+ char* params = NULL;
char** plist;
if(ncuri == NULL) return 0;
if(ncuri->params == NULL) return 1;
- params = strdup(ncuri->params); /* so we can modify */
+ params = strndup(ncuri->params,
+ (strlen(ncuri->params)+1)); /* so we can modify */
+ if(!params)
+ return NC_ENOMEM;
/* Pass 1 to break string into pieces at the ampersands
and count # of pairs */
@@ -599,8 +621,10 @@ ncuridecodeparams(NCURI* ncuri)
/* plist is an env style list */
plist = (char**)calloc(1,sizeof(char*)*(2*nparams+1)); /* +1 for null termination */
- if(plist == NULL)
- return 0;
+ if(plist == NULL) {
+ if(params) free(params);
+ return 0;
+ }
/* Break up each param into a (name,value) pair*/
/* and insert into the param list */
@@ -611,7 +635,7 @@ ncuridecodeparams(NCURI* ncuri)
/*break up the ith param*/
vp = strchr(cp,'=');
if(vp != NULL) {*vp = EOFCHAR; vp++;} else {vp = "";}
- plist[2*i] = nulldup(cp);
+ plist[2*i] = nulldup(cp);
plist[2*i+1] = nulldup(vp);
cp = next;
}
@@ -633,6 +657,7 @@ ncurilookup(NCURI* uri, const char* key, const char** resultp)
i = ncuridecodeparams(uri);
if(!i) return 0;
}
+ /* Coverity[FORWARD_NULL] */
i = ncfind(uri->paramlist,key);
if(i < 0)
return 0;
@@ -801,7 +826,7 @@ ncuridecodeonly(char* s, char* only)
char* outptr;
char* inptr;
unsigned int c;
-
+
if (s == NULL) return NULL;
slen = strlen(s);
@@ -830,4 +855,3 @@ ncuridecodeonly(char* s, char* only)
*outptr = EOFCHAR;
return decoded;
}
-
diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt
index 8b12cc5..b091d69 100644
--- a/liblib/CMakeLists.txt
+++ b/liblib/CMakeLists.txt
@@ -1,3 +1,4 @@
+
SET(liblib_LIBS dispatch netcdf3)
#####
@@ -39,6 +40,9 @@ SET(TLL_LIBS "")
SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM} ${ZLIB_LIBRARY})
+# Add extra dependencies specified via NC_EXTRA_DEPS
+SET(TLL_LIBS ${TLL_LIBS} ${EXTRA_DEPS})
+
IF(HAVE_LIBDL)
SET(TLL_LIBS ${LIBDL} ${TLL_LIBS})
ENDIF()
@@ -46,14 +50,18 @@ ENDIF()
IF(USE_HDF5 OR USE_NETCDF4)
IF(NOT MSVC)
# Some version of cmake define HDF5_hdf5_LIBRARY instead of
- # HDF5_LIBRARY. Same with HDF5_HL_LIBRARY
- IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARY)
- SET(HDF5_C_LIBRARY ${HDF5_hdf5_LIBRARY})
+ # HDF5_LIBRARY. Same with HDF5_HL_LIBRARIES
+ IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARIES)
+ SET(HDF5_C_LIBRARIES ${HDF5_hdf5_LIBRARY})
ENDIF()
- IF(HDF5_hdf5_hl_LIBRARY AND NOT HDF5_HL_LIBRARY)
- SET(HDF5_HL_LIBRARY ${HDF5_hdf5_hl_LIBRARY})
+ IF(HDF5_hdf5_hl_LIBRARY AND NOT HDF5_HL_LIBRARIES)
+ SET(HDF5_HL_LIBRARIES ${HDF5_hdf5_hl_LIBRARY})
ENDIF()
- SET(TLL_LIBS ${HDF5_C_LIBRARY} ${HDF5_HL_LIBRARY} ${TLL_LIBS} ${SZIP_LIBRARY})
+ # The order of the libraries is important here for static
+ # builds:
+ # Make sure that HDF5_C_LIBRARY appears *after*
+ # HDF5_HL_LIBRARY.
+ SET(TLL_LIBS ${HDF5_HL_LIBRARIES} ${HDF5_C_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
ELSE() # Windows CMake defines HDF5_LIBRARIES.
SET(TLL_LIBS ${HDF5_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
ENDIF()
@@ -70,6 +78,11 @@ ENDIF()
IF(ENABLE_PNETCDF AND PNETCDF)
SET(TLL_LIBS ${TLL_LIBS} ${PNETCDF})
ENDIF()
+
+IF(TLL_LIBS)
+ LIST(REMOVE_DUPLICATES TLL_LIBS)
+ENDIF()
+
TARGET_LINK_LIBRARIES(netcdf ${TLL_LIBS})
IF(MSVC)
@@ -90,9 +103,14 @@ SET_TARGET_PROPERTIES(netcdf PROPERTIES
)
INSTALL(
- TARGETS netcdf EXPORT netcdf-targets RUNTIME DESTINATION bin COMPONENT libraries
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries
+ TARGETS netcdf EXPORT netCDFTargets
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ COMPONENT libraries
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ COMPONENT libraries
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT libraries
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
SET(ALL_TLL_LIBS ${TLL_LIBS} PARENT_SCOPE)
diff --git a/liblib/Makefile.in b/liblib/Makefile.in
new file mode 100644
index 0000000..6726036
--- /dev/null
+++ b/liblib/Makefile.in
@@ -0,0 +1,770 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2010, see the COPYRIGHT file for more information.
+
+# This Makefile assembles the correct libnetcdf based on various
+# configure flags. It is assumed that all the relevant convenience
+# libraries have been built (e.g. libsrc, libsrc4, libncdap3, libcdmr,
+# libncdap4, fortran).
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+
+# Turn on some extra stuff when building a DLL for windows.
+ at BUILD_DLL_TRUE@am__append_3 = -no-undefined -Wl,--output-def,netcdfdll.def
+ at BUILD_DLL_TRUE@am__append_4 = -DDLL_EXPORT
+
+# The v2 API...
+ at BUILD_V2_TRUE@am__append_5 = ${top_builddir}/libdispatch/libnetcdf2.la
+
+# + pnetcdf
+ at USE_PNETCDF_TRUE@am__append_6 = -I${top_srcdir}/libsrc5
+ at USE_PNETCDF_TRUE@am__append_7 = ${top_builddir}/libsrc5/libnetcdf5.la
+
+# + dap
+ at USE_DAP_TRUE@am__append_8 = -I${top_srcdir}/libdap2 -I${top_srcdir}/oc
+ at USE_DAP_TRUE@am__append_9 = ${top_builddir}/libdap2/libdap2.la \
+ at USE_DAP_TRUE@ ${top_builddir}/oc2/liboc.la
+
+# NetCDF-4 ...
+ at USE_NETCDF4_TRUE@am__append_10 = -I${top_srcdir}/libsrc4
+ at USE_NETCDF4_TRUE@am__append_11 = ${top_builddir}/libsrc4/libnetcdf4.la
+
+# Not ready for prime time yet
+# libnetcdf_la_LIBADD += ${top_builddir}/libdiskless/libdiskless.la
+
+# netcdf4+cdmremote
+ at BUILD_CDMREMOTE_TRUE@@USE_NETCDF4_TRUE at am__append_12 = ${top_builddir}/libcdmr/libnccr.la
+subdir = liblib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(libdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libnetcdf_la_DEPENDENCIES = $(am__append_5) \
+ ${top_builddir}/libdispatch/libdispatch.la \
+ ${top_builddir}/libsrc/libnetcdf3.la $(am__append_7) \
+ $(am__append_9) $(am__append_11) $(am__append_12)
+am_libnetcdf_la_OBJECTS = libnetcdf_la-stub.lo
+libnetcdf_la_OBJECTS = $(am_libnetcdf_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+libnetcdf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libnetcdf_la_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libnetcdf_la_SOURCES)
+DIST_SOURCES = $(libnetcdf_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \
+ $(am__append_6) $(am__append_8) $(am__append_10)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+
+# This is our output, the netcdf library the user will install.
+lib_LTLIBRARIES = libnetcdf.la
+
+# These linker flags specify libtool version info.
+# Note: version-info of "9:0:2" results in soname of libnetcdf.so.7 -> libnetcdf.so.7.2.0
+libnetcdf_la_LDFLAGS = -version-info 9:0:2 $(am__append_3)
+libnetcdf_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_4)
+
+# The output library will always include netcdf3 and dispatch
+# libraries
+libnetcdf_la_LIBADD = $(am__append_5) \
+ ${top_builddir}/libdispatch/libdispatch.la \
+ ${top_builddir}/libsrc/libnetcdf3.la $(am__append_7) \
+ $(am__append_9) $(am__append_11) $(am__append_12)
+CLEANFILES =
+
+# We need at least one source file
+libnetcdf_la_SOURCES = stub.c
+EXTRA_DIST = CMakeLists.txt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign liblib/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign liblib/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libnetcdf.la: $(libnetcdf_la_OBJECTS) $(libnetcdf_la_DEPENDENCIES) $(EXTRA_libnetcdf_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libnetcdf_la_LINK) -rpath $(libdir) $(libnetcdf_la_OBJECTS) $(libnetcdf_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf_la-stub.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libnetcdf_la-stub.lo: stub.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf_la-stub.lo -MD -MP -MF $(DEPDIR)/libnetcdf_la-stub.Tpo -c -o libnetcdf_la-stub.lo `test -f 'stub.c' || echo '$(srcdir)/'`stub.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf_la-stub.Tpo $(DEPDIR)/libnetcdf_la-stub.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stub.c' object='libnetcdf_la-stub.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf_la-stub.lo `test -f 'stub.c' || echo '$(srcdir)/'`stub.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-libLTLIBRARIES install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libncdap.tar.gz b/libncdap.tar.gz
new file mode 100644
index 0000000..7f83e9c
Binary files /dev/null and b/libncdap.tar.gz differ
diff --git a/libnetcdf.settings.in b/libnetcdf.settings.in
index b7345a1..1bc3b3a 100644
--- a/libnetcdf.settings.in
+++ b/libnetcdf.settings.in
@@ -1,39 +1,36 @@
-NetCDF Configuration Summary
-============================
+# NetCDF C Configuration Summary
+==============================
-General
+# General
-------
-
NetCDF Version: @PACKAGE_VERSION@
Configured On: @CONFIG_DATE@
Host System: @host_cpu at -@host_vendor at -@host_os@
Build Directory: @abs_top_builddir@
Install Prefix: @prefix@
-Compiling Options
+# Compiling Options
-----------------
+C Compiler: @CC_VERSION@
+CFLAGS: @CFLAGS@
+CPPFLAGS: @CPPFLAGS@
+LDFLAGS: @LDFLAGS@
+AM_CFLAGS: @AM_CFLAGS@
+AM_CPPFLAGS: @AM_CPPFLAGS@
+AM_LDFLAGS: @AM_LDFLAGS@
+Shared Library: @enable_shared@
+Static Library: @enable_static@
+Extra libraries: @LIBS@
-C Compiler: @CC_VERSION@
-CFLAGS: @CFLAGS@
-CPPFLAGS: @CPPFLAGS@
-LDFLAGS: @LDFLAGS@
-AM_CFLAGS @AM_CFLAGS@
-AM_CPPFLAGS: @AM_CPPFLAGS@
-AM_LDFLAGS: @AM_LDFLAGS@
-Shared Library: @enable_shared@
-Static Library: @enable_static@
-Extra libraries: @LIBS@
-
-
-Features:
----------
-NetCDF-2 API: @HAS_NC2@
-NetCDF-4 API: @HAS_NC4@
-HDF4 Support: @HAS_HDF4@
-HDF5 Support: @HAS_HDF5@
-PNetCDF Support: @HAS_PNETCDF@
-Parallel Support: @HAS_PARALLEL@
-DAP Support: @HAS_DAP@
-Diskless Support: @HAS_DISKLESS@
-MMap Support: @HAS_MMAP@
-JNA Support: @HAS_JNA@
\ No newline at end of file
+# Features
+--------
+NetCDF-2 API: @HAS_NC2@
+NetCDF-4 API: @HAS_NC4@
+HDF4 Support: @HAS_HDF4@
+HDF5 Support: @HAS_HDF5@
+PNetCDF Support: @HAS_PNETCDF@
+Parallel Support: @HAS_PARALLEL@
+DAP Support: @HAS_DAP@
+Diskless Support: @HAS_DISKLESS@
+MMap Support: @HAS_MMAP@
+JNA Support: @HAS_JNA@
diff --git a/libsrc/Makefile.am b/libsrc/Makefile.am
index f582953..6ef6efc 100644
--- a/libsrc/Makefile.am
+++ b/libsrc/Makefile.am
@@ -43,7 +43,7 @@ EXTRA_DIST = attr.m4 ncx.m4 putget.m4 $(man_MANS) CMakeLists.txt XGetopt.c
# This tells make how to turn .m4 files into .c files.
.m4.c:
- m4 $(AM_M4FLAGS) $(M4FLAGS) $< >$@
+ m4 $(AM_M4FLAGS) $(M4FLAGS) -s $< >$@
# The C API man page.
man_MANS = netcdf.3
diff --git a/libsrc/Makefile.in b/libsrc/Makefile.in
new file mode 100644
index 0000000..89b6980
--- /dev/null
+++ b/libsrc/Makefile.in
@@ -0,0 +1,898 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This automake file is in charge of building the libsrc directory,
+# which contains the classic library code.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+
+# Turn on a pre-processor flag when building a DLL for windows.
+ at BUILD_DLL_TRUE@am__append_3 = -DDLL_EXPORT
+ at BUILD_DISKLESS_TRUE@am__append_4 = memio.c
+ at BUILD_DISKLESS_TRUE@@BUILD_MMAP_TRUE at am__append_5 = mmapio.c
+
+# Does the user want to use ffio, a replacement for posixio for Cray
+# computers?
+ at USE_FFIO_TRUE@am__append_6 = ffio.c
+ at USE_FFIO_FALSE@am__append_7 = posixio.c
+ at USE_NETCDF4_TRUE@am__append_8 = -DNETCDF4=TRUE
+ at BUILD_DAP_TRUE@am__append_9 = -DDAP=TRUE
+ at BUILD_PARALLEL_TRUE@am__append_10 = -DPARALLEL_IO=TRUE
+subdir = libsrc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libnetcdf3_la_LIBADD =
+am__libnetcdf3_la_SOURCES_DIST = v1hpg.c putget.c attr.c nc3dispatch.c \
+ nc3internal.c var.c dim.c ncx.c ncx.h lookup3.c pstdint.h \
+ ncio.c ncio.h memio.c mmapio.c ffio.c posixio.c
+ at BUILD_DISKLESS_TRUE@am__objects_1 = libnetcdf3_la-memio.lo
+ at BUILD_DISKLESS_TRUE@@BUILD_MMAP_TRUE at am__objects_2 = \
+ at BUILD_DISKLESS_TRUE@@BUILD_MMAP_TRUE@ libnetcdf3_la-mmapio.lo
+ at USE_FFIO_TRUE@am__objects_3 = libnetcdf3_la-ffio.lo
+ at USE_FFIO_FALSE@am__objects_4 = libnetcdf3_la-posixio.lo
+am_libnetcdf3_la_OBJECTS = libnetcdf3_la-v1hpg.lo \
+ libnetcdf3_la-putget.lo libnetcdf3_la-attr.lo \
+ libnetcdf3_la-nc3dispatch.lo libnetcdf3_la-nc3internal.lo \
+ libnetcdf3_la-var.lo libnetcdf3_la-dim.lo libnetcdf3_la-ncx.lo \
+ libnetcdf3_la-lookup3.lo libnetcdf3_la-ncio.lo \
+ $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ $(am__objects_4)
+libnetcdf3_la_OBJECTS = $(am_libnetcdf3_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libnetcdf3_la_SOURCES)
+DIST_SOURCES = $(am__libnetcdf3_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man3dir = $(mandir)/man3
+am__installdirs = "$(DESTDIR)$(man3dir)"
+NROFF = nroff
+MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libnetcdf3_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_3)
+
+# These files comprise the netCDF-3 classic library code.
+libnetcdf3_la_SOURCES = v1hpg.c putget.c attr.c nc3dispatch.c \
+ nc3internal.c var.c dim.c ncx.c ncx.h lookup3.c pstdint.h \
+ ncio.c ncio.h $(am__append_4) $(am__append_5) $(am__append_6) \
+ $(am__append_7)
+noinst_LTLIBRARIES = libnetcdf3.la
+
+# These files are cleaned on developer workstations (and then rebuilt
+# with m4), but they are included in the distribution so that the user
+# does not have to have m4.
+MAINTAINERCLEANFILES = $(man_MANS) attrx.c putgetx.c
+EXTRA_DIST = attr.m4 ncx.m4 putget.m4 $(man_MANS) CMakeLists.txt XGetopt.c
+
+# The C API man page.
+man_MANS = netcdf.3
+
+# Decide what goes in the man page, based on user configure options.
+ARGS_MANPAGE = -DAPI=C $(am__append_8) $(am__append_9) \
+ $(am__append_10)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .m4 .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libsrc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libsrc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libnetcdf3.la: $(libnetcdf3_la_OBJECTS) $(libnetcdf3_la_DEPENDENCIES) $(EXTRA_libnetcdf3_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(libnetcdf3_la_OBJECTS) $(libnetcdf3_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-attr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-dim.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-ffio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-lookup3.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-memio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-mmapio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-nc3dispatch.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-nc3internal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-ncio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-ncx.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-posixio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-putget.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-v1hpg.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf3_la-var.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libnetcdf3_la-v1hpg.lo: v1hpg.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-v1hpg.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-v1hpg.Tpo -c -o libnetcdf3_la-v1hpg.lo `test -f 'v1hpg.c' || echo '$(srcdir)/'`v1hpg.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-v1hpg.Tpo $(DEPDIR)/libnetcdf3_la-v1hpg.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='v1hpg.c' object='libnetcdf3_la-v1hpg.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-v1hpg.lo `test -f 'v1hpg.c' || echo '$(srcdir)/'`v1hpg.c
+
+libnetcdf3_la-putget.lo: putget.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-putget.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-putget.Tpo -c -o libnetcdf3_la-putget.lo `test -f 'putget.c' || echo '$(srcdir)/'`putget.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-putget.Tpo $(DEPDIR)/libnetcdf3_la-putget.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='putget.c' object='libnetcdf3_la-putget.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-putget.lo `test -f 'putget.c' || echo '$(srcdir)/'`putget.c
+
+libnetcdf3_la-attr.lo: attr.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-attr.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-attr.Tpo -c -o libnetcdf3_la-attr.lo `test -f 'attr.c' || echo '$(srcdir)/'`attr.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-attr.Tpo $(DEPDIR)/libnetcdf3_la-attr.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='attr.c' object='libnetcdf3_la-attr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-attr.lo `test -f 'attr.c' || echo '$(srcdir)/'`attr.c
+
+libnetcdf3_la-nc3dispatch.lo: nc3dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-nc3dispatch.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-nc3dispatch.Tpo -c -o libnetcdf3_la-nc3dispatch.lo `test -f 'nc3dispatch.c' || echo '$(srcdir)/'`nc3dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-nc3dispatch.Tpo $(DEPDIR)/libnetcdf3_la-nc3dispatch.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc3dispatch.c' object='libnetcdf3_la-nc3dispatch.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-nc3dispatch.lo `test -f 'nc3dispatch.c' || echo '$(srcdir)/'`nc3dispatch.c
+
+libnetcdf3_la-nc3internal.lo: nc3internal.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-nc3internal.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-nc3internal.Tpo -c -o libnetcdf3_la-nc3internal.lo `test -f 'nc3internal.c' || echo '$(srcdir)/'`nc3internal.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-nc3internal.Tpo $(DEPDIR)/libnetcdf3_la-nc3internal.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc3internal.c' object='libnetcdf3_la-nc3internal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-nc3internal.lo `test -f 'nc3internal.c' || echo '$(srcdir)/'`nc3internal.c
+
+libnetcdf3_la-var.lo: var.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-var.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-var.Tpo -c -o libnetcdf3_la-var.lo `test -f 'var.c' || echo '$(srcdir)/'`var.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-var.Tpo $(DEPDIR)/libnetcdf3_la-var.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='var.c' object='libnetcdf3_la-var.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-var.lo `test -f 'var.c' || echo '$(srcdir)/'`var.c
+
+libnetcdf3_la-dim.lo: dim.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-dim.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-dim.Tpo -c -o libnetcdf3_la-dim.lo `test -f 'dim.c' || echo '$(srcdir)/'`dim.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-dim.Tpo $(DEPDIR)/libnetcdf3_la-dim.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dim.c' object='libnetcdf3_la-dim.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-dim.lo `test -f 'dim.c' || echo '$(srcdir)/'`dim.c
+
+libnetcdf3_la-ncx.lo: ncx.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-ncx.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-ncx.Tpo -c -o libnetcdf3_la-ncx.lo `test -f 'ncx.c' || echo '$(srcdir)/'`ncx.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-ncx.Tpo $(DEPDIR)/libnetcdf3_la-ncx.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncx.c' object='libnetcdf3_la-ncx.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-ncx.lo `test -f 'ncx.c' || echo '$(srcdir)/'`ncx.c
+
+libnetcdf3_la-lookup3.lo: lookup3.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-lookup3.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-lookup3.Tpo -c -o libnetcdf3_la-lookup3.lo `test -f 'lookup3.c' || echo '$(srcdir)/'`lookup3.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-lookup3.Tpo $(DEPDIR)/libnetcdf3_la-lookup3.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lookup3.c' object='libnetcdf3_la-lookup3.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-lookup3.lo `test -f 'lookup3.c' || echo '$(srcdir)/'`lookup3.c
+
+libnetcdf3_la-ncio.lo: ncio.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-ncio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-ncio.Tpo -c -o libnetcdf3_la-ncio.lo `test -f 'ncio.c' || echo '$(srcdir)/'`ncio.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-ncio.Tpo $(DEPDIR)/libnetcdf3_la-ncio.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncio.c' object='libnetcdf3_la-ncio.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-ncio.lo `test -f 'ncio.c' || echo '$(srcdir)/'`ncio.c
+
+libnetcdf3_la-memio.lo: memio.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-memio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-memio.Tpo -c -o libnetcdf3_la-memio.lo `test -f 'memio.c' || echo '$(srcdir)/'`memio.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-memio.Tpo $(DEPDIR)/libnetcdf3_la-memio.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='memio.c' object='libnetcdf3_la-memio.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-memio.lo `test -f 'memio.c' || echo '$(srcdir)/'`memio.c
+
+libnetcdf3_la-mmapio.lo: mmapio.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-mmapio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-mmapio.Tpo -c -o libnetcdf3_la-mmapio.lo `test -f 'mmapio.c' || echo '$(srcdir)/'`mmapio.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-mmapio.Tpo $(DEPDIR)/libnetcdf3_la-mmapio.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mmapio.c' object='libnetcdf3_la-mmapio.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-mmapio.lo `test -f 'mmapio.c' || echo '$(srcdir)/'`mmapio.c
+
+libnetcdf3_la-ffio.lo: ffio.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-ffio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-ffio.Tpo -c -o libnetcdf3_la-ffio.lo `test -f 'ffio.c' || echo '$(srcdir)/'`ffio.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-ffio.Tpo $(DEPDIR)/libnetcdf3_la-ffio.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ffio.c' object='libnetcdf3_la-ffio.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-ffio.lo `test -f 'ffio.c' || echo '$(srcdir)/'`ffio.c
+
+libnetcdf3_la-posixio.lo: posixio.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf3_la-posixio.lo -MD -MP -MF $(DEPDIR)/libnetcdf3_la-posixio.Tpo -c -o libnetcdf3_la-posixio.lo `test -f 'posixio.c' || echo '$(srcdir)/'`posixio.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf3_la-posixio.Tpo $(DEPDIR)/libnetcdf3_la-posixio.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='posixio.c' object='libnetcdf3_la-posixio.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf3_la-posixio.lo `test -f 'posixio.c' || echo '$(srcdir)/'`posixio.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man3: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man3dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.3[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man3:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man3dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.3[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(man3dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man3
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man3
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-man3 install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-man \
+ uninstall-man3
+
+.PRECIOUS: Makefile
+
+
+# This tells make how to turn .m4 files into .c files.
+.m4.c:
+ m4 $(AM_M4FLAGS) $(M4FLAGS) -s $< >$@
+
+# This rule generates the C manpage.
+netcdf.3: $(top_srcdir)/docs/netcdf.m4
+ m4 $(M4FLAGS) $(ARGS_MANPAGE) $? >$@ || rm $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libsrc/attr.c b/libsrc/attr.c
index bf19af5..96ecf9c 100644
--- a/libsrc/attr.c
+++ b/libsrc/attr.c
@@ -1,4 +1,6 @@
+#line 5 "../../libsrc/attr.m4"
/* Do not edit this file. It is produced from the corresponding .m4 source */
+#line 7
/*
* Copyright 1996, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
@@ -610,367 +612,704 @@ NC3_del_att(int ncid, int varid, const char *uname)
return NC_NOERR;
}
+#line 673
static int
+#line 674
ncx_pad_putn_Iuchar(void **xpp, size_t nelems, const uchar *tp, nc_type type)
+#line 674
{
+#line 674
switch(type) {
+#line 674
case NC_CHAR:
+#line 674
return NC_ECHAR;
+#line 674
case NC_BYTE:
+#line 674
return ncx_pad_putn_schar_uchar(xpp, nelems, tp);
+#line 674
case NC_SHORT:
+#line 674
return ncx_pad_putn_short_uchar(xpp, nelems, tp);
+#line 674
case NC_INT:
+#line 674
return ncx_putn_int_uchar(xpp, nelems, tp);
+#line 674
case NC_FLOAT:
+#line 674
return ncx_putn_float_uchar(xpp, nelems, tp);
+#line 674
case NC_DOUBLE:
+#line 674
return ncx_putn_double_uchar(xpp, nelems, tp);
+#line 674
default:
+#line 674
assert("ncx_pad_putn_Iuchar invalid type" == 0);
+#line 674
}
+#line 674
return NC_EBADTYPE;
+#line 674
}
+#line 674
static int
+#line 675
ncx_pad_getn_Iuchar(const void **xpp, size_t nelems, uchar *tp, nc_type type)
+#line 675
{
+#line 675
switch(type) {
+#line 675
case NC_CHAR:
+#line 675
return NC_ECHAR;
+#line 675
case NC_BYTE:
+#line 675
return ncx_pad_getn_schar_uchar(xpp, nelems, tp);
+#line 675
case NC_SHORT:
+#line 675
return ncx_pad_getn_short_uchar(xpp, nelems, tp);
+#line 675
case NC_INT:
+#line 675
return ncx_getn_int_uchar(xpp, nelems, tp);
+#line 675
case NC_FLOAT:
+#line 675
return ncx_getn_float_uchar(xpp, nelems, tp);
+#line 675
case NC_DOUBLE:
+#line 675
return ncx_getn_double_uchar(xpp, nelems, tp);
+#line 675
default:
+#line 675
assert("ncx_pad_getn_Iuchar invalid type" == 0);
+#line 675
}
+#line 675
return NC_EBADTYPE;
+#line 675
}
+#line 675
static int
+#line 677
ncx_pad_putn_Ischar(void **xpp, size_t nelems, const schar *tp, nc_type type)
+#line 677
{
+#line 677
switch(type) {
+#line 677
case NC_CHAR:
+#line 677
return NC_ECHAR;
+#line 677
case NC_BYTE:
+#line 677
return ncx_pad_putn_schar_schar(xpp, nelems, tp);
+#line 677
case NC_SHORT:
+#line 677
return ncx_pad_putn_short_schar(xpp, nelems, tp);
+#line 677
case NC_INT:
+#line 677
return ncx_putn_int_schar(xpp, nelems, tp);
+#line 677
case NC_FLOAT:
+#line 677
return ncx_putn_float_schar(xpp, nelems, tp);
+#line 677
case NC_DOUBLE:
+#line 677
return ncx_putn_double_schar(xpp, nelems, tp);
+#line 677
default:
+#line 677
assert("ncx_pad_putn_Ischar invalid type" == 0);
+#line 677
}
+#line 677
return NC_EBADTYPE;
+#line 677
}
+#line 677
static int
+#line 678
ncx_pad_getn_Ischar(const void **xpp, size_t nelems, schar *tp, nc_type type)
+#line 678
{
+#line 678
switch(type) {
+#line 678
case NC_CHAR:
+#line 678
return NC_ECHAR;
+#line 678
case NC_BYTE:
+#line 678
return ncx_pad_getn_schar_schar(xpp, nelems, tp);
+#line 678
case NC_SHORT:
+#line 678
return ncx_pad_getn_short_schar(xpp, nelems, tp);
+#line 678
case NC_INT:
+#line 678
return ncx_getn_int_schar(xpp, nelems, tp);
+#line 678
case NC_FLOAT:
+#line 678
return ncx_getn_float_schar(xpp, nelems, tp);
+#line 678
case NC_DOUBLE:
+#line 678
return ncx_getn_double_schar(xpp, nelems, tp);
+#line 678
default:
+#line 678
assert("ncx_pad_getn_Ischar invalid type" == 0);
+#line 678
}
+#line 678
return NC_EBADTYPE;
+#line 678
}
+#line 678
static int
+#line 680
ncx_pad_putn_Ishort(void **xpp, size_t nelems, const short *tp, nc_type type)
+#line 680
{
+#line 680
switch(type) {
+#line 680
case NC_CHAR:
+#line 680
return NC_ECHAR;
+#line 680
case NC_BYTE:
+#line 680
return ncx_pad_putn_schar_short(xpp, nelems, tp);
+#line 680
case NC_SHORT:
+#line 680
return ncx_pad_putn_short_short(xpp, nelems, tp);
+#line 680
case NC_INT:
+#line 680
return ncx_putn_int_short(xpp, nelems, tp);
+#line 680
case NC_FLOAT:
+#line 680
return ncx_putn_float_short(xpp, nelems, tp);
+#line 680
case NC_DOUBLE:
+#line 680
return ncx_putn_double_short(xpp, nelems, tp);
+#line 680
default:
+#line 680
assert("ncx_pad_putn_Ishort invalid type" == 0);
+#line 680
}
+#line 680
return NC_EBADTYPE;
+#line 680
}
+#line 680
static int
+#line 681
ncx_pad_getn_Ishort(const void **xpp, size_t nelems, short *tp, nc_type type)
+#line 681
{
+#line 681
switch(type) {
+#line 681
case NC_CHAR:
+#line 681
return NC_ECHAR;
+#line 681
case NC_BYTE:
+#line 681
return ncx_pad_getn_schar_short(xpp, nelems, tp);
+#line 681
case NC_SHORT:
+#line 681
return ncx_pad_getn_short_short(xpp, nelems, tp);
+#line 681
case NC_INT:
+#line 681
return ncx_getn_int_short(xpp, nelems, tp);
+#line 681
case NC_FLOAT:
+#line 681
return ncx_getn_float_short(xpp, nelems, tp);
+#line 681
case NC_DOUBLE:
+#line 681
return ncx_getn_double_short(xpp, nelems, tp);
+#line 681
default:
+#line 681
assert("ncx_pad_getn_Ishort invalid type" == 0);
+#line 681
}
+#line 681
return NC_EBADTYPE;
+#line 681
}
+#line 681
static int
+#line 683
ncx_pad_putn_Iint(void **xpp, size_t nelems, const int *tp, nc_type type)
+#line 683
{
+#line 683
switch(type) {
+#line 683
case NC_CHAR:
+#line 683
return NC_ECHAR;
+#line 683
case NC_BYTE:
+#line 683
return ncx_pad_putn_schar_int(xpp, nelems, tp);
+#line 683
case NC_SHORT:
+#line 683
return ncx_pad_putn_short_int(xpp, nelems, tp);
+#line 683
case NC_INT:
+#line 683
return ncx_putn_int_int(xpp, nelems, tp);
+#line 683
case NC_FLOAT:
+#line 683
return ncx_putn_float_int(xpp, nelems, tp);
+#line 683
case NC_DOUBLE:
+#line 683
return ncx_putn_double_int(xpp, nelems, tp);
+#line 683
default:
+#line 683
assert("ncx_pad_putn_Iint invalid type" == 0);
+#line 683
}
+#line 683
return NC_EBADTYPE;
+#line 683
}
+#line 683
static int
+#line 684
ncx_pad_getn_Iint(const void **xpp, size_t nelems, int *tp, nc_type type)
+#line 684
{
+#line 684
switch(type) {
+#line 684
case NC_CHAR:
+#line 684
return NC_ECHAR;
+#line 684
case NC_BYTE:
+#line 684
return ncx_pad_getn_schar_int(xpp, nelems, tp);
+#line 684
case NC_SHORT:
+#line 684
return ncx_pad_getn_short_int(xpp, nelems, tp);
+#line 684
case NC_INT:
+#line 684
return ncx_getn_int_int(xpp, nelems, tp);
+#line 684
case NC_FLOAT:
+#line 684
return ncx_getn_float_int(xpp, nelems, tp);
+#line 684
case NC_DOUBLE:
+#line 684
return ncx_getn_double_int(xpp, nelems, tp);
+#line 684
default:
+#line 684
assert("ncx_pad_getn_Iint invalid type" == 0);
+#line 684
}
+#line 684
return NC_EBADTYPE;
+#line 684
}
+#line 684
static int
+#line 686
ncx_pad_putn_Ifloat(void **xpp, size_t nelems, const float *tp, nc_type type)
+#line 686
{
+#line 686
switch(type) {
+#line 686
case NC_CHAR:
+#line 686
return NC_ECHAR;
+#line 686
case NC_BYTE:
+#line 686
return ncx_pad_putn_schar_float(xpp, nelems, tp);
+#line 686
case NC_SHORT:
+#line 686
return ncx_pad_putn_short_float(xpp, nelems, tp);
+#line 686
case NC_INT:
+#line 686
return ncx_putn_int_float(xpp, nelems, tp);
+#line 686
case NC_FLOAT:
+#line 686
return ncx_putn_float_float(xpp, nelems, tp);
+#line 686
case NC_DOUBLE:
+#line 686
return ncx_putn_double_float(xpp, nelems, tp);
+#line 686
default:
+#line 686
assert("ncx_pad_putn_Ifloat invalid type" == 0);
+#line 686
}
+#line 686
return NC_EBADTYPE;
+#line 686
}
+#line 686
static int
+#line 687
ncx_pad_getn_Ifloat(const void **xpp, size_t nelems, float *tp, nc_type type)
+#line 687
{
+#line 687
switch(type) {
+#line 687
case NC_CHAR:
+#line 687
return NC_ECHAR;
+#line 687
case NC_BYTE:
+#line 687
return ncx_pad_getn_schar_float(xpp, nelems, tp);
+#line 687
case NC_SHORT:
+#line 687
return ncx_pad_getn_short_float(xpp, nelems, tp);
+#line 687
case NC_INT:
+#line 687
return ncx_getn_int_float(xpp, nelems, tp);
+#line 687
case NC_FLOAT:
+#line 687
return ncx_getn_float_float(xpp, nelems, tp);
+#line 687
case NC_DOUBLE:
+#line 687
return ncx_getn_double_float(xpp, nelems, tp);
+#line 687
default:
+#line 687
assert("ncx_pad_getn_Ifloat invalid type" == 0);
+#line 687
}
+#line 687
return NC_EBADTYPE;
+#line 687
}
+#line 687
static int
+#line 689
ncx_pad_putn_Idouble(void **xpp, size_t nelems, const double *tp, nc_type type)
+#line 689
{
+#line 689
switch(type) {
+#line 689
case NC_CHAR:
+#line 689
return NC_ECHAR;
+#line 689
case NC_BYTE:
+#line 689
return ncx_pad_putn_schar_double(xpp, nelems, tp);
+#line 689
case NC_SHORT:
+#line 689
return ncx_pad_putn_short_double(xpp, nelems, tp);
+#line 689
case NC_INT:
+#line 689
return ncx_putn_int_double(xpp, nelems, tp);
+#line 689
case NC_FLOAT:
+#line 689
return ncx_putn_float_double(xpp, nelems, tp);
+#line 689
case NC_DOUBLE:
+#line 689
return ncx_putn_double_double(xpp, nelems, tp);
+#line 689
default:
+#line 689
assert("ncx_pad_putn_Idouble invalid type" == 0);
+#line 689
}
+#line 689
return NC_EBADTYPE;
+#line 689
}
+#line 689
static int
+#line 690
ncx_pad_getn_Idouble(const void **xpp, size_t nelems, double *tp, nc_type type)
+#line 690
{
+#line 690
switch(type) {
+#line 690
case NC_CHAR:
+#line 690
return NC_ECHAR;
+#line 690
case NC_BYTE:
+#line 690
return ncx_pad_getn_schar_double(xpp, nelems, tp);
+#line 690
case NC_SHORT:
+#line 690
return ncx_pad_getn_short_double(xpp, nelems, tp);
+#line 690
case NC_INT:
+#line 690
return ncx_getn_int_double(xpp, nelems, tp);
+#line 690
case NC_FLOAT:
+#line 690
return ncx_getn_float_double(xpp, nelems, tp);
+#line 690
case NC_DOUBLE:
+#line 690
return ncx_getn_double_double(xpp, nelems, tp);
+#line 690
default:
+#line 690
assert("ncx_pad_getn_Idouble invalid type" == 0);
+#line 690
}
+#line 690
return NC_EBADTYPE;
+#line 690
}
+#line 690
#ifdef IGNORE
static int
+#line 693
ncx_pad_putn_Ilong(void **xpp, size_t nelems, const long *tp, nc_type type)
+#line 693
{
+#line 693
switch(type) {
+#line 693
case NC_CHAR:
+#line 693
return NC_ECHAR;
+#line 693
case NC_BYTE:
+#line 693
return ncx_pad_putn_schar_long(xpp, nelems, tp);
+#line 693
case NC_SHORT:
+#line 693
return ncx_pad_putn_short_long(xpp, nelems, tp);
+#line 693
case NC_INT:
+#line 693
return ncx_putn_int_long(xpp, nelems, tp);
+#line 693
case NC_FLOAT:
+#line 693
return ncx_putn_float_long(xpp, nelems, tp);
+#line 693
case NC_DOUBLE:
+#line 693
return ncx_putn_double_long(xpp, nelems, tp);
+#line 693
default:
+#line 693
assert("ncx_pad_putn_Ilong invalid type" == 0);
+#line 693
}
+#line 693
return NC_EBADTYPE;
+#line 693
}
+#line 693
static int
+#line 694
ncx_pad_getn_Ilong(const void **xpp, size_t nelems, long *tp, nc_type type)
+#line 694
{
+#line 694
switch(type) {
+#line 694
case NC_CHAR:
+#line 694
return NC_ECHAR;
+#line 694
case NC_BYTE:
+#line 694
return ncx_pad_getn_schar_long(xpp, nelems, tp);
+#line 694
case NC_SHORT:
+#line 694
return ncx_pad_getn_short_long(xpp, nelems, tp);
+#line 694
case NC_INT:
+#line 694
return ncx_getn_int_long(xpp, nelems, tp);
+#line 694
case NC_FLOAT:
+#line 694
return ncx_getn_float_long(xpp, nelems, tp);
+#line 694
case NC_DOUBLE:
+#line 694
return ncx_getn_double_long(xpp, nelems, tp);
+#line 694
default:
+#line 694
assert("ncx_pad_getn_Ilong invalid type" == 0);
+#line 694
}
+#line 694
return NC_EBADTYPE;
+#line 694
}
+#line 694
#endif
static int
+#line 697
ncx_pad_putn_Ilonglong(void **xpp, size_t nelems, const longlong *tp, nc_type type)
+#line 697
{
+#line 697
switch(type) {
+#line 697
case NC_CHAR:
+#line 697
return NC_ECHAR;
+#line 697
case NC_BYTE:
+#line 697
return ncx_pad_putn_schar_longlong(xpp, nelems, tp);
+#line 697
case NC_SHORT:
+#line 697
return ncx_pad_putn_short_longlong(xpp, nelems, tp);
+#line 697
case NC_INT:
+#line 697
return ncx_putn_int_longlong(xpp, nelems, tp);
+#line 697
case NC_FLOAT:
+#line 697
return ncx_putn_float_longlong(xpp, nelems, tp);
+#line 697
case NC_DOUBLE:
+#line 697
return ncx_putn_double_longlong(xpp, nelems, tp);
+#line 697
default:
+#line 697
assert("ncx_pad_putn_Ilonglong invalid type" == 0);
+#line 697
}
+#line 697
return NC_EBADTYPE;
+#line 697
}
+#line 697
static int
+#line 698
ncx_pad_getn_Ilonglong(const void **xpp, size_t nelems, longlong *tp, nc_type type)
+#line 698
{
+#line 698
switch(type) {
+#line 698
case NC_CHAR:
+#line 698
return NC_ECHAR;
+#line 698
case NC_BYTE:
+#line 698
return ncx_pad_getn_schar_longlong(xpp, nelems, tp);
+#line 698
case NC_SHORT:
+#line 698
return ncx_pad_getn_short_longlong(xpp, nelems, tp);
+#line 698
case NC_INT:
+#line 698
return ncx_getn_int_longlong(xpp, nelems, tp);
+#line 698
case NC_FLOAT:
+#line 698
return ncx_getn_float_longlong(xpp, nelems, tp);
+#line 698
case NC_DOUBLE:
+#line 698
return ncx_getn_double_longlong(xpp, nelems, tp);
+#line 698
default:
+#line 698
assert("ncx_pad_getn_Ilonglong invalid type" == 0);
+#line 698
}
+#line 698
return NC_EBADTYPE;
+#line 698
}
+#line 698
diff --git a/libsrc/nc3dispatch.c b/libsrc/nc3dispatch.c
index e4f702d..8025d3b 100644
--- a/libsrc/nc3dispatch.c
+++ b/libsrc/nc3dispatch.c
@@ -170,7 +170,7 @@ NC3_get_var_chunk_cache,
};
-NC_Dispatch* NC3_dispatch_table = NULL; /* moved here from ddispatch.c */
+NC_Dispatch* NC3_dispatch_table = NULL; /*!< NC3 Dispatch table, moved here from ddispatch.c */
int
NC3_initialize(void)
diff --git a/libsrc/ncx.c b/libsrc/ncx.c
index 4453e9b..e16afda 100644
--- a/libsrc/ncx.c
+++ b/libsrc/ncx.c
@@ -1,4 +1,6 @@
+#line 11 "ncx.m4"
/* Do not edit this file. It is produced from the corresponding .m4 source */
+#line 13
/*
* Copyright 1996, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
@@ -991,105 +993,196 @@ static struct sgl_limits min = {
{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } /* Min IEEE */
};
+#line 1057
static void
get_ix_float(const void *xp, float *ip)
{
struct vax_single *const vsp = (struct vax_single *) ip;
+#line 1060
const struct ieee_single *const isp =
+#line 1060
(const struct ieee_single *) xp;
+#line 1060
unsigned exp = isp->exp_hi << 1 | isp->exp_lo;
+#line 1060
+#line 1060
switch(exp) {
+#line 1060
case 0 :
+#line 1060
/* ieee subnormal */
+#line 1060
if(isp->mant_hi == min.ieee.mant_hi
+#line 1060
&& isp->mant_lo_hi == min.ieee.mant_lo_hi
+#line 1060
&& isp->mant_lo_lo == min.ieee.mant_lo_lo)
+#line 1060
{
+#line 1060
*vsp = min.s;
+#line 1060
}
+#line 1060
else
+#line 1060
{
+#line 1060
unsigned mantissa = (isp->mant_hi << 16)
+#line 1060
| isp->mant_lo_hi << 8
+#line 1060
| isp->mant_lo_lo;
+#line 1060
unsigned tmp = mantissa >> 20;
+#line 1060
if(tmp >= 4) {
+#line 1060
vsp->exp = 2;
+#line 1060
} else if (tmp >= 2) {
+#line 1060
vsp->exp = 1;
+#line 1060
} else {
+#line 1060
*vsp = min.s;
+#line 1060
break;
+#line 1060
} /* else */
+#line 1060
tmp = mantissa - (1 << (20 + vsp->exp ));
+#line 1060
tmp <<= 3 - vsp->exp;
+#line 1060
vsp->mantissa2 = tmp;
+#line 1060
vsp->mantissa1 = (tmp >> 16);
+#line 1060
}
+#line 1060
break;
+#line 1060
case 0xfe :
+#line 1060
case 0xff :
+#line 1060
*vsp = max.s;
+#line 1060
break;
+#line 1060
default :
+#line 1060
vsp->exp = exp - IEEE_SNG_BIAS + VAX_SNG_BIAS;
+#line 1060
vsp->mantissa2 = isp->mant_lo_hi << 8 | isp->mant_lo_lo;
+#line 1060
vsp->mantissa1 = isp->mant_hi;
+#line 1060
}
+#line 1060
+#line 1060
vsp->sign = isp->sign;
+#line 1060
}
+#line 1114
static void
put_ix_float(void *xp, const float *ip)
{
const struct vax_single *const vsp =
+#line 1118
(const struct vax_single *)ip;
+#line 1118
struct ieee_single *const isp = (struct ieee_single *) xp;
+#line 1118
+#line 1118
switch(vsp->exp){
+#line 1118
case 0 :
+#line 1118
/* all vax float with zero exponent map to zero */
+#line 1118
*isp = min.ieee;
+#line 1118
break;
+#line 1118
case 2 :
+#line 1118
case 1 :
+#line 1118
{
+#line 1118
/* These will map to subnormals */
+#line 1118
unsigned mantissa = (vsp->mantissa1 << 16)
+#line 1118
| vsp->mantissa2;
+#line 1118
mantissa >>= 3 - vsp->exp;
+#line 1118
mantissa += (1 << (20 + vsp->exp));
+#line 1118
isp->mant_lo_lo = mantissa;
+#line 1118
isp->mant_lo_hi = mantissa >> 8;
+#line 1118
isp->mant_hi = mantissa >> 16;
+#line 1118
isp->exp_lo = 0;
+#line 1118
isp->exp_hi = 0;
+#line 1118
}
+#line 1118
break;
+#line 1118
case 0xff : /* max.s.exp */
+#line 1118
if( vsp->mantissa2 == max.s.mantissa2
+#line 1118
&& vsp->mantissa1 == max.s.mantissa1)
+#line 1118
{
+#line 1118
/* map largest vax float to ieee infinity */
+#line 1118
*isp = max.ieee;
+#line 1118
break;
+#line 1118
} /* else, fall thru */
+#line 1118
default :
+#line 1118
{
+#line 1118
unsigned exp = vsp->exp - VAX_SNG_BIAS + IEEE_SNG_BIAS;
+#line 1118
isp->exp_hi = exp >> 1;
+#line 1118
isp->exp_lo = exp;
+#line 1118
isp->mant_lo_lo = vsp->mantissa2;
+#line 1118
isp->mant_lo_hi = vsp->mantissa2 >> 8;
+#line 1118
isp->mant_hi = vsp->mantissa1;
+#line 1118
}
+#line 1118
}
+#line 1118
+#line 1118
isp->sign = vsp->sign;
+#line 1118
}
@@ -1149,6 +1242,7 @@ static const int cs_ieis_bias = 0x4000 - 0x7f;
static const int cs_id_bias = 0x4000 - 0x3ff;
+#line 1253
static void
get_ix_float(const void *xp, float *ip)
@@ -1158,48 +1252,86 @@ get_ix_float(const void *xp, float *ip)
{
const ieee_single_hi *isp = (const ieee_single_hi *) xp;
cray_single *csp = (cray_single *) ip;
+#line 1261
+#line 1261
if(isp->exp == 0)
+#line 1261
{
+#line 1261
/* ieee subnormal */
+#line 1261
*ip = (double)isp->mant;
+#line 1261
if(isp->mant != 0)
+#line 1261
{
+#line 1261
csp->exp -= (ieee_single_bias + 22);
+#line 1261
}
+#line 1261
}
+#line 1261
else
+#line 1261
{
+#line 1261
csp->exp = isp->exp + cs_ieis_bias + 1;
+#line 1261
csp->mant = isp->mant << (48 - 1 - 23);
+#line 1261
csp->mant |= (1 << (48 - 1));
+#line 1261
}
+#line 1261
csp->sign = isp->sign;
+#line 1261
+#line 1261
}
else
{
const ieee_single_lo *isp = (const ieee_single_lo *) xp;
cray_single *csp = (cray_single *) ip;
+#line 1266
+#line 1266
if(isp->exp == 0)
+#line 1266
{
+#line 1266
/* ieee subnormal */
+#line 1266
*ip = (double)isp->mant;
+#line 1266
if(isp->mant != 0)
+#line 1266
{
+#line 1266
csp->exp -= (ieee_single_bias + 22);
+#line 1266
}
+#line 1266
}
+#line 1266
else
+#line 1266
{
+#line 1266
csp->exp = isp->exp + cs_ieis_bias + 1;
+#line 1266
csp->mant = isp->mant << (48 - 1 - 23);
+#line 1266
csp->mant |= (1 << (48 - 1));
+#line 1266
}
+#line 1266
csp->sign = isp->sign;
+#line 1266
+#line 1266
}
}
@@ -1211,96 +1343,182 @@ put_ix_float(void *xp, const float *ip)
{
ieee_single_hi *isp = (ieee_single_hi*)xp;
const cray_single *csp = (const cray_single *) ip;
+#line 1276
int ieee_exp = csp->exp - cs_ieis_bias -1;
+#line 1276
+#line 1276
isp->sign = csp->sign;
+#line 1276
+#line 1276
if(ieee_exp >= 0xff)
+#line 1276
{
+#line 1276
/* NC_ERANGE => ieee Inf */
+#line 1276
isp->exp = 0xff;
+#line 1276
isp->mant = 0x0;
+#line 1276
}
+#line 1276
else if(ieee_exp > 0)
+#line 1276
{
+#line 1276
/* normal ieee representation */
+#line 1276
isp->exp = ieee_exp;
+#line 1276
/* assumes cray rep is in normal form */
+#line 1276
assert(csp->mant & 0x800000000000);
+#line 1276
isp->mant = (((csp->mant << 1) &
+#line 1276
0xffffffffffff) >> (48 - 23));
+#line 1276
}
+#line 1276
else if(ieee_exp > -23)
+#line 1276
{
+#line 1276
/* ieee subnormal, right shift */
+#line 1276
const int rshift = (48 - 23 - ieee_exp);
+#line 1276
+#line 1276
isp->mant = csp->mant >> rshift;
+#line 1276
+#line 1276
#if 0
+#line 1276
if(csp->mant & (1 << (rshift -1)))
+#line 1276
{
+#line 1276
/* round up */
+#line 1276
isp->mant++;
+#line 1276
}
+#line 1276
#endif
+#line 1276
+#line 1276
isp->exp = 0;
+#line 1276
}
+#line 1276
else
+#line 1276
{
+#line 1276
/* smaller than ieee can represent */
+#line 1276
isp->exp = 0;
+#line 1276
isp->mant = 0;
+#line 1276
}
+#line 1276
}
else
{
ieee_single_lo *isp = (ieee_single_lo*)xp;
const cray_single *csp = (const cray_single *) ip;
+#line 1281
int ieee_exp = csp->exp - cs_ieis_bias -1;
+#line 1281
+#line 1281
isp->sign = csp->sign;
+#line 1281
+#line 1281
if(ieee_exp >= 0xff)
+#line 1281
{
+#line 1281
/* NC_ERANGE => ieee Inf */
+#line 1281
isp->exp = 0xff;
+#line 1281
isp->mant = 0x0;
+#line 1281
}
+#line 1281
else if(ieee_exp > 0)
+#line 1281
{
+#line 1281
/* normal ieee representation */
+#line 1281
isp->exp = ieee_exp;
+#line 1281
/* assumes cray rep is in normal form */
+#line 1281
assert(csp->mant & 0x800000000000);
+#line 1281
isp->mant = (((csp->mant << 1) &
+#line 1281
0xffffffffffff) >> (48 - 23));
+#line 1281
}
+#line 1281
else if(ieee_exp > -23)
+#line 1281
{
+#line 1281
/* ieee subnormal, right shift */
+#line 1281
const int rshift = (48 - 23 - ieee_exp);
+#line 1281
+#line 1281
isp->mant = csp->mant >> rshift;
+#line 1281
+#line 1281
#if 0
+#line 1281
if(csp->mant & (1 << (rshift -1)))
+#line 1281
{
+#line 1281
/* round up */
+#line 1281
isp->mant++;
+#line 1281
}
+#line 1281
#endif
+#line 1281
+#line 1281
isp->exp = 0;
+#line 1281
}
+#line 1281
else
+#line 1281
{
+#line 1281
/* smaller than ieee can represent */
+#line 1281
isp->exp = 0;
+#line 1281
isp->mant = 0;
+#line 1281
}
+#line 1281
}
}
@@ -1633,116 +1851,218 @@ static const struct dbl_limits {
};
+#line 1661
static void
get_ix_double(const void *xp, double *ip)
{
struct vax_double *const vdp =
+#line 1664
(struct vax_double *)ip;
+#line 1664
const struct ieee_double *const idp =
+#line 1664
(const struct ieee_double *) xp;
+#line 1664
{
+#line 1664
const struct dbl_limits *lim;
+#line 1664
int ii;
+#line 1664
for (ii = 0, lim = dbl_limits;
+#line 1664
ii < sizeof(dbl_limits)/sizeof(struct dbl_limits);
+#line 1664
ii++, lim++)
+#line 1664
{
+#line 1664
if ((idp->mant_lo == lim->ieee.mant_lo)
+#line 1664
&& (idp->mant_4 == lim->ieee.mant_4)
+#line 1664
&& (idp->mant_5 == lim->ieee.mant_5)
+#line 1664
&& (idp->mant_6 == lim->ieee.mant_6)
+#line 1664
&& (idp->exp_lo == lim->ieee.exp_lo)
+#line 1664
&& (idp->exp_hi == lim->ieee.exp_hi)
+#line 1664
)
+#line 1664
{
+#line 1664
*vdp = lim->d;
+#line 1664
goto doneit;
+#line 1664
}
+#line 1664
}
+#line 1664
}
+#line 1664
{
+#line 1664
unsigned exp = idp->exp_hi << 4 | idp->exp_lo;
+#line 1664
vdp->exp = exp - IEEE_DBL_BIAS + VAX_DBL_BIAS;
+#line 1664
}
+#line 1664
{
+#line 1664
unsigned mant_hi = ((idp->mant_6 << 16)
+#line 1664
| (idp->mant_5 << 8)
+#line 1664
| idp->mant_4);
+#line 1664
unsigned mant_lo = SWAP4(idp->mant_lo);
+#line 1664
vdp->mantissa1 = (mant_hi >> 13);
+#line 1664
vdp->mantissa2 = ((mant_hi & MASK(13)) << 3)
+#line 1664
| (mant_lo >> 29);
+#line 1664
vdp->mantissa3 = (mant_lo >> 13);
+#line 1664
vdp->mantissa4 = (mant_lo << 3);
+#line 1664
}
+#line 1664
doneit:
+#line 1664
vdp->sign = idp->sign;
+#line 1664
}
+#line 1734
static void
put_ix_double(void *xp, const double *ip)
{
const struct vax_double *const vdp =
+#line 1737
(const struct vax_double *)ip;
+#line 1737
struct ieee_double *const idp =
+#line 1737
(struct ieee_double *) xp;
+#line 1737
+#line 1737
if ((vdp->mantissa4 > (dbl_limits[0].d.mantissa4 - 3)) &&
+#line 1737
(vdp->mantissa3 == dbl_limits[0].d.mantissa3) &&
+#line 1737
(vdp->mantissa2 == dbl_limits[0].d.mantissa2) &&
+#line 1737
(vdp->mantissa1 == dbl_limits[0].d.mantissa1) &&
+#line 1737
(vdp->exp == dbl_limits[0].d.exp))
+#line 1737
{
+#line 1737
*idp = dbl_limits[0].ieee;
+#line 1737
goto shipit;
+#line 1737
}
+#line 1737
if ((vdp->mantissa4 == dbl_limits[1].d.mantissa4) &&
+#line 1737
(vdp->mantissa3 == dbl_limits[1].d.mantissa3) &&
+#line 1737
(vdp->mantissa2 == dbl_limits[1].d.mantissa2) &&
+#line 1737
(vdp->mantissa1 == dbl_limits[1].d.mantissa1) &&
+#line 1737
(vdp->exp == dbl_limits[1].d.exp))
+#line 1737
{
+#line 1737
*idp = dbl_limits[1].ieee;
+#line 1737
goto shipit;
+#line 1737
}
+#line 1737
+#line 1737
{
+#line 1737
unsigned exp = vdp->exp - VAX_DBL_BIAS + IEEE_DBL_BIAS;
+#line 1737
+#line 1737
unsigned mant_lo = ((vdp->mantissa2 & MASK(3)) << 29) |
+#line 1737
(vdp->mantissa3 << 13) |
+#line 1737
((vdp->mantissa4 >> 3) & MASK(13));
+#line 1737
+#line 1737
unsigned mant_hi = (vdp->mantissa1 << 13)
+#line 1737
| (vdp->mantissa2 >> 3);
+#line 1737
+#line 1737
if((vdp->mantissa4 & 7) > 4)
+#line 1737
{
+#line 1737
/* round up */
+#line 1737
mant_lo++;
+#line 1737
if(mant_lo == 0)
+#line 1737
{
+#line 1737
mant_hi++;
+#line 1737
if(mant_hi > 0xffffff)
+#line 1737
{
+#line 1737
mant_hi = 0;
+#line 1737
exp++;
+#line 1737
}
+#line 1737
}
+#line 1737
}
+#line 1737
+#line 1737
idp->mant_lo = SWAP4(mant_lo);
+#line 1737
idp->mant_6 = mant_hi >> 16;
+#line 1737
idp->mant_5 = (mant_hi & 0xff00) >> 8;
+#line 1737
idp->mant_4 = mant_hi;
+#line 1737
idp->exp_hi = exp >> 4;
+#line 1737
idp->exp_lo = exp;
+#line 1737
}
+#line 1737
+#line 1737
shipit:
+#line 1737
idp->sign = vdp->sign;
+#line 1737
}
@@ -2184,793 +2504,1505 @@ ncx_get_off_t(const void **xpp, off_t *lp, size_t sizeof_off_t)
/*
* Aggregate numeric conversion functions.
*/
+#line 2625
+#line 2632
/* schar */
+#line 2636
int
ncx_getn_schar_schar(const void **xpp, size_t nelems, schar *tp)
{
(void) memcpy(tp, *xpp, nelems);
+#line 2639
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 2639
return ENOERR;
+#line 2639
}
+#line 2642
int
ncx_getn_schar_uchar(const void **xpp, size_t nelems, uchar *tp)
{
(void) memcpy(tp, *xpp, nelems);
+#line 2645
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 2645
return ENOERR;
+#line 2645
}
int
+#line 2647
ncx_getn_schar_short(const void **xpp, size_t nelems, short *tp)
+#line 2647
{
+#line 2647
schar *xp = (schar *)(*xpp);
+#line 2647
+#line 2647
while(nelems-- != 0)
+#line 2647
{
+#line 2647
*tp++ = *xp++;
+#line 2647
}
+#line 2647
+#line 2647
*xpp = (const void *)xp;
+#line 2647
return ENOERR;
+#line 2647
}
+#line 2647
int
+#line 2648
ncx_getn_schar_int(const void **xpp, size_t nelems, int *tp)
+#line 2648
{
+#line 2648
schar *xp = (schar *)(*xpp);
+#line 2648
+#line 2648
while(nelems-- != 0)
+#line 2648
{
+#line 2648
*tp++ = *xp++;
+#line 2648
}
+#line 2648
+#line 2648
*xpp = (const void *)xp;
+#line 2648
return ENOERR;
+#line 2648
}
+#line 2648
int
+#line 2649
ncx_getn_schar_float(const void **xpp, size_t nelems, float *tp)
+#line 2649
{
+#line 2649
schar *xp = (schar *)(*xpp);
+#line 2649
+#line 2649
while(nelems-- != 0)
+#line 2649
{
+#line 2649
*tp++ = *xp++;
+#line 2649
}
+#line 2649
+#line 2649
*xpp = (const void *)xp;
+#line 2649
return ENOERR;
+#line 2649
}
+#line 2649
int
+#line 2650
ncx_getn_schar_double(const void **xpp, size_t nelems, double *tp)
+#line 2650
{
+#line 2650
schar *xp = (schar *)(*xpp);
+#line 2650
+#line 2650
while(nelems-- != 0)
+#line 2650
{
+#line 2650
*tp++ = *xp++;
+#line 2650
}
+#line 2650
+#line 2650
*xpp = (const void *)xp;
+#line 2650
return ENOERR;
+#line 2650
}
+#line 2650
int
+#line 2651
ncx_getn_schar_uint(const void **xpp, size_t nelems, uint *tp)
+#line 2651
{
+#line 2651
schar *xp = (schar *)(*xpp);
+#line 2651
+#line 2651
while(nelems-- != 0)
+#line 2651
{
+#line 2651
*tp++ = *xp++;
+#line 2651
}
+#line 2651
+#line 2651
*xpp = (const void *)xp;
+#line 2651
return ENOERR;
+#line 2651
}
+#line 2651
int
+#line 2652
ncx_getn_schar_longlong(const void **xpp, size_t nelems, longlong *tp)
+#line 2652
{
+#line 2652
schar *xp = (schar *)(*xpp);
+#line 2652
+#line 2652
while(nelems-- != 0)
+#line 2652
{
+#line 2652
*tp++ = *xp++;
+#line 2652
}
+#line 2652
+#line 2652
*xpp = (const void *)xp;
+#line 2652
return ENOERR;
+#line 2652
}
+#line 2652
int
+#line 2653
ncx_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *tp)
+#line 2653
{
+#line 2653
schar *xp = (schar *)(*xpp);
+#line 2653
+#line 2653
while(nelems-- != 0)
+#line 2653
{
+#line 2653
*tp++ = *xp++;
+#line 2653
}
+#line 2653
+#line 2653
*xpp = (const void *)xp;
+#line 2653
return ENOERR;
+#line 2653
}
+#line 2653
+#line 2656
int
ncx_pad_getn_schar_schar(const void **xpp, size_t nelems, schar *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 2659
+#line 2659
if(rndup)
+#line 2659
rndup = X_ALIGN - rndup;
+#line 2659
+#line 2659
(void) memcpy(tp, *xpp, nelems);
+#line 2659
*xpp = (void *)((char *)(*xpp) + nelems + rndup);
+#line 2659
+#line 2659
return ENOERR;
+#line 2659
}
+#line 2662
int
ncx_pad_getn_schar_uchar(const void **xpp, size_t nelems, uchar *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 2665
+#line 2665
if(rndup)
+#line 2665
rndup = X_ALIGN - rndup;
+#line 2665
+#line 2665
(void) memcpy(tp, *xpp, nelems);
+#line 2665
*xpp = (void *)((char *)(*xpp) + nelems + rndup);
+#line 2665
+#line 2665
return ENOERR;
+#line 2665
}
int
+#line 2667
ncx_pad_getn_schar_short(const void **xpp, size_t nelems, short *tp)
+#line 2667
{
+#line 2667
size_t rndup = nelems % X_ALIGN;
+#line 2667
schar *xp = (schar *) *xpp;
+#line 2667
+#line 2667
if(rndup)
+#line 2667
rndup = X_ALIGN - rndup;
+#line 2667
+#line 2667
while(nelems-- != 0)
+#line 2667
{
+#line 2667
*tp++ = *xp++;
+#line 2667
}
+#line 2667
+#line 2667
*xpp = (void *)(xp + rndup);
+#line 2667
return ENOERR;
+#line 2667
}
+#line 2667
int
+#line 2668
ncx_pad_getn_schar_int(const void **xpp, size_t nelems, int *tp)
+#line 2668
{
+#line 2668
size_t rndup = nelems % X_ALIGN;
+#line 2668
schar *xp = (schar *) *xpp;
+#line 2668
+#line 2668
if(rndup)
+#line 2668
rndup = X_ALIGN - rndup;
+#line 2668
+#line 2668
while(nelems-- != 0)
+#line 2668
{
+#line 2668
*tp++ = *xp++;
+#line 2668
}
+#line 2668
+#line 2668
*xpp = (void *)(xp + rndup);
+#line 2668
return ENOERR;
+#line 2668
}
+#line 2668
int
+#line 2669
ncx_pad_getn_schar_float(const void **xpp, size_t nelems, float *tp)
+#line 2669
{
+#line 2669
size_t rndup = nelems % X_ALIGN;
+#line 2669
schar *xp = (schar *) *xpp;
+#line 2669
+#line 2669
if(rndup)
+#line 2669
rndup = X_ALIGN - rndup;
+#line 2669
+#line 2669
while(nelems-- != 0)
+#line 2669
{
+#line 2669
*tp++ = *xp++;
+#line 2669
}
+#line 2669
+#line 2669
*xpp = (void *)(xp + rndup);
+#line 2669
return ENOERR;
+#line 2669
}
+#line 2669
int
+#line 2670
ncx_pad_getn_schar_double(const void **xpp, size_t nelems, double *tp)
+#line 2670
{
+#line 2670
size_t rndup = nelems % X_ALIGN;
+#line 2670
schar *xp = (schar *) *xpp;
+#line 2670
+#line 2670
if(rndup)
+#line 2670
rndup = X_ALIGN - rndup;
+#line 2670
+#line 2670
while(nelems-- != 0)
+#line 2670
{
+#line 2670
*tp++ = *xp++;
+#line 2670
}
+#line 2670
+#line 2670
*xpp = (void *)(xp + rndup);
+#line 2670
return ENOERR;
+#line 2670
}
+#line 2670
int
+#line 2671
ncx_pad_getn_schar_uint(const void **xpp, size_t nelems, uint *tp)
+#line 2671
{
+#line 2671
size_t rndup = nelems % X_ALIGN;
+#line 2671
schar *xp = (schar *) *xpp;
+#line 2671
+#line 2671
if(rndup)
+#line 2671
rndup = X_ALIGN - rndup;
+#line 2671
+#line 2671
while(nelems-- != 0)
+#line 2671
{
+#line 2671
*tp++ = *xp++;
+#line 2671
}
+#line 2671
+#line 2671
*xpp = (void *)(xp + rndup);
+#line 2671
return ENOERR;
+#line 2671
}
+#line 2671
int
+#line 2672
ncx_pad_getn_schar_longlong(const void **xpp, size_t nelems, longlong *tp)
+#line 2672
{
+#line 2672
size_t rndup = nelems % X_ALIGN;
+#line 2672
schar *xp = (schar *) *xpp;
+#line 2672
+#line 2672
if(rndup)
+#line 2672
rndup = X_ALIGN - rndup;
+#line 2672
+#line 2672
while(nelems-- != 0)
+#line 2672
{
+#line 2672
*tp++ = *xp++;
+#line 2672
}
+#line 2672
+#line 2672
*xpp = (void *)(xp + rndup);
+#line 2672
return ENOERR;
+#line 2672
}
+#line 2672
int
+#line 2673
ncx_pad_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *tp)
+#line 2673
{
+#line 2673
size_t rndup = nelems % X_ALIGN;
+#line 2673
schar *xp = (schar *) *xpp;
+#line 2673
+#line 2673
if(rndup)
+#line 2673
rndup = X_ALIGN - rndup;
+#line 2673
+#line 2673
while(nelems-- != 0)
+#line 2673
{
+#line 2673
*tp++ = *xp++;
+#line 2673
}
+#line 2673
+#line 2673
*xpp = (void *)(xp + rndup);
+#line 2673
return ENOERR;
+#line 2673
}
+#line 2673
+#line 2676
int
ncx_putn_schar_schar(void **xpp, size_t nelems, const schar *tp)
{
(void) memcpy(*xpp, tp, nelems);
+#line 2679
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 2679
+#line 2679
return ENOERR;
+#line 2679
}
+#line 2682
int
ncx_putn_schar_uchar(void **xpp, size_t nelems, const uchar *tp)
{
(void) memcpy(*xpp, tp, nelems);
+#line 2685
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 2685
+#line 2685
return ENOERR;
+#line 2685
}
int
+#line 2687
ncx_putn_schar_short(void **xpp, size_t nelems, const short *tp)
+#line 2687
{
+#line 2687
int status = ENOERR;
+#line 2687
schar *xp = (schar *) *xpp;
+#line 2687
+#line 2687
while(nelems-- != 0)
+#line 2687
{
+#line 2687
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2687
status = NC_ERANGE;
+#line 2687
*xp++ = (schar) *tp++;
+#line 2687
}
+#line 2687
+#line 2687
*xpp = (void *)xp;
+#line 2687
return status;
+#line 2687
}
+#line 2687
int
+#line 2688
ncx_putn_schar_int(void **xpp, size_t nelems, const int *tp)
+#line 2688
{
+#line 2688
int status = ENOERR;
+#line 2688
schar *xp = (schar *) *xpp;
+#line 2688
+#line 2688
while(nelems-- != 0)
+#line 2688
{
+#line 2688
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2688
status = NC_ERANGE;
+#line 2688
*xp++ = (schar) *tp++;
+#line 2688
}
+#line 2688
+#line 2688
*xpp = (void *)xp;
+#line 2688
return status;
+#line 2688
}
+#line 2688
int
+#line 2689
ncx_putn_schar_float(void **xpp, size_t nelems, const float *tp)
+#line 2689
{
+#line 2689
int status = ENOERR;
+#line 2689
schar *xp = (schar *) *xpp;
+#line 2689
+#line 2689
while(nelems-- != 0)
+#line 2689
{
+#line 2689
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2689
status = NC_ERANGE;
+#line 2689
*xp++ = (schar) *tp++;
+#line 2689
}
+#line 2689
+#line 2689
*xpp = (void *)xp;
+#line 2689
return status;
+#line 2689
}
+#line 2689
int
+#line 2690
ncx_putn_schar_double(void **xpp, size_t nelems, const double *tp)
+#line 2690
{
+#line 2690
int status = ENOERR;
+#line 2690
schar *xp = (schar *) *xpp;
+#line 2690
+#line 2690
while(nelems-- != 0)
+#line 2690
{
+#line 2690
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2690
status = NC_ERANGE;
+#line 2690
*xp++ = (schar) *tp++;
+#line 2690
}
+#line 2690
+#line 2690
*xpp = (void *)xp;
+#line 2690
return status;
+#line 2690
}
+#line 2690
int
+#line 2691
ncx_putn_schar_uint(void **xpp, size_t nelems, const uint *tp)
+#line 2691
{
+#line 2691
int status = ENOERR;
+#line 2691
schar *xp = (schar *) *xpp;
+#line 2691
+#line 2691
while(nelems-- != 0)
+#line 2691
{
+#line 2691
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2691
status = NC_ERANGE;
+#line 2691
*xp++ = (schar) *tp++;
+#line 2691
}
+#line 2691
+#line 2691
*xpp = (void *)xp;
+#line 2691
return status;
+#line 2691
}
+#line 2691
int
+#line 2692
ncx_putn_schar_longlong(void **xpp, size_t nelems, const longlong *tp)
+#line 2692
{
+#line 2692
int status = ENOERR;
+#line 2692
schar *xp = (schar *) *xpp;
+#line 2692
+#line 2692
while(nelems-- != 0)
+#line 2692
{
+#line 2692
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2692
status = NC_ERANGE;
+#line 2692
*xp++ = (schar) *tp++;
+#line 2692
}
+#line 2692
+#line 2692
*xpp = (void *)xp;
+#line 2692
return status;
+#line 2692
}
+#line 2692
int
+#line 2693
ncx_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *tp)
+#line 2693
{
+#line 2693
int status = ENOERR;
+#line 2693
schar *xp = (schar *) *xpp;
+#line 2693
+#line 2693
while(nelems-- != 0)
+#line 2693
{
+#line 2693
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2693
status = NC_ERANGE;
+#line 2693
*xp++ = (schar) *tp++;
+#line 2693
}
+#line 2693
+#line 2693
*xpp = (void *)xp;
+#line 2693
return status;
+#line 2693
}
+#line 2693
+#line 2696
int
ncx_pad_putn_schar_schar(void **xpp, size_t nelems, const schar *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 2699
+#line 2699
if(rndup)
+#line 2699
rndup = X_ALIGN - rndup;
+#line 2699
+#line 2699
(void) memcpy(*xpp, tp, nelems);
+#line 2699
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 2699
+#line 2699
if(rndup)
+#line 2699
{
+#line 2699
(void) memcpy(*xpp, nada, rndup);
+#line 2699
*xpp = (void *)((char *)(*xpp) + rndup);
+#line 2699
}
+#line 2699
+#line 2699
return ENOERR;
+#line 2699
}
+#line 2702
int
ncx_pad_putn_schar_uchar(void **xpp, size_t nelems, const uchar *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 2705
+#line 2705
if(rndup)
+#line 2705
rndup = X_ALIGN - rndup;
+#line 2705
+#line 2705
(void) memcpy(*xpp, tp, nelems);
+#line 2705
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 2705
+#line 2705
if(rndup)
+#line 2705
{
+#line 2705
(void) memcpy(*xpp, nada, rndup);
+#line 2705
*xpp = (void *)((char *)(*xpp) + rndup);
+#line 2705
}
+#line 2705
+#line 2705
return ENOERR;
+#line 2705
}
int
+#line 2707
ncx_pad_putn_schar_short(void **xpp, size_t nelems, const short *tp)
+#line 2707
{
+#line 2707
int status = ENOERR;
+#line 2707
size_t rndup = nelems % X_ALIGN;
+#line 2707
schar *xp = (schar *) *xpp;
+#line 2707
+#line 2707
if(rndup)
+#line 2707
rndup = X_ALIGN - rndup;
+#line 2707
+#line 2707
while(nelems-- != 0)
+#line 2707
{
+#line 2707
/* N.B. schar as signed */
+#line 2707
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2707
status = NC_ERANGE;
+#line 2707
*xp++ = (schar) *tp++;
+#line 2707
}
+#line 2707
+#line 2707
+#line 2707
if(rndup)
+#line 2707
{
+#line 2707
(void) memcpy(xp, nada, rndup);
+#line 2707
xp += rndup;
+#line 2707
}
+#line 2707
+#line 2707
*xpp = (void *)xp;
+#line 2707
return status;
+#line 2707
}
+#line 2707
int
+#line 2708
ncx_pad_putn_schar_int(void **xpp, size_t nelems, const int *tp)
+#line 2708
{
+#line 2708
int status = ENOERR;
+#line 2708
size_t rndup = nelems % X_ALIGN;
+#line 2708
schar *xp = (schar *) *xpp;
+#line 2708
+#line 2708
if(rndup)
+#line 2708
rndup = X_ALIGN - rndup;
+#line 2708
+#line 2708
while(nelems-- != 0)
+#line 2708
{
+#line 2708
/* N.B. schar as signed */
+#line 2708
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2708
status = NC_ERANGE;
+#line 2708
*xp++ = (schar) *tp++;
+#line 2708
}
+#line 2708
+#line 2708
+#line 2708
if(rndup)
+#line 2708
{
+#line 2708
(void) memcpy(xp, nada, rndup);
+#line 2708
xp += rndup;
+#line 2708
}
+#line 2708
+#line 2708
*xpp = (void *)xp;
+#line 2708
return status;
+#line 2708
}
+#line 2708
int
+#line 2709
ncx_pad_putn_schar_float(void **xpp, size_t nelems, const float *tp)
+#line 2709
{
+#line 2709
int status = ENOERR;
+#line 2709
size_t rndup = nelems % X_ALIGN;
+#line 2709
schar *xp = (schar *) *xpp;
+#line 2709
+#line 2709
if(rndup)
+#line 2709
rndup = X_ALIGN - rndup;
+#line 2709
+#line 2709
while(nelems-- != 0)
+#line 2709
{
+#line 2709
/* N.B. schar as signed */
+#line 2709
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2709
status = NC_ERANGE;
+#line 2709
*xp++ = (schar) *tp++;
+#line 2709
}
+#line 2709
+#line 2709
+#line 2709
if(rndup)
+#line 2709
{
+#line 2709
(void) memcpy(xp, nada, rndup);
+#line 2709
xp += rndup;
+#line 2709
}
+#line 2709
+#line 2709
*xpp = (void *)xp;
+#line 2709
return status;
+#line 2709
}
+#line 2709
int
+#line 2710
ncx_pad_putn_schar_double(void **xpp, size_t nelems, const double *tp)
+#line 2710
{
+#line 2710
int status = ENOERR;
+#line 2710
size_t rndup = nelems % X_ALIGN;
+#line 2710
schar *xp = (schar *) *xpp;
+#line 2710
+#line 2710
if(rndup)
+#line 2710
rndup = X_ALIGN - rndup;
+#line 2710
+#line 2710
while(nelems-- != 0)
+#line 2710
{
+#line 2710
/* N.B. schar as signed */
+#line 2710
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2710
status = NC_ERANGE;
+#line 2710
*xp++ = (schar) *tp++;
+#line 2710
}
+#line 2710
+#line 2710
+#line 2710
if(rndup)
+#line 2710
{
+#line 2710
(void) memcpy(xp, nada, rndup);
+#line 2710
xp += rndup;
+#line 2710
}
+#line 2710
+#line 2710
*xpp = (void *)xp;
+#line 2710
return status;
+#line 2710
}
+#line 2710
int
+#line 2711
ncx_pad_putn_schar_uint(void **xpp, size_t nelems, const uint *tp)
+#line 2711
{
+#line 2711
int status = ENOERR;
+#line 2711
size_t rndup = nelems % X_ALIGN;
+#line 2711
schar *xp = (schar *) *xpp;
+#line 2711
+#line 2711
if(rndup)
+#line 2711
rndup = X_ALIGN - rndup;
+#line 2711
+#line 2711
while(nelems-- != 0)
+#line 2711
{
+#line 2711
/* N.B. schar as signed */
+#line 2711
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2711
status = NC_ERANGE;
+#line 2711
*xp++ = (schar) *tp++;
+#line 2711
}
+#line 2711
+#line 2711
+#line 2711
if(rndup)
+#line 2711
{
+#line 2711
(void) memcpy(xp, nada, rndup);
+#line 2711
xp += rndup;
+#line 2711
}
+#line 2711
+#line 2711
*xpp = (void *)xp;
+#line 2711
return status;
+#line 2711
}
+#line 2711
int
+#line 2712
ncx_pad_putn_schar_longlong(void **xpp, size_t nelems, const longlong *tp)
+#line 2712
{
+#line 2712
int status = ENOERR;
+#line 2712
size_t rndup = nelems % X_ALIGN;
+#line 2712
schar *xp = (schar *) *xpp;
+#line 2712
+#line 2712
if(rndup)
+#line 2712
rndup = X_ALIGN - rndup;
+#line 2712
+#line 2712
while(nelems-- != 0)
+#line 2712
{
+#line 2712
/* N.B. schar as signed */
+#line 2712
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2712
status = NC_ERANGE;
+#line 2712
*xp++ = (schar) *tp++;
+#line 2712
}
+#line 2712
+#line 2712
+#line 2712
if(rndup)
+#line 2712
{
+#line 2712
(void) memcpy(xp, nada, rndup);
+#line 2712
xp += rndup;
+#line 2712
}
+#line 2712
+#line 2712
*xpp = (void *)xp;
+#line 2712
return status;
+#line 2712
}
+#line 2712
int
+#line 2713
ncx_pad_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *tp)
+#line 2713
{
+#line 2713
int status = ENOERR;
+#line 2713
size_t rndup = nelems % X_ALIGN;
+#line 2713
schar *xp = (schar *) *xpp;
+#line 2713
+#line 2713
if(rndup)
+#line 2713
rndup = X_ALIGN - rndup;
+#line 2713
+#line 2713
while(nelems-- != 0)
+#line 2713
{
+#line 2713
/* N.B. schar as signed */
+#line 2713
if(*tp > X_SCHAR_MAX || *tp < X_SCHAR_MIN)
+#line 2713
status = NC_ERANGE;
+#line 2713
*xp++ = (schar) *tp++;
+#line 2713
}
+#line 2713
+#line 2713
+#line 2713
if(rndup)
+#line 2713
{
+#line 2713
(void) memcpy(xp, nada, rndup);
+#line 2713
xp += rndup;
+#line 2713
}
+#line 2713
+#line 2713
*xpp = (void *)xp;
+#line 2713
return status;
+#line 2713
}
+#line 2713
/* short */
int
+#line 2718
ncx_getn_short_schar(const void **xpp, size_t nelems, schar *tp)
+#line 2718
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2718
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2718
+#line 2718
/* basic algorithm is:
+#line 2718
* - ensure sane alignment of input data
+#line 2718
* - copy (conversion happens automatically) input data
+#line 2718
* to output
+#line 2718
* - update xpp to point at next unconverted input, and tp to point
+#line 2718
* at next location for converted output
+#line 2718
*/
+#line 2718
long i, j, ni;
+#line 2718
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2718
short *xp;
+#line 2718
int nrange = 0; /* number of range errors */
+#line 2718
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2718
long cxp = (long) *((char**)xpp);
+#line 2718
+#line 2718
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2718
/* sjl: manually stripmine so we can limit amount of
+#line 2718
* vector work space reserved to LOOPCNT elements. Also
+#line 2718
* makes vectorisation easy */
+#line 2718
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2718
ni=Min(nelems-j,LOOPCNT);
+#line 2718
if (realign) {
+#line 2718
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2718
xp = tmp;
+#line 2718
} else {
+#line 2718
xp = (short *) *xpp;
+#line 2718
}
+#line 2718
/* copy the next block */
+#line 2718
#pragma cdir loopcnt=LOOPCNT
+#line 2718
#pragma cdir shortloop
+#line 2718
for (i=0; i<ni; i++) {
+#line 2718
tp[i] = (schar) Max( SCHAR_MIN, Min(SCHAR_MAX, (schar) xp[i]));
+#line 2718
/* test for range errors (not always needed but do it anyway) */
+#line 2718
nrange += xp[i] < SCHAR_MIN || xp[i] > SCHAR_MAX;
+#line 2718
}
+#line 2718
/* update xpp and tp */
+#line 2718
if (realign) xp = (short *) *xpp;
+#line 2718
xp += ni;
+#line 2718
tp += ni;
+#line 2718
*xpp = (void*)xp;
+#line 2718
}
+#line 2718
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2718
+#line 2718
#else /* not SX */
+#line 2718
const char *xp = (const char *) *xpp;
+#line 2718
int status = ENOERR;
+#line 2718
+#line 2718
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2718
{
+#line 2718
const int lstatus = ncx_get_short_schar(xp, tp);
+#line 2718
if(lstatus != ENOERR)
+#line 2718
status = lstatus;
+#line 2718
}
+#line 2718
+#line 2718
*xpp = (const void *)xp;
+#line 2718
return status;
+#line 2718
# endif
+#line 2718
}
+#line 2718
int
+#line 2719
ncx_getn_short_uchar(const void **xpp, size_t nelems, uchar *tp)
+#line 2719
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2719
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2719
+#line 2719
/* basic algorithm is:
+#line 2719
* - ensure sane alignment of input data
+#line 2719
* - copy (conversion happens automatically) input data
+#line 2719
* to output
+#line 2719
* - update xpp to point at next unconverted input, and tp to point
+#line 2719
* at next location for converted output
+#line 2719
*/
+#line 2719
long i, j, ni;
+#line 2719
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2719
short *xp;
+#line 2719
int nrange = 0; /* number of range errors */
+#line 2719
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2719
long cxp = (long) *((char**)xpp);
+#line 2719
+#line 2719
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2719
/* sjl: manually stripmine so we can limit amount of
+#line 2719
* vector work space reserved to LOOPCNT elements. Also
+#line 2719
* makes vectorisation easy */
+#line 2719
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2719
ni=Min(nelems-j,LOOPCNT);
+#line 2719
if (realign) {
+#line 2719
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2719
xp = tmp;
+#line 2719
} else {
+#line 2719
xp = (short *) *xpp;
+#line 2719
}
+#line 2719
/* copy the next block */
+#line 2719
#pragma cdir loopcnt=LOOPCNT
+#line 2719
#pragma cdir shortloop
+#line 2719
for (i=0; i<ni; i++) {
+#line 2719
tp[i] = (uchar) Max( UCHAR_MIN, Min(UCHAR_MAX, (uchar) xp[i]));
+#line 2719
/* test for range errors (not always needed but do it anyway) */
+#line 2719
nrange += xp[i] < UCHAR_MIN || xp[i] > UCHAR_MAX;
+#line 2719
}
+#line 2719
/* update xpp and tp */
+#line 2719
if (realign) xp = (short *) *xpp;
+#line 2719
xp += ni;
+#line 2719
tp += ni;
+#line 2719
*xpp = (void*)xp;
+#line 2719
}
+#line 2719
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2719
+#line 2719
#else /* not SX */
+#line 2719
const char *xp = (const char *) *xpp;
+#line 2719
int status = ENOERR;
+#line 2719
+#line 2719
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2719
{
+#line 2719
const int lstatus = ncx_get_short_uchar(xp, tp);
+#line 2719
if(lstatus != ENOERR)
+#line 2719
status = lstatus;
+#line 2719
}
+#line 2719
+#line 2719
*xpp = (const void *)xp;
+#line 2719
return status;
+#line 2719
# endif
+#line 2719
}
+#line 2719
#if X_SIZEOF_SHORT == SIZEOF_SHORT
/* optimized version */
@@ -2987,791 +4019,1539 @@ ncx_getn_short_short(const void **xpp, size_t nelems, short *tp)
}
#else
int
+#line 2734
ncx_getn_short_short(const void **xpp, size_t nelems, short *tp)
+#line 2734
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2734
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2734
+#line 2734
/* basic algorithm is:
+#line 2734
* - ensure sane alignment of input data
+#line 2734
* - copy (conversion happens automatically) input data
+#line 2734
* to output
+#line 2734
* - update xpp to point at next unconverted input, and tp to point
+#line 2734
* at next location for converted output
+#line 2734
*/
+#line 2734
long i, j, ni;
+#line 2734
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2734
short *xp;
+#line 2734
int nrange = 0; /* number of range errors */
+#line 2734
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2734
long cxp = (long) *((char**)xpp);
+#line 2734
+#line 2734
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2734
/* sjl: manually stripmine so we can limit amount of
+#line 2734
* vector work space reserved to LOOPCNT elements. Also
+#line 2734
* makes vectorisation easy */
+#line 2734
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2734
ni=Min(nelems-j,LOOPCNT);
+#line 2734
if (realign) {
+#line 2734
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2734
xp = tmp;
+#line 2734
} else {
+#line 2734
xp = (short *) *xpp;
+#line 2734
}
+#line 2734
/* copy the next block */
+#line 2734
#pragma cdir loopcnt=LOOPCNT
+#line 2734
#pragma cdir shortloop
+#line 2734
for (i=0; i<ni; i++) {
+#line 2734
tp[i] = (short) Max( SHORT_MIN, Min(SHORT_MAX, (short) xp[i]));
+#line 2734
/* test for range errors (not always needed but do it anyway) */
+#line 2734
nrange += xp[i] < SHORT_MIN || xp[i] > SHORT_MAX;
+#line 2734
}
+#line 2734
/* update xpp and tp */
+#line 2734
if (realign) xp = (short *) *xpp;
+#line 2734
xp += ni;
+#line 2734
tp += ni;
+#line 2734
*xpp = (void*)xp;
+#line 2734
}
+#line 2734
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2734
+#line 2734
#else /* not SX */
+#line 2734
const char *xp = (const char *) *xpp;
+#line 2734
int status = ENOERR;
+#line 2734
+#line 2734
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2734
{
+#line 2734
const int lstatus = ncx_get_short_short(xp, tp);
+#line 2734
if(lstatus != ENOERR)
+#line 2734
status = lstatus;
+#line 2734
}
+#line 2734
+#line 2734
*xpp = (const void *)xp;
+#line 2734
return status;
+#line 2734
# endif
+#line 2734
}
+#line 2734
#endif
int
+#line 2736
ncx_getn_short_int(const void **xpp, size_t nelems, int *tp)
+#line 2736
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2736
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2736
+#line 2736
/* basic algorithm is:
+#line 2736
* - ensure sane alignment of input data
+#line 2736
* - copy (conversion happens automatically) input data
+#line 2736
* to output
+#line 2736
* - update xpp to point at next unconverted input, and tp to point
+#line 2736
* at next location for converted output
+#line 2736
*/
+#line 2736
long i, j, ni;
+#line 2736
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2736
short *xp;
+#line 2736
int nrange = 0; /* number of range errors */
+#line 2736
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2736
long cxp = (long) *((char**)xpp);
+#line 2736
+#line 2736
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2736
/* sjl: manually stripmine so we can limit amount of
+#line 2736
* vector work space reserved to LOOPCNT elements. Also
+#line 2736
* makes vectorisation easy */
+#line 2736
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2736
ni=Min(nelems-j,LOOPCNT);
+#line 2736
if (realign) {
+#line 2736
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2736
xp = tmp;
+#line 2736
} else {
+#line 2736
xp = (short *) *xpp;
+#line 2736
}
+#line 2736
/* copy the next block */
+#line 2736
#pragma cdir loopcnt=LOOPCNT
+#line 2736
#pragma cdir shortloop
+#line 2736
for (i=0; i<ni; i++) {
+#line 2736
tp[i] = (int) Max( INT_MIN, Min(INT_MAX, (int) xp[i]));
+#line 2736
/* test for range errors (not always needed but do it anyway) */
+#line 2736
nrange += xp[i] < INT_MIN || xp[i] > INT_MAX;
+#line 2736
}
+#line 2736
/* update xpp and tp */
+#line 2736
if (realign) xp = (short *) *xpp;
+#line 2736
xp += ni;
+#line 2736
tp += ni;
+#line 2736
*xpp = (void*)xp;
+#line 2736
}
+#line 2736
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2736
+#line 2736
#else /* not SX */
+#line 2736
const char *xp = (const char *) *xpp;
+#line 2736
int status = ENOERR;
+#line 2736
+#line 2736
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2736
{
+#line 2736
const int lstatus = ncx_get_short_int(xp, tp);
+#line 2736
if(lstatus != ENOERR)
+#line 2736
status = lstatus;
+#line 2736
}
+#line 2736
+#line 2736
*xpp = (const void *)xp;
+#line 2736
return status;
+#line 2736
# endif
+#line 2736
}
+#line 2736
int
+#line 2737
ncx_getn_short_float(const void **xpp, size_t nelems, float *tp)
+#line 2737
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2737
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2737
+#line 2737
/* basic algorithm is:
+#line 2737
* - ensure sane alignment of input data
+#line 2737
* - copy (conversion happens automatically) input data
+#line 2737
* to output
+#line 2737
* - update xpp to point at next unconverted input, and tp to point
+#line 2737
* at next location for converted output
+#line 2737
*/
+#line 2737
long i, j, ni;
+#line 2737
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2737
short *xp;
+#line 2737
int nrange = 0; /* number of range errors */
+#line 2737
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2737
long cxp = (long) *((char**)xpp);
+#line 2737
+#line 2737
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2737
/* sjl: manually stripmine so we can limit amount of
+#line 2737
* vector work space reserved to LOOPCNT elements. Also
+#line 2737
* makes vectorisation easy */
+#line 2737
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2737
ni=Min(nelems-j,LOOPCNT);
+#line 2737
if (realign) {
+#line 2737
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2737
xp = tmp;
+#line 2737
} else {
+#line 2737
xp = (short *) *xpp;
+#line 2737
}
+#line 2737
/* copy the next block */
+#line 2737
#pragma cdir loopcnt=LOOPCNT
+#line 2737
#pragma cdir shortloop
+#line 2737
for (i=0; i<ni; i++) {
+#line 2737
tp[i] = (float) Max( FLOAT_MIN, Min(FLOAT_MAX, (float) xp[i]));
+#line 2737
/* test for range errors (not always needed but do it anyway) */
+#line 2737
nrange += xp[i] < FLOAT_MIN || xp[i] > FLOAT_MAX;
+#line 2737
}
+#line 2737
/* update xpp and tp */
+#line 2737
if (realign) xp = (short *) *xpp;
+#line 2737
xp += ni;
+#line 2737
tp += ni;
+#line 2737
*xpp = (void*)xp;
+#line 2737
}
+#line 2737
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2737
+#line 2737
#else /* not SX */
+#line 2737
const char *xp = (const char *) *xpp;
+#line 2737
int status = ENOERR;
+#line 2737
+#line 2737
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2737
{
+#line 2737
const int lstatus = ncx_get_short_float(xp, tp);
+#line 2737
if(lstatus != ENOERR)
+#line 2737
status = lstatus;
+#line 2737
}
+#line 2737
+#line 2737
*xpp = (const void *)xp;
+#line 2737
return status;
+#line 2737
# endif
+#line 2737
}
+#line 2737
int
+#line 2738
ncx_getn_short_double(const void **xpp, size_t nelems, double *tp)
+#line 2738
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2738
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2738
+#line 2738
/* basic algorithm is:
+#line 2738
* - ensure sane alignment of input data
+#line 2738
* - copy (conversion happens automatically) input data
+#line 2738
* to output
+#line 2738
* - update xpp to point at next unconverted input, and tp to point
+#line 2738
* at next location for converted output
+#line 2738
*/
+#line 2738
long i, j, ni;
+#line 2738
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2738
short *xp;
+#line 2738
int nrange = 0; /* number of range errors */
+#line 2738
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2738
long cxp = (long) *((char**)xpp);
+#line 2738
+#line 2738
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2738
/* sjl: manually stripmine so we can limit amount of
+#line 2738
* vector work space reserved to LOOPCNT elements. Also
+#line 2738
* makes vectorisation easy */
+#line 2738
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2738
ni=Min(nelems-j,LOOPCNT);
+#line 2738
if (realign) {
+#line 2738
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2738
xp = tmp;
+#line 2738
} else {
+#line 2738
xp = (short *) *xpp;
+#line 2738
}
+#line 2738
/* copy the next block */
+#line 2738
#pragma cdir loopcnt=LOOPCNT
+#line 2738
#pragma cdir shortloop
+#line 2738
for (i=0; i<ni; i++) {
+#line 2738
tp[i] = (double) Max( DOUBLE_MIN, Min(DOUBLE_MAX, (double) xp[i]));
+#line 2738
/* test for range errors (not always needed but do it anyway) */
+#line 2738
nrange += xp[i] < DOUBLE_MIN || xp[i] > DOUBLE_MAX;
+#line 2738
}
+#line 2738
/* update xpp and tp */
+#line 2738
if (realign) xp = (short *) *xpp;
+#line 2738
xp += ni;
+#line 2738
tp += ni;
+#line 2738
*xpp = (void*)xp;
+#line 2738
}
+#line 2738
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2738
+#line 2738
#else /* not SX */
+#line 2738
const char *xp = (const char *) *xpp;
+#line 2738
int status = ENOERR;
+#line 2738
+#line 2738
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2738
{
+#line 2738
const int lstatus = ncx_get_short_double(xp, tp);
+#line 2738
if(lstatus != ENOERR)
+#line 2738
status = lstatus;
+#line 2738
}
+#line 2738
+#line 2738
*xpp = (const void *)xp;
+#line 2738
return status;
+#line 2738
# endif
+#line 2738
}
+#line 2738
int
+#line 2739
ncx_getn_short_uint(const void **xpp, size_t nelems, uint *tp)
+#line 2739
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2739
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2739
+#line 2739
/* basic algorithm is:
+#line 2739
* - ensure sane alignment of input data
+#line 2739
* - copy (conversion happens automatically) input data
+#line 2739
* to output
+#line 2739
* - update xpp to point at next unconverted input, and tp to point
+#line 2739
* at next location for converted output
+#line 2739
*/
+#line 2739
long i, j, ni;
+#line 2739
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2739
short *xp;
+#line 2739
int nrange = 0; /* number of range errors */
+#line 2739
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2739
long cxp = (long) *((char**)xpp);
+#line 2739
+#line 2739
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2739
/* sjl: manually stripmine so we can limit amount of
+#line 2739
* vector work space reserved to LOOPCNT elements. Also
+#line 2739
* makes vectorisation easy */
+#line 2739
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2739
ni=Min(nelems-j,LOOPCNT);
+#line 2739
if (realign) {
+#line 2739
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2739
xp = tmp;
+#line 2739
} else {
+#line 2739
xp = (short *) *xpp;
+#line 2739
}
+#line 2739
/* copy the next block */
+#line 2739
#pragma cdir loopcnt=LOOPCNT
+#line 2739
#pragma cdir shortloop
+#line 2739
for (i=0; i<ni; i++) {
+#line 2739
tp[i] = (uint) Max( UINT_MIN, Min(UINT_MAX, (uint) xp[i]));
+#line 2739
/* test for range errors (not always needed but do it anyway) */
+#line 2739
nrange += xp[i] < UINT_MIN || xp[i] > UINT_MAX;
+#line 2739
}
+#line 2739
/* update xpp and tp */
+#line 2739
if (realign) xp = (short *) *xpp;
+#line 2739
xp += ni;
+#line 2739
tp += ni;
+#line 2739
*xpp = (void*)xp;
+#line 2739
}
+#line 2739
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2739
+#line 2739
#else /* not SX */
+#line 2739
const char *xp = (const char *) *xpp;
+#line 2739
int status = ENOERR;
+#line 2739
+#line 2739
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2739
{
+#line 2739
const int lstatus = ncx_get_short_uint(xp, tp);
+#line 2739
if(lstatus != ENOERR)
+#line 2739
status = lstatus;
+#line 2739
}
+#line 2739
+#line 2739
*xpp = (const void *)xp;
+#line 2739
return status;
+#line 2739
# endif
+#line 2739
}
+#line 2739
int
+#line 2740
ncx_getn_short_longlong(const void **xpp, size_t nelems, longlong *tp)
+#line 2740
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2740
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2740
+#line 2740
/* basic algorithm is:
+#line 2740
* - ensure sane alignment of input data
+#line 2740
* - copy (conversion happens automatically) input data
+#line 2740
* to output
+#line 2740
* - update xpp to point at next unconverted input, and tp to point
+#line 2740
* at next location for converted output
+#line 2740
*/
+#line 2740
long i, j, ni;
+#line 2740
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2740
short *xp;
+#line 2740
int nrange = 0; /* number of range errors */
+#line 2740
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2740
long cxp = (long) *((char**)xpp);
+#line 2740
+#line 2740
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2740
/* sjl: manually stripmine so we can limit amount of
+#line 2740
* vector work space reserved to LOOPCNT elements. Also
+#line 2740
* makes vectorisation easy */
+#line 2740
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2740
ni=Min(nelems-j,LOOPCNT);
+#line 2740
if (realign) {
+#line 2740
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2740
xp = tmp;
+#line 2740
} else {
+#line 2740
xp = (short *) *xpp;
+#line 2740
}
+#line 2740
/* copy the next block */
+#line 2740
#pragma cdir loopcnt=LOOPCNT
+#line 2740
#pragma cdir shortloop
+#line 2740
for (i=0; i<ni; i++) {
+#line 2740
tp[i] = (longlong) Max( LONGLONG_MIN, Min(LONGLONG_MAX, (longlong) xp[i]));
+#line 2740
/* test for range errors (not always needed but do it anyway) */
+#line 2740
nrange += xp[i] < LONGLONG_MIN || xp[i] > LONGLONG_MAX;
+#line 2740
}
+#line 2740
/* update xpp and tp */
+#line 2740
if (realign) xp = (short *) *xpp;
+#line 2740
xp += ni;
+#line 2740
tp += ni;
+#line 2740
*xpp = (void*)xp;
+#line 2740
}
+#line 2740
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2740
+#line 2740
#else /* not SX */
+#line 2740
const char *xp = (const char *) *xpp;
+#line 2740
int status = ENOERR;
+#line 2740
+#line 2740
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2740
{
+#line 2740
const int lstatus = ncx_get_short_longlong(xp, tp);
+#line 2740
if(lstatus != ENOERR)
+#line 2740
status = lstatus;
+#line 2740
}
+#line 2740
+#line 2740
*xpp = (const void *)xp;
+#line 2740
return status;
+#line 2740
# endif
+#line 2740
}
+#line 2740
int
+#line 2741
ncx_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *tp)
+#line 2741
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2741
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2741
+#line 2741
/* basic algorithm is:
+#line 2741
* - ensure sane alignment of input data
+#line 2741
* - copy (conversion happens automatically) input data
+#line 2741
* to output
+#line 2741
* - update xpp to point at next unconverted input, and tp to point
+#line 2741
* at next location for converted output
+#line 2741
*/
+#line 2741
long i, j, ni;
+#line 2741
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2741
short *xp;
+#line 2741
int nrange = 0; /* number of range errors */
+#line 2741
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2741
long cxp = (long) *((char**)xpp);
+#line 2741
+#line 2741
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2741
/* sjl: manually stripmine so we can limit amount of
+#line 2741
* vector work space reserved to LOOPCNT elements. Also
+#line 2741
* makes vectorisation easy */
+#line 2741
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2741
ni=Min(nelems-j,LOOPCNT);
+#line 2741
if (realign) {
+#line 2741
memcpy(tmp, *xpp, ni*SIZEOF_SHORT);
+#line 2741
xp = tmp;
+#line 2741
} else {
+#line 2741
xp = (short *) *xpp;
+#line 2741
}
+#line 2741
/* copy the next block */
+#line 2741
#pragma cdir loopcnt=LOOPCNT
+#line 2741
#pragma cdir shortloop
+#line 2741
for (i=0; i<ni; i++) {
+#line 2741
tp[i] = (ulonglong) Max( ULONGLONG_MIN, Min(ULONGLONG_MAX, (ulonglong) xp[i]));
+#line 2741
/* test for range errors (not always needed but do it anyway) */
+#line 2741
nrange += xp[i] < ULONGLONG_MIN || xp[i] > ULONGLONG_MAX;
+#line 2741
}
+#line 2741
/* update xpp and tp */
+#line 2741
if (realign) xp = (short *) *xpp;
+#line 2741
xp += ni;
+#line 2741
tp += ni;
+#line 2741
*xpp = (void*)xp;
+#line 2741
}
+#line 2741
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2741
+#line 2741
#else /* not SX */
+#line 2741
const char *xp = (const char *) *xpp;
+#line 2741
int status = ENOERR;
+#line 2741
+#line 2741
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2741
{
+#line 2741
const int lstatus = ncx_get_short_ulonglong(xp, tp);
+#line 2741
if(lstatus != ENOERR)
+#line 2741
status = lstatus;
+#line 2741
}
+#line 2741
+#line 2741
*xpp = (const void *)xp;
+#line 2741
return status;
+#line 2741
# endif
+#line 2741
}
+#line 2741
int
+#line 2743
ncx_pad_getn_short_schar(const void **xpp, size_t nelems, schar *tp)
+#line 2743
{
+#line 2743
const size_t rndup = nelems % 2;
+#line 2743
+#line 2743
const char *xp = (const char *) *xpp;
+#line 2743
int status = ENOERR;
+#line 2743
+#line 2743
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2743
{
+#line 2743
const int lstatus = ncx_get_short_schar(xp, tp);
+#line 2743
if(lstatus != ENOERR)
+#line 2743
status = lstatus;
+#line 2743
}
+#line 2743
+#line 2743
if(rndup != 0)
+#line 2743
xp += X_SIZEOF_SHORT;
+#line 2743
+#line 2743
*xpp = (void *)xp;
+#line 2743
return status;
+#line 2743
}
+#line 2743
int
+#line 2744
ncx_pad_getn_short_uchar(const void **xpp, size_t nelems, uchar *tp)
+#line 2744
{
+#line 2744
const size_t rndup = nelems % 2;
+#line 2744
+#line 2744
const char *xp = (const char *) *xpp;
+#line 2744
int status = ENOERR;
+#line 2744
+#line 2744
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2744
{
+#line 2744
const int lstatus = ncx_get_short_uchar(xp, tp);
+#line 2744
if(lstatus != ENOERR)
+#line 2744
status = lstatus;
+#line 2744
}
+#line 2744
+#line 2744
if(rndup != 0)
+#line 2744
xp += X_SIZEOF_SHORT;
+#line 2744
+#line 2744
*xpp = (void *)xp;
+#line 2744
return status;
+#line 2744
}
+#line 2744
int
+#line 2745
ncx_pad_getn_short_short(const void **xpp, size_t nelems, short *tp)
+#line 2745
{
+#line 2745
const size_t rndup = nelems % 2;
+#line 2745
+#line 2745
const char *xp = (const char *) *xpp;
+#line 2745
int status = ENOERR;
+#line 2745
+#line 2745
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2745
{
+#line 2745
const int lstatus = ncx_get_short_short(xp, tp);
+#line 2745
if(lstatus != ENOERR)
+#line 2745
status = lstatus;
+#line 2745
}
+#line 2745
+#line 2745
if(rndup != 0)
+#line 2745
xp += X_SIZEOF_SHORT;
+#line 2745
+#line 2745
*xpp = (void *)xp;
+#line 2745
return status;
+#line 2745
}
+#line 2745
int
+#line 2746
ncx_pad_getn_short_int(const void **xpp, size_t nelems, int *tp)
+#line 2746
{
+#line 2746
const size_t rndup = nelems % 2;
+#line 2746
+#line 2746
const char *xp = (const char *) *xpp;
+#line 2746
int status = ENOERR;
+#line 2746
+#line 2746
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2746
{
+#line 2746
const int lstatus = ncx_get_short_int(xp, tp);
+#line 2746
if(lstatus != ENOERR)
+#line 2746
status = lstatus;
+#line 2746
}
+#line 2746
+#line 2746
if(rndup != 0)
+#line 2746
xp += X_SIZEOF_SHORT;
+#line 2746
+#line 2746
*xpp = (void *)xp;
+#line 2746
return status;
+#line 2746
}
+#line 2746
int
+#line 2747
ncx_pad_getn_short_float(const void **xpp, size_t nelems, float *tp)
+#line 2747
{
+#line 2747
const size_t rndup = nelems % 2;
+#line 2747
+#line 2747
const char *xp = (const char *) *xpp;
+#line 2747
int status = ENOERR;
+#line 2747
+#line 2747
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2747
{
+#line 2747
const int lstatus = ncx_get_short_float(xp, tp);
+#line 2747
if(lstatus != ENOERR)
+#line 2747
status = lstatus;
+#line 2747
}
+#line 2747
+#line 2747
if(rndup != 0)
+#line 2747
xp += X_SIZEOF_SHORT;
+#line 2747
+#line 2747
*xpp = (void *)xp;
+#line 2747
return status;
+#line 2747
}
+#line 2747
int
+#line 2748
ncx_pad_getn_short_double(const void **xpp, size_t nelems, double *tp)
+#line 2748
{
+#line 2748
const size_t rndup = nelems % 2;
+#line 2748
+#line 2748
const char *xp = (const char *) *xpp;
+#line 2748
int status = ENOERR;
+#line 2748
+#line 2748
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2748
{
+#line 2748
const int lstatus = ncx_get_short_double(xp, tp);
+#line 2748
if(lstatus != ENOERR)
+#line 2748
status = lstatus;
+#line 2748
}
+#line 2748
+#line 2748
if(rndup != 0)
+#line 2748
xp += X_SIZEOF_SHORT;
+#line 2748
+#line 2748
*xpp = (void *)xp;
+#line 2748
return status;
+#line 2748
}
+#line 2748
int
+#line 2749
ncx_pad_getn_short_uint(const void **xpp, size_t nelems, uint *tp)
+#line 2749
{
+#line 2749
const size_t rndup = nelems % 2;
+#line 2749
+#line 2749
const char *xp = (const char *) *xpp;
+#line 2749
int status = ENOERR;
+#line 2749
+#line 2749
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2749
{
+#line 2749
const int lstatus = ncx_get_short_uint(xp, tp);
+#line 2749
if(lstatus != ENOERR)
+#line 2749
status = lstatus;
+#line 2749
}
+#line 2749
+#line 2749
if(rndup != 0)
+#line 2749
xp += X_SIZEOF_SHORT;
+#line 2749
+#line 2749
*xpp = (void *)xp;
+#line 2749
return status;
+#line 2749
}
+#line 2749
int
+#line 2750
ncx_pad_getn_short_longlong(const void **xpp, size_t nelems, longlong *tp)
+#line 2750
{
+#line 2750
const size_t rndup = nelems % 2;
+#line 2750
+#line 2750
const char *xp = (const char *) *xpp;
+#line 2750
int status = ENOERR;
+#line 2750
+#line 2750
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2750
{
+#line 2750
const int lstatus = ncx_get_short_longlong(xp, tp);
+#line 2750
if(lstatus != ENOERR)
+#line 2750
status = lstatus;
+#line 2750
}
+#line 2750
+#line 2750
if(rndup != 0)
+#line 2750
xp += X_SIZEOF_SHORT;
+#line 2750
+#line 2750
*xpp = (void *)xp;
+#line 2750
return status;
+#line 2750
}
+#line 2750
int
+#line 2751
ncx_pad_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *tp)
+#line 2751
{
+#line 2751
const size_t rndup = nelems % 2;
+#line 2751
+#line 2751
const char *xp = (const char *) *xpp;
+#line 2751
int status = ENOERR;
+#line 2751
+#line 2751
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2751
{
+#line 2751
const int lstatus = ncx_get_short_ulonglong(xp, tp);
+#line 2751
if(lstatus != ENOERR)
+#line 2751
status = lstatus;
+#line 2751
}
+#line 2751
+#line 2751
if(rndup != 0)
+#line 2751
xp += X_SIZEOF_SHORT;
+#line 2751
+#line 2751
*xpp = (void *)xp;
+#line 2751
return status;
+#line 2751
}
+#line 2751
int
+#line 2753
ncx_putn_short_schar(void **xpp, size_t nelems, const schar *tp)
+#line 2753
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2753
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2753
+#line 2753
/* basic algorithm is:
+#line 2753
* - ensure sane alignment of output data
+#line 2753
* - copy (conversion happens automatically) input data
+#line 2753
* to output
+#line 2753
* - update tp to point at next unconverted input, and xpp to point
+#line 2753
* at next location for converted output
+#line 2753
*/
+#line 2753
long i, j, ni;
+#line 2753
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2753
short *xp;
+#line 2753
int nrange = 0; /* number of range errors */
+#line 2753
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2753
long cxp = (long) *((char**)xpp);
+#line 2753
+#line 2753
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2753
/* sjl: manually stripmine so we can limit amount of
+#line 2753
* vector work space reserved to LOOPCNT elements. Also
+#line 2753
* makes vectorisation easy */
+#line 2753
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2753
ni=Min(nelems-j,LOOPCNT);
+#line 2753
if (realign) {
+#line 2753
xp = tmp;
+#line 2753
} else {
+#line 2753
xp = (short *) *xpp;
+#line 2753
}
+#line 2753
/* copy the next block */
+#line 2753
#pragma cdir loopcnt=LOOPCNT
+#line 2753
#pragma cdir shortloop
+#line 2753
for (i=0; i<ni; i++) {
+#line 2753
/* the normal case: */
+#line 2753
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2753
/* test for range errors (not always needed but do it anyway) */
+#line 2753
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2753
}
+#line 2753
/* copy workspace back if necessary */
+#line 2753
if (realign) {
+#line 2753
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2753
xp = (short *) *xpp;
+#line 2753
}
+#line 2753
/* update xpp and tp */
+#line 2753
xp += ni;
+#line 2753
tp += ni;
+#line 2753
*xpp = (void*)xp;
+#line 2753
}
+#line 2753
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2753
+#line 2753
#else /* not SX */
+#line 2753
+#line 2753
char *xp = (char *) *xpp;
+#line 2753
int status = ENOERR;
+#line 2753
+#line 2753
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2753
{
+#line 2753
int lstatus = ncx_put_short_schar(xp, tp);
+#line 2753
if(lstatus != ENOERR)
+#line 2753
status = lstatus;
+#line 2753
}
+#line 2753
+#line 2753
*xpp = (void *)xp;
+#line 2753
return status;
+#line 2753
#endif
+#line 2753
}
+#line 2753
int
+#line 2754
ncx_putn_short_uchar(void **xpp, size_t nelems, const uchar *tp)
+#line 2754
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2754
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2754
+#line 2754
/* basic algorithm is:
+#line 2754
* - ensure sane alignment of output data
+#line 2754
* - copy (conversion happens automatically) input data
+#line 2754
* to output
+#line 2754
* - update tp to point at next unconverted input, and xpp to point
+#line 2754
* at next location for converted output
+#line 2754
*/
+#line 2754
long i, j, ni;
+#line 2754
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2754
short *xp;
+#line 2754
int nrange = 0; /* number of range errors */
+#line 2754
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2754
long cxp = (long) *((char**)xpp);
+#line 2754
+#line 2754
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2754
/* sjl: manually stripmine so we can limit amount of
+#line 2754
* vector work space reserved to LOOPCNT elements. Also
+#line 2754
* makes vectorisation easy */
+#line 2754
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2754
ni=Min(nelems-j,LOOPCNT);
+#line 2754
if (realign) {
+#line 2754
xp = tmp;
+#line 2754
} else {
+#line 2754
xp = (short *) *xpp;
+#line 2754
}
+#line 2754
/* copy the next block */
+#line 2754
#pragma cdir loopcnt=LOOPCNT
+#line 2754
#pragma cdir shortloop
+#line 2754
for (i=0; i<ni; i++) {
+#line 2754
/* the normal case: */
+#line 2754
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2754
/* test for range errors (not always needed but do it anyway) */
+#line 2754
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2754
}
+#line 2754
/* copy workspace back if necessary */
+#line 2754
if (realign) {
+#line 2754
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2754
xp = (short *) *xpp;
+#line 2754
}
+#line 2754
/* update xpp and tp */
+#line 2754
xp += ni;
+#line 2754
tp += ni;
+#line 2754
*xpp = (void*)xp;
+#line 2754
}
+#line 2754
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2754
+#line 2754
#else /* not SX */
+#line 2754
+#line 2754
char *xp = (char *) *xpp;
+#line 2754
int status = ENOERR;
+#line 2754
+#line 2754
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2754
{
+#line 2754
int lstatus = ncx_put_short_uchar(xp, tp);
+#line 2754
if(lstatus != ENOERR)
+#line 2754
status = lstatus;
+#line 2754
}
+#line 2754
+#line 2754
*xpp = (void *)xp;
+#line 2754
return status;
+#line 2754
#endif
+#line 2754
}
+#line 2754
#if X_SIZEOF_SHORT == SIZEOF_SHORT
/* optimized version */
@@ -3788,910 +5568,1771 @@ ncx_putn_short_short(void **xpp, size_t nelems, const short *tp)
}
#else
int
+#line 2769
ncx_putn_short_short(void **xpp, size_t nelems, const short *tp)
+#line 2769
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2769
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2769
+#line 2769
/* basic algorithm is:
+#line 2769
* - ensure sane alignment of output data
+#line 2769
* - copy (conversion happens automatically) input data
+#line 2769
* to output
+#line 2769
* - update tp to point at next unconverted input, and xpp to point
+#line 2769
* at next location for converted output
+#line 2769
*/
+#line 2769
long i, j, ni;
+#line 2769
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2769
short *xp;
+#line 2769
int nrange = 0; /* number of range errors */
+#line 2769
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2769
long cxp = (long) *((char**)xpp);
+#line 2769
+#line 2769
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2769
/* sjl: manually stripmine so we can limit amount of
+#line 2769
* vector work space reserved to LOOPCNT elements. Also
+#line 2769
* makes vectorisation easy */
+#line 2769
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2769
ni=Min(nelems-j,LOOPCNT);
+#line 2769
if (realign) {
+#line 2769
xp = tmp;
+#line 2769
} else {
+#line 2769
xp = (short *) *xpp;
+#line 2769
}
+#line 2769
/* copy the next block */
+#line 2769
#pragma cdir loopcnt=LOOPCNT
+#line 2769
#pragma cdir shortloop
+#line 2769
for (i=0; i<ni; i++) {
+#line 2769
/* the normal case: */
+#line 2769
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2769
/* test for range errors (not always needed but do it anyway) */
+#line 2769
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2769
}
+#line 2769
/* copy workspace back if necessary */
+#line 2769
if (realign) {
+#line 2769
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2769
xp = (short *) *xpp;
+#line 2769
}
+#line 2769
/* update xpp and tp */
+#line 2769
xp += ni;
+#line 2769
tp += ni;
+#line 2769
*xpp = (void*)xp;
+#line 2769
}
+#line 2769
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2769
+#line 2769
#else /* not SX */
+#line 2769
+#line 2769
char *xp = (char *) *xpp;
+#line 2769
int status = ENOERR;
+#line 2769
+#line 2769
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2769
{
+#line 2769
int lstatus = ncx_put_short_short(xp, tp);
+#line 2769
if(lstatus != ENOERR)
+#line 2769
status = lstatus;
+#line 2769
}
+#line 2769
+#line 2769
*xpp = (void *)xp;
+#line 2769
return status;
+#line 2769
#endif
+#line 2769
}
+#line 2769
#endif
int
+#line 2771
ncx_putn_short_int(void **xpp, size_t nelems, const int *tp)
+#line 2771
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2771
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2771
+#line 2771
/* basic algorithm is:
+#line 2771
* - ensure sane alignment of output data
+#line 2771
* - copy (conversion happens automatically) input data
+#line 2771
* to output
+#line 2771
* - update tp to point at next unconverted input, and xpp to point
+#line 2771
* at next location for converted output
+#line 2771
*/
+#line 2771
long i, j, ni;
+#line 2771
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2771
short *xp;
+#line 2771
int nrange = 0; /* number of range errors */
+#line 2771
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2771
long cxp = (long) *((char**)xpp);
+#line 2771
+#line 2771
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2771
/* sjl: manually stripmine so we can limit amount of
+#line 2771
* vector work space reserved to LOOPCNT elements. Also
+#line 2771
* makes vectorisation easy */
+#line 2771
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2771
ni=Min(nelems-j,LOOPCNT);
+#line 2771
if (realign) {
+#line 2771
xp = tmp;
+#line 2771
} else {
+#line 2771
xp = (short *) *xpp;
+#line 2771
}
+#line 2771
/* copy the next block */
+#line 2771
#pragma cdir loopcnt=LOOPCNT
+#line 2771
#pragma cdir shortloop
+#line 2771
for (i=0; i<ni; i++) {
+#line 2771
/* the normal case: */
+#line 2771
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2771
/* test for range errors (not always needed but do it anyway) */
+#line 2771
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2771
}
+#line 2771
/* copy workspace back if necessary */
+#line 2771
if (realign) {
+#line 2771
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2771
xp = (short *) *xpp;
+#line 2771
}
+#line 2771
/* update xpp and tp */
+#line 2771
xp += ni;
+#line 2771
tp += ni;
+#line 2771
*xpp = (void*)xp;
+#line 2771
}
+#line 2771
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2771
+#line 2771
#else /* not SX */
+#line 2771
+#line 2771
char *xp = (char *) *xpp;
+#line 2771
int status = ENOERR;
+#line 2771
+#line 2771
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2771
{
+#line 2771
int lstatus = ncx_put_short_int(xp, tp);
+#line 2771
if(lstatus != ENOERR)
+#line 2771
status = lstatus;
+#line 2771
}
+#line 2771
+#line 2771
*xpp = (void *)xp;
+#line 2771
return status;
+#line 2771
#endif
+#line 2771
}
+#line 2771
int
+#line 2772
ncx_putn_short_float(void **xpp, size_t nelems, const float *tp)
+#line 2772
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2772
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2772
+#line 2772
/* basic algorithm is:
+#line 2772
* - ensure sane alignment of output data
+#line 2772
* - copy (conversion happens automatically) input data
+#line 2772
* to output
+#line 2772
* - update tp to point at next unconverted input, and xpp to point
+#line 2772
* at next location for converted output
+#line 2772
*/
+#line 2772
long i, j, ni;
+#line 2772
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2772
short *xp;
+#line 2772
int nrange = 0; /* number of range errors */
+#line 2772
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2772
long cxp = (long) *((char**)xpp);
+#line 2772
+#line 2772
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2772
/* sjl: manually stripmine so we can limit amount of
+#line 2772
* vector work space reserved to LOOPCNT elements. Also
+#line 2772
* makes vectorisation easy */
+#line 2772
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2772
ni=Min(nelems-j,LOOPCNT);
+#line 2772
if (realign) {
+#line 2772
xp = tmp;
+#line 2772
} else {
+#line 2772
xp = (short *) *xpp;
+#line 2772
}
+#line 2772
/* copy the next block */
+#line 2772
#pragma cdir loopcnt=LOOPCNT
+#line 2772
#pragma cdir shortloop
+#line 2772
for (i=0; i<ni; i++) {
+#line 2772
/* the normal case: */
+#line 2772
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2772
/* test for range errors (not always needed but do it anyway) */
+#line 2772
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2772
}
+#line 2772
/* copy workspace back if necessary */
+#line 2772
if (realign) {
+#line 2772
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2772
xp = (short *) *xpp;
+#line 2772
}
+#line 2772
/* update xpp and tp */
+#line 2772
xp += ni;
+#line 2772
tp += ni;
+#line 2772
*xpp = (void*)xp;
+#line 2772
}
+#line 2772
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2772
+#line 2772
#else /* not SX */
+#line 2772
+#line 2772
char *xp = (char *) *xpp;
+#line 2772
int status = ENOERR;
+#line 2772
+#line 2772
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2772
{
+#line 2772
int lstatus = ncx_put_short_float(xp, tp);
+#line 2772
if(lstatus != ENOERR)
+#line 2772
status = lstatus;
+#line 2772
}
+#line 2772
+#line 2772
*xpp = (void *)xp;
+#line 2772
return status;
+#line 2772
#endif
+#line 2772
}
+#line 2772
int
+#line 2773
ncx_putn_short_double(void **xpp, size_t nelems, const double *tp)
+#line 2773
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2773
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2773
+#line 2773
/* basic algorithm is:
+#line 2773
* - ensure sane alignment of output data
+#line 2773
* - copy (conversion happens automatically) input data
+#line 2773
* to output
+#line 2773
* - update tp to point at next unconverted input, and xpp to point
+#line 2773
* at next location for converted output
+#line 2773
*/
+#line 2773
long i, j, ni;
+#line 2773
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2773
short *xp;
+#line 2773
int nrange = 0; /* number of range errors */
+#line 2773
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2773
long cxp = (long) *((char**)xpp);
+#line 2773
+#line 2773
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2773
/* sjl: manually stripmine so we can limit amount of
+#line 2773
* vector work space reserved to LOOPCNT elements. Also
+#line 2773
* makes vectorisation easy */
+#line 2773
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2773
ni=Min(nelems-j,LOOPCNT);
+#line 2773
if (realign) {
+#line 2773
xp = tmp;
+#line 2773
} else {
+#line 2773
xp = (short *) *xpp;
+#line 2773
}
+#line 2773
/* copy the next block */
+#line 2773
#pragma cdir loopcnt=LOOPCNT
+#line 2773
#pragma cdir shortloop
+#line 2773
for (i=0; i<ni; i++) {
+#line 2773
/* the normal case: */
+#line 2773
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2773
/* test for range errors (not always needed but do it anyway) */
+#line 2773
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2773
}
+#line 2773
/* copy workspace back if necessary */
+#line 2773
if (realign) {
+#line 2773
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2773
xp = (short *) *xpp;
+#line 2773
}
+#line 2773
/* update xpp and tp */
+#line 2773
xp += ni;
+#line 2773
tp += ni;
+#line 2773
*xpp = (void*)xp;
+#line 2773
}
+#line 2773
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2773
+#line 2773
#else /* not SX */
+#line 2773
+#line 2773
char *xp = (char *) *xpp;
+#line 2773
int status = ENOERR;
+#line 2773
+#line 2773
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2773
{
+#line 2773
int lstatus = ncx_put_short_double(xp, tp);
+#line 2773
if(lstatus != ENOERR)
+#line 2773
status = lstatus;
+#line 2773
}
+#line 2773
+#line 2773
*xpp = (void *)xp;
+#line 2773
return status;
+#line 2773
#endif
+#line 2773
}
+#line 2773
int
+#line 2774
ncx_putn_short_uint(void **xpp, size_t nelems, const uint *tp)
+#line 2774
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2774
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2774
+#line 2774
/* basic algorithm is:
+#line 2774
* - ensure sane alignment of output data
+#line 2774
* - copy (conversion happens automatically) input data
+#line 2774
* to output
+#line 2774
* - update tp to point at next unconverted input, and xpp to point
+#line 2774
* at next location for converted output
+#line 2774
*/
+#line 2774
long i, j, ni;
+#line 2774
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2774
short *xp;
+#line 2774
int nrange = 0; /* number of range errors */
+#line 2774
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2774
long cxp = (long) *((char**)xpp);
+#line 2774
+#line 2774
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2774
/* sjl: manually stripmine so we can limit amount of
+#line 2774
* vector work space reserved to LOOPCNT elements. Also
+#line 2774
* makes vectorisation easy */
+#line 2774
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2774
ni=Min(nelems-j,LOOPCNT);
+#line 2774
if (realign) {
+#line 2774
xp = tmp;
+#line 2774
} else {
+#line 2774
xp = (short *) *xpp;
+#line 2774
}
+#line 2774
/* copy the next block */
+#line 2774
#pragma cdir loopcnt=LOOPCNT
+#line 2774
#pragma cdir shortloop
+#line 2774
for (i=0; i<ni; i++) {
+#line 2774
/* the normal case: */
+#line 2774
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2774
/* test for range errors (not always needed but do it anyway) */
+#line 2774
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2774
}
+#line 2774
/* copy workspace back if necessary */
+#line 2774
if (realign) {
+#line 2774
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2774
xp = (short *) *xpp;
+#line 2774
}
+#line 2774
/* update xpp and tp */
+#line 2774
xp += ni;
+#line 2774
tp += ni;
+#line 2774
*xpp = (void*)xp;
+#line 2774
}
+#line 2774
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2774
+#line 2774
#else /* not SX */
+#line 2774
+#line 2774
char *xp = (char *) *xpp;
+#line 2774
int status = ENOERR;
+#line 2774
+#line 2774
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2774
{
+#line 2774
int lstatus = ncx_put_short_uint(xp, tp);
+#line 2774
if(lstatus != ENOERR)
+#line 2774
status = lstatus;
+#line 2774
}
+#line 2774
+#line 2774
*xpp = (void *)xp;
+#line 2774
return status;
+#line 2774
#endif
+#line 2774
}
+#line 2774
int
+#line 2775
ncx_putn_short_longlong(void **xpp, size_t nelems, const longlong *tp)
+#line 2775
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2775
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2775
+#line 2775
/* basic algorithm is:
+#line 2775
* - ensure sane alignment of output data
+#line 2775
* - copy (conversion happens automatically) input data
+#line 2775
* to output
+#line 2775
* - update tp to point at next unconverted input, and xpp to point
+#line 2775
* at next location for converted output
+#line 2775
*/
+#line 2775
long i, j, ni;
+#line 2775
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2775
short *xp;
+#line 2775
int nrange = 0; /* number of range errors */
+#line 2775
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2775
long cxp = (long) *((char**)xpp);
+#line 2775
+#line 2775
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2775
/* sjl: manually stripmine so we can limit amount of
+#line 2775
* vector work space reserved to LOOPCNT elements. Also
+#line 2775
* makes vectorisation easy */
+#line 2775
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2775
ni=Min(nelems-j,LOOPCNT);
+#line 2775
if (realign) {
+#line 2775
xp = tmp;
+#line 2775
} else {
+#line 2775
xp = (short *) *xpp;
+#line 2775
}
+#line 2775
/* copy the next block */
+#line 2775
#pragma cdir loopcnt=LOOPCNT
+#line 2775
#pragma cdir shortloop
+#line 2775
for (i=0; i<ni; i++) {
+#line 2775
/* the normal case: */
+#line 2775
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2775
/* test for range errors (not always needed but do it anyway) */
+#line 2775
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2775
}
+#line 2775
/* copy workspace back if necessary */
+#line 2775
if (realign) {
+#line 2775
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2775
xp = (short *) *xpp;
+#line 2775
}
+#line 2775
/* update xpp and tp */
+#line 2775
xp += ni;
+#line 2775
tp += ni;
+#line 2775
*xpp = (void*)xp;
+#line 2775
}
+#line 2775
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2775
+#line 2775
#else /* not SX */
+#line 2775
+#line 2775
char *xp = (char *) *xpp;
+#line 2775
int status = ENOERR;
+#line 2775
+#line 2775
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2775
{
+#line 2775
int lstatus = ncx_put_short_longlong(xp, tp);
+#line 2775
if(lstatus != ENOERR)
+#line 2775
status = lstatus;
+#line 2775
}
+#line 2775
+#line 2775
*xpp = (void *)xp;
+#line 2775
return status;
+#line 2775
#endif
+#line 2775
}
+#line 2775
int
+#line 2776
ncx_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *tp)
+#line 2776
{
-#if _SX && \
- X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2776
+#if _SX && X_SIZEOF_SHORT == SIZEOF_SHORT
+#line 2776
+#line 2776
/* basic algorithm is:
+#line 2776
* - ensure sane alignment of output data
+#line 2776
* - copy (conversion happens automatically) input data
+#line 2776
* to output
+#line 2776
* - update tp to point at next unconverted input, and xpp to point
+#line 2776
* at next location for converted output
+#line 2776
*/
+#line 2776
long i, j, ni;
+#line 2776
short tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2776
short *xp;
+#line 2776
int nrange = 0; /* number of range errors */
+#line 2776
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2776
long cxp = (long) *((char**)xpp);
+#line 2776
+#line 2776
realign = (cxp & 7) % SIZEOF_SHORT;
+#line 2776
/* sjl: manually stripmine so we can limit amount of
+#line 2776
* vector work space reserved to LOOPCNT elements. Also
+#line 2776
* makes vectorisation easy */
+#line 2776
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2776
ni=Min(nelems-j,LOOPCNT);
+#line 2776
if (realign) {
+#line 2776
xp = tmp;
+#line 2776
} else {
+#line 2776
xp = (short *) *xpp;
+#line 2776
}
+#line 2776
/* copy the next block */
+#line 2776
#pragma cdir loopcnt=LOOPCNT
+#line 2776
#pragma cdir shortloop
+#line 2776
for (i=0; i<ni; i++) {
+#line 2776
/* the normal case: */
+#line 2776
xp[i] = (short) Max( X_SHORT_MIN, Min(X_SHORT_MAX, (short) tp[i]));
+#line 2776
/* test for range errors (not always needed but do it anyway) */
+#line 2776
nrange += tp[i] < X_SHORT_MIN || tp[i] > X_SHORT_MAX;
+#line 2776
}
+#line 2776
/* copy workspace back if necessary */
+#line 2776
if (realign) {
+#line 2776
memcpy(*xpp, tmp, ni*X_SIZEOF_SHORT);
+#line 2776
xp = (short *) *xpp;
+#line 2776
}
+#line 2776
/* update xpp and tp */
+#line 2776
xp += ni;
+#line 2776
tp += ni;
+#line 2776
*xpp = (void*)xp;
+#line 2776
}
+#line 2776
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2776
+#line 2776
#else /* not SX */
+#line 2776
+#line 2776
char *xp = (char *) *xpp;
+#line 2776
int status = ENOERR;
+#line 2776
+#line 2776
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2776
{
+#line 2776
int lstatus = ncx_put_short_ulonglong(xp, tp);
+#line 2776
if(lstatus != ENOERR)
+#line 2776
status = lstatus;
+#line 2776
}
+#line 2776
+#line 2776
*xpp = (void *)xp;
+#line 2776
return status;
+#line 2776
#endif
+#line 2776
}
+#line 2776
int
+#line 2778
ncx_pad_putn_short_schar(void **xpp, size_t nelems, const schar *tp)
+#line 2778
{
+#line 2778
const size_t rndup = nelems % 2;
+#line 2778
+#line 2778
char *xp = (char *) *xpp;
+#line 2778
int status = ENOERR;
+#line 2778
+#line 2778
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2778
{
+#line 2778
int lstatus = ncx_put_short_schar(xp, tp);
+#line 2778
if(lstatus != ENOERR)
+#line 2778
status = lstatus;
+#line 2778
}
+#line 2778
+#line 2778
if(rndup != 0)
+#line 2778
{
+#line 2778
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2778
xp += X_SIZEOF_SHORT;
+#line 2778
}
+#line 2778
+#line 2778
*xpp = (void *)xp;
+#line 2778
return status;
+#line 2778
}
+#line 2778
int
+#line 2779
ncx_pad_putn_short_uchar(void **xpp, size_t nelems, const uchar *tp)
+#line 2779
{
+#line 2779
const size_t rndup = nelems % 2;
+#line 2779
+#line 2779
char *xp = (char *) *xpp;
+#line 2779
int status = ENOERR;
+#line 2779
+#line 2779
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2779
{
+#line 2779
int lstatus = ncx_put_short_uchar(xp, tp);
+#line 2779
if(lstatus != ENOERR)
+#line 2779
status = lstatus;
+#line 2779
}
+#line 2779
+#line 2779
if(rndup != 0)
+#line 2779
{
+#line 2779
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2779
xp += X_SIZEOF_SHORT;
+#line 2779
}
+#line 2779
+#line 2779
*xpp = (void *)xp;
+#line 2779
return status;
+#line 2779
}
+#line 2779
int
+#line 2780
ncx_pad_putn_short_short(void **xpp, size_t nelems, const short *tp)
+#line 2780
{
+#line 2780
const size_t rndup = nelems % 2;
+#line 2780
+#line 2780
char *xp = (char *) *xpp;
+#line 2780
int status = ENOERR;
+#line 2780
+#line 2780
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2780
{
+#line 2780
int lstatus = ncx_put_short_short(xp, tp);
+#line 2780
if(lstatus != ENOERR)
+#line 2780
status = lstatus;
+#line 2780
}
+#line 2780
+#line 2780
if(rndup != 0)
+#line 2780
{
+#line 2780
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2780
xp += X_SIZEOF_SHORT;
+#line 2780
}
+#line 2780
+#line 2780
*xpp = (void *)xp;
+#line 2780
return status;
+#line 2780
}
+#line 2780
int
+#line 2781
ncx_pad_putn_short_int(void **xpp, size_t nelems, const int *tp)
+#line 2781
{
+#line 2781
const size_t rndup = nelems % 2;
+#line 2781
+#line 2781
char *xp = (char *) *xpp;
+#line 2781
int status = ENOERR;
+#line 2781
+#line 2781
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2781
{
+#line 2781
int lstatus = ncx_put_short_int(xp, tp);
+#line 2781
if(lstatus != ENOERR)
+#line 2781
status = lstatus;
+#line 2781
}
+#line 2781
+#line 2781
if(rndup != 0)
+#line 2781
{
+#line 2781
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2781
xp += X_SIZEOF_SHORT;
+#line 2781
}
+#line 2781
+#line 2781
*xpp = (void *)xp;
+#line 2781
return status;
+#line 2781
}
+#line 2781
int
+#line 2782
ncx_pad_putn_short_float(void **xpp, size_t nelems, const float *tp)
+#line 2782
{
+#line 2782
const size_t rndup = nelems % 2;
+#line 2782
+#line 2782
char *xp = (char *) *xpp;
+#line 2782
int status = ENOERR;
+#line 2782
+#line 2782
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2782
{
+#line 2782
int lstatus = ncx_put_short_float(xp, tp);
+#line 2782
if(lstatus != ENOERR)
+#line 2782
status = lstatus;
+#line 2782
}
+#line 2782
+#line 2782
if(rndup != 0)
+#line 2782
{
+#line 2782
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2782
xp += X_SIZEOF_SHORT;
+#line 2782
}
+#line 2782
+#line 2782
*xpp = (void *)xp;
+#line 2782
return status;
+#line 2782
}
+#line 2782
int
+#line 2783
ncx_pad_putn_short_double(void **xpp, size_t nelems, const double *tp)
+#line 2783
{
+#line 2783
const size_t rndup = nelems % 2;
+#line 2783
+#line 2783
char *xp = (char *) *xpp;
+#line 2783
int status = ENOERR;
+#line 2783
+#line 2783
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2783
{
+#line 2783
int lstatus = ncx_put_short_double(xp, tp);
+#line 2783
if(lstatus != ENOERR)
+#line 2783
status = lstatus;
+#line 2783
}
+#line 2783
+#line 2783
if(rndup != 0)
+#line 2783
{
+#line 2783
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2783
xp += X_SIZEOF_SHORT;
+#line 2783
}
+#line 2783
+#line 2783
*xpp = (void *)xp;
+#line 2783
return status;
+#line 2783
}
+#line 2783
int
+#line 2784
ncx_pad_putn_short_uint(void **xpp, size_t nelems, const uint *tp)
+#line 2784
{
+#line 2784
const size_t rndup = nelems % 2;
+#line 2784
+#line 2784
char *xp = (char *) *xpp;
+#line 2784
int status = ENOERR;
+#line 2784
+#line 2784
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2784
{
+#line 2784
int lstatus = ncx_put_short_uint(xp, tp);
+#line 2784
if(lstatus != ENOERR)
+#line 2784
status = lstatus;
+#line 2784
}
+#line 2784
+#line 2784
if(rndup != 0)
+#line 2784
{
+#line 2784
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2784
xp += X_SIZEOF_SHORT;
+#line 2784
}
+#line 2784
+#line 2784
*xpp = (void *)xp;
+#line 2784
return status;
+#line 2784
}
+#line 2784
int
+#line 2785
ncx_pad_putn_short_longlong(void **xpp, size_t nelems, const longlong *tp)
+#line 2785
{
+#line 2785
const size_t rndup = nelems % 2;
+#line 2785
+#line 2785
char *xp = (char *) *xpp;
+#line 2785
int status = ENOERR;
+#line 2785
+#line 2785
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2785
{
+#line 2785
int lstatus = ncx_put_short_longlong(xp, tp);
+#line 2785
if(lstatus != ENOERR)
+#line 2785
status = lstatus;
+#line 2785
}
+#line 2785
+#line 2785
if(rndup != 0)
+#line 2785
{
+#line 2785
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2785
xp += X_SIZEOF_SHORT;
+#line 2785
}
+#line 2785
+#line 2785
*xpp = (void *)xp;
+#line 2785
return status;
+#line 2785
}
+#line 2785
int
+#line 2786
ncx_pad_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *tp)
+#line 2786
{
+#line 2786
const size_t rndup = nelems % 2;
+#line 2786
+#line 2786
char *xp = (char *) *xpp;
+#line 2786
int status = ENOERR;
+#line 2786
+#line 2786
for( ; nelems != 0; nelems--, xp += X_SIZEOF_SHORT, tp++)
+#line 2786
{
+#line 2786
int lstatus = ncx_put_short_ulonglong(xp, tp);
+#line 2786
if(lstatus != ENOERR)
+#line 2786
status = lstatus;
+#line 2786
}
+#line 2786
+#line 2786
if(rndup != 0)
+#line 2786
{
+#line 2786
(void) memcpy(xp, nada, X_SIZEOF_SHORT);
+#line 2786
xp += X_SIZEOF_SHORT;
+#line 2786
}
+#line 2786
+#line 2786
*xpp = (void *)xp;
+#line 2786
return status;
+#line 2786
}
+#line 2786
/* int */
int
+#line 2791
ncx_getn_int_schar(const void **xpp, size_t nelems, schar *tp)
+#line 2791
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2791
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2791
+#line 2791
/* basic algorithm is:
+#line 2791
* - ensure sane alignment of input data
+#line 2791
* - copy (conversion happens automatically) input data
+#line 2791
* to output
+#line 2791
* - update xpp to point at next unconverted input, and tp to point
+#line 2791
* at next location for converted output
+#line 2791
*/
+#line 2791
long i, j, ni;
+#line 2791
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2791
int *xp;
+#line 2791
int nrange = 0; /* number of range errors */
+#line 2791
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2791
long cxp = (long) *((char**)xpp);
+#line 2791
+#line 2791
realign = (cxp & 7) % SIZEOF_INT;
+#line 2791
/* sjl: manually stripmine so we can limit amount of
+#line 2791
* vector work space reserved to LOOPCNT elements. Also
+#line 2791
* makes vectorisation easy */
+#line 2791
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2791
ni=Min(nelems-j,LOOPCNT);
+#line 2791
if (realign) {
+#line 2791
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2791
xp = tmp;
+#line 2791
} else {
+#line 2791
xp = (int *) *xpp;
+#line 2791
}
+#line 2791
/* copy the next block */
+#line 2791
#pragma cdir loopcnt=LOOPCNT
+#line 2791
#pragma cdir shortloop
+#line 2791
for (i=0; i<ni; i++) {
+#line 2791
tp[i] = (schar) Max( SCHAR_MIN, Min(SCHAR_MAX, (schar) xp[i]));
+#line 2791
/* test for range errors (not always needed but do it anyway) */
+#line 2791
nrange += xp[i] < SCHAR_MIN || xp[i] > SCHAR_MAX;
+#line 2791
}
+#line 2791
/* update xpp and tp */
+#line 2791
if (realign) xp = (int *) *xpp;
+#line 2791
xp += ni;
+#line 2791
tp += ni;
+#line 2791
*xpp = (void*)xp;
+#line 2791
}
+#line 2791
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2791
+#line 2791
#else /* not SX */
+#line 2791
const char *xp = (const char *) *xpp;
+#line 2791
int status = ENOERR;
+#line 2791
+#line 2791
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2791
{
+#line 2791
const int lstatus = ncx_get_int_schar(xp, tp);
+#line 2791
if(lstatus != ENOERR)
+#line 2791
status = lstatus;
+#line 2791
}
+#line 2791
+#line 2791
*xpp = (const void *)xp;
+#line 2791
return status;
+#line 2791
# endif
+#line 2791
}
+#line 2791
int
+#line 2792
ncx_getn_int_uchar(const void **xpp, size_t nelems, uchar *tp)
+#line 2792
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2792
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2792
+#line 2792
/* basic algorithm is:
+#line 2792
* - ensure sane alignment of input data
+#line 2792
* - copy (conversion happens automatically) input data
+#line 2792
* to output
+#line 2792
* - update xpp to point at next unconverted input, and tp to point
+#line 2792
* at next location for converted output
+#line 2792
*/
+#line 2792
long i, j, ni;
+#line 2792
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2792
int *xp;
+#line 2792
int nrange = 0; /* number of range errors */
+#line 2792
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2792
long cxp = (long) *((char**)xpp);
+#line 2792
+#line 2792
realign = (cxp & 7) % SIZEOF_INT;
+#line 2792
/* sjl: manually stripmine so we can limit amount of
+#line 2792
* vector work space reserved to LOOPCNT elements. Also
+#line 2792
* makes vectorisation easy */
+#line 2792
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2792
ni=Min(nelems-j,LOOPCNT);
+#line 2792
if (realign) {
+#line 2792
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2792
xp = tmp;
+#line 2792
} else {
+#line 2792
xp = (int *) *xpp;
+#line 2792
}
+#line 2792
/* copy the next block */
+#line 2792
#pragma cdir loopcnt=LOOPCNT
+#line 2792
#pragma cdir shortloop
+#line 2792
for (i=0; i<ni; i++) {
+#line 2792
tp[i] = (uchar) Max( UCHAR_MIN, Min(UCHAR_MAX, (uchar) xp[i]));
+#line 2792
/* test for range errors (not always needed but do it anyway) */
+#line 2792
nrange += xp[i] < UCHAR_MIN || xp[i] > UCHAR_MAX;
+#line 2792
}
+#line 2792
/* update xpp and tp */
+#line 2792
if (realign) xp = (int *) *xpp;
+#line 2792
xp += ni;
+#line 2792
tp += ni;
+#line 2792
*xpp = (void*)xp;
+#line 2792
}
+#line 2792
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2792
+#line 2792
#else /* not SX */
+#line 2792
const char *xp = (const char *) *xpp;
+#line 2792
int status = ENOERR;
+#line 2792
+#line 2792
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2792
{
+#line 2792
const int lstatus = ncx_get_int_uchar(xp, tp);
+#line 2792
if(lstatus != ENOERR)
+#line 2792
status = lstatus;
+#line 2792
}
+#line 2792
+#line 2792
*xpp = (const void *)xp;
+#line 2792
return status;
+#line 2792
# endif
+#line 2792
}
+#line 2792
int
+#line 2793
ncx_getn_int_short(const void **xpp, size_t nelems, short *tp)
+#line 2793
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2793
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2793
+#line 2793
/* basic algorithm is:
+#line 2793
* - ensure sane alignment of input data
+#line 2793
* - copy (conversion happens automatically) input data
+#line 2793
* to output
+#line 2793
* - update xpp to point at next unconverted input, and tp to point
+#line 2793
* at next location for converted output
+#line 2793
*/
+#line 2793
long i, j, ni;
+#line 2793
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2793
int *xp;
+#line 2793
int nrange = 0; /* number of range errors */
+#line 2793
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2793
long cxp = (long) *((char**)xpp);
+#line 2793
+#line 2793
realign = (cxp & 7) % SIZEOF_INT;
+#line 2793
/* sjl: manually stripmine so we can limit amount of
+#line 2793
* vector work space reserved to LOOPCNT elements. Also
+#line 2793
* makes vectorisation easy */
+#line 2793
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2793
ni=Min(nelems-j,LOOPCNT);
+#line 2793
if (realign) {
+#line 2793
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2793
xp = tmp;
+#line 2793
} else {
+#line 2793
xp = (int *) *xpp;
+#line 2793
}
+#line 2793
/* copy the next block */
+#line 2793
#pragma cdir loopcnt=LOOPCNT
+#line 2793
#pragma cdir shortloop
+#line 2793
for (i=0; i<ni; i++) {
+#line 2793
tp[i] = (short) Max( SHORT_MIN, Min(SHORT_MAX, (short) xp[i]));
+#line 2793
/* test for range errors (not always needed but do it anyway) */
+#line 2793
nrange += xp[i] < SHORT_MIN || xp[i] > SHORT_MAX;
+#line 2793
}
+#line 2793
/* update xpp and tp */
+#line 2793
if (realign) xp = (int *) *xpp;
+#line 2793
xp += ni;
+#line 2793
tp += ni;
+#line 2793
*xpp = (void*)xp;
+#line 2793
}
+#line 2793
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2793
+#line 2793
#else /* not SX */
+#line 2793
const char *xp = (const char *) *xpp;
+#line 2793
int status = ENOERR;
+#line 2793
+#line 2793
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2793
{
+#line 2793
const int lstatus = ncx_get_int_short(xp, tp);
+#line 2793
if(lstatus != ENOERR)
+#line 2793
status = lstatus;
+#line 2793
}
+#line 2793
+#line 2793
*xpp = (const void *)xp;
+#line 2793
return status;
+#line 2793
# endif
+#line 2793
}
+#line 2793
#if X_SIZEOF_INT == SIZEOF_INT
/* optimized version */
@@ -4719,599 +7360,1163 @@ ncx_getn_int_uint(const void **xpp, size_t nelems, unsigned int *tp)
}
#else
int
+#line 2819
ncx_getn_int_int(const void **xpp, size_t nelems, int *tp)
+#line 2819
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2819
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2819
+#line 2819
/* basic algorithm is:
+#line 2819
* - ensure sane alignment of input data
+#line 2819
* - copy (conversion happens automatically) input data
+#line 2819
* to output
+#line 2819
* - update xpp to point at next unconverted input, and tp to point
+#line 2819
* at next location for converted output
+#line 2819
*/
+#line 2819
long i, j, ni;
+#line 2819
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2819
int *xp;
+#line 2819
int nrange = 0; /* number of range errors */
+#line 2819
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2819
long cxp = (long) *((char**)xpp);
+#line 2819
+#line 2819
realign = (cxp & 7) % SIZEOF_INT;
+#line 2819
/* sjl: manually stripmine so we can limit amount of
+#line 2819
* vector work space reserved to LOOPCNT elements. Also
+#line 2819
* makes vectorisation easy */
+#line 2819
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2819
ni=Min(nelems-j,LOOPCNT);
+#line 2819
if (realign) {
+#line 2819
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2819
xp = tmp;
+#line 2819
} else {
+#line 2819
xp = (int *) *xpp;
+#line 2819
}
+#line 2819
/* copy the next block */
+#line 2819
#pragma cdir loopcnt=LOOPCNT
+#line 2819
#pragma cdir shortloop
+#line 2819
for (i=0; i<ni; i++) {
+#line 2819
tp[i] = (int) Max( INT_MIN, Min(INT_MAX, (int) xp[i]));
+#line 2819
/* test for range errors (not always needed but do it anyway) */
+#line 2819
nrange += xp[i] < INT_MIN || xp[i] > INT_MAX;
+#line 2819
}
+#line 2819
/* update xpp and tp */
+#line 2819
if (realign) xp = (int *) *xpp;
+#line 2819
xp += ni;
+#line 2819
tp += ni;
+#line 2819
*xpp = (void*)xp;
+#line 2819
}
+#line 2819
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2819
+#line 2819
#else /* not SX */
+#line 2819
const char *xp = (const char *) *xpp;
+#line 2819
int status = ENOERR;
+#line 2819
+#line 2819
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2819
{
+#line 2819
const int lstatus = ncx_get_int_int(xp, tp);
+#line 2819
if(lstatus != ENOERR)
+#line 2819
status = lstatus;
+#line 2819
}
+#line 2819
+#line 2819
*xpp = (const void *)xp;
+#line 2819
return status;
+#line 2819
# endif
+#line 2819
}
+#line 2819
int
+#line 2820
ncx_getn_int_uint(const void **xpp, size_t nelems, uint *tp)
+#line 2820
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2820
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2820
+#line 2820
/* basic algorithm is:
+#line 2820
* - ensure sane alignment of input data
+#line 2820
* - copy (conversion happens automatically) input data
+#line 2820
* to output
+#line 2820
* - update xpp to point at next unconverted input, and tp to point
+#line 2820
* at next location for converted output
+#line 2820
*/
+#line 2820
long i, j, ni;
+#line 2820
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2820
int *xp;
+#line 2820
int nrange = 0; /* number of range errors */
+#line 2820
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2820
long cxp = (long) *((char**)xpp);
+#line 2820
+#line 2820
realign = (cxp & 7) % SIZEOF_INT;
+#line 2820
/* sjl: manually stripmine so we can limit amount of
+#line 2820
* vector work space reserved to LOOPCNT elements. Also
+#line 2820
* makes vectorisation easy */
+#line 2820
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2820
ni=Min(nelems-j,LOOPCNT);
+#line 2820
if (realign) {
+#line 2820
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2820
xp = tmp;
+#line 2820
} else {
+#line 2820
xp = (int *) *xpp;
+#line 2820
}
+#line 2820
/* copy the next block */
+#line 2820
#pragma cdir loopcnt=LOOPCNT
+#line 2820
#pragma cdir shortloop
+#line 2820
for (i=0; i<ni; i++) {
+#line 2820
tp[i] = (uint) Max( UINT_MIN, Min(UINT_MAX, (uint) xp[i]));
+#line 2820
/* test for range errors (not always needed but do it anyway) */
+#line 2820
nrange += xp[i] < UINT_MIN || xp[i] > UINT_MAX;
+#line 2820
}
+#line 2820
/* update xpp and tp */
+#line 2820
if (realign) xp = (int *) *xpp;
+#line 2820
xp += ni;
+#line 2820
tp += ni;
+#line 2820
*xpp = (void*)xp;
+#line 2820
}
+#line 2820
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2820
+#line 2820
#else /* not SX */
+#line 2820
const char *xp = (const char *) *xpp;
+#line 2820
int status = ENOERR;
+#line 2820
+#line 2820
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2820
{
+#line 2820
const int lstatus = ncx_get_int_uint(xp, tp);
+#line 2820
if(lstatus != ENOERR)
+#line 2820
status = lstatus;
+#line 2820
}
+#line 2820
+#line 2820
*xpp = (const void *)xp;
+#line 2820
return status;
+#line 2820
# endif
+#line 2820
}
+#line 2820
#endif
int
+#line 2823
ncx_getn_int_longlong(const void **xpp, size_t nelems, longlong *tp)
+#line 2823
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2823
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2823
+#line 2823
/* basic algorithm is:
+#line 2823
* - ensure sane alignment of input data
+#line 2823
* - copy (conversion happens automatically) input data
+#line 2823
* to output
+#line 2823
* - update xpp to point at next unconverted input, and tp to point
+#line 2823
* at next location for converted output
+#line 2823
*/
+#line 2823
long i, j, ni;
+#line 2823
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2823
int *xp;
+#line 2823
int nrange = 0; /* number of range errors */
+#line 2823
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2823
long cxp = (long) *((char**)xpp);
+#line 2823
+#line 2823
realign = (cxp & 7) % SIZEOF_INT;
+#line 2823
/* sjl: manually stripmine so we can limit amount of
+#line 2823
* vector work space reserved to LOOPCNT elements. Also
+#line 2823
* makes vectorisation easy */
+#line 2823
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2823
ni=Min(nelems-j,LOOPCNT);
+#line 2823
if (realign) {
+#line 2823
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2823
xp = tmp;
+#line 2823
} else {
+#line 2823
xp = (int *) *xpp;
+#line 2823
}
+#line 2823
/* copy the next block */
+#line 2823
#pragma cdir loopcnt=LOOPCNT
+#line 2823
#pragma cdir shortloop
+#line 2823
for (i=0; i<ni; i++) {
+#line 2823
tp[i] = (longlong) Max( LONGLONG_MIN, Min(LONGLONG_MAX, (longlong) xp[i]));
+#line 2823
/* test for range errors (not always needed but do it anyway) */
+#line 2823
nrange += xp[i] < LONGLONG_MIN || xp[i] > LONGLONG_MAX;
+#line 2823
}
+#line 2823
/* update xpp and tp */
+#line 2823
if (realign) xp = (int *) *xpp;
+#line 2823
xp += ni;
+#line 2823
tp += ni;
+#line 2823
*xpp = (void*)xp;
+#line 2823
}
+#line 2823
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2823
+#line 2823
#else /* not SX */
+#line 2823
const char *xp = (const char *) *xpp;
+#line 2823
int status = ENOERR;
+#line 2823
+#line 2823
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2823
{
+#line 2823
const int lstatus = ncx_get_int_longlong(xp, tp);
+#line 2823
if(lstatus != ENOERR)
+#line 2823
status = lstatus;
+#line 2823
}
+#line 2823
+#line 2823
*xpp = (const void *)xp;
+#line 2823
return status;
+#line 2823
# endif
+#line 2823
}
+#line 2823
int
+#line 2824
ncx_getn_int_ulonglong(const void **xpp, size_t nelems, ulonglong *tp)
+#line 2824
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2824
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2824
+#line 2824
/* basic algorithm is:
+#line 2824
* - ensure sane alignment of input data
+#line 2824
* - copy (conversion happens automatically) input data
+#line 2824
* to output
+#line 2824
* - update xpp to point at next unconverted input, and tp to point
+#line 2824
* at next location for converted output
+#line 2824
*/
+#line 2824
long i, j, ni;
+#line 2824
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2824
int *xp;
+#line 2824
int nrange = 0; /* number of range errors */
+#line 2824
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2824
long cxp = (long) *((char**)xpp);
+#line 2824
+#line 2824
realign = (cxp & 7) % SIZEOF_INT;
+#line 2824
/* sjl: manually stripmine so we can limit amount of
+#line 2824
* vector work space reserved to LOOPCNT elements. Also
+#line 2824
* makes vectorisation easy */
+#line 2824
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2824
ni=Min(nelems-j,LOOPCNT);
+#line 2824
if (realign) {
+#line 2824
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2824
xp = tmp;
+#line 2824
} else {
+#line 2824
xp = (int *) *xpp;
+#line 2824
}
+#line 2824
/* copy the next block */
+#line 2824
#pragma cdir loopcnt=LOOPCNT
+#line 2824
#pragma cdir shortloop
+#line 2824
for (i=0; i<ni; i++) {
+#line 2824
tp[i] = (ulonglong) Max( ULONGLONG_MIN, Min(ULONGLONG_MAX, (ulonglong) xp[i]));
+#line 2824
/* test for range errors (not always needed but do it anyway) */
+#line 2824
nrange += xp[i] < ULONGLONG_MIN || xp[i] > ULONGLONG_MAX;
+#line 2824
}
+#line 2824
/* update xpp and tp */
+#line 2824
if (realign) xp = (int *) *xpp;
+#line 2824
xp += ni;
+#line 2824
tp += ni;
+#line 2824
*xpp = (void*)xp;
+#line 2824
}
+#line 2824
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2824
+#line 2824
#else /* not SX */
+#line 2824
const char *xp = (const char *) *xpp;
+#line 2824
int status = ENOERR;
+#line 2824
+#line 2824
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2824
{
+#line 2824
const int lstatus = ncx_get_int_ulonglong(xp, tp);
+#line 2824
if(lstatus != ENOERR)
+#line 2824
status = lstatus;
+#line 2824
}
+#line 2824
+#line 2824
*xpp = (const void *)xp;
+#line 2824
return status;
+#line 2824
# endif
+#line 2824
}
+#line 2824
int
+#line 2826
ncx_getn_int_float(const void **xpp, size_t nelems, float *tp)
+#line 2826
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2826
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2826
+#line 2826
/* basic algorithm is:
+#line 2826
* - ensure sane alignment of input data
+#line 2826
* - copy (conversion happens automatically) input data
+#line 2826
* to output
+#line 2826
* - update xpp to point at next unconverted input, and tp to point
+#line 2826
* at next location for converted output
+#line 2826
*/
+#line 2826
long i, j, ni;
+#line 2826
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2826
int *xp;
+#line 2826
int nrange = 0; /* number of range errors */
+#line 2826
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2826
long cxp = (long) *((char**)xpp);
+#line 2826
+#line 2826
realign = (cxp & 7) % SIZEOF_INT;
+#line 2826
/* sjl: manually stripmine so we can limit amount of
+#line 2826
* vector work space reserved to LOOPCNT elements. Also
+#line 2826
* makes vectorisation easy */
+#line 2826
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2826
ni=Min(nelems-j,LOOPCNT);
+#line 2826
if (realign) {
+#line 2826
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2826
xp = tmp;
+#line 2826
} else {
+#line 2826
xp = (int *) *xpp;
+#line 2826
}
+#line 2826
/* copy the next block */
+#line 2826
#pragma cdir loopcnt=LOOPCNT
+#line 2826
#pragma cdir shortloop
+#line 2826
for (i=0; i<ni; i++) {
+#line 2826
tp[i] = (float) Max( FLOAT_MIN, Min(FLOAT_MAX, (float) xp[i]));
+#line 2826
/* test for range errors (not always needed but do it anyway) */
+#line 2826
nrange += xp[i] < FLOAT_MIN || xp[i] > FLOAT_MAX;
+#line 2826
}
+#line 2826
/* update xpp and tp */
+#line 2826
if (realign) xp = (int *) *xpp;
+#line 2826
xp += ni;
+#line 2826
tp += ni;
+#line 2826
*xpp = (void*)xp;
+#line 2826
}
+#line 2826
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2826
+#line 2826
#else /* not SX */
+#line 2826
const char *xp = (const char *) *xpp;
+#line 2826
int status = ENOERR;
+#line 2826
+#line 2826
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2826
{
+#line 2826
const int lstatus = ncx_get_int_float(xp, tp);
+#line 2826
if(lstatus != ENOERR)
+#line 2826
status = lstatus;
+#line 2826
}
+#line 2826
+#line 2826
*xpp = (const void *)xp;
+#line 2826
return status;
+#line 2826
# endif
+#line 2826
}
+#line 2826
int
+#line 2827
ncx_getn_int_double(const void **xpp, size_t nelems, double *tp)
+#line 2827
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2827
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2827
+#line 2827
/* basic algorithm is:
+#line 2827
* - ensure sane alignment of input data
+#line 2827
* - copy (conversion happens automatically) input data
+#line 2827
* to output
+#line 2827
* - update xpp to point at next unconverted input, and tp to point
+#line 2827
* at next location for converted output
+#line 2827
*/
+#line 2827
long i, j, ni;
+#line 2827
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2827
int *xp;
+#line 2827
int nrange = 0; /* number of range errors */
+#line 2827
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2827
long cxp = (long) *((char**)xpp);
+#line 2827
+#line 2827
realign = (cxp & 7) % SIZEOF_INT;
+#line 2827
/* sjl: manually stripmine so we can limit amount of
+#line 2827
* vector work space reserved to LOOPCNT elements. Also
+#line 2827
* makes vectorisation easy */
+#line 2827
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2827
ni=Min(nelems-j,LOOPCNT);
+#line 2827
if (realign) {
+#line 2827
memcpy(tmp, *xpp, ni*SIZEOF_INT);
+#line 2827
xp = tmp;
+#line 2827
} else {
+#line 2827
xp = (int *) *xpp;
+#line 2827
}
+#line 2827
/* copy the next block */
+#line 2827
#pragma cdir loopcnt=LOOPCNT
+#line 2827
#pragma cdir shortloop
+#line 2827
for (i=0; i<ni; i++) {
+#line 2827
tp[i] = (double) Max( DOUBLE_MIN, Min(DOUBLE_MAX, (double) xp[i]));
+#line 2827
/* test for range errors (not always needed but do it anyway) */
+#line 2827
nrange += xp[i] < DOUBLE_MIN || xp[i] > DOUBLE_MAX;
+#line 2827
}
+#line 2827
/* update xpp and tp */
+#line 2827
if (realign) xp = (int *) *xpp;
+#line 2827
xp += ni;
+#line 2827
tp += ni;
+#line 2827
*xpp = (void*)xp;
+#line 2827
}
+#line 2827
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2827
+#line 2827
#else /* not SX */
+#line 2827
const char *xp = (const char *) *xpp;
+#line 2827
int status = ENOERR;
+#line 2827
+#line 2827
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2827
{
+#line 2827
const int lstatus = ncx_get_int_double(xp, tp);
+#line 2827
if(lstatus != ENOERR)
+#line 2827
status = lstatus;
+#line 2827
}
+#line 2827
+#line 2827
*xpp = (const void *)xp;
+#line 2827
return status;
+#line 2827
# endif
+#line 2827
}
+#line 2827
int
+#line 2829
ncx_putn_int_schar(void **xpp, size_t nelems, const schar *tp)
+#line 2829
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2829
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2829
+#line 2829
/* basic algorithm is:
+#line 2829
* - ensure sane alignment of output data
+#line 2829
* - copy (conversion happens automatically) input data
+#line 2829
* to output
+#line 2829
* - update tp to point at next unconverted input, and xpp to point
+#line 2829
* at next location for converted output
+#line 2829
*/
+#line 2829
long i, j, ni;
+#line 2829
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2829
int *xp;
+#line 2829
int nrange = 0; /* number of range errors */
+#line 2829
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2829
long cxp = (long) *((char**)xpp);
+#line 2829
+#line 2829
realign = (cxp & 7) % SIZEOF_INT;
+#line 2829
/* sjl: manually stripmine so we can limit amount of
+#line 2829
* vector work space reserved to LOOPCNT elements. Also
+#line 2829
* makes vectorisation easy */
+#line 2829
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2829
ni=Min(nelems-j,LOOPCNT);
+#line 2829
if (realign) {
+#line 2829
xp = tmp;
+#line 2829
} else {
+#line 2829
xp = (int *) *xpp;
+#line 2829
}
+#line 2829
/* copy the next block */
+#line 2829
#pragma cdir loopcnt=LOOPCNT
+#line 2829
#pragma cdir shortloop
+#line 2829
for (i=0; i<ni; i++) {
+#line 2829
/* the normal case: */
+#line 2829
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2829
/* test for range errors (not always needed but do it anyway) */
+#line 2829
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2829
}
+#line 2829
/* copy workspace back if necessary */
+#line 2829
if (realign) {
+#line 2829
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2829
xp = (int *) *xpp;
+#line 2829
}
+#line 2829
/* update xpp and tp */
+#line 2829
xp += ni;
+#line 2829
tp += ni;
+#line 2829
*xpp = (void*)xp;
+#line 2829
}
+#line 2829
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2829
+#line 2829
#else /* not SX */
+#line 2829
+#line 2829
char *xp = (char *) *xpp;
+#line 2829
int status = ENOERR;
+#line 2829
+#line 2829
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2829
{
+#line 2829
int lstatus = ncx_put_int_schar(xp, tp);
+#line 2829
if(lstatus != ENOERR)
+#line 2829
status = lstatus;
+#line 2829
}
+#line 2829
+#line 2829
*xpp = (void *)xp;
+#line 2829
return status;
+#line 2829
#endif
+#line 2829
}
+#line 2829
int
+#line 2830
ncx_putn_int_uchar(void **xpp, size_t nelems, const uchar *tp)
+#line 2830
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2830
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2830
+#line 2830
/* basic algorithm is:
+#line 2830
* - ensure sane alignment of output data
+#line 2830
* - copy (conversion happens automatically) input data
+#line 2830
* to output
+#line 2830
* - update tp to point at next unconverted input, and xpp to point
+#line 2830
* at next location for converted output
+#line 2830
*/
+#line 2830
long i, j, ni;
+#line 2830
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2830
int *xp;
+#line 2830
int nrange = 0; /* number of range errors */
+#line 2830
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2830
long cxp = (long) *((char**)xpp);
+#line 2830
+#line 2830
realign = (cxp & 7) % SIZEOF_INT;
+#line 2830
/* sjl: manually stripmine so we can limit amount of
+#line 2830
* vector work space reserved to LOOPCNT elements. Also
+#line 2830
* makes vectorisation easy */
+#line 2830
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2830
ni=Min(nelems-j,LOOPCNT);
+#line 2830
if (realign) {
+#line 2830
xp = tmp;
+#line 2830
} else {
+#line 2830
xp = (int *) *xpp;
+#line 2830
}
+#line 2830
/* copy the next block */
+#line 2830
#pragma cdir loopcnt=LOOPCNT
+#line 2830
#pragma cdir shortloop
+#line 2830
for (i=0; i<ni; i++) {
+#line 2830
/* the normal case: */
+#line 2830
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2830
/* test for range errors (not always needed but do it anyway) */
+#line 2830
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2830
}
+#line 2830
/* copy workspace back if necessary */
+#line 2830
if (realign) {
+#line 2830
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2830
xp = (int *) *xpp;
+#line 2830
}
+#line 2830
/* update xpp and tp */
+#line 2830
xp += ni;
+#line 2830
tp += ni;
+#line 2830
*xpp = (void*)xp;
+#line 2830
}
+#line 2830
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2830
+#line 2830
#else /* not SX */
+#line 2830
+#line 2830
char *xp = (char *) *xpp;
+#line 2830
int status = ENOERR;
+#line 2830
+#line 2830
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2830
{
+#line 2830
int lstatus = ncx_put_int_uchar(xp, tp);
+#line 2830
if(lstatus != ENOERR)
+#line 2830
status = lstatus;
+#line 2830
}
+#line 2830
+#line 2830
*xpp = (void *)xp;
+#line 2830
return status;
+#line 2830
#endif
+#line 2830
}
+#line 2830
int
+#line 2831
ncx_putn_int_short(void **xpp, size_t nelems, const short *tp)
+#line 2831
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2831
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2831
+#line 2831
/* basic algorithm is:
+#line 2831
* - ensure sane alignment of output data
+#line 2831
* - copy (conversion happens automatically) input data
+#line 2831
* to output
+#line 2831
* - update tp to point at next unconverted input, and xpp to point
+#line 2831
* at next location for converted output
+#line 2831
*/
+#line 2831
long i, j, ni;
+#line 2831
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2831
int *xp;
+#line 2831
int nrange = 0; /* number of range errors */
+#line 2831
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2831
long cxp = (long) *((char**)xpp);
+#line 2831
+#line 2831
realign = (cxp & 7) % SIZEOF_INT;
+#line 2831
/* sjl: manually stripmine so we can limit amount of
+#line 2831
* vector work space reserved to LOOPCNT elements. Also
+#line 2831
* makes vectorisation easy */
+#line 2831
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2831
ni=Min(nelems-j,LOOPCNT);
+#line 2831
if (realign) {
+#line 2831
xp = tmp;
+#line 2831
} else {
+#line 2831
xp = (int *) *xpp;
+#line 2831
}
+#line 2831
/* copy the next block */
+#line 2831
#pragma cdir loopcnt=LOOPCNT
+#line 2831
#pragma cdir shortloop
+#line 2831
for (i=0; i<ni; i++) {
+#line 2831
/* the normal case: */
+#line 2831
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2831
/* test for range errors (not always needed but do it anyway) */
+#line 2831
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2831
}
+#line 2831
/* copy workspace back if necessary */
+#line 2831
if (realign) {
+#line 2831
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2831
xp = (int *) *xpp;
+#line 2831
}
+#line 2831
/* update xpp and tp */
+#line 2831
xp += ni;
+#line 2831
tp += ni;
+#line 2831
*xpp = (void*)xp;
+#line 2831
}
+#line 2831
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2831
+#line 2831
#else /* not SX */
+#line 2831
+#line 2831
char *xp = (char *) *xpp;
+#line 2831
int status = ENOERR;
+#line 2831
+#line 2831
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2831
{
+#line 2831
int lstatus = ncx_put_int_short(xp, tp);
+#line 2831
if(lstatus != ENOERR)
+#line 2831
status = lstatus;
+#line 2831
}
+#line 2831
+#line 2831
*xpp = (void *)xp;
+#line 2831
return status;
+#line 2831
#endif
+#line 2831
}
+#line 2831
#if X_SIZEOF_INT == SIZEOF_INT
/* optimized version */
@@ -5339,681 +8544,1322 @@ ncx_putn_int_uint(void **xpp, size_t nelems, const unsigned int *tp)
}
#else
int
+#line 2857
ncx_putn_int_int(void **xpp, size_t nelems, const int *tp)
+#line 2857
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2857
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2857
+#line 2857
/* basic algorithm is:
+#line 2857
* - ensure sane alignment of output data
+#line 2857
* - copy (conversion happens automatically) input data
+#line 2857
* to output
+#line 2857
* - update tp to point at next unconverted input, and xpp to point
+#line 2857
* at next location for converted output
+#line 2857
*/
+#line 2857
long i, j, ni;
+#line 2857
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2857
int *xp;
+#line 2857
int nrange = 0; /* number of range errors */
+#line 2857
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2857
long cxp = (long) *((char**)xpp);
+#line 2857
+#line 2857
realign = (cxp & 7) % SIZEOF_INT;
+#line 2857
/* sjl: manually stripmine so we can limit amount of
+#line 2857
* vector work space reserved to LOOPCNT elements. Also
+#line 2857
* makes vectorisation easy */
+#line 2857
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2857
ni=Min(nelems-j,LOOPCNT);
+#line 2857
if (realign) {
+#line 2857
xp = tmp;
+#line 2857
} else {
+#line 2857
xp = (int *) *xpp;
+#line 2857
}
+#line 2857
/* copy the next block */
+#line 2857
#pragma cdir loopcnt=LOOPCNT
+#line 2857
#pragma cdir shortloop
+#line 2857
for (i=0; i<ni; i++) {
+#line 2857
/* the normal case: */
+#line 2857
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2857
/* test for range errors (not always needed but do it anyway) */
+#line 2857
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2857
}
+#line 2857
/* copy workspace back if necessary */
+#line 2857
if (realign) {
+#line 2857
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2857
xp = (int *) *xpp;
+#line 2857
}
+#line 2857
/* update xpp and tp */
+#line 2857
xp += ni;
+#line 2857
tp += ni;
+#line 2857
*xpp = (void*)xp;
+#line 2857
}
+#line 2857
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2857
+#line 2857
#else /* not SX */
+#line 2857
+#line 2857
char *xp = (char *) *xpp;
+#line 2857
int status = ENOERR;
+#line 2857
+#line 2857
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2857
{
+#line 2857
int lstatus = ncx_put_int_int(xp, tp);
+#line 2857
if(lstatus != ENOERR)
+#line 2857
status = lstatus;
+#line 2857
}
+#line 2857
+#line 2857
*xpp = (void *)xp;
+#line 2857
return status;
+#line 2857
#endif
+#line 2857
}
+#line 2857
int
+#line 2858
ncx_putn_int_uint(void **xpp, size_t nelems, const uint *tp)
+#line 2858
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2858
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2858
+#line 2858
/* basic algorithm is:
+#line 2858
* - ensure sane alignment of output data
+#line 2858
* - copy (conversion happens automatically) input data
+#line 2858
* to output
+#line 2858
* - update tp to point at next unconverted input, and xpp to point
+#line 2858
* at next location for converted output
+#line 2858
*/
+#line 2858
long i, j, ni;
+#line 2858
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2858
int *xp;
+#line 2858
int nrange = 0; /* number of range errors */
+#line 2858
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2858
long cxp = (long) *((char**)xpp);
+#line 2858
+#line 2858
realign = (cxp & 7) % SIZEOF_INT;
+#line 2858
/* sjl: manually stripmine so we can limit amount of
+#line 2858
* vector work space reserved to LOOPCNT elements. Also
+#line 2858
* makes vectorisation easy */
+#line 2858
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2858
ni=Min(nelems-j,LOOPCNT);
+#line 2858
if (realign) {
+#line 2858
xp = tmp;
+#line 2858
} else {
+#line 2858
xp = (int *) *xpp;
+#line 2858
}
+#line 2858
/* copy the next block */
+#line 2858
#pragma cdir loopcnt=LOOPCNT
+#line 2858
#pragma cdir shortloop
+#line 2858
for (i=0; i<ni; i++) {
+#line 2858
/* the normal case: */
+#line 2858
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2858
/* test for range errors (not always needed but do it anyway) */
+#line 2858
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2858
}
+#line 2858
/* copy workspace back if necessary */
+#line 2858
if (realign) {
+#line 2858
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2858
xp = (int *) *xpp;
+#line 2858
}
+#line 2858
/* update xpp and tp */
+#line 2858
xp += ni;
+#line 2858
tp += ni;
+#line 2858
*xpp = (void*)xp;
+#line 2858
}
+#line 2858
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2858
+#line 2858
#else /* not SX */
+#line 2858
+#line 2858
char *xp = (char *) *xpp;
+#line 2858
int status = ENOERR;
+#line 2858
+#line 2858
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2858
{
+#line 2858
int lstatus = ncx_put_int_uint(xp, tp);
+#line 2858
if(lstatus != ENOERR)
+#line 2858
status = lstatus;
+#line 2858
}
+#line 2858
+#line 2858
*xpp = (void *)xp;
+#line 2858
return status;
+#line 2858
#endif
+#line 2858
}
+#line 2858
#endif
int
+#line 2861
ncx_putn_int_longlong(void **xpp, size_t nelems, const longlong *tp)
+#line 2861
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2861
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2861
+#line 2861
/* basic algorithm is:
+#line 2861
* - ensure sane alignment of output data
+#line 2861
* - copy (conversion happens automatically) input data
+#line 2861
* to output
+#line 2861
* - update tp to point at next unconverted input, and xpp to point
+#line 2861
* at next location for converted output
+#line 2861
*/
+#line 2861
long i, j, ni;
+#line 2861
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2861
int *xp;
+#line 2861
int nrange = 0; /* number of range errors */
+#line 2861
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2861
long cxp = (long) *((char**)xpp);
+#line 2861
+#line 2861
realign = (cxp & 7) % SIZEOF_INT;
+#line 2861
/* sjl: manually stripmine so we can limit amount of
+#line 2861
* vector work space reserved to LOOPCNT elements. Also
+#line 2861
* makes vectorisation easy */
+#line 2861
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2861
ni=Min(nelems-j,LOOPCNT);
+#line 2861
if (realign) {
+#line 2861
xp = tmp;
+#line 2861
} else {
+#line 2861
xp = (int *) *xpp;
+#line 2861
}
+#line 2861
/* copy the next block */
+#line 2861
#pragma cdir loopcnt=LOOPCNT
+#line 2861
#pragma cdir shortloop
+#line 2861
for (i=0; i<ni; i++) {
+#line 2861
/* the normal case: */
+#line 2861
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2861
/* test for range errors (not always needed but do it anyway) */
+#line 2861
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2861
}
+#line 2861
/* copy workspace back if necessary */
+#line 2861
if (realign) {
+#line 2861
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2861
xp = (int *) *xpp;
+#line 2861
}
+#line 2861
/* update xpp and tp */
+#line 2861
xp += ni;
+#line 2861
tp += ni;
+#line 2861
*xpp = (void*)xp;
+#line 2861
}
+#line 2861
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2861
+#line 2861
#else /* not SX */
+#line 2861
+#line 2861
char *xp = (char *) *xpp;
+#line 2861
int status = ENOERR;
+#line 2861
+#line 2861
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2861
{
+#line 2861
int lstatus = ncx_put_int_longlong(xp, tp);
+#line 2861
if(lstatus != ENOERR)
+#line 2861
status = lstatus;
+#line 2861
}
+#line 2861
+#line 2861
*xpp = (void *)xp;
+#line 2861
return status;
+#line 2861
#endif
+#line 2861
}
+#line 2861
int
+#line 2862
ncx_putn_int_ulonglong(void **xpp, size_t nelems, const ulonglong *tp)
+#line 2862
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2862
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2862
+#line 2862
/* basic algorithm is:
+#line 2862
* - ensure sane alignment of output data
+#line 2862
* - copy (conversion happens automatically) input data
+#line 2862
* to output
+#line 2862
* - update tp to point at next unconverted input, and xpp to point
+#line 2862
* at next location for converted output
+#line 2862
*/
+#line 2862
long i, j, ni;
+#line 2862
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2862
int *xp;
+#line 2862
int nrange = 0; /* number of range errors */
+#line 2862
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2862
long cxp = (long) *((char**)xpp);
+#line 2862
+#line 2862
realign = (cxp & 7) % SIZEOF_INT;
+#line 2862
/* sjl: manually stripmine so we can limit amount of
+#line 2862
* vector work space reserved to LOOPCNT elements. Also
+#line 2862
* makes vectorisation easy */
+#line 2862
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2862
ni=Min(nelems-j,LOOPCNT);
+#line 2862
if (realign) {
+#line 2862
xp = tmp;
+#line 2862
} else {
+#line 2862
xp = (int *) *xpp;
+#line 2862
}
+#line 2862
/* copy the next block */
+#line 2862
#pragma cdir loopcnt=LOOPCNT
+#line 2862
#pragma cdir shortloop
+#line 2862
for (i=0; i<ni; i++) {
+#line 2862
/* the normal case: */
+#line 2862
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2862
/* test for range errors (not always needed but do it anyway) */
+#line 2862
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2862
}
+#line 2862
/* copy workspace back if necessary */
+#line 2862
if (realign) {
+#line 2862
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2862
xp = (int *) *xpp;
+#line 2862
}
+#line 2862
/* update xpp and tp */
+#line 2862
xp += ni;
+#line 2862
tp += ni;
+#line 2862
*xpp = (void*)xp;
+#line 2862
}
+#line 2862
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2862
+#line 2862
#else /* not SX */
+#line 2862
+#line 2862
char *xp = (char *) *xpp;
+#line 2862
int status = ENOERR;
+#line 2862
+#line 2862
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2862
{
+#line 2862
int lstatus = ncx_put_int_ulonglong(xp, tp);
+#line 2862
if(lstatus != ENOERR)
+#line 2862
status = lstatus;
+#line 2862
}
+#line 2862
+#line 2862
*xpp = (void *)xp;
+#line 2862
return status;
+#line 2862
#endif
+#line 2862
}
+#line 2862
int
+#line 2863
ncx_putn_int_float(void **xpp, size_t nelems, const float *tp)
+#line 2863
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2863
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2863
+#line 2863
/* basic algorithm is:
+#line 2863
* - ensure sane alignment of output data
+#line 2863
* - copy (conversion happens automatically) input data
+#line 2863
* to output
+#line 2863
* - update tp to point at next unconverted input, and xpp to point
+#line 2863
* at next location for converted output
+#line 2863
*/
+#line 2863
long i, j, ni;
+#line 2863
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2863
int *xp;
+#line 2863
double d; /* special case for ncx_putn_int_float */
+#line 2863
int nrange = 0; /* number of range errors */
+#line 2863
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2863
long cxp = (long) *((char**)xpp);
+#line 2863
+#line 2863
realign = (cxp & 7) % SIZEOF_INT;
+#line 2863
/* sjl: manually stripmine so we can limit amount of
+#line 2863
* vector work space reserved to LOOPCNT elements. Also
+#line 2863
* makes vectorisation easy */
+#line 2863
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2863
ni=Min(nelems-j,LOOPCNT);
+#line 2863
if (realign) {
+#line 2863
xp = tmp;
+#line 2863
} else {
+#line 2863
xp = (int *) *xpp;
+#line 2863
}
+#line 2863
/* copy the next block */
+#line 2863
#pragma cdir loopcnt=LOOPCNT
+#line 2863
#pragma cdir shortloop
+#line 2863
for (i=0; i<ni; i++) {
+#line 2863
/* for some reason int to float, for putn, requires a special case */
+#line 2863
d = tp[i];
+#line 2863
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) d));
+#line 2863
nrange += d < X_INT_MIN || d > X_INT_MAX;
+#line 2863
}
+#line 2863
/* copy workspace back if necessary */
+#line 2863
if (realign) {
+#line 2863
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2863
xp = (int *) *xpp;
+#line 2863
}
+#line 2863
/* update xpp and tp */
+#line 2863
xp += ni;
+#line 2863
tp += ni;
+#line 2863
*xpp = (void*)xp;
+#line 2863
}
+#line 2863
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2863
+#line 2863
#else /* not SX */
+#line 2863
+#line 2863
char *xp = (char *) *xpp;
+#line 2863
int status = ENOERR;
+#line 2863
+#line 2863
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2863
{
+#line 2863
int lstatus = ncx_put_int_float(xp, tp);
+#line 2863
if(lstatus != ENOERR)
+#line 2863
status = lstatus;
+#line 2863
}
+#line 2863
+#line 2863
*xpp = (void *)xp;
+#line 2863
return status;
+#line 2863
#endif
+#line 2863
}
+#line 2863
int
+#line 2864
ncx_putn_int_double(void **xpp, size_t nelems, const double *tp)
+#line 2864
{
-#if _SX && \
- X_SIZEOF_INT == SIZEOF_INT
+#line 2864
+#if _SX && X_SIZEOF_INT == SIZEOF_INT
+#line 2864
+#line 2864
/* basic algorithm is:
+#line 2864
* - ensure sane alignment of output data
+#line 2864
* - copy (conversion happens automatically) input data
+#line 2864
* to output
+#line 2864
* - update tp to point at next unconverted input, and xpp to point
+#line 2864
* at next location for converted output
+#line 2864
*/
+#line 2864
long i, j, ni;
+#line 2864
int tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2864
int *xp;
+#line 2864
int nrange = 0; /* number of range errors */
+#line 2864
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2864
long cxp = (long) *((char**)xpp);
+#line 2864
+#line 2864
realign = (cxp & 7) % SIZEOF_INT;
+#line 2864
/* sjl: manually stripmine so we can limit amount of
+#line 2864
* vector work space reserved to LOOPCNT elements. Also
+#line 2864
* makes vectorisation easy */
+#line 2864
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2864
ni=Min(nelems-j,LOOPCNT);
+#line 2864
if (realign) {
+#line 2864
xp = tmp;
+#line 2864
} else {
+#line 2864
xp = (int *) *xpp;
+#line 2864
}
+#line 2864
/* copy the next block */
+#line 2864
#pragma cdir loopcnt=LOOPCNT
+#line 2864
#pragma cdir shortloop
+#line 2864
for (i=0; i<ni; i++) {
+#line 2864
/* the normal case: */
+#line 2864
xp[i] = (int) Max( X_INT_MIN, Min(X_INT_MAX, (int) tp[i]));
+#line 2864
/* test for range errors (not always needed but do it anyway) */
+#line 2864
nrange += tp[i] < X_INT_MIN || tp[i] > X_INT_MAX;
+#line 2864
}
+#line 2864
/* copy workspace back if necessary */
+#line 2864
if (realign) {
+#line 2864
memcpy(*xpp, tmp, ni*X_SIZEOF_INT);
+#line 2864
xp = (int *) *xpp;
+#line 2864
}
+#line 2864
/* update xpp and tp */
+#line 2864
xp += ni;
+#line 2864
tp += ni;
+#line 2864
*xpp = (void*)xp;
+#line 2864
}
+#line 2864
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2864
+#line 2864
#else /* not SX */
+#line 2864
+#line 2864
char *xp = (char *) *xpp;
+#line 2864
int status = ENOERR;
+#line 2864
+#line 2864
for( ; nelems != 0; nelems--, xp += X_SIZEOF_INT, tp++)
+#line 2864
{
+#line 2864
int lstatus = ncx_put_int_double(xp, tp);
+#line 2864
if(lstatus != ENOERR)
+#line 2864
status = lstatus;
+#line 2864
}
+#line 2864
+#line 2864
*xpp = (void *)xp;
+#line 2864
return status;
+#line 2864
#endif
+#line 2864
}
+#line 2864
/* float */
int
+#line 2869
ncx_getn_float_schar(const void **xpp, size_t nelems, schar *tp)
+#line 2869
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2869
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2869
+#line 2869
/* basic algorithm is:
+#line 2869
* - ensure sane alignment of input data
+#line 2869
* - copy (conversion happens automatically) input data
+#line 2869
* to output
+#line 2869
* - update xpp to point at next unconverted input, and tp to point
+#line 2869
* at next location for converted output
+#line 2869
*/
+#line 2869
long i, j, ni;
+#line 2869
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2869
float *xp;
+#line 2869
int nrange = 0; /* number of range errors */
+#line 2869
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2869
long cxp = (long) *((char**)xpp);
+#line 2869
+#line 2869
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2869
/* sjl: manually stripmine so we can limit amount of
+#line 2869
* vector work space reserved to LOOPCNT elements. Also
+#line 2869
* makes vectorisation easy */
+#line 2869
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2869
ni=Min(nelems-j,LOOPCNT);
+#line 2869
if (realign) {
+#line 2869
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2869
xp = tmp;
+#line 2869
} else {
+#line 2869
xp = (float *) *xpp;
+#line 2869
}
+#line 2869
/* copy the next block */
+#line 2869
#pragma cdir loopcnt=LOOPCNT
+#line 2869
#pragma cdir shortloop
+#line 2869
for (i=0; i<ni; i++) {
+#line 2869
tp[i] = (schar) Max( SCHAR_MIN, Min(SCHAR_MAX, (schar) xp[i]));
+#line 2869
/* test for range errors (not always needed but do it anyway) */
+#line 2869
nrange += xp[i] < SCHAR_MIN || xp[i] > SCHAR_MAX;
+#line 2869
}
+#line 2869
/* update xpp and tp */
+#line 2869
if (realign) xp = (float *) *xpp;
+#line 2869
xp += ni;
+#line 2869
tp += ni;
+#line 2869
*xpp = (void*)xp;
+#line 2869
}
+#line 2869
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2869
+#line 2869
#else /* not SX */
+#line 2869
const char *xp = (const char *) *xpp;
+#line 2869
int status = ENOERR;
+#line 2869
+#line 2869
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2869
{
+#line 2869
const int lstatus = ncx_get_float_schar(xp, tp);
+#line 2869
if(lstatus != ENOERR)
+#line 2869
status = lstatus;
+#line 2869
}
+#line 2869
+#line 2869
*xpp = (const void *)xp;
+#line 2869
return status;
+#line 2869
# endif
+#line 2869
}
+#line 2869
int
+#line 2870
ncx_getn_float_uchar(const void **xpp, size_t nelems, uchar *tp)
+#line 2870
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2870
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2870
+#line 2870
/* basic algorithm is:
+#line 2870
* - ensure sane alignment of input data
+#line 2870
* - copy (conversion happens automatically) input data
+#line 2870
* to output
+#line 2870
* - update xpp to point at next unconverted input, and tp to point
+#line 2870
* at next location for converted output
+#line 2870
*/
+#line 2870
long i, j, ni;
+#line 2870
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2870
float *xp;
+#line 2870
int nrange = 0; /* number of range errors */
+#line 2870
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2870
long cxp = (long) *((char**)xpp);
+#line 2870
+#line 2870
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2870
/* sjl: manually stripmine so we can limit amount of
+#line 2870
* vector work space reserved to LOOPCNT elements. Also
+#line 2870
* makes vectorisation easy */
+#line 2870
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2870
ni=Min(nelems-j,LOOPCNT);
+#line 2870
if (realign) {
+#line 2870
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2870
xp = tmp;
+#line 2870
} else {
+#line 2870
xp = (float *) *xpp;
+#line 2870
}
+#line 2870
/* copy the next block */
+#line 2870
#pragma cdir loopcnt=LOOPCNT
+#line 2870
#pragma cdir shortloop
+#line 2870
for (i=0; i<ni; i++) {
+#line 2870
tp[i] = (uchar) Max( UCHAR_MIN, Min(UCHAR_MAX, (uchar) xp[i]));
+#line 2870
/* test for range errors (not always needed but do it anyway) */
+#line 2870
nrange += xp[i] < UCHAR_MIN || xp[i] > UCHAR_MAX;
+#line 2870
}
+#line 2870
/* update xpp and tp */
+#line 2870
if (realign) xp = (float *) *xpp;
+#line 2870
xp += ni;
+#line 2870
tp += ni;
+#line 2870
*xpp = (void*)xp;
+#line 2870
}
+#line 2870
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2870
+#line 2870
#else /* not SX */
+#line 2870
const char *xp = (const char *) *xpp;
+#line 2870
int status = ENOERR;
+#line 2870
+#line 2870
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2870
{
+#line 2870
const int lstatus = ncx_get_float_uchar(xp, tp);
+#line 2870
if(lstatus != ENOERR)
+#line 2870
status = lstatus;
+#line 2870
}
+#line 2870
+#line 2870
*xpp = (const void *)xp;
+#line 2870
return status;
+#line 2870
# endif
+#line 2870
}
+#line 2870
int
+#line 2871
ncx_getn_float_short(const void **xpp, size_t nelems, short *tp)
+#line 2871
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2871
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2871
+#line 2871
/* basic algorithm is:
+#line 2871
* - ensure sane alignment of input data
+#line 2871
* - copy (conversion happens automatically) input data
+#line 2871
* to output
+#line 2871
* - update xpp to point at next unconverted input, and tp to point
+#line 2871
* at next location for converted output
+#line 2871
*/
+#line 2871
long i, j, ni;
+#line 2871
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2871
float *xp;
+#line 2871
int nrange = 0; /* number of range errors */
+#line 2871
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2871
long cxp = (long) *((char**)xpp);
+#line 2871
+#line 2871
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2871
/* sjl: manually stripmine so we can limit amount of
+#line 2871
* vector work space reserved to LOOPCNT elements. Also
+#line 2871
* makes vectorisation easy */
+#line 2871
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2871
ni=Min(nelems-j,LOOPCNT);
+#line 2871
if (realign) {
+#line 2871
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2871
xp = tmp;
+#line 2871
} else {
+#line 2871
xp = (float *) *xpp;
+#line 2871
}
+#line 2871
/* copy the next block */
+#line 2871
#pragma cdir loopcnt=LOOPCNT
+#line 2871
#pragma cdir shortloop
+#line 2871
for (i=0; i<ni; i++) {
+#line 2871
tp[i] = (short) Max( SHORT_MIN, Min(SHORT_MAX, (short) xp[i]));
+#line 2871
/* test for range errors (not always needed but do it anyway) */
+#line 2871
nrange += xp[i] < SHORT_MIN || xp[i] > SHORT_MAX;
+#line 2871
}
+#line 2871
/* update xpp and tp */
+#line 2871
if (realign) xp = (float *) *xpp;
+#line 2871
xp += ni;
+#line 2871
tp += ni;
+#line 2871
*xpp = (void*)xp;
+#line 2871
}
+#line 2871
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2871
+#line 2871
#else /* not SX */
+#line 2871
const char *xp = (const char *) *xpp;
+#line 2871
int status = ENOERR;
+#line 2871
+#line 2871
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2871
{
+#line 2871
const int lstatus = ncx_get_float_short(xp, tp);
+#line 2871
if(lstatus != ENOERR)
+#line 2871
status = lstatus;
+#line 2871
}
+#line 2871
+#line 2871
*xpp = (const void *)xp;
+#line 2871
return status;
+#line 2871
# endif
+#line 2871
}
+#line 2871
int
+#line 2872
ncx_getn_float_int(const void **xpp, size_t nelems, int *tp)
+#line 2872
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2872
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2872
+#line 2872
/* basic algorithm is:
+#line 2872
* - ensure sane alignment of input data
+#line 2872
* - copy (conversion happens automatically) input data
+#line 2872
* to output
+#line 2872
* - update xpp to point at next unconverted input, and tp to point
+#line 2872
* at next location for converted output
+#line 2872
*/
+#line 2872
long i, j, ni;
+#line 2872
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2872
float *xp;
+#line 2872
int nrange = 0; /* number of range errors */
+#line 2872
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2872
long cxp = (long) *((char**)xpp);
+#line 2872
+#line 2872
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2872
/* sjl: manually stripmine so we can limit amount of
+#line 2872
* vector work space reserved to LOOPCNT elements. Also
+#line 2872
* makes vectorisation easy */
+#line 2872
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2872
ni=Min(nelems-j,LOOPCNT);
+#line 2872
if (realign) {
+#line 2872
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2872
xp = tmp;
+#line 2872
} else {
+#line 2872
xp = (float *) *xpp;
+#line 2872
}
+#line 2872
/* copy the next block */
+#line 2872
#pragma cdir loopcnt=LOOPCNT
+#line 2872
#pragma cdir shortloop
+#line 2872
for (i=0; i<ni; i++) {
+#line 2872
tp[i] = (int) Max( INT_MIN, Min(INT_MAX, (int) xp[i]));
+#line 2872
/* test for range errors (not always needed but do it anyway) */
+#line 2872
nrange += xp[i] < INT_MIN || xp[i] > INT_MAX;
+#line 2872
}
+#line 2872
/* update xpp and tp */
+#line 2872
if (realign) xp = (float *) *xpp;
+#line 2872
xp += ni;
+#line 2872
tp += ni;
+#line 2872
*xpp = (void*)xp;
+#line 2872
}
+#line 2872
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2872
+#line 2872
#else /* not SX */
+#line 2872
const char *xp = (const char *) *xpp;
+#line 2872
int status = ENOERR;
+#line 2872
+#line 2872
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2872
{
+#line 2872
const int lstatus = ncx_get_float_int(xp, tp);
+#line 2872
if(lstatus != ENOERR)
+#line 2872
status = lstatus;
+#line 2872
}
+#line 2872
+#line 2872
*xpp = (const void *)xp;
+#line 2872
return status;
+#line 2872
# endif
+#line 2872
}
+#line 2872
#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT)
/* optimized version */
@@ -6037,50 +9883,95 @@ ncx_getn_float_float(const void **xpp, size_t nfloats, float *ip)
while(ip < end)
{
struct vax_single *const vsp = (struct vax_single *) ip;
+#line 2894
const struct ieee_single *const isp =
+#line 2894
(const struct ieee_single *) (*xpp);
+#line 2894
unsigned exp = isp->exp_hi << 1 | isp->exp_lo;
+#line 2894
+#line 2894
switch(exp) {
+#line 2894
case 0 :
+#line 2894
/* ieee subnormal */
+#line 2894
if(isp->mant_hi == min.ieee.mant_hi
+#line 2894
&& isp->mant_lo_hi == min.ieee.mant_lo_hi
+#line 2894
&& isp->mant_lo_lo == min.ieee.mant_lo_lo)
+#line 2894
{
+#line 2894
*vsp = min.s;
+#line 2894
}
+#line 2894
else
+#line 2894
{
+#line 2894
unsigned mantissa = (isp->mant_hi << 16)
+#line 2894
| isp->mant_lo_hi << 8
+#line 2894
| isp->mant_lo_lo;
+#line 2894
unsigned tmp = mantissa >> 20;
+#line 2894
if(tmp >= 4) {
+#line 2894
vsp->exp = 2;
+#line 2894
} else if (tmp >= 2) {
+#line 2894
vsp->exp = 1;
+#line 2894
} else {
+#line 2894
*vsp = min.s;
+#line 2894
break;
+#line 2894
} /* else */
+#line 2894
tmp = mantissa - (1 << (20 + vsp->exp ));
+#line 2894
tmp <<= 3 - vsp->exp;
+#line 2894
vsp->mantissa2 = tmp;
+#line 2894
vsp->mantissa1 = (tmp >> 16);
+#line 2894
}
+#line 2894
break;
+#line 2894
case 0xfe :
+#line 2894
case 0xff :
+#line 2894
*vsp = max.s;
+#line 2894
break;
+#line 2894
default :
+#line 2894
vsp->exp = exp - IEEE_SNG_BIAS + VAX_SNG_BIAS;
+#line 2894
vsp->mantissa2 = isp->mant_lo_hi << 8 | isp->mant_lo_lo;
+#line 2894
vsp->mantissa1 = isp->mant_hi;
+#line 2894
}
+#line 2894
+#line 2894
vsp->sign = isp->sign;
+#line 2894
ip++;
@@ -6108,537 +9999,1045 @@ ncx_getn_float_float(const void **xpp, size_t nelems, float *tp)
#endif
int
+#line 2920
ncx_getn_float_double(const void **xpp, size_t nelems, double *tp)
+#line 2920
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2920
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2920
+#line 2920
/* basic algorithm is:
+#line 2920
* - ensure sane alignment of input data
+#line 2920
* - copy (conversion happens automatically) input data
+#line 2920
* to output
+#line 2920
* - update xpp to point at next unconverted input, and tp to point
+#line 2920
* at next location for converted output
+#line 2920
*/
+#line 2920
long i, j, ni;
+#line 2920
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2920
float *xp;
+#line 2920
int nrange = 0; /* number of range errors */
+#line 2920
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2920
long cxp = (long) *((char**)xpp);
+#line 2920
+#line 2920
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2920
/* sjl: manually stripmine so we can limit amount of
+#line 2920
* vector work space reserved to LOOPCNT elements. Also
+#line 2920
* makes vectorisation easy */
+#line 2920
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2920
ni=Min(nelems-j,LOOPCNT);
+#line 2920
if (realign) {
+#line 2920
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2920
xp = tmp;
+#line 2920
} else {
+#line 2920
xp = (float *) *xpp;
+#line 2920
}
+#line 2920
/* copy the next block */
+#line 2920
#pragma cdir loopcnt=LOOPCNT
+#line 2920
#pragma cdir shortloop
+#line 2920
for (i=0; i<ni; i++) {
+#line 2920
tp[i] = (double) Max( DOUBLE_MIN, Min(DOUBLE_MAX, (double) xp[i]));
+#line 2920
/* test for range errors (not always needed but do it anyway) */
+#line 2920
nrange += xp[i] < DOUBLE_MIN || xp[i] > DOUBLE_MAX;
+#line 2920
}
+#line 2920
/* update xpp and tp */
+#line 2920
if (realign) xp = (float *) *xpp;
+#line 2920
xp += ni;
+#line 2920
tp += ni;
+#line 2920
*xpp = (void*)xp;
+#line 2920
}
+#line 2920
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2920
+#line 2920
#else /* not SX */
+#line 2920
const char *xp = (const char *) *xpp;
+#line 2920
int status = ENOERR;
+#line 2920
+#line 2920
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2920
{
+#line 2920
const int lstatus = ncx_get_float_double(xp, tp);
+#line 2920
if(lstatus != ENOERR)
+#line 2920
status = lstatus;
+#line 2920
}
+#line 2920
+#line 2920
*xpp = (const void *)xp;
+#line 2920
return status;
+#line 2920
# endif
+#line 2920
}
+#line 2920
int
+#line 2921
ncx_getn_float_uint(const void **xpp, size_t nelems, uint *tp)
+#line 2921
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2921
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2921
+#line 2921
/* basic algorithm is:
+#line 2921
* - ensure sane alignment of input data
+#line 2921
* - copy (conversion happens automatically) input data
+#line 2921
* to output
+#line 2921
* - update xpp to point at next unconverted input, and tp to point
+#line 2921
* at next location for converted output
+#line 2921
*/
+#line 2921
long i, j, ni;
+#line 2921
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2921
float *xp;
+#line 2921
int nrange = 0; /* number of range errors */
+#line 2921
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2921
long cxp = (long) *((char**)xpp);
+#line 2921
+#line 2921
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2921
/* sjl: manually stripmine so we can limit amount of
+#line 2921
* vector work space reserved to LOOPCNT elements. Also
+#line 2921
* makes vectorisation easy */
+#line 2921
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2921
ni=Min(nelems-j,LOOPCNT);
+#line 2921
if (realign) {
+#line 2921
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2921
xp = tmp;
+#line 2921
} else {
+#line 2921
xp = (float *) *xpp;
+#line 2921
}
+#line 2921
/* copy the next block */
+#line 2921
#pragma cdir loopcnt=LOOPCNT
+#line 2921
#pragma cdir shortloop
+#line 2921
for (i=0; i<ni; i++) {
+#line 2921
tp[i] = (uint) Max( UINT_MIN, Min(UINT_MAX, (uint) xp[i]));
+#line 2921
/* test for range errors (not always needed but do it anyway) */
+#line 2921
nrange += xp[i] < UINT_MIN || xp[i] > UINT_MAX;
+#line 2921
}
+#line 2921
/* update xpp and tp */
+#line 2921
if (realign) xp = (float *) *xpp;
+#line 2921
xp += ni;
+#line 2921
tp += ni;
+#line 2921
*xpp = (void*)xp;
+#line 2921
}
+#line 2921
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2921
+#line 2921
#else /* not SX */
+#line 2921
const char *xp = (const char *) *xpp;
+#line 2921
int status = ENOERR;
+#line 2921
+#line 2921
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2921
{
+#line 2921
const int lstatus = ncx_get_float_uint(xp, tp);
+#line 2921
if(lstatus != ENOERR)
+#line 2921
status = lstatus;
+#line 2921
}
+#line 2921
+#line 2921
*xpp = (const void *)xp;
+#line 2921
return status;
+#line 2921
# endif
+#line 2921
}
+#line 2921
int
+#line 2922
ncx_getn_float_longlong(const void **xpp, size_t nelems, longlong *tp)
+#line 2922
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2922
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2922
+#line 2922
/* basic algorithm is:
+#line 2922
* - ensure sane alignment of input data
+#line 2922
* - copy (conversion happens automatically) input data
+#line 2922
* to output
+#line 2922
* - update xpp to point at next unconverted input, and tp to point
+#line 2922
* at next location for converted output
+#line 2922
*/
+#line 2922
long i, j, ni;
+#line 2922
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2922
float *xp;
+#line 2922
int nrange = 0; /* number of range errors */
+#line 2922
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2922
long cxp = (long) *((char**)xpp);
+#line 2922
+#line 2922
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2922
/* sjl: manually stripmine so we can limit amount of
+#line 2922
* vector work space reserved to LOOPCNT elements. Also
+#line 2922
* makes vectorisation easy */
+#line 2922
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2922
ni=Min(nelems-j,LOOPCNT);
+#line 2922
if (realign) {
+#line 2922
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2922
xp = tmp;
+#line 2922
} else {
+#line 2922
xp = (float *) *xpp;
+#line 2922
}
+#line 2922
/* copy the next block */
+#line 2922
#pragma cdir loopcnt=LOOPCNT
+#line 2922
#pragma cdir shortloop
+#line 2922
for (i=0; i<ni; i++) {
+#line 2922
tp[i] = (longlong) Max( LONGLONG_MIN, Min(LONGLONG_MAX, (longlong) xp[i]));
+#line 2922
/* test for range errors (not always needed but do it anyway) */
+#line 2922
nrange += xp[i] < LONGLONG_MIN || xp[i] > LONGLONG_MAX;
+#line 2922
}
+#line 2922
/* update xpp and tp */
+#line 2922
if (realign) xp = (float *) *xpp;
+#line 2922
xp += ni;
+#line 2922
tp += ni;
+#line 2922
*xpp = (void*)xp;
+#line 2922
}
+#line 2922
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2922
+#line 2922
#else /* not SX */
+#line 2922
const char *xp = (const char *) *xpp;
+#line 2922
int status = ENOERR;
+#line 2922
+#line 2922
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2922
{
+#line 2922
const int lstatus = ncx_get_float_longlong(xp, tp);
+#line 2922
if(lstatus != ENOERR)
+#line 2922
status = lstatus;
+#line 2922
}
+#line 2922
+#line 2922
*xpp = (const void *)xp;
+#line 2922
return status;
+#line 2922
# endif
+#line 2922
}
+#line 2922
int
+#line 2923
ncx_getn_float_ulonglong(const void **xpp, size_t nelems, ulonglong *tp)
+#line 2923
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2923
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2923
+#line 2923
/* basic algorithm is:
+#line 2923
* - ensure sane alignment of input data
+#line 2923
* - copy (conversion happens automatically) input data
+#line 2923
* to output
+#line 2923
* - update xpp to point at next unconverted input, and tp to point
+#line 2923
* at next location for converted output
+#line 2923
*/
+#line 2923
long i, j, ni;
+#line 2923
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2923
float *xp;
+#line 2923
int nrange = 0; /* number of range errors */
+#line 2923
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2923
long cxp = (long) *((char**)xpp);
+#line 2923
+#line 2923
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2923
/* sjl: manually stripmine so we can limit amount of
+#line 2923
* vector work space reserved to LOOPCNT elements. Also
+#line 2923
* makes vectorisation easy */
+#line 2923
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2923
ni=Min(nelems-j,LOOPCNT);
+#line 2923
if (realign) {
+#line 2923
memcpy(tmp, *xpp, ni*SIZEOF_FLOAT);
+#line 2923
xp = tmp;
+#line 2923
} else {
+#line 2923
xp = (float *) *xpp;
+#line 2923
}
+#line 2923
/* copy the next block */
+#line 2923
#pragma cdir loopcnt=LOOPCNT
+#line 2923
#pragma cdir shortloop
+#line 2923
for (i=0; i<ni; i++) {
+#line 2923
tp[i] = (ulonglong) Max( ULONGLONG_MIN, Min(ULONGLONG_MAX, (ulonglong) xp[i]));
+#line 2923
/* test for range errors (not always needed but do it anyway) */
+#line 2923
nrange += xp[i] < ULONGLONG_MIN || xp[i] > ULONGLONG_MAX;
+#line 2923
}
+#line 2923
/* update xpp and tp */
+#line 2923
if (realign) xp = (float *) *xpp;
+#line 2923
xp += ni;
+#line 2923
tp += ni;
+#line 2923
*xpp = (void*)xp;
+#line 2923
}
+#line 2923
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2923
+#line 2923
#else /* not SX */
+#line 2923
const char *xp = (const char *) *xpp;
+#line 2923
int status = ENOERR;
+#line 2923
+#line 2923
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2923
{
+#line 2923
const int lstatus = ncx_get_float_ulonglong(xp, tp);
+#line 2923
if(lstatus != ENOERR)
+#line 2923
status = lstatus;
+#line 2923
}
+#line 2923
+#line 2923
*xpp = (const void *)xp;
+#line 2923
return status;
+#line 2923
# endif
+#line 2923
}
+#line 2923
int
+#line 2925
ncx_putn_float_schar(void **xpp, size_t nelems, const schar *tp)
+#line 2925
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2925
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2925
+#line 2925
/* basic algorithm is:
+#line 2925
* - ensure sane alignment of output data
+#line 2925
* - copy (conversion happens automatically) input data
+#line 2925
* to output
+#line 2925
* - update tp to point at next unconverted input, and xpp to point
+#line 2925
* at next location for converted output
+#line 2925
*/
+#line 2925
long i, j, ni;
+#line 2925
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2925
float *xp;
+#line 2925
int nrange = 0; /* number of range errors */
+#line 2925
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2925
long cxp = (long) *((char**)xpp);
+#line 2925
+#line 2925
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2925
/* sjl: manually stripmine so we can limit amount of
+#line 2925
* vector work space reserved to LOOPCNT elements. Also
+#line 2925
* makes vectorisation easy */
+#line 2925
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2925
ni=Min(nelems-j,LOOPCNT);
+#line 2925
if (realign) {
+#line 2925
xp = tmp;
+#line 2925
} else {
+#line 2925
xp = (float *) *xpp;
+#line 2925
}
+#line 2925
/* copy the next block */
+#line 2925
#pragma cdir loopcnt=LOOPCNT
+#line 2925
#pragma cdir shortloop
+#line 2925
for (i=0; i<ni; i++) {
+#line 2925
/* the normal case: */
+#line 2925
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2925
/* test for range errors (not always needed but do it anyway) */
+#line 2925
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2925
}
+#line 2925
/* copy workspace back if necessary */
+#line 2925
if (realign) {
+#line 2925
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2925
xp = (float *) *xpp;
+#line 2925
}
+#line 2925
/* update xpp and tp */
+#line 2925
xp += ni;
+#line 2925
tp += ni;
+#line 2925
*xpp = (void*)xp;
+#line 2925
}
+#line 2925
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2925
+#line 2925
#else /* not SX */
+#line 2925
+#line 2925
char *xp = (char *) *xpp;
+#line 2925
int status = ENOERR;
+#line 2925
+#line 2925
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2925
{
+#line 2925
int lstatus = ncx_put_float_schar(xp, tp);
+#line 2925
if(lstatus != ENOERR)
+#line 2925
status = lstatus;
+#line 2925
}
+#line 2925
+#line 2925
*xpp = (void *)xp;
+#line 2925
return status;
+#line 2925
#endif
+#line 2925
}
+#line 2925
int
+#line 2926
ncx_putn_float_uchar(void **xpp, size_t nelems, const uchar *tp)
+#line 2926
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2926
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2926
+#line 2926
/* basic algorithm is:
+#line 2926
* - ensure sane alignment of output data
+#line 2926
* - copy (conversion happens automatically) input data
+#line 2926
* to output
+#line 2926
* - update tp to point at next unconverted input, and xpp to point
+#line 2926
* at next location for converted output
+#line 2926
*/
+#line 2926
long i, j, ni;
+#line 2926
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2926
float *xp;
+#line 2926
int nrange = 0; /* number of range errors */
+#line 2926
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2926
long cxp = (long) *((char**)xpp);
+#line 2926
+#line 2926
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2926
/* sjl: manually stripmine so we can limit amount of
+#line 2926
* vector work space reserved to LOOPCNT elements. Also
+#line 2926
* makes vectorisation easy */
+#line 2926
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2926
ni=Min(nelems-j,LOOPCNT);
+#line 2926
if (realign) {
+#line 2926
xp = tmp;
+#line 2926
} else {
+#line 2926
xp = (float *) *xpp;
+#line 2926
}
+#line 2926
/* copy the next block */
+#line 2926
#pragma cdir loopcnt=LOOPCNT
+#line 2926
#pragma cdir shortloop
+#line 2926
for (i=0; i<ni; i++) {
+#line 2926
/* the normal case: */
+#line 2926
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2926
/* test for range errors (not always needed but do it anyway) */
+#line 2926
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2926
}
+#line 2926
/* copy workspace back if necessary */
+#line 2926
if (realign) {
+#line 2926
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2926
xp = (float *) *xpp;
+#line 2926
}
+#line 2926
/* update xpp and tp */
+#line 2926
xp += ni;
+#line 2926
tp += ni;
+#line 2926
*xpp = (void*)xp;
+#line 2926
}
+#line 2926
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2926
+#line 2926
#else /* not SX */
+#line 2926
+#line 2926
char *xp = (char *) *xpp;
+#line 2926
int status = ENOERR;
+#line 2926
+#line 2926
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2926
{
+#line 2926
int lstatus = ncx_put_float_uchar(xp, tp);
+#line 2926
if(lstatus != ENOERR)
+#line 2926
status = lstatus;
+#line 2926
}
+#line 2926
+#line 2926
*xpp = (void *)xp;
+#line 2926
return status;
+#line 2926
#endif
+#line 2926
}
+#line 2926
int
+#line 2927
ncx_putn_float_short(void **xpp, size_t nelems, const short *tp)
+#line 2927
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2927
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2927
+#line 2927
/* basic algorithm is:
+#line 2927
* - ensure sane alignment of output data
+#line 2927
* - copy (conversion happens automatically) input data
+#line 2927
* to output
+#line 2927
* - update tp to point at next unconverted input, and xpp to point
+#line 2927
* at next location for converted output
+#line 2927
*/
+#line 2927
long i, j, ni;
+#line 2927
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2927
float *xp;
+#line 2927
int nrange = 0; /* number of range errors */
+#line 2927
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2927
long cxp = (long) *((char**)xpp);
+#line 2927
+#line 2927
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2927
/* sjl: manually stripmine so we can limit amount of
+#line 2927
* vector work space reserved to LOOPCNT elements. Also
+#line 2927
* makes vectorisation easy */
+#line 2927
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2927
ni=Min(nelems-j,LOOPCNT);
+#line 2927
if (realign) {
+#line 2927
xp = tmp;
+#line 2927
} else {
+#line 2927
xp = (float *) *xpp;
+#line 2927
}
+#line 2927
/* copy the next block */
+#line 2927
#pragma cdir loopcnt=LOOPCNT
+#line 2927
#pragma cdir shortloop
+#line 2927
for (i=0; i<ni; i++) {
+#line 2927
/* the normal case: */
+#line 2927
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2927
/* test for range errors (not always needed but do it anyway) */
+#line 2927
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2927
}
+#line 2927
/* copy workspace back if necessary */
+#line 2927
if (realign) {
+#line 2927
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2927
xp = (float *) *xpp;
+#line 2927
}
+#line 2927
/* update xpp and tp */
+#line 2927
xp += ni;
+#line 2927
tp += ni;
+#line 2927
*xpp = (void*)xp;
+#line 2927
}
+#line 2927
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2927
+#line 2927
#else /* not SX */
+#line 2927
+#line 2927
char *xp = (char *) *xpp;
+#line 2927
int status = ENOERR;
+#line 2927
+#line 2927
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2927
{
+#line 2927
int lstatus = ncx_put_float_short(xp, tp);
+#line 2927
if(lstatus != ENOERR)
+#line 2927
status = lstatus;
+#line 2927
}
+#line 2927
+#line 2927
*xpp = (void *)xp;
+#line 2927
return status;
+#line 2927
#endif
+#line 2927
}
+#line 2927
int
+#line 2928
ncx_putn_float_int(void **xpp, size_t nelems, const int *tp)
+#line 2928
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2928
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2928
+#line 2928
/* basic algorithm is:
+#line 2928
* - ensure sane alignment of output data
+#line 2928
* - copy (conversion happens automatically) input data
+#line 2928
* to output
+#line 2928
* - update tp to point at next unconverted input, and xpp to point
+#line 2928
* at next location for converted output
+#line 2928
*/
+#line 2928
long i, j, ni;
+#line 2928
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2928
float *xp;
+#line 2928
int nrange = 0; /* number of range errors */
+#line 2928
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2928
long cxp = (long) *((char**)xpp);
+#line 2928
+#line 2928
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2928
/* sjl: manually stripmine so we can limit amount of
+#line 2928
* vector work space reserved to LOOPCNT elements. Also
+#line 2928
* makes vectorisation easy */
+#line 2928
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2928
ni=Min(nelems-j,LOOPCNT);
+#line 2928
if (realign) {
+#line 2928
xp = tmp;
+#line 2928
} else {
+#line 2928
xp = (float *) *xpp;
+#line 2928
}
+#line 2928
/* copy the next block */
+#line 2928
#pragma cdir loopcnt=LOOPCNT
+#line 2928
#pragma cdir shortloop
+#line 2928
for (i=0; i<ni; i++) {
+#line 2928
/* the normal case: */
+#line 2928
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2928
/* test for range errors (not always needed but do it anyway) */
+#line 2928
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2928
}
+#line 2928
/* copy workspace back if necessary */
+#line 2928
if (realign) {
+#line 2928
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2928
xp = (float *) *xpp;
+#line 2928
}
+#line 2928
/* update xpp and tp */
+#line 2928
xp += ni;
+#line 2928
tp += ni;
+#line 2928
*xpp = (void*)xp;
+#line 2928
}
+#line 2928
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2928
+#line 2928
#else /* not SX */
+#line 2928
+#line 2928
char *xp = (char *) *xpp;
+#line 2928
int status = ENOERR;
+#line 2928
+#line 2928
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2928
{
+#line 2928
int lstatus = ncx_put_float_int(xp, tp);
+#line 2928
if(lstatus != ENOERR)
+#line 2928
status = lstatus;
+#line 2928
}
+#line 2928
+#line 2928
*xpp = (void *)xp;
+#line 2928
return status;
+#line 2928
#endif
+#line 2928
}
+#line 2928
#if X_SIZEOF_FLOAT == SIZEOF_FLOAT && !defined(NO_IEEE_FLOAT)
/* optimized version */
@@ -6662,49 +11061,93 @@ ncx_putn_float_float(void **xpp, size_t nfloats, const float *ip)
while(ip < end)
{
const struct vax_single *const vsp =
+#line 2950
(const struct vax_single *)ip;
+#line 2950
struct ieee_single *const isp = (struct ieee_single *) (*xpp);
+#line 2950
+#line 2950
switch(vsp->exp){
+#line 2950
case 0 :
+#line 2950
/* all vax float with zero exponent map to zero */
+#line 2950
*isp = min.ieee;
+#line 2950
break;
+#line 2950
case 2 :
+#line 2950
case 1 :
+#line 2950
{
+#line 2950
/* These will map to subnormals */
+#line 2950
unsigned mantissa = (vsp->mantissa1 << 16)
+#line 2950
| vsp->mantissa2;
+#line 2950
mantissa >>= 3 - vsp->exp;
+#line 2950
mantissa += (1 << (20 + vsp->exp));
+#line 2950
isp->mant_lo_lo = mantissa;
+#line 2950
isp->mant_lo_hi = mantissa >> 8;
+#line 2950
isp->mant_hi = mantissa >> 16;
+#line 2950
isp->exp_lo = 0;
+#line 2950
isp->exp_hi = 0;
+#line 2950
}
+#line 2950
break;
+#line 2950
case 0xff : /* max.s.exp */
+#line 2950
if( vsp->mantissa2 == max.s.mantissa2
+#line 2950
&& vsp->mantissa1 == max.s.mantissa1)
+#line 2950
{
+#line 2950
/* map largest vax float to ieee infinity */
+#line 2950
*isp = max.ieee;
+#line 2950
break;
+#line 2950
} /* else, fall thru */
+#line 2950
default :
+#line 2950
{
+#line 2950
unsigned exp = vsp->exp - VAX_SNG_BIAS + IEEE_SNG_BIAS;
+#line 2950
isp->exp_hi = exp >> 1;
+#line 2950
isp->exp_lo = exp;
+#line 2950
isp->mant_lo_lo = vsp->mantissa2;
+#line 2950
isp->mant_lo_hi = vsp->mantissa2 >> 8;
+#line 2950
isp->mant_hi = vsp->mantissa1;
+#line 2950
}
+#line 2950
}
+#line 2950
+#line 2950
isp->sign = vsp->sign;
+#line 2950
ip++;
@@ -6732,795 +11175,1548 @@ ncx_putn_float_float(void **xpp, size_t nelems, const float *tp)
#endif
int
+#line 2976
ncx_putn_float_double(void **xpp, size_t nelems, const double *tp)
+#line 2976
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2976
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2976
+#line 2976
/* basic algorithm is:
+#line 2976
* - ensure sane alignment of output data
+#line 2976
* - copy (conversion happens automatically) input data
+#line 2976
* to output
+#line 2976
* - update tp to point at next unconverted input, and xpp to point
+#line 2976
* at next location for converted output
+#line 2976
*/
+#line 2976
long i, j, ni;
+#line 2976
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2976
float *xp;
+#line 2976
int nrange = 0; /* number of range errors */
+#line 2976
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2976
long cxp = (long) *((char**)xpp);
+#line 2976
+#line 2976
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2976
/* sjl: manually stripmine so we can limit amount of
+#line 2976
* vector work space reserved to LOOPCNT elements. Also
+#line 2976
* makes vectorisation easy */
+#line 2976
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2976
ni=Min(nelems-j,LOOPCNT);
+#line 2976
if (realign) {
+#line 2976
xp = tmp;
+#line 2976
} else {
+#line 2976
xp = (float *) *xpp;
+#line 2976
}
+#line 2976
/* copy the next block */
+#line 2976
#pragma cdir loopcnt=LOOPCNT
+#line 2976
#pragma cdir shortloop
+#line 2976
for (i=0; i<ni; i++) {
+#line 2976
/* the normal case: */
+#line 2976
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2976
/* test for range errors (not always needed but do it anyway) */
+#line 2976
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2976
}
+#line 2976
/* copy workspace back if necessary */
+#line 2976
if (realign) {
+#line 2976
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2976
xp = (float *) *xpp;
+#line 2976
}
+#line 2976
/* update xpp and tp */
+#line 2976
xp += ni;
+#line 2976
tp += ni;
+#line 2976
*xpp = (void*)xp;
+#line 2976
}
+#line 2976
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2976
+#line 2976
#else /* not SX */
+#line 2976
+#line 2976
char *xp = (char *) *xpp;
+#line 2976
int status = ENOERR;
+#line 2976
+#line 2976
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2976
{
+#line 2976
int lstatus = ncx_put_float_double(xp, tp);
+#line 2976
if(lstatus != ENOERR)
+#line 2976
status = lstatus;
+#line 2976
}
+#line 2976
+#line 2976
*xpp = (void *)xp;
+#line 2976
return status;
+#line 2976
#endif
+#line 2976
}
+#line 2976
int
+#line 2977
ncx_putn_float_uint(void **xpp, size_t nelems, const uint *tp)
+#line 2977
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2977
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2977
+#line 2977
/* basic algorithm is:
+#line 2977
* - ensure sane alignment of output data
+#line 2977
* - copy (conversion happens automatically) input data
+#line 2977
* to output
+#line 2977
* - update tp to point at next unconverted input, and xpp to point
+#line 2977
* at next location for converted output
+#line 2977
*/
+#line 2977
long i, j, ni;
+#line 2977
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2977
float *xp;
+#line 2977
int nrange = 0; /* number of range errors */
+#line 2977
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2977
long cxp = (long) *((char**)xpp);
+#line 2977
+#line 2977
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2977
/* sjl: manually stripmine so we can limit amount of
+#line 2977
* vector work space reserved to LOOPCNT elements. Also
+#line 2977
* makes vectorisation easy */
+#line 2977
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2977
ni=Min(nelems-j,LOOPCNT);
+#line 2977
if (realign) {
+#line 2977
xp = tmp;
+#line 2977
} else {
+#line 2977
xp = (float *) *xpp;
+#line 2977
}
+#line 2977
/* copy the next block */
+#line 2977
#pragma cdir loopcnt=LOOPCNT
+#line 2977
#pragma cdir shortloop
+#line 2977
for (i=0; i<ni; i++) {
+#line 2977
/* the normal case: */
+#line 2977
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2977
/* test for range errors (not always needed but do it anyway) */
+#line 2977
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2977
}
+#line 2977
/* copy workspace back if necessary */
+#line 2977
if (realign) {
+#line 2977
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2977
xp = (float *) *xpp;
+#line 2977
}
+#line 2977
/* update xpp and tp */
+#line 2977
xp += ni;
+#line 2977
tp += ni;
+#line 2977
*xpp = (void*)xp;
+#line 2977
}
+#line 2977
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2977
+#line 2977
#else /* not SX */
+#line 2977
+#line 2977
char *xp = (char *) *xpp;
+#line 2977
int status = ENOERR;
+#line 2977
+#line 2977
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2977
{
+#line 2977
int lstatus = ncx_put_float_uint(xp, tp);
+#line 2977
if(lstatus != ENOERR)
+#line 2977
status = lstatus;
+#line 2977
}
+#line 2977
+#line 2977
*xpp = (void *)xp;
+#line 2977
return status;
+#line 2977
#endif
+#line 2977
}
+#line 2977
int
+#line 2978
ncx_putn_float_longlong(void **xpp, size_t nelems, const longlong *tp)
+#line 2978
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2978
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2978
+#line 2978
/* basic algorithm is:
+#line 2978
* - ensure sane alignment of output data
+#line 2978
* - copy (conversion happens automatically) input data
+#line 2978
* to output
+#line 2978
* - update tp to point at next unconverted input, and xpp to point
+#line 2978
* at next location for converted output
+#line 2978
*/
+#line 2978
long i, j, ni;
+#line 2978
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2978
float *xp;
+#line 2978
int nrange = 0; /* number of range errors */
+#line 2978
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2978
long cxp = (long) *((char**)xpp);
+#line 2978
+#line 2978
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2978
/* sjl: manually stripmine so we can limit amount of
+#line 2978
* vector work space reserved to LOOPCNT elements. Also
+#line 2978
* makes vectorisation easy */
+#line 2978
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2978
ni=Min(nelems-j,LOOPCNT);
+#line 2978
if (realign) {
+#line 2978
xp = tmp;
+#line 2978
} else {
+#line 2978
xp = (float *) *xpp;
+#line 2978
}
+#line 2978
/* copy the next block */
+#line 2978
#pragma cdir loopcnt=LOOPCNT
+#line 2978
#pragma cdir shortloop
+#line 2978
for (i=0; i<ni; i++) {
+#line 2978
/* the normal case: */
+#line 2978
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2978
/* test for range errors (not always needed but do it anyway) */
+#line 2978
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2978
}
+#line 2978
/* copy workspace back if necessary */
+#line 2978
if (realign) {
+#line 2978
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2978
xp = (float *) *xpp;
+#line 2978
}
+#line 2978
/* update xpp and tp */
+#line 2978
xp += ni;
+#line 2978
tp += ni;
+#line 2978
*xpp = (void*)xp;
+#line 2978
}
+#line 2978
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2978
+#line 2978
#else /* not SX */
+#line 2978
+#line 2978
char *xp = (char *) *xpp;
+#line 2978
int status = ENOERR;
+#line 2978
+#line 2978
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2978
{
+#line 2978
int lstatus = ncx_put_float_longlong(xp, tp);
+#line 2978
if(lstatus != ENOERR)
+#line 2978
status = lstatus;
+#line 2978
}
+#line 2978
+#line 2978
*xpp = (void *)xp;
+#line 2978
return status;
+#line 2978
#endif
+#line 2978
}
+#line 2978
int
+#line 2979
ncx_putn_float_ulonglong(void **xpp, size_t nelems, const ulonglong *tp)
+#line 2979
{
-#if _SX && \
- X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2979
+#if _SX && X_SIZEOF_FLOAT == SIZEOF_FLOAT
+#line 2979
+#line 2979
/* basic algorithm is:
+#line 2979
* - ensure sane alignment of output data
+#line 2979
* - copy (conversion happens automatically) input data
+#line 2979
* to output
+#line 2979
* - update tp to point at next unconverted input, and xpp to point
+#line 2979
* at next location for converted output
+#line 2979
*/
+#line 2979
long i, j, ni;
+#line 2979
float tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2979
float *xp;
+#line 2979
int nrange = 0; /* number of range errors */
+#line 2979
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2979
long cxp = (long) *((char**)xpp);
+#line 2979
+#line 2979
realign = (cxp & 7) % SIZEOF_FLOAT;
+#line 2979
/* sjl: manually stripmine so we can limit amount of
+#line 2979
* vector work space reserved to LOOPCNT elements. Also
+#line 2979
* makes vectorisation easy */
+#line 2979
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2979
ni=Min(nelems-j,LOOPCNT);
+#line 2979
if (realign) {
+#line 2979
xp = tmp;
+#line 2979
} else {
+#line 2979
xp = (float *) *xpp;
+#line 2979
}
+#line 2979
/* copy the next block */
+#line 2979
#pragma cdir loopcnt=LOOPCNT
+#line 2979
#pragma cdir shortloop
+#line 2979
for (i=0; i<ni; i++) {
+#line 2979
/* the normal case: */
+#line 2979
xp[i] = (float) Max( X_FLOAT_MIN, Min(X_FLOAT_MAX, (float) tp[i]));
+#line 2979
/* test for range errors (not always needed but do it anyway) */
+#line 2979
nrange += tp[i] < X_FLOAT_MIN || tp[i] > X_FLOAT_MAX;
+#line 2979
}
+#line 2979
/* copy workspace back if necessary */
+#line 2979
if (realign) {
+#line 2979
memcpy(*xpp, tmp, ni*X_SIZEOF_FLOAT);
+#line 2979
xp = (float *) *xpp;
+#line 2979
}
+#line 2979
/* update xpp and tp */
+#line 2979
xp += ni;
+#line 2979
tp += ni;
+#line 2979
*xpp = (void*)xp;
+#line 2979
}
+#line 2979
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2979
+#line 2979
#else /* not SX */
+#line 2979
+#line 2979
char *xp = (char *) *xpp;
+#line 2979
int status = ENOERR;
+#line 2979
+#line 2979
for( ; nelems != 0; nelems--, xp += X_SIZEOF_FLOAT, tp++)
+#line 2979
{
+#line 2979
int lstatus = ncx_put_float_ulonglong(xp, tp);
+#line 2979
if(lstatus != ENOERR)
+#line 2979
status = lstatus;
+#line 2979
}
+#line 2979
+#line 2979
*xpp = (void *)xp;
+#line 2979
return status;
+#line 2979
#endif
+#line 2979
}
+#line 2979
/* double */
int
+#line 2983
ncx_getn_double_schar(const void **xpp, size_t nelems, schar *tp)
+#line 2983
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2983
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2983
+#line 2983
/* basic algorithm is:
+#line 2983
* - ensure sane alignment of input data
+#line 2983
* - copy (conversion happens automatically) input data
+#line 2983
* to output
+#line 2983
* - update xpp to point at next unconverted input, and tp to point
+#line 2983
* at next location for converted output
+#line 2983
*/
+#line 2983
long i, j, ni;
+#line 2983
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2983
double *xp;
+#line 2983
int nrange = 0; /* number of range errors */
+#line 2983
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2983
long cxp = (long) *((char**)xpp);
+#line 2983
+#line 2983
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2983
/* sjl: manually stripmine so we can limit amount of
+#line 2983
* vector work space reserved to LOOPCNT elements. Also
+#line 2983
* makes vectorisation easy */
+#line 2983
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2983
ni=Min(nelems-j,LOOPCNT);
+#line 2983
if (realign) {
+#line 2983
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2983
xp = tmp;
+#line 2983
} else {
+#line 2983
xp = (double *) *xpp;
+#line 2983
}
+#line 2983
/* copy the next block */
+#line 2983
#pragma cdir loopcnt=LOOPCNT
+#line 2983
#pragma cdir shortloop
+#line 2983
for (i=0; i<ni; i++) {
+#line 2983
tp[i] = (schar) Max( SCHAR_MIN, Min(SCHAR_MAX, (schar) xp[i]));
+#line 2983
/* test for range errors (not always needed but do it anyway) */
+#line 2983
nrange += xp[i] < SCHAR_MIN || xp[i] > SCHAR_MAX;
+#line 2983
}
+#line 2983
/* update xpp and tp */
+#line 2983
if (realign) xp = (double *) *xpp;
+#line 2983
xp += ni;
+#line 2983
tp += ni;
+#line 2983
*xpp = (void*)xp;
+#line 2983
}
+#line 2983
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2983
+#line 2983
#else /* not SX */
+#line 2983
const char *xp = (const char *) *xpp;
+#line 2983
int status = ENOERR;
+#line 2983
+#line 2983
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2983
{
+#line 2983
const int lstatus = ncx_get_double_schar(xp, tp);
+#line 2983
if(lstatus != ENOERR)
+#line 2983
status = lstatus;
+#line 2983
}
+#line 2983
+#line 2983
*xpp = (const void *)xp;
+#line 2983
return status;
+#line 2983
# endif
+#line 2983
}
+#line 2983
int
+#line 2984
ncx_getn_double_uchar(const void **xpp, size_t nelems, uchar *tp)
+#line 2984
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2984
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2984
+#line 2984
/* basic algorithm is:
+#line 2984
* - ensure sane alignment of input data
+#line 2984
* - copy (conversion happens automatically) input data
+#line 2984
* to output
+#line 2984
* - update xpp to point at next unconverted input, and tp to point
+#line 2984
* at next location for converted output
+#line 2984
*/
+#line 2984
long i, j, ni;
+#line 2984
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2984
double *xp;
+#line 2984
int nrange = 0; /* number of range errors */
+#line 2984
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2984
long cxp = (long) *((char**)xpp);
+#line 2984
+#line 2984
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2984
/* sjl: manually stripmine so we can limit amount of
+#line 2984
* vector work space reserved to LOOPCNT elements. Also
+#line 2984
* makes vectorisation easy */
+#line 2984
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2984
ni=Min(nelems-j,LOOPCNT);
+#line 2984
if (realign) {
+#line 2984
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2984
xp = tmp;
+#line 2984
} else {
+#line 2984
xp = (double *) *xpp;
+#line 2984
}
+#line 2984
/* copy the next block */
+#line 2984
#pragma cdir loopcnt=LOOPCNT
+#line 2984
#pragma cdir shortloop
+#line 2984
for (i=0; i<ni; i++) {
+#line 2984
tp[i] = (uchar) Max( UCHAR_MIN, Min(UCHAR_MAX, (uchar) xp[i]));
+#line 2984
/* test for range errors (not always needed but do it anyway) */
+#line 2984
nrange += xp[i] < UCHAR_MIN || xp[i] > UCHAR_MAX;
+#line 2984
}
+#line 2984
/* update xpp and tp */
+#line 2984
if (realign) xp = (double *) *xpp;
+#line 2984
xp += ni;
+#line 2984
tp += ni;
+#line 2984
*xpp = (void*)xp;
+#line 2984
}
+#line 2984
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2984
+#line 2984
#else /* not SX */
+#line 2984
const char *xp = (const char *) *xpp;
+#line 2984
int status = ENOERR;
+#line 2984
+#line 2984
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2984
{
+#line 2984
const int lstatus = ncx_get_double_uchar(xp, tp);
+#line 2984
if(lstatus != ENOERR)
+#line 2984
status = lstatus;
+#line 2984
}
+#line 2984
+#line 2984
*xpp = (const void *)xp;
+#line 2984
return status;
+#line 2984
# endif
+#line 2984
}
+#line 2984
int
+#line 2985
ncx_getn_double_short(const void **xpp, size_t nelems, short *tp)
+#line 2985
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2985
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2985
+#line 2985
/* basic algorithm is:
+#line 2985
* - ensure sane alignment of input data
+#line 2985
* - copy (conversion happens automatically) input data
+#line 2985
* to output
+#line 2985
* - update xpp to point at next unconverted input, and tp to point
+#line 2985
* at next location for converted output
+#line 2985
*/
+#line 2985
long i, j, ni;
+#line 2985
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2985
double *xp;
+#line 2985
int nrange = 0; /* number of range errors */
+#line 2985
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2985
long cxp = (long) *((char**)xpp);
+#line 2985
+#line 2985
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2985
/* sjl: manually stripmine so we can limit amount of
+#line 2985
* vector work space reserved to LOOPCNT elements. Also
+#line 2985
* makes vectorisation easy */
+#line 2985
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2985
ni=Min(nelems-j,LOOPCNT);
+#line 2985
if (realign) {
+#line 2985
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2985
xp = tmp;
+#line 2985
} else {
+#line 2985
xp = (double *) *xpp;
+#line 2985
}
+#line 2985
/* copy the next block */
+#line 2985
#pragma cdir loopcnt=LOOPCNT
+#line 2985
#pragma cdir shortloop
+#line 2985
for (i=0; i<ni; i++) {
+#line 2985
tp[i] = (short) Max( SHORT_MIN, Min(SHORT_MAX, (short) xp[i]));
+#line 2985
/* test for range errors (not always needed but do it anyway) */
+#line 2985
nrange += xp[i] < SHORT_MIN || xp[i] > SHORT_MAX;
+#line 2985
}
+#line 2985
/* update xpp and tp */
+#line 2985
if (realign) xp = (double *) *xpp;
+#line 2985
xp += ni;
+#line 2985
tp += ni;
+#line 2985
*xpp = (void*)xp;
+#line 2985
}
+#line 2985
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2985
+#line 2985
#else /* not SX */
+#line 2985
const char *xp = (const char *) *xpp;
+#line 2985
int status = ENOERR;
+#line 2985
+#line 2985
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2985
{
+#line 2985
const int lstatus = ncx_get_double_short(xp, tp);
+#line 2985
if(lstatus != ENOERR)
+#line 2985
status = lstatus;
+#line 2985
}
+#line 2985
+#line 2985
*xpp = (const void *)xp;
+#line 2985
return status;
+#line 2985
# endif
+#line 2985
}
+#line 2985
int
+#line 2986
ncx_getn_double_int(const void **xpp, size_t nelems, int *tp)
+#line 2986
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2986
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2986
+#line 2986
/* basic algorithm is:
+#line 2986
* - ensure sane alignment of input data
+#line 2986
* - copy (conversion happens automatically) input data
+#line 2986
* to output
+#line 2986
* - update xpp to point at next unconverted input, and tp to point
+#line 2986
* at next location for converted output
+#line 2986
*/
+#line 2986
long i, j, ni;
+#line 2986
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2986
double *xp;
+#line 2986
int nrange = 0; /* number of range errors */
+#line 2986
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2986
long cxp = (long) *((char**)xpp);
+#line 2986
+#line 2986
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2986
/* sjl: manually stripmine so we can limit amount of
+#line 2986
* vector work space reserved to LOOPCNT elements. Also
+#line 2986
* makes vectorisation easy */
+#line 2986
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2986
ni=Min(nelems-j,LOOPCNT);
+#line 2986
if (realign) {
+#line 2986
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2986
xp = tmp;
+#line 2986
} else {
+#line 2986
xp = (double *) *xpp;
+#line 2986
}
+#line 2986
/* copy the next block */
+#line 2986
#pragma cdir loopcnt=LOOPCNT
+#line 2986
#pragma cdir shortloop
+#line 2986
for (i=0; i<ni; i++) {
+#line 2986
tp[i] = (int) Max( INT_MIN, Min(INT_MAX, (int) xp[i]));
+#line 2986
/* test for range errors (not always needed but do it anyway) */
+#line 2986
nrange += xp[i] < INT_MIN || xp[i] > INT_MAX;
+#line 2986
}
+#line 2986
/* update xpp and tp */
+#line 2986
if (realign) xp = (double *) *xpp;
+#line 2986
xp += ni;
+#line 2986
tp += ni;
+#line 2986
*xpp = (void*)xp;
+#line 2986
}
+#line 2986
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2986
+#line 2986
#else /* not SX */
+#line 2986
const char *xp = (const char *) *xpp;
+#line 2986
int status = ENOERR;
+#line 2986
+#line 2986
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2986
{
+#line 2986
const int lstatus = ncx_get_double_int(xp, tp);
+#line 2986
if(lstatus != ENOERR)
+#line 2986
status = lstatus;
+#line 2986
}
+#line 2986
+#line 2986
*xpp = (const void *)xp;
+#line 2986
return status;
+#line 2986
# endif
+#line 2986
}
+#line 2986
int
+#line 2987
ncx_getn_double_float(const void **xpp, size_t nelems, float *tp)
+#line 2987
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2987
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2987
+#line 2987
/* basic algorithm is:
+#line 2987
* - ensure sane alignment of input data
+#line 2987
* - copy (conversion happens automatically) input data
+#line 2987
* to output
+#line 2987
* - update xpp to point at next unconverted input, and tp to point
+#line 2987
* at next location for converted output
+#line 2987
*/
+#line 2987
long i, j, ni;
+#line 2987
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2987
double *xp;
+#line 2987
int nrange = 0; /* number of range errors */
+#line 2987
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2987
long cxp = (long) *((char**)xpp);
+#line 2987
+#line 2987
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2987
/* sjl: manually stripmine so we can limit amount of
+#line 2987
* vector work space reserved to LOOPCNT elements. Also
+#line 2987
* makes vectorisation easy */
+#line 2987
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2987
ni=Min(nelems-j,LOOPCNT);
+#line 2987
if (realign) {
+#line 2987
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2987
xp = tmp;
+#line 2987
} else {
+#line 2987
xp = (double *) *xpp;
+#line 2987
}
+#line 2987
/* copy the next block */
+#line 2987
#pragma cdir loopcnt=LOOPCNT
+#line 2987
#pragma cdir shortloop
+#line 2987
for (i=0; i<ni; i++) {
+#line 2987
tp[i] = (float) Max( FLOAT_MIN, Min(FLOAT_MAX, (float) xp[i]));
+#line 2987
/* test for range errors (not always needed but do it anyway) */
+#line 2987
nrange += xp[i] < FLOAT_MIN || xp[i] > FLOAT_MAX;
+#line 2987
}
+#line 2987
/* update xpp and tp */
+#line 2987
if (realign) xp = (double *) *xpp;
+#line 2987
xp += ni;
+#line 2987
tp += ni;
+#line 2987
*xpp = (void*)xp;
+#line 2987
}
+#line 2987
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2987
+#line 2987
#else /* not SX */
+#line 2987
const char *xp = (const char *) *xpp;
+#line 2987
int status = ENOERR;
+#line 2987
+#line 2987
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2987
{
+#line 2987
const int lstatus = ncx_get_double_float(xp, tp);
+#line 2987
if(lstatus != ENOERR)
+#line 2987
status = lstatus;
+#line 2987
}
+#line 2987
+#line 2987
*xpp = (const void *)xp;
+#line 2987
return status;
+#line 2987
# endif
+#line 2987
}
+#line 2987
+#line 2989
int
+#line 2989
ncx_getn_double_uint(const void **xpp, size_t nelems, uint *tp)
+#line 2989
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2989
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2989
+#line 2989
/* basic algorithm is:
+#line 2989
* - ensure sane alignment of input data
+#line 2989
* - copy (conversion happens automatically) input data
+#line 2989
* to output
+#line 2989
* - update xpp to point at next unconverted input, and tp to point
+#line 2989
* at next location for converted output
+#line 2989
*/
+#line 2989
long i, j, ni;
+#line 2989
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2989
double *xp;
+#line 2989
int nrange = 0; /* number of range errors */
+#line 2989
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2989
long cxp = (long) *((char**)xpp);
+#line 2989
+#line 2989
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2989
/* sjl: manually stripmine so we can limit amount of
+#line 2989
* vector work space reserved to LOOPCNT elements. Also
+#line 2989
* makes vectorisation easy */
+#line 2989
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2989
ni=Min(nelems-j,LOOPCNT);
+#line 2989
if (realign) {
+#line 2989
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2989
xp = tmp;
+#line 2989
} else {
+#line 2989
xp = (double *) *xpp;
+#line 2989
}
+#line 2989
/* copy the next block */
+#line 2989
#pragma cdir loopcnt=LOOPCNT
+#line 2989
#pragma cdir shortloop
+#line 2989
for (i=0; i<ni; i++) {
+#line 2989
tp[i] = (uint) Max( UINT_MIN, Min(UINT_MAX, (uint) xp[i]));
+#line 2989
/* test for range errors (not always needed but do it anyway) */
+#line 2989
nrange += xp[i] < UINT_MIN || xp[i] > UINT_MAX;
+#line 2989
}
+#line 2989
/* update xpp and tp */
+#line 2989
if (realign) xp = (double *) *xpp;
+#line 2989
xp += ni;
+#line 2989
tp += ni;
+#line 2989
*xpp = (void*)xp;
+#line 2989
}
+#line 2989
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2989
+#line 2989
#else /* not SX */
+#line 2989
const char *xp = (const char *) *xpp;
+#line 2989
int status = ENOERR;
+#line 2989
+#line 2989
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2989
{
+#line 2989
const int lstatus = ncx_get_double_uint(xp, tp);
+#line 2989
if(lstatus != ENOERR)
+#line 2989
status = lstatus;
+#line 2989
}
+#line 2989
+#line 2989
*xpp = (const void *)xp;
+#line 2989
return status;
+#line 2989
# endif
+#line 2989
}
+#line 2989
int
+#line 2990
ncx_getn_double_longlong(const void **xpp, size_t nelems, longlong *tp)
+#line 2990
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2990
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2990
+#line 2990
/* basic algorithm is:
+#line 2990
* - ensure sane alignment of input data
+#line 2990
* - copy (conversion happens automatically) input data
+#line 2990
* to output
+#line 2990
* - update xpp to point at next unconverted input, and tp to point
+#line 2990
* at next location for converted output
+#line 2990
*/
+#line 2990
long i, j, ni;
+#line 2990
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2990
double *xp;
+#line 2990
int nrange = 0; /* number of range errors */
+#line 2990
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2990
long cxp = (long) *((char**)xpp);
+#line 2990
+#line 2990
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2990
/* sjl: manually stripmine so we can limit amount of
+#line 2990
* vector work space reserved to LOOPCNT elements. Also
+#line 2990
* makes vectorisation easy */
+#line 2990
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2990
ni=Min(nelems-j,LOOPCNT);
+#line 2990
if (realign) {
+#line 2990
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2990
xp = tmp;
+#line 2990
} else {
+#line 2990
xp = (double *) *xpp;
+#line 2990
}
+#line 2990
/* copy the next block */
+#line 2990
#pragma cdir loopcnt=LOOPCNT
+#line 2990
#pragma cdir shortloop
+#line 2990
for (i=0; i<ni; i++) {
+#line 2990
tp[i] = (longlong) Max( LONGLONG_MIN, Min(LONGLONG_MAX, (longlong) xp[i]));
+#line 2990
/* test for range errors (not always needed but do it anyway) */
+#line 2990
nrange += xp[i] < LONGLONG_MIN || xp[i] > LONGLONG_MAX;
+#line 2990
}
+#line 2990
/* update xpp and tp */
+#line 2990
if (realign) xp = (double *) *xpp;
+#line 2990
xp += ni;
+#line 2990
tp += ni;
+#line 2990
*xpp = (void*)xp;
+#line 2990
}
+#line 2990
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2990
+#line 2990
#else /* not SX */
+#line 2990
const char *xp = (const char *) *xpp;
+#line 2990
int status = ENOERR;
+#line 2990
+#line 2990
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2990
{
+#line 2990
const int lstatus = ncx_get_double_longlong(xp, tp);
+#line 2990
if(lstatus != ENOERR)
+#line 2990
status = lstatus;
+#line 2990
}
+#line 2990
+#line 2990
*xpp = (const void *)xp;
+#line 2990
return status;
+#line 2990
# endif
+#line 2990
}
+#line 2990
int
+#line 2991
ncx_getn_double_ulonglong(const void **xpp, size_t nelems, ulonglong *tp)
+#line 2991
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2991
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 2991
+#line 2991
/* basic algorithm is:
+#line 2991
* - ensure sane alignment of input data
+#line 2991
* - copy (conversion happens automatically) input data
+#line 2991
* to output
+#line 2991
* - update xpp to point at next unconverted input, and tp to point
+#line 2991
* at next location for converted output
+#line 2991
*/
+#line 2991
long i, j, ni;
+#line 2991
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 2991
double *xp;
+#line 2991
int nrange = 0; /* number of range errors */
+#line 2991
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 2991
long cxp = (long) *((char**)xpp);
+#line 2991
+#line 2991
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 2991
/* sjl: manually stripmine so we can limit amount of
+#line 2991
* vector work space reserved to LOOPCNT elements. Also
+#line 2991
* makes vectorisation easy */
+#line 2991
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 2991
ni=Min(nelems-j,LOOPCNT);
+#line 2991
if (realign) {
+#line 2991
memcpy(tmp, *xpp, ni*SIZEOF_DOUBLE);
+#line 2991
xp = tmp;
+#line 2991
} else {
+#line 2991
xp = (double *) *xpp;
+#line 2991
}
+#line 2991
/* copy the next block */
+#line 2991
#pragma cdir loopcnt=LOOPCNT
+#line 2991
#pragma cdir shortloop
+#line 2991
for (i=0; i<ni; i++) {
+#line 2991
tp[i] = (ulonglong) Max( ULONGLONG_MIN, Min(ULONGLONG_MAX, (ulonglong) xp[i]));
+#line 2991
/* test for range errors (not always needed but do it anyway) */
+#line 2991
nrange += xp[i] < ULONGLONG_MIN || xp[i] > ULONGLONG_MAX;
+#line 2991
}
+#line 2991
/* update xpp and tp */
+#line 2991
if (realign) xp = (double *) *xpp;
+#line 2991
xp += ni;
+#line 2991
tp += ni;
+#line 2991
*xpp = (void*)xp;
+#line 2991
}
+#line 2991
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 2991
+#line 2991
#else /* not SX */
+#line 2991
const char *xp = (const char *) *xpp;
+#line 2991
int status = ENOERR;
+#line 2991
+#line 2991
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 2991
{
+#line 2991
const int lstatus = ncx_get_double_ulonglong(xp, tp);
+#line 2991
if(lstatus != ENOERR)
+#line 2991
status = lstatus;
+#line 2991
}
+#line 2991
+#line 2991
*xpp = (const void *)xp;
+#line 2991
return status;
+#line 2991
# endif
+#line 2991
}
+#line 2991
#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT)
/* optimized version */
@@ -7544,46 +12740,87 @@ ncx_getn_double_double(const void **xpp, size_t ndoubles, double *ip)
while(ip < end)
{
struct vax_double *const vdp =
+#line 3013
(struct vax_double *)ip;
+#line 3013
const struct ieee_double *const idp =
+#line 3013
(const struct ieee_double *) (*xpp);
+#line 3013
{
+#line 3013
const struct dbl_limits *lim;
+#line 3013
int ii;
+#line 3013
for (ii = 0, lim = dbl_limits;
+#line 3013
ii < sizeof(dbl_limits)/sizeof(struct dbl_limits);
+#line 3013
ii++, lim++)
+#line 3013
{
+#line 3013
if ((idp->mant_lo == lim->ieee.mant_lo)
+#line 3013
&& (idp->mant_4 == lim->ieee.mant_4)
+#line 3013
&& (idp->mant_5 == lim->ieee.mant_5)
+#line 3013
&& (idp->mant_6 == lim->ieee.mant_6)
+#line 3013
&& (idp->exp_lo == lim->ieee.exp_lo)
+#line 3013
&& (idp->exp_hi == lim->ieee.exp_hi)
+#line 3013
)
+#line 3013
{
+#line 3013
*vdp = lim->d;
+#line 3013
goto doneit;
+#line 3013
}
+#line 3013
}
+#line 3013
}
+#line 3013
{
+#line 3013
unsigned exp = idp->exp_hi << 4 | idp->exp_lo;
+#line 3013
vdp->exp = exp - IEEE_DBL_BIAS + VAX_DBL_BIAS;
+#line 3013
}
+#line 3013
{
+#line 3013
unsigned mant_hi = ((idp->mant_6 << 16)
+#line 3013
| (idp->mant_5 << 8)
+#line 3013
| idp->mant_4);
+#line 3013
unsigned mant_lo = SWAP4(idp->mant_lo);
+#line 3013
vdp->mantissa1 = (mant_hi >> 13);
+#line 3013
vdp->mantissa2 = ((mant_hi & MASK(13)) << 3)
+#line 3013
| (mant_lo >> 29);
+#line 3013
vdp->mantissa3 = (mant_lo >> 13);
+#line 3013
vdp->mantissa4 = (mant_lo << 3);
+#line 3013
}
+#line 3013
doneit:
+#line 3013
vdp->sign = idp->sign;
+#line 3013
ip++;
*xpp = (char *)(*xpp) + X_SIZEOF_DOUBLE;
@@ -7612,556 +12849,1085 @@ ncx_getn_double_double(const void **xpp, size_t nelems, double *tp)
#endif
int
+#line 3040
ncx_putn_double_schar(void **xpp, size_t nelems, const schar *tp)
+#line 3040
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3040
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3040
+#line 3040
/* basic algorithm is:
+#line 3040
* - ensure sane alignment of output data
+#line 3040
* - copy (conversion happens automatically) input data
+#line 3040
* to output
+#line 3040
* - update tp to point at next unconverted input, and xpp to point
+#line 3040
* at next location for converted output
+#line 3040
*/
+#line 3040
long i, j, ni;
+#line 3040
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3040
double *xp;
+#line 3040
int nrange = 0; /* number of range errors */
+#line 3040
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3040
long cxp = (long) *((char**)xpp);
+#line 3040
+#line 3040
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3040
/* sjl: manually stripmine so we can limit amount of
+#line 3040
* vector work space reserved to LOOPCNT elements. Also
+#line 3040
* makes vectorisation easy */
+#line 3040
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3040
ni=Min(nelems-j,LOOPCNT);
+#line 3040
if (realign) {
+#line 3040
xp = tmp;
+#line 3040
} else {
+#line 3040
xp = (double *) *xpp;
+#line 3040
}
+#line 3040
/* copy the next block */
+#line 3040
#pragma cdir loopcnt=LOOPCNT
+#line 3040
#pragma cdir shortloop
+#line 3040
for (i=0; i<ni; i++) {
+#line 3040
/* the normal case: */
+#line 3040
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3040
/* test for range errors (not always needed but do it anyway) */
+#line 3040
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3040
}
+#line 3040
/* copy workspace back if necessary */
+#line 3040
if (realign) {
+#line 3040
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3040
xp = (double *) *xpp;
+#line 3040
}
+#line 3040
/* update xpp and tp */
+#line 3040
xp += ni;
+#line 3040
tp += ni;
+#line 3040
*xpp = (void*)xp;
+#line 3040
}
+#line 3040
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3040
+#line 3040
#else /* not SX */
+#line 3040
+#line 3040
char *xp = (char *) *xpp;
+#line 3040
int status = ENOERR;
+#line 3040
+#line 3040
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3040
{
+#line 3040
int lstatus = ncx_put_double_schar(xp, tp);
+#line 3040
if(lstatus != ENOERR)
+#line 3040
status = lstatus;
+#line 3040
}
+#line 3040
+#line 3040
*xpp = (void *)xp;
+#line 3040
return status;
+#line 3040
#endif
+#line 3040
}
+#line 3040
int
+#line 3041
ncx_putn_double_uchar(void **xpp, size_t nelems, const uchar *tp)
+#line 3041
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3041
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3041
+#line 3041
/* basic algorithm is:
+#line 3041
* - ensure sane alignment of output data
+#line 3041
* - copy (conversion happens automatically) input data
+#line 3041
* to output
+#line 3041
* - update tp to point at next unconverted input, and xpp to point
+#line 3041
* at next location for converted output
+#line 3041
*/
+#line 3041
long i, j, ni;
+#line 3041
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3041
double *xp;
+#line 3041
int nrange = 0; /* number of range errors */
+#line 3041
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3041
long cxp = (long) *((char**)xpp);
+#line 3041
+#line 3041
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3041
/* sjl: manually stripmine so we can limit amount of
+#line 3041
* vector work space reserved to LOOPCNT elements. Also
+#line 3041
* makes vectorisation easy */
+#line 3041
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3041
ni=Min(nelems-j,LOOPCNT);
+#line 3041
if (realign) {
+#line 3041
xp = tmp;
+#line 3041
} else {
+#line 3041
xp = (double *) *xpp;
+#line 3041
}
+#line 3041
/* copy the next block */
+#line 3041
#pragma cdir loopcnt=LOOPCNT
+#line 3041
#pragma cdir shortloop
+#line 3041
for (i=0; i<ni; i++) {
+#line 3041
/* the normal case: */
+#line 3041
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3041
/* test for range errors (not always needed but do it anyway) */
+#line 3041
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3041
}
+#line 3041
/* copy workspace back if necessary */
+#line 3041
if (realign) {
+#line 3041
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3041
xp = (double *) *xpp;
+#line 3041
}
+#line 3041
/* update xpp and tp */
+#line 3041
xp += ni;
+#line 3041
tp += ni;
+#line 3041
*xpp = (void*)xp;
+#line 3041
}
+#line 3041
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3041
+#line 3041
#else /* not SX */
+#line 3041
+#line 3041
char *xp = (char *) *xpp;
+#line 3041
int status = ENOERR;
+#line 3041
+#line 3041
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3041
{
+#line 3041
int lstatus = ncx_put_double_uchar(xp, tp);
+#line 3041
if(lstatus != ENOERR)
+#line 3041
status = lstatus;
+#line 3041
}
+#line 3041
+#line 3041
*xpp = (void *)xp;
+#line 3041
return status;
+#line 3041
#endif
+#line 3041
}
+#line 3041
int
+#line 3042
ncx_putn_double_short(void **xpp, size_t nelems, const short *tp)
+#line 3042
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3042
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3042
+#line 3042
/* basic algorithm is:
+#line 3042
* - ensure sane alignment of output data
+#line 3042
* - copy (conversion happens automatically) input data
+#line 3042
* to output
+#line 3042
* - update tp to point at next unconverted input, and xpp to point
+#line 3042
* at next location for converted output
+#line 3042
*/
+#line 3042
long i, j, ni;
+#line 3042
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3042
double *xp;
+#line 3042
int nrange = 0; /* number of range errors */
+#line 3042
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3042
long cxp = (long) *((char**)xpp);
+#line 3042
+#line 3042
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3042
/* sjl: manually stripmine so we can limit amount of
+#line 3042
* vector work space reserved to LOOPCNT elements. Also
+#line 3042
* makes vectorisation easy */
+#line 3042
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3042
ni=Min(nelems-j,LOOPCNT);
+#line 3042
if (realign) {
+#line 3042
xp = tmp;
+#line 3042
} else {
+#line 3042
xp = (double *) *xpp;
+#line 3042
}
+#line 3042
/* copy the next block */
+#line 3042
#pragma cdir loopcnt=LOOPCNT
+#line 3042
#pragma cdir shortloop
+#line 3042
for (i=0; i<ni; i++) {
+#line 3042
/* the normal case: */
+#line 3042
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3042
/* test for range errors (not always needed but do it anyway) */
+#line 3042
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3042
}
+#line 3042
/* copy workspace back if necessary */
+#line 3042
if (realign) {
+#line 3042
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3042
xp = (double *) *xpp;
+#line 3042
}
+#line 3042
/* update xpp and tp */
+#line 3042
xp += ni;
+#line 3042
tp += ni;
+#line 3042
*xpp = (void*)xp;
+#line 3042
}
+#line 3042
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3042
+#line 3042
#else /* not SX */
+#line 3042
+#line 3042
char *xp = (char *) *xpp;
+#line 3042
int status = ENOERR;
+#line 3042
+#line 3042
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3042
{
+#line 3042
int lstatus = ncx_put_double_short(xp, tp);
+#line 3042
if(lstatus != ENOERR)
+#line 3042
status = lstatus;
+#line 3042
}
+#line 3042
+#line 3042
*xpp = (void *)xp;
+#line 3042
return status;
+#line 3042
#endif
+#line 3042
}
+#line 3042
int
+#line 3043
ncx_putn_double_int(void **xpp, size_t nelems, const int *tp)
+#line 3043
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3043
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3043
+#line 3043
/* basic algorithm is:
+#line 3043
* - ensure sane alignment of output data
+#line 3043
* - copy (conversion happens automatically) input data
+#line 3043
* to output
+#line 3043
* - update tp to point at next unconverted input, and xpp to point
+#line 3043
* at next location for converted output
+#line 3043
*/
+#line 3043
long i, j, ni;
+#line 3043
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3043
double *xp;
+#line 3043
int nrange = 0; /* number of range errors */
+#line 3043
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3043
long cxp = (long) *((char**)xpp);
+#line 3043
+#line 3043
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3043
/* sjl: manually stripmine so we can limit amount of
+#line 3043
* vector work space reserved to LOOPCNT elements. Also
+#line 3043
* makes vectorisation easy */
+#line 3043
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3043
ni=Min(nelems-j,LOOPCNT);
+#line 3043
if (realign) {
+#line 3043
xp = tmp;
+#line 3043
} else {
+#line 3043
xp = (double *) *xpp;
+#line 3043
}
+#line 3043
/* copy the next block */
+#line 3043
#pragma cdir loopcnt=LOOPCNT
+#line 3043
#pragma cdir shortloop
+#line 3043
for (i=0; i<ni; i++) {
+#line 3043
/* the normal case: */
+#line 3043
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3043
/* test for range errors (not always needed but do it anyway) */
+#line 3043
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3043
}
+#line 3043
/* copy workspace back if necessary */
+#line 3043
if (realign) {
+#line 3043
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3043
xp = (double *) *xpp;
+#line 3043
}
+#line 3043
/* update xpp and tp */
+#line 3043
xp += ni;
+#line 3043
tp += ni;
+#line 3043
*xpp = (void*)xp;
+#line 3043
}
+#line 3043
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3043
+#line 3043
#else /* not SX */
+#line 3043
+#line 3043
char *xp = (char *) *xpp;
+#line 3043
int status = ENOERR;
+#line 3043
+#line 3043
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3043
{
+#line 3043
int lstatus = ncx_put_double_int(xp, tp);
+#line 3043
if(lstatus != ENOERR)
+#line 3043
status = lstatus;
+#line 3043
}
+#line 3043
+#line 3043
*xpp = (void *)xp;
+#line 3043
return status;
+#line 3043
#endif
+#line 3043
}
+#line 3043
int
+#line 3044
ncx_putn_double_float(void **xpp, size_t nelems, const float *tp)
+#line 3044
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3044
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3044
+#line 3044
/* basic algorithm is:
+#line 3044
* - ensure sane alignment of output data
+#line 3044
* - copy (conversion happens automatically) input data
+#line 3044
* to output
+#line 3044
* - update tp to point at next unconverted input, and xpp to point
+#line 3044
* at next location for converted output
+#line 3044
*/
+#line 3044
long i, j, ni;
+#line 3044
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3044
double *xp;
+#line 3044
int nrange = 0; /* number of range errors */
+#line 3044
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3044
long cxp = (long) *((char**)xpp);
+#line 3044
+#line 3044
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3044
/* sjl: manually stripmine so we can limit amount of
+#line 3044
* vector work space reserved to LOOPCNT elements. Also
+#line 3044
* makes vectorisation easy */
+#line 3044
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3044
ni=Min(nelems-j,LOOPCNT);
+#line 3044
if (realign) {
+#line 3044
xp = tmp;
+#line 3044
} else {
+#line 3044
xp = (double *) *xpp;
+#line 3044
}
+#line 3044
/* copy the next block */
+#line 3044
#pragma cdir loopcnt=LOOPCNT
+#line 3044
#pragma cdir shortloop
+#line 3044
for (i=0; i<ni; i++) {
+#line 3044
/* the normal case: */
+#line 3044
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3044
/* test for range errors (not always needed but do it anyway) */
+#line 3044
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3044
}
+#line 3044
/* copy workspace back if necessary */
+#line 3044
if (realign) {
+#line 3044
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3044
xp = (double *) *xpp;
+#line 3044
}
+#line 3044
/* update xpp and tp */
+#line 3044
xp += ni;
+#line 3044
tp += ni;
+#line 3044
*xpp = (void*)xp;
+#line 3044
}
+#line 3044
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3044
+#line 3044
#else /* not SX */
+#line 3044
+#line 3044
char *xp = (char *) *xpp;
+#line 3044
int status = ENOERR;
+#line 3044
+#line 3044
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3044
{
+#line 3044
int lstatus = ncx_put_double_float(xp, tp);
+#line 3044
if(lstatus != ENOERR)
+#line 3044
status = lstatus;
+#line 3044
}
+#line 3044
+#line 3044
*xpp = (void *)xp;
+#line 3044
return status;
+#line 3044
#endif
+#line 3044
}
+#line 3044
+#line 3046
int
+#line 3046
ncx_putn_double_uint(void **xpp, size_t nelems, const uint *tp)
+#line 3046
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3046
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3046
+#line 3046
/* basic algorithm is:
+#line 3046
* - ensure sane alignment of output data
+#line 3046
* - copy (conversion happens automatically) input data
+#line 3046
* to output
+#line 3046
* - update tp to point at next unconverted input, and xpp to point
+#line 3046
* at next location for converted output
+#line 3046
*/
+#line 3046
long i, j, ni;
+#line 3046
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3046
double *xp;
+#line 3046
int nrange = 0; /* number of range errors */
+#line 3046
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3046
long cxp = (long) *((char**)xpp);
+#line 3046
+#line 3046
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3046
/* sjl: manually stripmine so we can limit amount of
+#line 3046
* vector work space reserved to LOOPCNT elements. Also
+#line 3046
* makes vectorisation easy */
+#line 3046
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3046
ni=Min(nelems-j,LOOPCNT);
+#line 3046
if (realign) {
+#line 3046
xp = tmp;
+#line 3046
} else {
+#line 3046
xp = (double *) *xpp;
+#line 3046
}
+#line 3046
/* copy the next block */
+#line 3046
#pragma cdir loopcnt=LOOPCNT
+#line 3046
#pragma cdir shortloop
+#line 3046
for (i=0; i<ni; i++) {
+#line 3046
/* the normal case: */
+#line 3046
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3046
/* test for range errors (not always needed but do it anyway) */
+#line 3046
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3046
}
+#line 3046
/* copy workspace back if necessary */
+#line 3046
if (realign) {
+#line 3046
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3046
xp = (double *) *xpp;
+#line 3046
}
+#line 3046
/* update xpp and tp */
+#line 3046
xp += ni;
+#line 3046
tp += ni;
+#line 3046
*xpp = (void*)xp;
+#line 3046
}
+#line 3046
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3046
+#line 3046
#else /* not SX */
+#line 3046
+#line 3046
char *xp = (char *) *xpp;
+#line 3046
int status = ENOERR;
+#line 3046
+#line 3046
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3046
{
+#line 3046
int lstatus = ncx_put_double_uint(xp, tp);
+#line 3046
if(lstatus != ENOERR)
+#line 3046
status = lstatus;
+#line 3046
}
+#line 3046
+#line 3046
*xpp = (void *)xp;
+#line 3046
return status;
+#line 3046
#endif
+#line 3046
}
+#line 3046
int
+#line 3047
ncx_putn_double_longlong(void **xpp, size_t nelems, const longlong *tp)
+#line 3047
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3047
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3047
+#line 3047
/* basic algorithm is:
+#line 3047
* - ensure sane alignment of output data
+#line 3047
* - copy (conversion happens automatically) input data
+#line 3047
* to output
+#line 3047
* - update tp to point at next unconverted input, and xpp to point
+#line 3047
* at next location for converted output
+#line 3047
*/
+#line 3047
long i, j, ni;
+#line 3047
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3047
double *xp;
+#line 3047
int nrange = 0; /* number of range errors */
+#line 3047
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3047
long cxp = (long) *((char**)xpp);
+#line 3047
+#line 3047
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3047
/* sjl: manually stripmine so we can limit amount of
+#line 3047
* vector work space reserved to LOOPCNT elements. Also
+#line 3047
* makes vectorisation easy */
+#line 3047
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3047
ni=Min(nelems-j,LOOPCNT);
+#line 3047
if (realign) {
+#line 3047
xp = tmp;
+#line 3047
} else {
+#line 3047
xp = (double *) *xpp;
+#line 3047
}
+#line 3047
/* copy the next block */
+#line 3047
#pragma cdir loopcnt=LOOPCNT
+#line 3047
#pragma cdir shortloop
+#line 3047
for (i=0; i<ni; i++) {
+#line 3047
/* the normal case: */
+#line 3047
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3047
/* test for range errors (not always needed but do it anyway) */
+#line 3047
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3047
}
+#line 3047
/* copy workspace back if necessary */
+#line 3047
if (realign) {
+#line 3047
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3047
xp = (double *) *xpp;
+#line 3047
}
+#line 3047
/* update xpp and tp */
+#line 3047
xp += ni;
+#line 3047
tp += ni;
+#line 3047
*xpp = (void*)xp;
+#line 3047
}
+#line 3047
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3047
+#line 3047
#else /* not SX */
+#line 3047
+#line 3047
char *xp = (char *) *xpp;
+#line 3047
int status = ENOERR;
+#line 3047
+#line 3047
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3047
{
+#line 3047
int lstatus = ncx_put_double_longlong(xp, tp);
+#line 3047
if(lstatus != ENOERR)
+#line 3047
status = lstatus;
+#line 3047
}
+#line 3047
+#line 3047
*xpp = (void *)xp;
+#line 3047
return status;
+#line 3047
#endif
+#line 3047
}
+#line 3047
int
+#line 3048
ncx_putn_double_ulonglong(void **xpp, size_t nelems, const ulonglong *tp)
+#line 3048
{
-#if _SX && \
- X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3048
+#if _SX && X_SIZEOF_DOUBLE == SIZEOF_DOUBLE
+#line 3048
+#line 3048
/* basic algorithm is:
+#line 3048
* - ensure sane alignment of output data
+#line 3048
* - copy (conversion happens automatically) input data
+#line 3048
* to output
+#line 3048
* - update tp to point at next unconverted input, and xpp to point
+#line 3048
* at next location for converted output
+#line 3048
*/
+#line 3048
long i, j, ni;
+#line 3048
double tmp[LOOPCNT]; /* in case input is misaligned */
+#line 3048
double *xp;
+#line 3048
int nrange = 0; /* number of range errors */
+#line 3048
int realign = 0; /* "do we need to fix input data alignment?" */
+#line 3048
long cxp = (long) *((char**)xpp);
+#line 3048
+#line 3048
realign = (cxp & 7) % SIZEOF_DOUBLE;
+#line 3048
/* sjl: manually stripmine so we can limit amount of
+#line 3048
* vector work space reserved to LOOPCNT elements. Also
+#line 3048
* makes vectorisation easy */
+#line 3048
for (j=0; j<nelems && nrange==0; j+=LOOPCNT) {
+#line 3048
ni=Min(nelems-j,LOOPCNT);
+#line 3048
if (realign) {
+#line 3048
xp = tmp;
+#line 3048
} else {
+#line 3048
xp = (double *) *xpp;
+#line 3048
}
+#line 3048
/* copy the next block */
+#line 3048
#pragma cdir loopcnt=LOOPCNT
+#line 3048
#pragma cdir shortloop
+#line 3048
for (i=0; i<ni; i++) {
+#line 3048
/* the normal case: */
+#line 3048
xp[i] = (double) Max( X_DOUBLE_MIN, Min(X_DOUBLE_MAX, (double) tp[i]));
+#line 3048
/* test for range errors (not always needed but do it anyway) */
+#line 3048
nrange += tp[i] < X_DOUBLE_MIN || tp[i] > X_DOUBLE_MAX;
+#line 3048
}
+#line 3048
/* copy workspace back if necessary */
+#line 3048
if (realign) {
+#line 3048
memcpy(*xpp, tmp, ni*X_SIZEOF_DOUBLE);
+#line 3048
xp = (double *) *xpp;
+#line 3048
}
+#line 3048
/* update xpp and tp */
+#line 3048
xp += ni;
+#line 3048
tp += ni;
+#line 3048
*xpp = (void*)xp;
+#line 3048
}
+#line 3048
return nrange == 0 ? ENOERR : NC_ERANGE;
+#line 3048
+#line 3048
#else /* not SX */
+#line 3048
+#line 3048
char *xp = (char *) *xpp;
+#line 3048
int status = ENOERR;
+#line 3048
+#line 3048
for( ; nelems != 0; nelems--, xp += X_SIZEOF_DOUBLE, tp++)
+#line 3048
{
+#line 3048
int lstatus = ncx_put_double_ulonglong(xp, tp);
+#line 3048
if(lstatus != ENOERR)
+#line 3048
status = lstatus;
+#line 3048
}
+#line 3048
+#line 3048
*xpp = (void *)xp;
+#line 3048
return status;
+#line 3048
#endif
+#line 3048
}
+#line 3048
#if X_SIZEOF_DOUBLE == SIZEOF_DOUBLE && !defined(NO_IEEE_FLOAT)
/* optimized version */
@@ -8185,64 +13951,123 @@ ncx_putn_double_double(void **xpp, size_t ndoubles, const double *ip)
while(ip < end)
{
const struct vax_double *const vdp =
+#line 3070
(const struct vax_double *)ip;
+#line 3070
struct ieee_double *const idp =
+#line 3070
(struct ieee_double *) (*xpp);
+#line 3070
+#line 3070
if ((vdp->mantissa4 > (dbl_limits[0].d.mantissa4 - 3)) &&
+#line 3070
(vdp->mantissa3 == dbl_limits[0].d.mantissa3) &&
+#line 3070
(vdp->mantissa2 == dbl_limits[0].d.mantissa2) &&
+#line 3070
(vdp->mantissa1 == dbl_limits[0].d.mantissa1) &&
+#line 3070
(vdp->exp == dbl_limits[0].d.exp))
+#line 3070
{
+#line 3070
*idp = dbl_limits[0].ieee;
+#line 3070
goto shipit;
+#line 3070
}
+#line 3070
if ((vdp->mantissa4 == dbl_limits[1].d.mantissa4) &&
+#line 3070
(vdp->mantissa3 == dbl_limits[1].d.mantissa3) &&
+#line 3070
(vdp->mantissa2 == dbl_limits[1].d.mantissa2) &&
+#line 3070
(vdp->mantissa1 == dbl_limits[1].d.mantissa1) &&
+#line 3070
(vdp->exp == dbl_limits[1].d.exp))
+#line 3070
{
+#line 3070
*idp = dbl_limits[1].ieee;
+#line 3070
goto shipit;
+#line 3070
}
+#line 3070
+#line 3070
{
+#line 3070
unsigned exp = vdp->exp - VAX_DBL_BIAS + IEEE_DBL_BIAS;
+#line 3070
+#line 3070
unsigned mant_lo = ((vdp->mantissa2 & MASK(3)) << 29) |
+#line 3070
(vdp->mantissa3 << 13) |
+#line 3070
((vdp->mantissa4 >> 3) & MASK(13));
+#line 3070
+#line 3070
unsigned mant_hi = (vdp->mantissa1 << 13)
+#line 3070
| (vdp->mantissa2 >> 3);
+#line 3070
+#line 3070
if((vdp->mantissa4 & 7) > 4)
+#line 3070
{
+#line 3070
/* round up */
+#line 3070
mant_lo++;
+#line 3070
if(mant_lo == 0)
+#line 3070
{
+#line 3070
mant_hi++;
+#line 3070
if(mant_hi > 0xffffff)
+#line 3070
{
+#line 3070
mant_hi = 0;
+#line 3070
exp++;
+#line 3070
}
+#line 3070
}
+#line 3070
}
+#line 3070
+#line 3070
idp->mant_lo = SWAP4(mant_lo);
+#line 3070
idp->mant_6 = mant_hi >> 16;
+#line 3070
idp->mant_5 = (mant_hi & 0xff00) >> 8;
+#line 3070
idp->mant_4 = mant_hi;
+#line 3070
idp->exp_hi = exp >> 4;
+#line 3070
idp->exp_lo = exp;
+#line 3070
}
+#line 3070
+#line 3070
shipit:
+#line 3070
idp->sign = vdp->sign;
+#line 3070
ip++;
*xpp = (char *)(*xpp) + X_SIZEOF_DOUBLE;
@@ -8281,8 +14106,11 @@ int
ncx_getn_text(const void **xpp, size_t nelems, char *tp)
{
(void) memcpy(tp, *xpp, nelems);
+#line 3107
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 3107
return ENOERR;
+#line 3107
}
@@ -8290,14 +14118,23 @@ int
ncx_pad_getn_text(const void **xpp, size_t nelems, char *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 3113
+#line 3113
if(rndup)
+#line 3113
rndup = X_ALIGN - rndup;
+#line 3113
+#line 3113
(void) memcpy(tp, *xpp, nelems);
+#line 3113
*xpp = (void *)((char *)(*xpp) + nelems + rndup);
+#line 3113
+#line 3113
return ENOERR;
+#line 3113
}
@@ -8305,9 +14142,13 @@ int
ncx_putn_text(void **xpp, size_t nelems, const char *tp)
{
(void) memcpy(*xpp, tp, nelems);
+#line 3119
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 3119
+#line 3119
return ENOERR;
+#line 3119
}
@@ -8315,20 +14156,35 @@ int
ncx_pad_putn_text(void **xpp, size_t nelems, const char *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 3125
+#line 3125
if(rndup)
+#line 3125
rndup = X_ALIGN - rndup;
+#line 3125
+#line 3125
(void) memcpy(*xpp, tp, nelems);
+#line 3125
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 3125
+#line 3125
if(rndup)
+#line 3125
{
+#line 3125
(void) memcpy(*xpp, nada, rndup);
+#line 3125
*xpp = (void *)((char *)(*xpp) + rndup);
+#line 3125
}
+#line 3125
+#line 3125
return ENOERR;
+#line 3125
}
@@ -8339,8 +14195,11 @@ int
ncx_getn_void(const void **xpp, size_t nelems, void *tp)
{
(void) memcpy(tp, *xpp, nelems);
+#line 3134
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 3134
return ENOERR;
+#line 3134
}
@@ -8348,14 +14207,23 @@ int
ncx_pad_getn_void(const void **xpp, size_t nelems, void *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 3140
+#line 3140
if(rndup)
+#line 3140
rndup = X_ALIGN - rndup;
+#line 3140
+#line 3140
(void) memcpy(tp, *xpp, nelems);
+#line 3140
*xpp = (void *)((char *)(*xpp) + nelems + rndup);
+#line 3140
+#line 3140
return ENOERR;
+#line 3140
}
@@ -8363,9 +14231,13 @@ int
ncx_putn_void(void **xpp, size_t nelems, const void *tp)
{
(void) memcpy(*xpp, tp, nelems);
+#line 3146
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 3146
+#line 3146
return ENOERR;
+#line 3146
}
@@ -8373,19 +14245,34 @@ int
ncx_pad_putn_void(void **xpp, size_t nelems, const void *tp)
{
size_t rndup = nelems % X_ALIGN;
+#line 3152
+#line 3152
if(rndup)
+#line 3152
rndup = X_ALIGN - rndup;
+#line 3152
+#line 3152
(void) memcpy(*xpp, tp, nelems);
+#line 3152
*xpp = (void *)((char *)(*xpp) + nelems);
+#line 3152
+#line 3152
if(rndup)
+#line 3152
{
+#line 3152
(void) memcpy(*xpp, nada, rndup);
+#line 3152
*xpp = (void *)((char *)(*xpp) + rndup);
+#line 3152
}
+#line 3152
+#line 3152
return ENOERR;
+#line 3152
}
diff --git a/libsrc/ncx.m4 b/libsrc/ncx.m4
index 76cd464..52c97a7 100644
--- a/libsrc/ncx.m4
+++ b/libsrc/ncx.m4
@@ -2298,8 +2298,7 @@ define(`NCX_GETN',dnl
int
ncx_getn_$1_$2(const void **xpp, size_t nelems, $2 *tp)
{
-#if _SX && \
- Xsizeof($1) == Isizeof($1)
+`#'if _SX && Xsizeof($1) == Isizeof($1)
/* basic algorithm is:
* - ensure sane alignment of input data
@@ -2514,8 +2513,7 @@ define(`NCX_PUTN',dnl
int
ncx_putn_$1_$2(void **xpp, size_t nelems, const $2 *tp)
{
-#if _SX && \
- Xsizeof($1) == Isizeof($1)
+`#'if _SX && Xsizeof($1) == Isizeof($1)
/* basic algorithm is:
* - ensure sane alignment of output data
diff --git a/libsrc/posixio.c b/libsrc/posixio.c
index 0654fef..ce05dce 100644
--- a/libsrc/posixio.c
+++ b/libsrc/posixio.c
@@ -223,7 +223,7 @@ fgrow2(const int fd, const off_t len)
posp - pointer to current position in file, updated after write.
*/
static int
-px_pgout(ncio *const nciop,
+px_pgout(ncio *const nciop,
off_t const offset, const size_t extent,
void *const vp, off_t *posp)
{
@@ -254,7 +254,7 @@ px_pgout(ncio *const nciop,
while((partial = write(nciop->fd, nvp, nextent)) != -1) {
if(partial == nextent)
break;
- nvp += partial;
+ nvp += partial;
nextent -= partial;
}
if(partial == -1)
@@ -264,14 +264,16 @@ px_pgout(ncio *const nciop,
return ENOERR;
}
-/* Read in a page of data.
+/*! Read in a page of data.
- nciop - a pointer to the ncio struct for this file.
- offset - byte offset in file where read starts.
- extent - the size of the page that will be read.
- vp - a pointer to where the data will end up.
- nreadp - returned number of bytes actually read (may be less than extent).
- posp - pointer to current position in file, updated after read.
+ @param[in] nciop A pointer to the ncio struct for this file.
+ @param[in] offset The byte offset in file where read starts.
+ @param[in] extent The size of the page that will be read.
+ @param[in] vp A pointer to where the data will end up.
+
+ @param[in,out] nreadp Returned number of bytes actually read (may be less than extent).
+ @param[in,out] posp The pointer to current position in file, updated after read.
+ @return Return 0 on success, otherwise an error code.
*/
static int
px_pgin(ncio *const nciop,
@@ -285,8 +287,16 @@ px_pgin(ncio *const nciop,
assert(offset % X_ALIGN == 0);
assert(extent % X_ALIGN == 0);
#endif
-
- assert(*posp == OFF_NONE || *posp == lseek(nciop->fd, 0, SEEK_CUR));
+ /* *posp == OFF_NONE (-1) on first call. This
+ is problematic because lseek also returns -1
+ on error. Use errno instead. */
+ if(*posp != OFF_NONE && *posp != lseek(nciop->fd, 0, SEEK_CUR)) {
+ if(errno) {
+ status = errno;
+ printf("Error %d: %s\n",errno,strerror(errno));
+ return status;
+ }
+ }
if(*posp != offset)
{
@@ -333,7 +343,7 @@ typedef struct ncio_px {
size_t blksz;
off_t pos;
/* buffer */
- off_t bf_offset;
+ off_t bf_offset;
size_t bf_extent;
size_t bf_cnt;
void *bf_base;
@@ -406,7 +416,7 @@ ncio_px_rel(ncio *const nciop, off_t offset, int rflags)
/* POSIX get. This will "make a region available." Since we're using
buffered IO, this means that if needed, we'll fetch a new page from
the file, otherwise, just return a pointer to what's in memory
- already.
+ already.
nciop - pointer to ncio struct, containing file info.
pxp - pointer to ncio_px struct, which contains special metadate
@@ -416,7 +426,7 @@ ncio_px_rel(ncio *const nciop, off_t offset, int rflags)
rflags - One of the RGN_* flags defined in ncio.h.
vpp - pointer to pointer that will recieve data.
- NOTES:
+ NOTES:
* For blkoffset round offset down to the nearest pxp->blksz. This
provides the offset (in bytes) to the beginning of the block that
@@ -436,7 +446,7 @@ ncio_px_rel(ncio *const nciop, off_t offset, int rflags)
* If this is called on a newly opened file, pxp->bf_offset will be
OFF_NONE and we'll jump to label pgin to immediately read in a
- page.
+ page.
*/
static int
px_get(ncio *const nciop, ncio_px *const pxp,
@@ -449,7 +459,7 @@ px_get(ncio *const nciop, ncio_px *const pxp,
const off_t blkoffset = _RNDDOWN(offset, (off_t)pxp->blksz);
off_t diff = (size_t)(offset - blkoffset);
off_t blkextent = _RNDUP(diff + extent, pxp->blksz);
-
+
assert(extent != 0);
assert(extent < X_INT_MAX); /* sanity check */
assert(offset >= 0); /* sanity check */
@@ -475,7 +485,7 @@ px_get(ncio *const nciop, ncio_px *const pxp,
if(blkoffset == pxp->bf_offset)
{
/* hit */
- if(blkextent > pxp->bf_extent)
+ if(blkextent > pxp->bf_extent)
{
/* page in upper */
void *const middle =
@@ -669,7 +679,7 @@ done:
corresponding call to rel().
For POSIX systems, without NC_SHARE. This function gets a page of
- size extent?
+ size extent?
This is a wrapper for the function px_get, which does all the heavy
lifting.
@@ -682,13 +692,13 @@ done:
vpp - handle to point at data when it's been read.
*/
static int
-ncio_px_get(ncio *const nciop,
+ncio_px_get(ncio *const nciop,
off_t offset, size_t extent,
int rflags,
void **const vpp)
{
ncio_px *const pxp = (ncio_px *)nciop->pvt;
-
+
if(fIsSet(rflags, RGN_WRITE) && !fIsSet(nciop->ioflags, NC_WRITE))
return EPERM; /* attempt to write readonly file */
@@ -718,7 +728,7 @@ px_double_buffer(ncio *const nciop, off_t to, off_t from,
int status = ENOERR;
void *src;
void *dest;
-
+
#if INSTRUMENT
fprintf(stderr, "\tdouble_buffr %ld %ld %ld\n",
(long)to, (long)from, (long)nbytes);
@@ -736,7 +746,7 @@ fprintf(stderr, "\tdouble_buffr %ld %ld %ld\n",
pxp->slave->blksz = pxp->blksz;
/* pos done below */
- pxp->slave->bf_offset = pxp->bf_offset;
+ pxp->slave->bf_offset = pxp->bf_offset;
pxp->slave->bf_extent = pxp->bf_extent;
pxp->slave->bf_cnt = pxp->bf_cnt;
pxp->slave->bf_base = malloc(2 * pxp->blksz);
@@ -748,7 +758,7 @@ fprintf(stderr, "\tdouble_buffr %ld %ld %ld\n",
pxp->slave->bf_refcount = 0;
pxp->slave->slave = NULL;
}
-
+
pxp->slave->pos = pxp->pos;
status = px_get(nciop, pxp->slave, from, nbytes, 0,
&src);
@@ -764,7 +774,7 @@ fprintf(stderr, "\tdouble_buffr %ld %ld %ld\n",
(void)px_rel(pxp->slave, from, 0);
(void)px_rel(pxp, to, RGN_MODIFIED);
-
+
return status;
}
@@ -788,7 +798,7 @@ ncio_px_move(ncio *const nciop, off_t to, off_t from,
{
ncio_px *const pxp = (ncio_px *)nciop->pvt;
int status = ENOERR;
- off_t lower;
+ off_t lower;
off_t upper;
char *base;
size_t diff;
@@ -796,7 +806,7 @@ ncio_px_move(ncio *const nciop, off_t to, off_t from,
if(to == from)
return ENOERR; /* NOOP */
-
+
if(fIsSet(rflags, RGN_WRITE) && !fIsSet(nciop->ioflags, NC_WRITE))
return EPERM; /* attempt to write readonly file */
@@ -805,7 +815,7 @@ ncio_px_move(ncio *const nciop, off_t to, off_t from,
if(to > from)
{
/* growing */
- lower = from;
+ lower = from;
upper = to;
}
else
@@ -865,7 +875,7 @@ else
}
return ENOERR;
}
-
+
#if INSTRUMENT
fprintf(stderr, "\tncio_px_move small\n");
#endif
@@ -876,10 +886,10 @@ fprintf(stderr, "\tncio_px_move small\n");
return status;
if(to > from)
- (void) memmove(base + diff, base, nbytes);
+ (void) memmove(base + diff, base, nbytes);
else
- (void) memmove(base, base + diff, nbytes);
-
+ (void) memmove(base, base + diff, nbytes);
+
(void) px_rel(pxp, lower, RGN_MODIFIED);
return status;
@@ -938,7 +948,7 @@ ncio_px_freepvt(void *const pvt)
free(pxp->slave);
pxp->slave = NULL;
}
-
+
if(pxp->bf_base != NULL)
{
free(pxp->bf_base);
@@ -1036,7 +1046,7 @@ ncio_px_init(ncio *const nciop)
typedef struct ncio_spx {
off_t pos;
/* buffer */
- off_t bf_offset;
+ off_t bf_offset;
size_t bf_extent;
size_t bf_cnt;
void *bf_base;
@@ -1117,7 +1127,7 @@ ncio_spx_get(ncio *const nciop,
#ifdef X_ALIGN
size_t rem;
#endif
-
+
if(fIsSet(rflags, RGN_WRITE) && !fIsSet(nciop->ioflags, NC_WRITE))
return EPERM; /* attempt to write readonly file */
@@ -1191,7 +1201,7 @@ strategy(ncio *const nciop, off_t to, off_t offset,
#ifdef X_ALIGN
size_t rem;
#endif
-
+
assert(extent != 0);
assert(extent < X_INT_MAX); /* sanity check */
#if INSTRUMENT
@@ -1241,7 +1251,7 @@ fprintf(stderr, "strategy %ld at %ld to %ld\n",
return status;
pxp->bf_offset = to; /* TODO: XALIGN */
-
+
if(pxp->bf_cnt < extent)
pxp->bf_cnt = extent;
@@ -1271,7 +1281,7 @@ ncio_spx_move(ncio *const nciop, off_t to, off_t from,
size_t nbytes, int rflags)
{
int status = ENOERR;
- off_t lower = from;
+ off_t lower = from;
off_t upper = to;
char *base;
size_t diff;
@@ -1281,11 +1291,11 @@ ncio_spx_move(ncio *const nciop, off_t to, off_t from,
if(to == from)
return ENOERR; /* NOOP */
-
+
if(to > from)
{
/* growing */
- lower = from;
+ lower = from;
upper = to;
}
else
@@ -1305,10 +1315,10 @@ ncio_spx_move(ncio *const nciop, off_t to, off_t from,
return status;
if(to > from)
- (void) memmove(base + diff, base, nbytes);
+ (void) memmove(base + diff, base, nbytes);
else
- (void) memmove(base, base + diff, nbytes);
-
+ (void) memmove(base, base + diff, nbytes);
+
(void) ncio_spx_rel(nciop, lower, RGN_MODIFIED);
return status;
@@ -1344,12 +1354,12 @@ ncio_spx_freepvt(void *const pvt)
/* This does the second half of the ncio_spx struct initialization for
- POSIX systems, with NC_SHARE on.
+ POSIX systems, with NC_SHARE on.
nciop - pointer to ncio struct for this file. File has been opened.
sizehintp - pointer to a size which will be rounded up to the
nearest 8-byt boundary and then used as the max size "chunk" (or
- page) to read from the file.
+ page) to read from the file.
*/
static int
ncio_spx_init2(ncio *const nciop, const size_t *const sizehintp)
@@ -1439,7 +1449,7 @@ ncio_px_new(const char *path, int ioflags)
size_t sz_path = M_RNDUP(strlen(path) +1);
size_t sz_ncio_pvt;
ncio *nciop;
-
+
#if ALWAYS_NC_SHARE /* DEBUG */
fSet(ioflags, NC_SHARE);
#endif
@@ -1452,7 +1462,7 @@ ncio_px_new(const char *path, int ioflags)
nciop = (ncio *) malloc(sz_ncio + sz_path + sz_ncio_pvt);
if(nciop == NULL)
return NULL;
-
+
nciop->ioflags = ioflags;
*((int *)&nciop->fd) = -1; /* cast away const */
@@ -1494,8 +1504,8 @@ ncio_px_new(const char *path, int ioflags)
ioflags - flags from nc_create
initialsz - From the netcdf man page: "The argument
Iinitialsize sets the initial size of the file at creation time."
- igeto -
- igetsz -
+ igeto -
+ igetsz -
sizehintp - this eventually goes into pxp->blksz and is the size of
a page of data for buffered reads and writes.
nciopp - pointer to a pointer that will get location of newly
@@ -1608,17 +1618,17 @@ unwind_new:
path - path of data file.
ioflags - flags passed into nc_open.
-
+
igeto - looks like this function can do an initial page get, and
igeto is going to be the offset for that. But it appears to be
- unused
+ unused
igetsz - the size in bytes of initial page get (a.k.a. extent). Not
ever used in the library.
-
+
sizehintp - pointer to sizehint parameter from nc__open or
- nc__create. This is used to set pxp->blksz.
-
+ nc__create. This is used to set pxp->blksz.
+
Here's what the man page has to say:
"The argument referenced by chunksize controls a space versus time
@@ -1724,7 +1734,7 @@ unwind_new:
return status;
}
-/*
+/*
* Get file size in bytes.
*/
static int
@@ -1733,7 +1743,7 @@ ncio_px_filesize(ncio *nciop, off_t *filesizep)
/* There is a problem with fstat on Windows based systems
- which manifests (so far) when Config RELEASE is built.
+ which manifests (so far) when Config RELEASE is built.
Use _filelengthi64 isntead. */
#ifdef HAVE_FILE_LENGTH_I64
@@ -1766,7 +1776,7 @@ ncio_px_pad_length(ncio *nciop, off_t length)
{
int status = ENOERR;
-
+
if(nciop == NULL)
return EINVAL;
@@ -1789,12 +1799,12 @@ ncio_px_pad_length(ncio *nciop, off_t length)
Sync any changes, then close the open file associated with the ncio
struct, and free its memory.
-
+
nciop - pointer to ncio to close.
doUnlink - if true, unlink file
*/
-static int
+static int
ncio_px_close(ncio *nciop, int doUnlink)
{
int status = ENOERR;
@@ -1803,14 +1813,14 @@ ncio_px_close(ncio *nciop, int doUnlink)
if(nciop->fd > 0) {
status = nciop->sync(nciop);
(void) close(nciop->fd);
- }
+ }
if(doUnlink)
(void) unlink(nciop->path);
ncio_px_free(nciop);
return status;
}
-static int
+static int
ncio_spx_close(ncio *nciop, int doUnlink)
{
int status = ENOERR;
diff --git a/libsrc/putget.c b/libsrc/putget.c
index 3add44a..6520b92 100644
--- a/libsrc/putget.c
+++ b/libsrc/putget.c
@@ -1,4 +1,6 @@
+#line 9 "../../libsrc/putget.m4"
/* Do not edit this file. It is produced from the corresponding .m4 source */
+#line 11
/*
* Copyright 1996, University Corporation for Atmospheric Research
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
@@ -70,6 +72,7 @@ arrayp(const char *label, size_t count, const size_t *array)
#endif
+#line 107
/*
* Next 6 type specific functions
@@ -78,151 +81,284 @@ arrayp(const char *label, size_t count, const size_t *array)
NC_arrayfill()
*/
static int
+#line 114
NC_fill_schar(
+#line 114
void **xpp,
+#line 114
size_t nelems) /* how many */
+#line 114
{
+#line 114
schar fillp[NFILL * sizeof(double)/X_SIZEOF_CHAR];
+#line 114
+#line 114
assert(nelems <= sizeof(fillp)/sizeof(fillp[0]));
+#line 114
+#line 114
{
+#line 114
schar *vp = fillp; /* lower bound of area to be filled */
+#line 114
const schar *const end = vp + nelems;
+#line 114
while(vp < end)
+#line 114
{
+#line 114
*vp++ = NC_FILL_BYTE;
+#line 114
}
+#line 114
}
+#line 114
return ncx_putn_schar_schar(xpp, nelems, fillp);
+#line 114
}
+#line 114
static int
+#line 115
NC_fill_char(
+#line 115
void **xpp,
+#line 115
size_t nelems) /* how many */
+#line 115
{
+#line 115
char fillp[NFILL * sizeof(double)/X_SIZEOF_CHAR];
+#line 115
+#line 115
assert(nelems <= sizeof(fillp)/sizeof(fillp[0]));
+#line 115
+#line 115
{
+#line 115
char *vp = fillp; /* lower bound of area to be filled */
+#line 115
const char *const end = vp + nelems;
+#line 115
while(vp < end)
+#line 115
{
+#line 115
*vp++ = NC_FILL_CHAR;
+#line 115
}
+#line 115
}
+#line 115
return ncx_putn_char_char(xpp, nelems, fillp);
+#line 115
}
+#line 115
static int
+#line 116
NC_fill_short(
+#line 116
void **xpp,
+#line 116
size_t nelems) /* how many */
+#line 116
{
+#line 116
short fillp[NFILL * sizeof(double)/X_SIZEOF_SHORT];
+#line 116
+#line 116
assert(nelems <= sizeof(fillp)/sizeof(fillp[0]));
+#line 116
+#line 116
{
+#line 116
short *vp = fillp; /* lower bound of area to be filled */
+#line 116
const short *const end = vp + nelems;
+#line 116
while(vp < end)
+#line 116
{
+#line 116
*vp++ = NC_FILL_SHORT;
+#line 116
}
+#line 116
}
+#line 116
return ncx_putn_short_short(xpp, nelems, fillp);
+#line 116
}
+#line 116
#if (SIZEOF_INT >= X_SIZEOF_INT)
static int
+#line 119
NC_fill_int(
+#line 119
void **xpp,
+#line 119
size_t nelems) /* how many */
+#line 119
{
+#line 119
int fillp[NFILL * sizeof(double)/X_SIZEOF_INT];
+#line 119
+#line 119
assert(nelems <= sizeof(fillp)/sizeof(fillp[0]));
+#line 119
+#line 119
{
+#line 119
int *vp = fillp; /* lower bound of area to be filled */
+#line 119
const int *const end = vp + nelems;
+#line 119
while(vp < end)
+#line 119
{
+#line 119
*vp++ = NC_FILL_INT;
+#line 119
}
+#line 119
}
+#line 119
return ncx_putn_int_int(xpp, nelems, fillp);
+#line 119
}
+#line 119
#elif SIZEOF_LONG == X_SIZEOF_INT
static int
+#line 121
NC_fill_int(
+#line 121
void **xpp,
+#line 121
size_t nelems) /* how many */
+#line 121
{
+#line 121
long fillp[NFILL * sizeof(double)/X_SIZEOF_INT];
+#line 121
+#line 121
assert(nelems <= sizeof(fillp)/sizeof(fillp[0]));
+#line 121
+#line 121
{
+#line 121
long *vp = fillp; /* lower bound of area to be filled */
+#line 121
const long *const end = vp + nelems;
+#line 121
while(vp < end)
+#line 121
{
+#line 121
*vp++ = NC_FILL_INT;
+#line 121
}
+#line 121
}
+#line 121
return ncx_putn_int_long(xpp, nelems, fillp);
+#line 121
}
+#line 121
#else
#error "NC_fill_int implementation"
#endif
static int
+#line 126
NC_fill_float(
+#line 126
void **xpp,
+#line 126
size_t nelems) /* how many */
+#line 126
{
+#line 126
float fillp[NFILL * sizeof(double)/X_SIZEOF_FLOAT];
+#line 126
+#line 126
assert(nelems <= sizeof(fillp)/sizeof(fillp[0]));
+#line 126
+#line 126
{
+#line 126
float *vp = fillp; /* lower bound of area to be filled */
+#line 126
const float *const end = vp + nelems;
+#line 126
while(vp < end)
+#line 126
{
+#line 126
*vp++ = NC_FILL_FLOAT;
+#line 126
}
+#line 126
}
+#line 126
return ncx_putn_float_float(xpp, nelems, fillp);
+#line 126
}
+#line 126
static int
+#line 127
NC_fill_double(
+#line 127
void **xpp,
+#line 127
size_t nelems) /* how many */
+#line 127
{
+#line 127
double fillp[NFILL * sizeof(double)/X_SIZEOF_DOUBLE];
+#line 127
+#line 127
assert(nelems <= sizeof(fillp)/sizeof(fillp[0]));
+#line 127
+#line 127
{
+#line 127
double *vp = fillp; /* lower bound of area to be filled */
+#line 127
const double *const end = vp + nelems;
+#line 127
while(vp < end)
+#line 127
{
+#line 127
*vp++ = NC_FILL_DOUBLE;
+#line 127
}
+#line 127
}
+#line 127
return ncx_putn_double_double(xpp, nelems, fillp);
+#line 127
}
+#line 127
@@ -741,3933 +877,7755 @@ NC_varoffset(const NC3_INFO* ncp, const NC_var *varp, const size_t *coord)
}
+#line 700
static int
+#line 701
putNCvx_char_char(NC3_INFO* ncp, const NC_var *varp,
+#line 701
const size_t *start, size_t nelems, const char *value)
+#line 701
{
+#line 701
off_t offset = NC_varoffset(ncp, varp, start);
+#line 701
size_t remaining = varp->xsz * nelems;
+#line 701
int status = NC_NOERR;
+#line 701
void *xp;
+#line 701
+#line 701
if(nelems == 0)
+#line 701
return NC_NOERR;
+#line 701
+#line 701
assert(value != NULL);
+#line 701
+#line 701
for(;;)
+#line 701
{
+#line 701
size_t extent = MIN(remaining, ncp->chunk);
+#line 701
size_t nput = ncx_howmany(varp->type, extent);
+#line 701
+#line 701
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 701
RGN_WRITE, &xp);
+#line 701
if(lstatus != NC_NOERR)
+#line 701
return lstatus;
+#line 701
+#line 701
lstatus = ncx_putn_char_char(&xp, nput, value);
+#line 701
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 701
{
+#line 701
/* not fatal to the loop */
+#line 701
status = lstatus;
+#line 701
}
+#line 701
+#line 701
(void) ncio_rel(ncp->nciop, offset,
+#line 701
RGN_MODIFIED);
+#line 701
+#line 701
remaining -= extent;
+#line 701
if(remaining == 0)
+#line 701
break; /* normal loop exit */
+#line 701
offset += extent;
+#line 701
value += nput;
+#line 701
+#line 701
}
+#line 701
+#line 701
return status;
+#line 701
}
+#line 701
static int
+#line 703
putNCvx_schar_schar(NC3_INFO* ncp, const NC_var *varp,
+#line 703
const size_t *start, size_t nelems, const schar *value)
+#line 703
{
+#line 703
off_t offset = NC_varoffset(ncp, varp, start);
+#line 703
size_t remaining = varp->xsz * nelems;
+#line 703
int status = NC_NOERR;
+#line 703
void *xp;
+#line 703
+#line 703
if(nelems == 0)
+#line 703
return NC_NOERR;
+#line 703
+#line 703
assert(value != NULL);
+#line 703
+#line 703
for(;;)
+#line 703
{
+#line 703
size_t extent = MIN(remaining, ncp->chunk);
+#line 703
size_t nput = ncx_howmany(varp->type, extent);
+#line 703
+#line 703
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 703
RGN_WRITE, &xp);
+#line 703
if(lstatus != NC_NOERR)
+#line 703
return lstatus;
+#line 703
+#line 703
lstatus = ncx_putn_schar_schar(&xp, nput, value);
+#line 703
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 703
{
+#line 703
/* not fatal to the loop */
+#line 703
status = lstatus;
+#line 703
}
+#line 703
+#line 703
(void) ncio_rel(ncp->nciop, offset,
+#line 703
RGN_MODIFIED);
+#line 703
+#line 703
remaining -= extent;
+#line 703
if(remaining == 0)
+#line 703
break; /* normal loop exit */
+#line 703
offset += extent;
+#line 703
value += nput;
+#line 703
+#line 703
}
+#line 703
+#line 703
return status;
+#line 703
}
+#line 703
static int
+#line 704
putNCvx_schar_uchar(NC3_INFO* ncp, const NC_var *varp,
+#line 704
const size_t *start, size_t nelems, const uchar *value)
+#line 704
{
+#line 704
off_t offset = NC_varoffset(ncp, varp, start);
+#line 704
size_t remaining = varp->xsz * nelems;
+#line 704
int status = NC_NOERR;
+#line 704
void *xp;
+#line 704
+#line 704
if(nelems == 0)
+#line 704
return NC_NOERR;
+#line 704
+#line 704
assert(value != NULL);
+#line 704
+#line 704
for(;;)
+#line 704
{
+#line 704
size_t extent = MIN(remaining, ncp->chunk);
+#line 704
size_t nput = ncx_howmany(varp->type, extent);
+#line 704
+#line 704
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 704
RGN_WRITE, &xp);
+#line 704
if(lstatus != NC_NOERR)
+#line 704
return lstatus;
+#line 704
+#line 704
lstatus = ncx_putn_schar_uchar(&xp, nput, value);
+#line 704
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 704
{
+#line 704
/* not fatal to the loop */
+#line 704
status = lstatus;
+#line 704
}
+#line 704
+#line 704
(void) ncio_rel(ncp->nciop, offset,
+#line 704
RGN_MODIFIED);
+#line 704
+#line 704
remaining -= extent;
+#line 704
if(remaining == 0)
+#line 704
break; /* normal loop exit */
+#line 704
offset += extent;
+#line 704
value += nput;
+#line 704
+#line 704
}
+#line 704
+#line 704
return status;
+#line 704
}
+#line 704
static int
+#line 705
putNCvx_schar_short(NC3_INFO* ncp, const NC_var *varp,
+#line 705
const size_t *start, size_t nelems, const short *value)
+#line 705
{
+#line 705
off_t offset = NC_varoffset(ncp, varp, start);
+#line 705
size_t remaining = varp->xsz * nelems;
+#line 705
int status = NC_NOERR;
+#line 705
void *xp;
+#line 705
+#line 705
if(nelems == 0)
+#line 705
return NC_NOERR;
+#line 705
+#line 705
assert(value != NULL);
+#line 705
+#line 705
for(;;)
+#line 705
{
+#line 705
size_t extent = MIN(remaining, ncp->chunk);
+#line 705
size_t nput = ncx_howmany(varp->type, extent);
+#line 705
+#line 705
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 705
RGN_WRITE, &xp);
+#line 705
if(lstatus != NC_NOERR)
+#line 705
return lstatus;
+#line 705
+#line 705
lstatus = ncx_putn_schar_short(&xp, nput, value);
+#line 705
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 705
{
+#line 705
/* not fatal to the loop */
+#line 705
status = lstatus;
+#line 705
}
+#line 705
+#line 705
(void) ncio_rel(ncp->nciop, offset,
+#line 705
RGN_MODIFIED);
+#line 705
+#line 705
remaining -= extent;
+#line 705
if(remaining == 0)
+#line 705
break; /* normal loop exit */
+#line 705
offset += extent;
+#line 705
value += nput;
+#line 705
+#line 705
}
+#line 705
+#line 705
return status;
+#line 705
}
+#line 705
static int
+#line 706
putNCvx_schar_int(NC3_INFO* ncp, const NC_var *varp,
+#line 706
const size_t *start, size_t nelems, const int *value)
+#line 706
{
+#line 706
off_t offset = NC_varoffset(ncp, varp, start);
+#line 706
size_t remaining = varp->xsz * nelems;
+#line 706
int status = NC_NOERR;
+#line 706
void *xp;
+#line 706
+#line 706
if(nelems == 0)
+#line 706
return NC_NOERR;
+#line 706
+#line 706
assert(value != NULL);
+#line 706
+#line 706
for(;;)
+#line 706
{
+#line 706
size_t extent = MIN(remaining, ncp->chunk);
+#line 706
size_t nput = ncx_howmany(varp->type, extent);
+#line 706
+#line 706
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 706
RGN_WRITE, &xp);
+#line 706
if(lstatus != NC_NOERR)
+#line 706
return lstatus;
+#line 706
+#line 706
lstatus = ncx_putn_schar_int(&xp, nput, value);
+#line 706
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 706
{
+#line 706
/* not fatal to the loop */
+#line 706
status = lstatus;
+#line 706
}
+#line 706
+#line 706
(void) ncio_rel(ncp->nciop, offset,
+#line 706
RGN_MODIFIED);
+#line 706
+#line 706
remaining -= extent;
+#line 706
if(remaining == 0)
+#line 706
break; /* normal loop exit */
+#line 706
offset += extent;
+#line 706
value += nput;
+#line 706
+#line 706
}
+#line 706
+#line 706
return status;
+#line 706
}
+#line 706
static int
+#line 707
putNCvx_schar_float(NC3_INFO* ncp, const NC_var *varp,
+#line 707
const size_t *start, size_t nelems, const float *value)
+#line 707
{
+#line 707
off_t offset = NC_varoffset(ncp, varp, start);
+#line 707
size_t remaining = varp->xsz * nelems;
+#line 707
int status = NC_NOERR;
+#line 707
void *xp;
+#line 707
+#line 707
if(nelems == 0)
+#line 707
return NC_NOERR;
+#line 707
+#line 707
assert(value != NULL);
+#line 707
+#line 707
for(;;)
+#line 707
{
+#line 707
size_t extent = MIN(remaining, ncp->chunk);
+#line 707
size_t nput = ncx_howmany(varp->type, extent);
+#line 707
+#line 707
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 707
RGN_WRITE, &xp);
+#line 707
if(lstatus != NC_NOERR)
+#line 707
return lstatus;
+#line 707
+#line 707
lstatus = ncx_putn_schar_float(&xp, nput, value);
+#line 707
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 707
{
+#line 707
/* not fatal to the loop */
+#line 707
status = lstatus;
+#line 707
}
+#line 707
+#line 707
(void) ncio_rel(ncp->nciop, offset,
+#line 707
RGN_MODIFIED);
+#line 707
+#line 707
remaining -= extent;
+#line 707
if(remaining == 0)
+#line 707
break; /* normal loop exit */
+#line 707
offset += extent;
+#line 707
value += nput;
+#line 707
+#line 707
}
+#line 707
+#line 707
return status;
+#line 707
}
+#line 707
static int
+#line 708
putNCvx_schar_double(NC3_INFO* ncp, const NC_var *varp,
+#line 708
const size_t *start, size_t nelems, const double *value)
+#line 708
{
+#line 708
off_t offset = NC_varoffset(ncp, varp, start);
+#line 708
size_t remaining = varp->xsz * nelems;
+#line 708
int status = NC_NOERR;
+#line 708
void *xp;
+#line 708
+#line 708
if(nelems == 0)
+#line 708
return NC_NOERR;
+#line 708
+#line 708
assert(value != NULL);
+#line 708
+#line 708
for(;;)
+#line 708
{
+#line 708
size_t extent = MIN(remaining, ncp->chunk);
+#line 708
size_t nput = ncx_howmany(varp->type, extent);
+#line 708
+#line 708
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 708
RGN_WRITE, &xp);
+#line 708
if(lstatus != NC_NOERR)
+#line 708
return lstatus;
+#line 708
+#line 708
lstatus = ncx_putn_schar_double(&xp, nput, value);
+#line 708
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 708
{
+#line 708
/* not fatal to the loop */
+#line 708
status = lstatus;
+#line 708
}
+#line 708
+#line 708
(void) ncio_rel(ncp->nciop, offset,
+#line 708
RGN_MODIFIED);
+#line 708
+#line 708
remaining -= extent;
+#line 708
if(remaining == 0)
+#line 708
break; /* normal loop exit */
+#line 708
offset += extent;
+#line 708
value += nput;
+#line 708
+#line 708
}
+#line 708
+#line 708
return status;
+#line 708
}
+#line 708
static int
+#line 709
putNCvx_schar_longlong(NC3_INFO* ncp, const NC_var *varp,
+#line 709
const size_t *start, size_t nelems, const longlong *value)
+#line 709
{
+#line 709
off_t offset = NC_varoffset(ncp, varp, start);
+#line 709
size_t remaining = varp->xsz * nelems;
+#line 709
int status = NC_NOERR;
+#line 709
void *xp;
+#line 709
+#line 709
if(nelems == 0)
+#line 709
return NC_NOERR;
+#line 709
+#line 709
assert(value != NULL);
+#line 709
+#line 709
for(;;)
+#line 709
{
+#line 709
size_t extent = MIN(remaining, ncp->chunk);
+#line 709
size_t nput = ncx_howmany(varp->type, extent);
+#line 709
+#line 709
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 709
RGN_WRITE, &xp);
+#line 709
if(lstatus != NC_NOERR)
+#line 709
return lstatus;
+#line 709
+#line 709
lstatus = ncx_putn_schar_longlong(&xp, nput, value);
+#line 709
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 709
{
+#line 709
/* not fatal to the loop */
+#line 709
status = lstatus;
+#line 709
}
+#line 709
+#line 709
(void) ncio_rel(ncp->nciop, offset,
+#line 709
RGN_MODIFIED);
+#line 709
+#line 709
remaining -= extent;
+#line 709
if(remaining == 0)
+#line 709
break; /* normal loop exit */
+#line 709
offset += extent;
+#line 709
value += nput;
+#line 709
+#line 709
}
+#line 709
+#line 709
return status;
+#line 709
}
+#line 709
static int
+#line 711
putNCvx_short_schar(NC3_INFO* ncp, const NC_var *varp,
+#line 711
const size_t *start, size_t nelems, const schar *value)
+#line 711
{
+#line 711
off_t offset = NC_varoffset(ncp, varp, start);
+#line 711
size_t remaining = varp->xsz * nelems;
+#line 711
int status = NC_NOERR;
+#line 711
void *xp;
+#line 711
+#line 711
if(nelems == 0)
+#line 711
return NC_NOERR;
+#line 711
+#line 711
assert(value != NULL);
+#line 711
+#line 711
for(;;)
+#line 711
{
+#line 711
size_t extent = MIN(remaining, ncp->chunk);
+#line 711
size_t nput = ncx_howmany(varp->type, extent);
+#line 711
+#line 711
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 711
RGN_WRITE, &xp);
+#line 711
if(lstatus != NC_NOERR)
+#line 711
return lstatus;
+#line 711
+#line 711
lstatus = ncx_putn_short_schar(&xp, nput, value);
+#line 711
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 711
{
+#line 711
/* not fatal to the loop */
+#line 711
status = lstatus;
+#line 711
}
+#line 711
+#line 711
(void) ncio_rel(ncp->nciop, offset,
+#line 711
RGN_MODIFIED);
+#line 711
+#line 711
remaining -= extent;
+#line 711
if(remaining == 0)
+#line 711
break; /* normal loop exit */
+#line 711
offset += extent;
+#line 711
value += nput;
+#line 711
+#line 711
}
+#line 711
+#line 711
return status;
+#line 711
}
+#line 711
static int
+#line 712
putNCvx_short_uchar(NC3_INFO* ncp, const NC_var *varp,
+#line 712
const size_t *start, size_t nelems, const uchar *value)
+#line 712
{
+#line 712
off_t offset = NC_varoffset(ncp, varp, start);
+#line 712
size_t remaining = varp->xsz * nelems;
+#line 712
int status = NC_NOERR;
+#line 712
void *xp;
+#line 712
+#line 712
if(nelems == 0)
+#line 712
return NC_NOERR;
+#line 712
+#line 712
assert(value != NULL);
+#line 712
+#line 712
for(;;)
+#line 712
{
+#line 712
size_t extent = MIN(remaining, ncp->chunk);
+#line 712
size_t nput = ncx_howmany(varp->type, extent);
+#line 712
+#line 712
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 712
RGN_WRITE, &xp);
+#line 712
if(lstatus != NC_NOERR)
+#line 712
return lstatus;
+#line 712
+#line 712
lstatus = ncx_putn_short_uchar(&xp, nput, value);
+#line 712
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 712
{
+#line 712
/* not fatal to the loop */
+#line 712
status = lstatus;
+#line 712
}
+#line 712
+#line 712
(void) ncio_rel(ncp->nciop, offset,
+#line 712
RGN_MODIFIED);
+#line 712
+#line 712
remaining -= extent;
+#line 712
if(remaining == 0)
+#line 712
break; /* normal loop exit */
+#line 712
offset += extent;
+#line 712
value += nput;
+#line 712
+#line 712
}
+#line 712
+#line 712
return status;
+#line 712
}
+#line 712
static int
+#line 713
putNCvx_short_short(NC3_INFO* ncp, const NC_var *varp,
+#line 713
const size_t *start, size_t nelems, const short *value)
+#line 713
{
+#line 713
off_t offset = NC_varoffset(ncp, varp, start);
+#line 713
size_t remaining = varp->xsz * nelems;
+#line 713
int status = NC_NOERR;
+#line 713
void *xp;
+#line 713
+#line 713
if(nelems == 0)
+#line 713
return NC_NOERR;
+#line 713
+#line 713
assert(value != NULL);
+#line 713
+#line 713
for(;;)
+#line 713
{
+#line 713
size_t extent = MIN(remaining, ncp->chunk);
+#line 713
size_t nput = ncx_howmany(varp->type, extent);
+#line 713
+#line 713
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 713
RGN_WRITE, &xp);
+#line 713
if(lstatus != NC_NOERR)
+#line 713
return lstatus;
+#line 713
+#line 713
lstatus = ncx_putn_short_short(&xp, nput, value);
+#line 713
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 713
{
+#line 713
/* not fatal to the loop */
+#line 713
status = lstatus;
+#line 713
}
+#line 713
+#line 713
(void) ncio_rel(ncp->nciop, offset,
+#line 713
RGN_MODIFIED);
+#line 713
+#line 713
remaining -= extent;
+#line 713
if(remaining == 0)
+#line 713
break; /* normal loop exit */
+#line 713
offset += extent;
+#line 713
value += nput;
+#line 713
+#line 713
}
+#line 713
+#line 713
return status;
+#line 713
}
+#line 713
static int
+#line 714
putNCvx_short_int(NC3_INFO* ncp, const NC_var *varp,
+#line 714
const size_t *start, size_t nelems, const int *value)
+#line 714
{
+#line 714
off_t offset = NC_varoffset(ncp, varp, start);
+#line 714
size_t remaining = varp->xsz * nelems;
+#line 714
int status = NC_NOERR;
+#line 714
void *xp;
+#line 714
+#line 714
if(nelems == 0)
+#line 714
return NC_NOERR;
+#line 714
+#line 714
assert(value != NULL);
+#line 714
+#line 714
for(;;)
+#line 714
{
+#line 714
size_t extent = MIN(remaining, ncp->chunk);
+#line 714
size_t nput = ncx_howmany(varp->type, extent);
+#line 714
+#line 714
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 714
RGN_WRITE, &xp);
+#line 714
if(lstatus != NC_NOERR)
+#line 714
return lstatus;
+#line 714
+#line 714
lstatus = ncx_putn_short_int(&xp, nput, value);
+#line 714
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 714
{
+#line 714
/* not fatal to the loop */
+#line 714
status = lstatus;
+#line 714
}
+#line 714
+#line 714
(void) ncio_rel(ncp->nciop, offset,
+#line 714
RGN_MODIFIED);
+#line 714
+#line 714
remaining -= extent;
+#line 714
if(remaining == 0)
+#line 714
break; /* normal loop exit */
+#line 714
offset += extent;
+#line 714
value += nput;
+#line 714
+#line 714
}
+#line 714
+#line 714
return status;
+#line 714
}
+#line 714
static int
+#line 715
putNCvx_short_float(NC3_INFO* ncp, const NC_var *varp,
+#line 715
const size_t *start, size_t nelems, const float *value)
+#line 715
{
+#line 715
off_t offset = NC_varoffset(ncp, varp, start);
+#line 715
size_t remaining = varp->xsz * nelems;
+#line 715
int status = NC_NOERR;
+#line 715
void *xp;
+#line 715
+#line 715
if(nelems == 0)
+#line 715
return NC_NOERR;
+#line 715
+#line 715
assert(value != NULL);
+#line 715
+#line 715
for(;;)
+#line 715
{
+#line 715
size_t extent = MIN(remaining, ncp->chunk);
+#line 715
size_t nput = ncx_howmany(varp->type, extent);
+#line 715
+#line 715
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 715
RGN_WRITE, &xp);
+#line 715
if(lstatus != NC_NOERR)
+#line 715
return lstatus;
+#line 715
+#line 715
lstatus = ncx_putn_short_float(&xp, nput, value);
+#line 715
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 715
{
+#line 715
/* not fatal to the loop */
+#line 715
status = lstatus;
+#line 715
}
+#line 715
+#line 715
(void) ncio_rel(ncp->nciop, offset,
+#line 715
RGN_MODIFIED);
+#line 715
+#line 715
remaining -= extent;
+#line 715
if(remaining == 0)
+#line 715
break; /* normal loop exit */
+#line 715
offset += extent;
+#line 715
value += nput;
+#line 715
+#line 715
}
+#line 715
+#line 715
return status;
+#line 715
}
+#line 715
static int
+#line 716
putNCvx_short_double(NC3_INFO* ncp, const NC_var *varp,
+#line 716
const size_t *start, size_t nelems, const double *value)
+#line 716
{
+#line 716
off_t offset = NC_varoffset(ncp, varp, start);
+#line 716
size_t remaining = varp->xsz * nelems;
+#line 716
int status = NC_NOERR;
+#line 716
void *xp;
+#line 716
+#line 716
if(nelems == 0)
+#line 716
return NC_NOERR;
+#line 716
+#line 716
assert(value != NULL);
+#line 716
+#line 716
for(;;)
+#line 716
{
+#line 716
size_t extent = MIN(remaining, ncp->chunk);
+#line 716
size_t nput = ncx_howmany(varp->type, extent);
+#line 716
+#line 716
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 716
RGN_WRITE, &xp);
+#line 716
if(lstatus != NC_NOERR)
+#line 716
return lstatus;
+#line 716
+#line 716
lstatus = ncx_putn_short_double(&xp, nput, value);
+#line 716
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 716
{
+#line 716
/* not fatal to the loop */
+#line 716
status = lstatus;
+#line 716
}
+#line 716
+#line 716
(void) ncio_rel(ncp->nciop, offset,
+#line 716
RGN_MODIFIED);
+#line 716
+#line 716
remaining -= extent;
+#line 716
if(remaining == 0)
+#line 716
break; /* normal loop exit */
+#line 716
offset += extent;
+#line 716
value += nput;
+#line 716
+#line 716
}
+#line 716
+#line 716
return status;
+#line 716
}
+#line 716
static int
+#line 717
putNCvx_short_longlong(NC3_INFO* ncp, const NC_var *varp,
+#line 717
const size_t *start, size_t nelems, const longlong *value)
+#line 717
{
+#line 717
off_t offset = NC_varoffset(ncp, varp, start);
+#line 717
size_t remaining = varp->xsz * nelems;
+#line 717
int status = NC_NOERR;
+#line 717
void *xp;
+#line 717
+#line 717
if(nelems == 0)
+#line 717
return NC_NOERR;
+#line 717
+#line 717
assert(value != NULL);
+#line 717
+#line 717
for(;;)
+#line 717
{
+#line 717
size_t extent = MIN(remaining, ncp->chunk);
+#line 717
size_t nput = ncx_howmany(varp->type, extent);
+#line 717
+#line 717
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 717
RGN_WRITE, &xp);
+#line 717
if(lstatus != NC_NOERR)
+#line 717
return lstatus;
+#line 717
+#line 717
lstatus = ncx_putn_short_longlong(&xp, nput, value);
+#line 717
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 717
{
+#line 717
/* not fatal to the loop */
+#line 717
status = lstatus;
+#line 717
}
+#line 717
+#line 717
(void) ncio_rel(ncp->nciop, offset,
+#line 717
RGN_MODIFIED);
+#line 717
+#line 717
remaining -= extent;
+#line 717
if(remaining == 0)
+#line 717
break; /* normal loop exit */
+#line 717
offset += extent;
+#line 717
value += nput;
+#line 717
+#line 717
}
+#line 717
+#line 717
return status;
+#line 717
}
+#line 717
static int
+#line 719
putNCvx_int_schar(NC3_INFO* ncp, const NC_var *varp,
+#line 719
const size_t *start, size_t nelems, const schar *value)
+#line 719
{
+#line 719
off_t offset = NC_varoffset(ncp, varp, start);
+#line 719
size_t remaining = varp->xsz * nelems;
+#line 719
int status = NC_NOERR;
+#line 719
void *xp;
+#line 719
+#line 719
if(nelems == 0)
+#line 719
return NC_NOERR;
+#line 719
+#line 719
assert(value != NULL);
+#line 719
+#line 719
for(;;)
+#line 719
{
+#line 719
size_t extent = MIN(remaining, ncp->chunk);
+#line 719
size_t nput = ncx_howmany(varp->type, extent);
+#line 719
+#line 719
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 719
RGN_WRITE, &xp);
+#line 719
if(lstatus != NC_NOERR)
+#line 719
return lstatus;
+#line 719
+#line 719
lstatus = ncx_putn_int_schar(&xp, nput, value);
+#line 719
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 719
{
+#line 719
/* not fatal to the loop */
+#line 719
status = lstatus;
+#line 719
}
+#line 719
+#line 719
(void) ncio_rel(ncp->nciop, offset,
+#line 719
RGN_MODIFIED);
+#line 719
+#line 719
remaining -= extent;
+#line 719
if(remaining == 0)
+#line 719
break; /* normal loop exit */
+#line 719
offset += extent;
+#line 719
value += nput;
+#line 719
+#line 719
}
+#line 719
+#line 719
return status;
+#line 719
}
+#line 719
static int
+#line 720
putNCvx_int_uchar(NC3_INFO* ncp, const NC_var *varp,
+#line 720
const size_t *start, size_t nelems, const uchar *value)
+#line 720
{
+#line 720
off_t offset = NC_varoffset(ncp, varp, start);
+#line 720
size_t remaining = varp->xsz * nelems;
+#line 720
int status = NC_NOERR;
+#line 720
void *xp;
+#line 720
+#line 720
if(nelems == 0)
+#line 720
return NC_NOERR;
+#line 720
+#line 720
assert(value != NULL);
+#line 720
+#line 720
for(;;)
+#line 720
{
+#line 720
size_t extent = MIN(remaining, ncp->chunk);
+#line 720
size_t nput = ncx_howmany(varp->type, extent);
+#line 720
+#line 720
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 720
RGN_WRITE, &xp);
+#line 720
if(lstatus != NC_NOERR)
+#line 720
return lstatus;
+#line 720
+#line 720
lstatus = ncx_putn_int_uchar(&xp, nput, value);
+#line 720
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 720
{
+#line 720
/* not fatal to the loop */
+#line 720
status = lstatus;
+#line 720
}
+#line 720
+#line 720
(void) ncio_rel(ncp->nciop, offset,
+#line 720
RGN_MODIFIED);
+#line 720
+#line 720
remaining -= extent;
+#line 720
if(remaining == 0)
+#line 720
break; /* normal loop exit */
+#line 720
offset += extent;
+#line 720
value += nput;
+#line 720
+#line 720
}
+#line 720
+#line 720
return status;
+#line 720
}
+#line 720
static int
+#line 721
putNCvx_int_short(NC3_INFO* ncp, const NC_var *varp,
+#line 721
const size_t *start, size_t nelems, const short *value)
+#line 721
{
+#line 721
off_t offset = NC_varoffset(ncp, varp, start);
+#line 721
size_t remaining = varp->xsz * nelems;
+#line 721
int status = NC_NOERR;
+#line 721
void *xp;
+#line 721
+#line 721
if(nelems == 0)
+#line 721
return NC_NOERR;
+#line 721
+#line 721
assert(value != NULL);
+#line 721
+#line 721
for(;;)
+#line 721
{
+#line 721
size_t extent = MIN(remaining, ncp->chunk);
+#line 721
size_t nput = ncx_howmany(varp->type, extent);
+#line 721
+#line 721
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 721
RGN_WRITE, &xp);
+#line 721
if(lstatus != NC_NOERR)
+#line 721
return lstatus;
+#line 721
+#line 721
lstatus = ncx_putn_int_short(&xp, nput, value);
+#line 721
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 721
{
+#line 721
/* not fatal to the loop */
+#line 721
status = lstatus;
+#line 721
}
+#line 721
+#line 721
(void) ncio_rel(ncp->nciop, offset,
+#line 721
RGN_MODIFIED);
+#line 721
+#line 721
remaining -= extent;
+#line 721
if(remaining == 0)
+#line 721
break; /* normal loop exit */
+#line 721
offset += extent;
+#line 721
value += nput;
+#line 721
+#line 721
}
+#line 721
+#line 721
return status;
+#line 721
}
+#line 721
static int
+#line 722
putNCvx_int_int(NC3_INFO* ncp, const NC_var *varp,
+#line 722
const size_t *start, size_t nelems, const int *value)
+#line 722
{
+#line 722
off_t offset = NC_varoffset(ncp, varp, start);
+#line 722
size_t remaining = varp->xsz * nelems;
+#line 722
int status = NC_NOERR;
+#line 722
void *xp;
+#line 722
+#line 722
if(nelems == 0)
+#line 722
return NC_NOERR;
+#line 722
+#line 722
assert(value != NULL);
+#line 722
+#line 722
for(;;)
+#line 722
{
+#line 722
size_t extent = MIN(remaining, ncp->chunk);
+#line 722
size_t nput = ncx_howmany(varp->type, extent);
+#line 722
+#line 722
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 722
RGN_WRITE, &xp);
+#line 722
if(lstatus != NC_NOERR)
+#line 722
return lstatus;
+#line 722
+#line 722
lstatus = ncx_putn_int_int(&xp, nput, value);
+#line 722
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 722
{
+#line 722
/* not fatal to the loop */
+#line 722
status = lstatus;
+#line 722
}
+#line 722
+#line 722
(void) ncio_rel(ncp->nciop, offset,
+#line 722
RGN_MODIFIED);
+#line 722
+#line 722
remaining -= extent;
+#line 722
if(remaining == 0)
+#line 722
break; /* normal loop exit */
+#line 722
offset += extent;
+#line 722
value += nput;
+#line 722
+#line 722
}
+#line 722
+#line 722
return status;
+#line 722
}
+#line 722
static int
+#line 723
putNCvx_int_float(NC3_INFO* ncp, const NC_var *varp,
+#line 723
const size_t *start, size_t nelems, const float *value)
+#line 723
{
+#line 723
off_t offset = NC_varoffset(ncp, varp, start);
+#line 723
size_t remaining = varp->xsz * nelems;
+#line 723
int status = NC_NOERR;
+#line 723
void *xp;
+#line 723
+#line 723
if(nelems == 0)
+#line 723
return NC_NOERR;
+#line 723
+#line 723
assert(value != NULL);
+#line 723
+#line 723
for(;;)
+#line 723
{
+#line 723
size_t extent = MIN(remaining, ncp->chunk);
+#line 723
size_t nput = ncx_howmany(varp->type, extent);
+#line 723
+#line 723
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 723
RGN_WRITE, &xp);
+#line 723
if(lstatus != NC_NOERR)
+#line 723
return lstatus;
+#line 723
+#line 723
lstatus = ncx_putn_int_float(&xp, nput, value);
+#line 723
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 723
{
+#line 723
/* not fatal to the loop */
+#line 723
status = lstatus;
+#line 723
}
+#line 723
+#line 723
(void) ncio_rel(ncp->nciop, offset,
+#line 723
RGN_MODIFIED);
+#line 723
+#line 723
remaining -= extent;
+#line 723
if(remaining == 0)
+#line 723
break; /* normal loop exit */
+#line 723
offset += extent;
+#line 723
value += nput;
+#line 723
+#line 723
}
+#line 723
+#line 723
return status;
+#line 723
}
+#line 723
static int
+#line 724
putNCvx_int_double(NC3_INFO* ncp, const NC_var *varp,
+#line 724
const size_t *start, size_t nelems, const double *value)
+#line 724
{
+#line 724
off_t offset = NC_varoffset(ncp, varp, start);
+#line 724
size_t remaining = varp->xsz * nelems;
+#line 724
int status = NC_NOERR;
+#line 724
void *xp;
+#line 724
+#line 724
if(nelems == 0)
+#line 724
return NC_NOERR;
+#line 724
+#line 724
assert(value != NULL);
+#line 724
+#line 724
for(;;)
+#line 724
{
+#line 724
size_t extent = MIN(remaining, ncp->chunk);
+#line 724
size_t nput = ncx_howmany(varp->type, extent);
+#line 724
+#line 724
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 724
RGN_WRITE, &xp);
+#line 724
if(lstatus != NC_NOERR)
+#line 724
return lstatus;
+#line 724
+#line 724
lstatus = ncx_putn_int_double(&xp, nput, value);
+#line 724
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 724
{
+#line 724
/* not fatal to the loop */
+#line 724
status = lstatus;
+#line 724
}
+#line 724
+#line 724
(void) ncio_rel(ncp->nciop, offset,
+#line 724
RGN_MODIFIED);
+#line 724
+#line 724
remaining -= extent;
+#line 724
if(remaining == 0)
+#line 724
break; /* normal loop exit */
+#line 724
offset += extent;
+#line 724
value += nput;
+#line 724
+#line 724
}
+#line 724
+#line 724
return status;
+#line 724
}
+#line 724
static int
+#line 725
putNCvx_int_longlong(NC3_INFO* ncp, const NC_var *varp,
+#line 725
const size_t *start, size_t nelems, const longlong *value)
+#line 725
{
+#line 725
off_t offset = NC_varoffset(ncp, varp, start);
+#line 725
size_t remaining = varp->xsz * nelems;
+#line 725
int status = NC_NOERR;
+#line 725
void *xp;
+#line 725
+#line 725
if(nelems == 0)
+#line 725
return NC_NOERR;
+#line 725
+#line 725
assert(value != NULL);
+#line 725
+#line 725
for(;;)
+#line 725
{
+#line 725
size_t extent = MIN(remaining, ncp->chunk);
+#line 725
size_t nput = ncx_howmany(varp->type, extent);
+#line 725
+#line 725
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 725
RGN_WRITE, &xp);
+#line 725
if(lstatus != NC_NOERR)
+#line 725
return lstatus;
+#line 725
+#line 725
lstatus = ncx_putn_int_longlong(&xp, nput, value);
+#line 725
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 725
{
+#line 725
/* not fatal to the loop */
+#line 725
status = lstatus;
+#line 725
}
+#line 725
+#line 725
(void) ncio_rel(ncp->nciop, offset,
+#line 725
RGN_MODIFIED);
+#line 725
+#line 725
remaining -= extent;
+#line 725
if(remaining == 0)
+#line 725
break; /* normal loop exit */
+#line 725
offset += extent;
+#line 725
value += nput;
+#line 725
+#line 725
}
+#line 725
+#line 725
return status;
+#line 725
}
+#line 725
static int
+#line 727
putNCvx_float_schar(NC3_INFO* ncp, const NC_var *varp,
+#line 727
const size_t *start, size_t nelems, const schar *value)
+#line 727
{
+#line 727
off_t offset = NC_varoffset(ncp, varp, start);
+#line 727
size_t remaining = varp->xsz * nelems;
+#line 727
int status = NC_NOERR;
+#line 727
void *xp;
+#line 727
+#line 727
if(nelems == 0)
+#line 727
return NC_NOERR;
+#line 727
+#line 727
assert(value != NULL);
+#line 727
+#line 727
for(;;)
+#line 727
{
+#line 727
size_t extent = MIN(remaining, ncp->chunk);
+#line 727
size_t nput = ncx_howmany(varp->type, extent);
+#line 727
+#line 727
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 727
RGN_WRITE, &xp);
+#line 727
if(lstatus != NC_NOERR)
+#line 727
return lstatus;
+#line 727
+#line 727
lstatus = ncx_putn_float_schar(&xp, nput, value);
+#line 727
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 727
{
+#line 727
/* not fatal to the loop */
+#line 727
status = lstatus;
+#line 727
}
+#line 727
+#line 727
(void) ncio_rel(ncp->nciop, offset,
+#line 727
RGN_MODIFIED);
+#line 727
+#line 727
remaining -= extent;
+#line 727
if(remaining == 0)
+#line 727
break; /* normal loop exit */
+#line 727
offset += extent;
+#line 727
value += nput;
+#line 727
+#line 727
}
+#line 727
+#line 727
return status;
+#line 727
}
+#line 727
static int
+#line 728
putNCvx_float_uchar(NC3_INFO* ncp, const NC_var *varp,
+#line 728
const size_t *start, size_t nelems, const uchar *value)
+#line 728
{
+#line 728
off_t offset = NC_varoffset(ncp, varp, start);
+#line 728
size_t remaining = varp->xsz * nelems;
+#line 728
int status = NC_NOERR;
+#line 728
void *xp;
+#line 728
+#line 728
if(nelems == 0)
+#line 728
return NC_NOERR;
+#line 728
+#line 728
assert(value != NULL);
+#line 728
+#line 728
for(;;)
+#line 728
{
+#line 728
size_t extent = MIN(remaining, ncp->chunk);
+#line 728
size_t nput = ncx_howmany(varp->type, extent);
+#line 728
+#line 728
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 728
RGN_WRITE, &xp);
+#line 728
if(lstatus != NC_NOERR)
+#line 728
return lstatus;
+#line 728
+#line 728
lstatus = ncx_putn_float_uchar(&xp, nput, value);
+#line 728
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 728
{
+#line 728
/* not fatal to the loop */
+#line 728
status = lstatus;
+#line 728
}
+#line 728
+#line 728
(void) ncio_rel(ncp->nciop, offset,
+#line 728
RGN_MODIFIED);
+#line 728
+#line 728
remaining -= extent;
+#line 728
if(remaining == 0)
+#line 728
break; /* normal loop exit */
+#line 728
offset += extent;
+#line 728
value += nput;
+#line 728
+#line 728
}
+#line 728
+#line 728
return status;
+#line 728
}
+#line 728
static int
+#line 729
putNCvx_float_short(NC3_INFO* ncp, const NC_var *varp,
+#line 729
const size_t *start, size_t nelems, const short *value)
+#line 729
{
+#line 729
off_t offset = NC_varoffset(ncp, varp, start);
+#line 729
size_t remaining = varp->xsz * nelems;
+#line 729
int status = NC_NOERR;
+#line 729
void *xp;
+#line 729
+#line 729
if(nelems == 0)
+#line 729
return NC_NOERR;
+#line 729
+#line 729
assert(value != NULL);
+#line 729
+#line 729
for(;;)
+#line 729
{
+#line 729
size_t extent = MIN(remaining, ncp->chunk);
+#line 729
size_t nput = ncx_howmany(varp->type, extent);
+#line 729
+#line 729
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 729
RGN_WRITE, &xp);
+#line 729
if(lstatus != NC_NOERR)
+#line 729
return lstatus;
+#line 729
+#line 729
lstatus = ncx_putn_float_short(&xp, nput, value);
+#line 729
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 729
{
+#line 729
/* not fatal to the loop */
+#line 729
status = lstatus;
+#line 729
}
+#line 729
+#line 729
(void) ncio_rel(ncp->nciop, offset,
+#line 729
RGN_MODIFIED);
+#line 729
+#line 729
remaining -= extent;
+#line 729
if(remaining == 0)
+#line 729
break; /* normal loop exit */
+#line 729
offset += extent;
+#line 729
value += nput;
+#line 729
+#line 729
}
+#line 729
+#line 729
return status;
+#line 729
}
+#line 729
static int
+#line 730
putNCvx_float_int(NC3_INFO* ncp, const NC_var *varp,
+#line 730
const size_t *start, size_t nelems, const int *value)
+#line 730
{
+#line 730
off_t offset = NC_varoffset(ncp, varp, start);
+#line 730
size_t remaining = varp->xsz * nelems;
+#line 730
int status = NC_NOERR;
+#line 730
void *xp;
+#line 730
+#line 730
if(nelems == 0)
+#line 730
return NC_NOERR;
+#line 730
+#line 730
assert(value != NULL);
+#line 730
+#line 730
for(;;)
+#line 730
{
+#line 730
size_t extent = MIN(remaining, ncp->chunk);
+#line 730
size_t nput = ncx_howmany(varp->type, extent);
+#line 730
+#line 730
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 730
RGN_WRITE, &xp);
+#line 730
if(lstatus != NC_NOERR)
+#line 730
return lstatus;
+#line 730
+#line 730
lstatus = ncx_putn_float_int(&xp, nput, value);
+#line 730
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 730
{
+#line 730
/* not fatal to the loop */
+#line 730
status = lstatus;
+#line 730
}
+#line 730
+#line 730
(void) ncio_rel(ncp->nciop, offset,
+#line 730
RGN_MODIFIED);
+#line 730
+#line 730
remaining -= extent;
+#line 730
if(remaining == 0)
+#line 730
break; /* normal loop exit */
+#line 730
offset += extent;
+#line 730
value += nput;
+#line 730
+#line 730
}
+#line 730
+#line 730
return status;
+#line 730
}
+#line 730
static int
+#line 731
putNCvx_float_float(NC3_INFO* ncp, const NC_var *varp,
+#line 731
const size_t *start, size_t nelems, const float *value)
+#line 731
{
+#line 731
off_t offset = NC_varoffset(ncp, varp, start);
+#line 731
size_t remaining = varp->xsz * nelems;
+#line 731
int status = NC_NOERR;
+#line 731
void *xp;
+#line 731
+#line 731
if(nelems == 0)
+#line 731
return NC_NOERR;
+#line 731
+#line 731
assert(value != NULL);
+#line 731
+#line 731
for(;;)
+#line 731
{
+#line 731
size_t extent = MIN(remaining, ncp->chunk);
+#line 731
size_t nput = ncx_howmany(varp->type, extent);
+#line 731
+#line 731
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 731
RGN_WRITE, &xp);
+#line 731
if(lstatus != NC_NOERR)
+#line 731
return lstatus;
+#line 731
+#line 731
lstatus = ncx_putn_float_float(&xp, nput, value);
+#line 731
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 731
{
+#line 731
/* not fatal to the loop */
+#line 731
status = lstatus;
+#line 731
}
+#line 731
+#line 731
(void) ncio_rel(ncp->nciop, offset,
+#line 731
RGN_MODIFIED);
+#line 731
+#line 731
remaining -= extent;
+#line 731
if(remaining == 0)
+#line 731
break; /* normal loop exit */
+#line 731
offset += extent;
+#line 731
value += nput;
+#line 731
+#line 731
}
+#line 731
+#line 731
return status;
+#line 731
}
+#line 731
static int
+#line 732
putNCvx_float_double(NC3_INFO* ncp, const NC_var *varp,
+#line 732
const size_t *start, size_t nelems, const double *value)
+#line 732
{
+#line 732
off_t offset = NC_varoffset(ncp, varp, start);
+#line 732
size_t remaining = varp->xsz * nelems;
+#line 732
int status = NC_NOERR;
+#line 732
void *xp;
+#line 732
+#line 732
if(nelems == 0)
+#line 732
return NC_NOERR;
+#line 732
+#line 732
assert(value != NULL);
+#line 732
+#line 732
for(;;)
+#line 732
{
+#line 732
size_t extent = MIN(remaining, ncp->chunk);
+#line 732
size_t nput = ncx_howmany(varp->type, extent);
+#line 732
+#line 732
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 732
RGN_WRITE, &xp);
+#line 732
if(lstatus != NC_NOERR)
+#line 732
return lstatus;
+#line 732
+#line 732
lstatus = ncx_putn_float_double(&xp, nput, value);
+#line 732
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 732
{
+#line 732
/* not fatal to the loop */
+#line 732
status = lstatus;
+#line 732
}
+#line 732
+#line 732
(void) ncio_rel(ncp->nciop, offset,
+#line 732
RGN_MODIFIED);
+#line 732
+#line 732
remaining -= extent;
+#line 732
if(remaining == 0)
+#line 732
break; /* normal loop exit */
+#line 732
offset += extent;
+#line 732
value += nput;
+#line 732
+#line 732
}
+#line 732
+#line 732
return status;
+#line 732
}
+#line 732
static int
+#line 733
putNCvx_float_longlong(NC3_INFO* ncp, const NC_var *varp,
+#line 733
const size_t *start, size_t nelems, const longlong *value)
+#line 733
{
+#line 733
off_t offset = NC_varoffset(ncp, varp, start);
+#line 733
size_t remaining = varp->xsz * nelems;
+#line 733
int status = NC_NOERR;
+#line 733
void *xp;
+#line 733
+#line 733
if(nelems == 0)
+#line 733
return NC_NOERR;
+#line 733
+#line 733
assert(value != NULL);
+#line 733
+#line 733
for(;;)
+#line 733
{
+#line 733
size_t extent = MIN(remaining, ncp->chunk);
+#line 733
size_t nput = ncx_howmany(varp->type, extent);
+#line 733
+#line 733
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 733
RGN_WRITE, &xp);
+#line 733
if(lstatus != NC_NOERR)
+#line 733
return lstatus;
+#line 733
+#line 733
lstatus = ncx_putn_float_longlong(&xp, nput, value);
+#line 733
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 733
{
+#line 733
/* not fatal to the loop */
+#line 733
status = lstatus;
+#line 733
}
+#line 733
+#line 733
(void) ncio_rel(ncp->nciop, offset,
+#line 733
RGN_MODIFIED);
+#line 733
+#line 733
remaining -= extent;
+#line 733
if(remaining == 0)
+#line 733
break; /* normal loop exit */
+#line 733
offset += extent;
+#line 733
value += nput;
+#line 733
+#line 733
}
+#line 733
+#line 733
return status;
+#line 733
}
+#line 733
static int
+#line 735
putNCvx_double_schar(NC3_INFO* ncp, const NC_var *varp,
+#line 735
const size_t *start, size_t nelems, const schar *value)
+#line 735
{
+#line 735
off_t offset = NC_varoffset(ncp, varp, start);
+#line 735
size_t remaining = varp->xsz * nelems;
+#line 735
int status = NC_NOERR;
+#line 735
void *xp;
+#line 735
+#line 735
if(nelems == 0)
+#line 735
return NC_NOERR;
+#line 735
+#line 735
assert(value != NULL);
+#line 735
+#line 735
for(;;)
+#line 735
{
+#line 735
size_t extent = MIN(remaining, ncp->chunk);
+#line 735
size_t nput = ncx_howmany(varp->type, extent);
+#line 735
+#line 735
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 735
RGN_WRITE, &xp);
+#line 735
if(lstatus != NC_NOERR)
+#line 735
return lstatus;
+#line 735
+#line 735
lstatus = ncx_putn_double_schar(&xp, nput, value);
+#line 735
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 735
{
+#line 735
/* not fatal to the loop */
+#line 735
status = lstatus;
+#line 735
}
+#line 735
+#line 735
(void) ncio_rel(ncp->nciop, offset,
+#line 735
RGN_MODIFIED);
+#line 735
+#line 735
remaining -= extent;
+#line 735
if(remaining == 0)
+#line 735
break; /* normal loop exit */
+#line 735
offset += extent;
+#line 735
value += nput;
+#line 735
+#line 735
}
+#line 735
+#line 735
return status;
+#line 735
}
+#line 735
static int
+#line 736
putNCvx_double_uchar(NC3_INFO* ncp, const NC_var *varp,
+#line 736
const size_t *start, size_t nelems, const uchar *value)
+#line 736
{
+#line 736
off_t offset = NC_varoffset(ncp, varp, start);
+#line 736
size_t remaining = varp->xsz * nelems;
+#line 736
int status = NC_NOERR;
+#line 736
void *xp;
+#line 736
+#line 736
if(nelems == 0)
+#line 736
return NC_NOERR;
+#line 736
+#line 736
assert(value != NULL);
+#line 736
+#line 736
for(;;)
+#line 736
{
+#line 736
size_t extent = MIN(remaining, ncp->chunk);
+#line 736
size_t nput = ncx_howmany(varp->type, extent);
+#line 736
+#line 736
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 736
RGN_WRITE, &xp);
+#line 736
if(lstatus != NC_NOERR)
+#line 736
return lstatus;
+#line 736
+#line 736
lstatus = ncx_putn_double_uchar(&xp, nput, value);
+#line 736
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 736
{
+#line 736
/* not fatal to the loop */
+#line 736
status = lstatus;
+#line 736
}
+#line 736
+#line 736
(void) ncio_rel(ncp->nciop, offset,
+#line 736
RGN_MODIFIED);
+#line 736
+#line 736
remaining -= extent;
+#line 736
if(remaining == 0)
+#line 736
break; /* normal loop exit */
+#line 736
offset += extent;
+#line 736
value += nput;
+#line 736
+#line 736
}
+#line 736
+#line 736
return status;
+#line 736
}
+#line 736
static int
+#line 737
putNCvx_double_short(NC3_INFO* ncp, const NC_var *varp,
+#line 737
const size_t *start, size_t nelems, const short *value)
+#line 737
{
+#line 737
off_t offset = NC_varoffset(ncp, varp, start);
+#line 737
size_t remaining = varp->xsz * nelems;
+#line 737
int status = NC_NOERR;
+#line 737
void *xp;
+#line 737
+#line 737
if(nelems == 0)
+#line 737
return NC_NOERR;
+#line 737
+#line 737
assert(value != NULL);
+#line 737
+#line 737
for(;;)
+#line 737
{
+#line 737
size_t extent = MIN(remaining, ncp->chunk);
+#line 737
size_t nput = ncx_howmany(varp->type, extent);
+#line 737
+#line 737
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 737
RGN_WRITE, &xp);
+#line 737
if(lstatus != NC_NOERR)
+#line 737
return lstatus;
+#line 737
+#line 737
lstatus = ncx_putn_double_short(&xp, nput, value);
+#line 737
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 737
{
+#line 737
/* not fatal to the loop */
+#line 737
status = lstatus;
+#line 737
}
+#line 737
+#line 737
(void) ncio_rel(ncp->nciop, offset,
+#line 737
RGN_MODIFIED);
+#line 737
+#line 737
remaining -= extent;
+#line 737
if(remaining == 0)
+#line 737
break; /* normal loop exit */
+#line 737
offset += extent;
+#line 737
value += nput;
+#line 737
+#line 737
}
+#line 737
+#line 737
return status;
+#line 737
}
+#line 737
static int
+#line 738
putNCvx_double_int(NC3_INFO* ncp, const NC_var *varp,
+#line 738
const size_t *start, size_t nelems, const int *value)
+#line 738
{
+#line 738
off_t offset = NC_varoffset(ncp, varp, start);
+#line 738
size_t remaining = varp->xsz * nelems;
+#line 738
int status = NC_NOERR;
+#line 738
void *xp;
+#line 738
+#line 738
if(nelems == 0)
+#line 738
return NC_NOERR;
+#line 738
+#line 738
assert(value != NULL);
+#line 738
+#line 738
for(;;)
+#line 738
{
+#line 738
size_t extent = MIN(remaining, ncp->chunk);
+#line 738
size_t nput = ncx_howmany(varp->type, extent);
+#line 738
+#line 738
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 738
RGN_WRITE, &xp);
+#line 738
if(lstatus != NC_NOERR)
+#line 738
return lstatus;
+#line 738
+#line 738
lstatus = ncx_putn_double_int(&xp, nput, value);
+#line 738
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 738
{
+#line 738
/* not fatal to the loop */
+#line 738
status = lstatus;
+#line 738
}
+#line 738
+#line 738
(void) ncio_rel(ncp->nciop, offset,
+#line 738
RGN_MODIFIED);
+#line 738
+#line 738
remaining -= extent;
+#line 738
if(remaining == 0)
+#line 738
break; /* normal loop exit */
+#line 738
offset += extent;
+#line 738
value += nput;
+#line 738
+#line 738
}
+#line 738
+#line 738
return status;
+#line 738
}
+#line 738
static int
+#line 739
putNCvx_double_float(NC3_INFO* ncp, const NC_var *varp,
+#line 739
const size_t *start, size_t nelems, const float *value)
+#line 739
{
+#line 739
off_t offset = NC_varoffset(ncp, varp, start);
+#line 739
size_t remaining = varp->xsz * nelems;
+#line 739
int status = NC_NOERR;
+#line 739
void *xp;
+#line 739
+#line 739
if(nelems == 0)
+#line 739
return NC_NOERR;
+#line 739
+#line 739
assert(value != NULL);
+#line 739
+#line 739
for(;;)
+#line 739
{
+#line 739
size_t extent = MIN(remaining, ncp->chunk);
+#line 739
size_t nput = ncx_howmany(varp->type, extent);
+#line 739
+#line 739
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 739
RGN_WRITE, &xp);
+#line 739
if(lstatus != NC_NOERR)
+#line 739
return lstatus;
+#line 739
+#line 739
lstatus = ncx_putn_double_float(&xp, nput, value);
+#line 739
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 739
{
+#line 739
/* not fatal to the loop */
+#line 739
status = lstatus;
+#line 739
}
+#line 739
+#line 739
(void) ncio_rel(ncp->nciop, offset,
+#line 739
RGN_MODIFIED);
+#line 739
+#line 739
remaining -= extent;
+#line 739
if(remaining == 0)
+#line 739
break; /* normal loop exit */
+#line 739
offset += extent;
+#line 739
value += nput;
+#line 739
+#line 739
}
+#line 739
+#line 739
return status;
+#line 739
}
+#line 739
static int
+#line 740
putNCvx_double_double(NC3_INFO* ncp, const NC_var *varp,
+#line 740
const size_t *start, size_t nelems, const double *value)
+#line 740
{
+#line 740
off_t offset = NC_varoffset(ncp, varp, start);
+#line 740
size_t remaining = varp->xsz * nelems;
+#line 740
int status = NC_NOERR;
+#line 740
void *xp;
+#line 740
+#line 740
if(nelems == 0)
+#line 740
return NC_NOERR;
+#line 740
+#line 740
assert(value != NULL);
+#line 740
+#line 740
for(;;)
+#line 740
{
+#line 740
size_t extent = MIN(remaining, ncp->chunk);
+#line 740
size_t nput = ncx_howmany(varp->type, extent);
+#line 740
+#line 740
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 740
RGN_WRITE, &xp);
+#line 740
if(lstatus != NC_NOERR)
+#line 740
return lstatus;
+#line 740
+#line 740
lstatus = ncx_putn_double_double(&xp, nput, value);
+#line 740
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 740
{
+#line 740
/* not fatal to the loop */
+#line 740
status = lstatus;
+#line 740
}
+#line 740
+#line 740
(void) ncio_rel(ncp->nciop, offset,
+#line 740
RGN_MODIFIED);
+#line 740
+#line 740
remaining -= extent;
+#line 740
if(remaining == 0)
+#line 740
break; /* normal loop exit */
+#line 740
offset += extent;
+#line 740
value += nput;
+#line 740
+#line 740
}
+#line 740
+#line 740
return status;
+#line 740
}
+#line 740
static int
+#line 741
putNCvx_double_longlong(NC3_INFO* ncp, const NC_var *varp,
+#line 741
const size_t *start, size_t nelems, const longlong *value)
+#line 741
{
+#line 741
off_t offset = NC_varoffset(ncp, varp, start);
+#line 741
size_t remaining = varp->xsz * nelems;
+#line 741
int status = NC_NOERR;
+#line 741
void *xp;
+#line 741
+#line 741
if(nelems == 0)
+#line 741
return NC_NOERR;
+#line 741
+#line 741
assert(value != NULL);
+#line 741
+#line 741
for(;;)
+#line 741
{
+#line 741
size_t extent = MIN(remaining, ncp->chunk);
+#line 741
size_t nput = ncx_howmany(varp->type, extent);
+#line 741
+#line 741
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 741
RGN_WRITE, &xp);
+#line 741
if(lstatus != NC_NOERR)
+#line 741
return lstatus;
+#line 741
+#line 741
lstatus = ncx_putn_double_longlong(&xp, nput, value);
+#line 741
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 741
{
+#line 741
/* not fatal to the loop */
+#line 741
status = lstatus;
+#line 741
}
+#line 741
+#line 741
(void) ncio_rel(ncp->nciop, offset,
+#line 741
RGN_MODIFIED);
+#line 741
+#line 741
remaining -= extent;
+#line 741
if(remaining == 0)
+#line 741
break; /* normal loop exit */
+#line 741
offset += extent;
+#line 741
value += nput;
+#line 741
+#line 741
}
+#line 741
+#line 741
return status;
+#line 741
}
+#line 741
+#line 744
#ifdef NOTUSED
static int
+#line 745
putNCvx_schar_uint(NC3_INFO* ncp, const NC_var *varp,
+#line 745
const size_t *start, size_t nelems, const uint *value)
+#line 745
{
+#line 745
off_t offset = NC_varoffset(ncp, varp, start);
+#line 745
size_t remaining = varp->xsz * nelems;
+#line 745
int status = NC_NOERR;
+#line 745
void *xp;
+#line 745
+#line 745
if(nelems == 0)
+#line 745
return NC_NOERR;
+#line 745
+#line 745
assert(value != NULL);
+#line 745
+#line 745
for(;;)
+#line 745
{
+#line 745
size_t extent = MIN(remaining, ncp->chunk);
+#line 745
size_t nput = ncx_howmany(varp->type, extent);
+#line 745
+#line 745
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 745
RGN_WRITE, &xp);
+#line 745
if(lstatus != NC_NOERR)
+#line 745
return lstatus;
+#line 745
+#line 745
lstatus = ncx_putn_schar_uint(&xp, nput, value);
+#line 745
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 745
{
+#line 745
/* not fatal to the loop */
+#line 745
status = lstatus;
+#line 745
}
+#line 745
+#line 745
(void) ncio_rel(ncp->nciop, offset,
+#line 745
RGN_MODIFIED);
+#line 745
+#line 745
remaining -= extent;
+#line 745
if(remaining == 0)
+#line 745
break; /* normal loop exit */
+#line 745
offset += extent;
+#line 745
value += nput;
+#line 745
+#line 745
}
+#line 745
+#line 745
return status;
+#line 745
}
+#line 745
static int
+#line 746
putNCvx_schar_ulonglong(NC3_INFO* ncp, const NC_var *varp,
+#line 746
const size_t *start, size_t nelems, const ulonglong *value)
+#line 746
{
+#line 746
off_t offset = NC_varoffset(ncp, varp, start);
+#line 746
size_t remaining = varp->xsz * nelems;
+#line 746
int status = NC_NOERR;
+#line 746
void *xp;
+#line 746
+#line 746
if(nelems == 0)
+#line 746
return NC_NOERR;
+#line 746
+#line 746
assert(value != NULL);
+#line 746
+#line 746
for(;;)
+#line 746
{
+#line 746
size_t extent = MIN(remaining, ncp->chunk);
+#line 746
size_t nput = ncx_howmany(varp->type, extent);
+#line 746
+#line 746
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 746
RGN_WRITE, &xp);
+#line 746
if(lstatus != NC_NOERR)
+#line 746
return lstatus;
+#line 746
+#line 746
lstatus = ncx_putn_schar_ulonglong(&xp, nput, value);
+#line 746
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 746
{
+#line 746
/* not fatal to the loop */
+#line 746
status = lstatus;
+#line 746
}
+#line 746
+#line 746
(void) ncio_rel(ncp->nciop, offset,
+#line 746
RGN_MODIFIED);
+#line 746
+#line 746
remaining -= extent;
+#line 746
if(remaining == 0)
+#line 746
break; /* normal loop exit */
+#line 746
offset += extent;
+#line 746
value += nput;
+#line 746
+#line 746
}
+#line 746
+#line 746
return status;
+#line 746
}
+#line 746
static int
+#line 747
putNCvx_short_uint(NC3_INFO* ncp, const NC_var *varp,
+#line 747
const size_t *start, size_t nelems, const uint *value)
+#line 747
{
+#line 747
off_t offset = NC_varoffset(ncp, varp, start);
+#line 747
size_t remaining = varp->xsz * nelems;
+#line 747
int status = NC_NOERR;
+#line 747
void *xp;
+#line 747
+#line 747
if(nelems == 0)
+#line 747
return NC_NOERR;
+#line 747
+#line 747
assert(value != NULL);
+#line 747
+#line 747
for(;;)
+#line 747
{
+#line 747
size_t extent = MIN(remaining, ncp->chunk);
+#line 747
size_t nput = ncx_howmany(varp->type, extent);
+#line 747
+#line 747
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 747
RGN_WRITE, &xp);
+#line 747
if(lstatus != NC_NOERR)
+#line 747
return lstatus;
+#line 747
+#line 747
lstatus = ncx_putn_short_uint(&xp, nput, value);
+#line 747
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 747
{
+#line 747
/* not fatal to the loop */
+#line 747
status = lstatus;
+#line 747
}
+#line 747
+#line 747
(void) ncio_rel(ncp->nciop, offset,
+#line 747
RGN_MODIFIED);
+#line 747
+#line 747
remaining -= extent;
+#line 747
if(remaining == 0)
+#line 747
break; /* normal loop exit */
+#line 747
offset += extent;
+#line 747
value += nput;
+#line 747
+#line 747
}
+#line 747
+#line 747
return status;
+#line 747
}
+#line 747
static int
+#line 748
putNCvx_short_ulonglong(NC3_INFO* ncp, const NC_var *varp,
+#line 748
const size_t *start, size_t nelems, const ulonglong *value)
+#line 748
{
+#line 748
off_t offset = NC_varoffset(ncp, varp, start);
+#line 748
size_t remaining = varp->xsz * nelems;
+#line 748
int status = NC_NOERR;
+#line 748
void *xp;
+#line 748
+#line 748
if(nelems == 0)
+#line 748
return NC_NOERR;
+#line 748
+#line 748
assert(value != NULL);
+#line 748
+#line 748
for(;;)
+#line 748
{
+#line 748
size_t extent = MIN(remaining, ncp->chunk);
+#line 748
size_t nput = ncx_howmany(varp->type, extent);
+#line 748
+#line 748
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 748
RGN_WRITE, &xp);
+#line 748
if(lstatus != NC_NOERR)
+#line 748
return lstatus;
+#line 748
+#line 748
lstatus = ncx_putn_short_ulonglong(&xp, nput, value);
+#line 748
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 748
{
+#line 748
/* not fatal to the loop */
+#line 748
status = lstatus;
+#line 748
}
+#line 748
+#line 748
(void) ncio_rel(ncp->nciop, offset,
+#line 748
RGN_MODIFIED);
+#line 748
+#line 748
remaining -= extent;
+#line 748
if(remaining == 0)
+#line 748
break; /* normal loop exit */
+#line 748
offset += extent;
+#line 748
value += nput;
+#line 748
+#line 748
}
+#line 748
+#line 748
return status;
+#line 748
}
+#line 748
static int
+#line 749
putNCvx_int_uint(NC3_INFO* ncp, const NC_var *varp,
+#line 749
const size_t *start, size_t nelems, const uint *value)
+#line 749
{
+#line 749
off_t offset = NC_varoffset(ncp, varp, start);
+#line 749
size_t remaining = varp->xsz * nelems;
+#line 749
int status = NC_NOERR;
+#line 749
void *xp;
+#line 749
+#line 749
if(nelems == 0)
+#line 749
return NC_NOERR;
+#line 749
+#line 749
assert(value != NULL);
+#line 749
+#line 749
for(;;)
+#line 749
{
+#line 749
size_t extent = MIN(remaining, ncp->chunk);
+#line 749
size_t nput = ncx_howmany(varp->type, extent);
+#line 749
+#line 749
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 749
RGN_WRITE, &xp);
+#line 749
if(lstatus != NC_NOERR)
+#line 749
return lstatus;
+#line 749
+#line 749
lstatus = ncx_putn_int_uint(&xp, nput, value);
+#line 749
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 749
{
+#line 749
/* not fatal to the loop */
+#line 749
status = lstatus;
+#line 749
}
+#line 749
+#line 749
(void) ncio_rel(ncp->nciop, offset,
+#line 749
RGN_MODIFIED);
+#line 749
+#line 749
remaining -= extent;
+#line 749
if(remaining == 0)
+#line 749
break; /* normal loop exit */
+#line 749
offset += extent;
+#line 749
value += nput;
+#line 749
+#line 749
}
+#line 749
+#line 749
return status;
+#line 749
}
+#line 749
static int
+#line 750
putNCvx_int_ulonglong(NC3_INFO* ncp, const NC_var *varp,
+#line 750
const size_t *start, size_t nelems, const ulonglong *value)
+#line 750
{
+#line 750
off_t offset = NC_varoffset(ncp, varp, start);
+#line 750
size_t remaining = varp->xsz * nelems;
+#line 750
int status = NC_NOERR;
+#line 750
void *xp;
+#line 750
+#line 750
if(nelems == 0)
+#line 750
return NC_NOERR;
+#line 750
+#line 750
assert(value != NULL);
+#line 750
+#line 750
for(;;)
+#line 750
{
+#line 750
size_t extent = MIN(remaining, ncp->chunk);
+#line 750
size_t nput = ncx_howmany(varp->type, extent);
+#line 750
+#line 750
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 750
RGN_WRITE, &xp);
+#line 750
if(lstatus != NC_NOERR)
+#line 750
return lstatus;
+#line 750
+#line 750
lstatus = ncx_putn_int_ulonglong(&xp, nput, value);
+#line 750
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 750
{
+#line 750
/* not fatal to the loop */
+#line 750
status = lstatus;
+#line 750
}
+#line 750
+#line 750
(void) ncio_rel(ncp->nciop, offset,
+#line 750
RGN_MODIFIED);
+#line 750
+#line 750
remaining -= extent;
+#line 750
if(remaining == 0)
+#line 750
break; /* normal loop exit */
+#line 750
offset += extent;
+#line 750
value += nput;
+#line 750
+#line 750
}
+#line 750
+#line 750
return status;
+#line 750
}
+#line 750
static int
+#line 751
putNCvx_float_uint(NC3_INFO* ncp, const NC_var *varp,
+#line 751
const size_t *start, size_t nelems, const uint *value)
+#line 751
{
+#line 751
off_t offset = NC_varoffset(ncp, varp, start);
+#line 751
size_t remaining = varp->xsz * nelems;
+#line 751
int status = NC_NOERR;
+#line 751
void *xp;
+#line 751
+#line 751
if(nelems == 0)
+#line 751
return NC_NOERR;
+#line 751
+#line 751
assert(value != NULL);
+#line 751
+#line 751
for(;;)
+#line 751
{
+#line 751
size_t extent = MIN(remaining, ncp->chunk);
+#line 751
size_t nput = ncx_howmany(varp->type, extent);
+#line 751
+#line 751
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 751
RGN_WRITE, &xp);
+#line 751
if(lstatus != NC_NOERR)
+#line 751
return lstatus;
+#line 751
+#line 751
lstatus = ncx_putn_float_uint(&xp, nput, value);
+#line 751
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 751
{
+#line 751
/* not fatal to the loop */
+#line 751
status = lstatus;
+#line 751
}
+#line 751
+#line 751
(void) ncio_rel(ncp->nciop, offset,
+#line 751
RGN_MODIFIED);
+#line 751
+#line 751
remaining -= extent;
+#line 751
if(remaining == 0)
+#line 751
break; /* normal loop exit */
+#line 751
offset += extent;
+#line 751
value += nput;
+#line 751
+#line 751
}
+#line 751
+#line 751
return status;
+#line 751
}
+#line 751
static int
+#line 752
putNCvx_float_ulonglong(NC3_INFO* ncp, const NC_var *varp,
+#line 752
const size_t *start, size_t nelems, const ulonglong *value)
+#line 752
{
+#line 752
off_t offset = NC_varoffset(ncp, varp, start);
+#line 752
size_t remaining = varp->xsz * nelems;
+#line 752
int status = NC_NOERR;
+#line 752
void *xp;
+#line 752
+#line 752
if(nelems == 0)
+#line 752
return NC_NOERR;
+#line 752
+#line 752
assert(value != NULL);
+#line 752
+#line 752
for(;;)
+#line 752
{
+#line 752
size_t extent = MIN(remaining, ncp->chunk);
+#line 752
size_t nput = ncx_howmany(varp->type, extent);
+#line 752
+#line 752
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 752
RGN_WRITE, &xp);
+#line 752
if(lstatus != NC_NOERR)
+#line 752
return lstatus;
+#line 752
+#line 752
lstatus = ncx_putn_float_ulonglong(&xp, nput, value);
+#line 752
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 752
{
+#line 752
/* not fatal to the loop */
+#line 752
status = lstatus;
+#line 752
}
+#line 752
+#line 752
(void) ncio_rel(ncp->nciop, offset,
+#line 752
RGN_MODIFIED);
+#line 752
+#line 752
remaining -= extent;
+#line 752
if(remaining == 0)
+#line 752
break; /* normal loop exit */
+#line 752
offset += extent;
+#line 752
value += nput;
+#line 752
+#line 752
}
+#line 752
+#line 752
return status;
+#line 752
}
+#line 752
static int
+#line 753
putNCvx_double_uint(NC3_INFO* ncp, const NC_var *varp,
+#line 753
const size_t *start, size_t nelems, const uint *value)
+#line 753
{
+#line 753
off_t offset = NC_varoffset(ncp, varp, start);
+#line 753
size_t remaining = varp->xsz * nelems;
+#line 753
int status = NC_NOERR;
+#line 753
void *xp;
+#line 753
+#line 753
if(nelems == 0)
+#line 753
return NC_NOERR;
+#line 753
+#line 753
assert(value != NULL);
+#line 753
+#line 753
for(;;)
+#line 753
{
+#line 753
size_t extent = MIN(remaining, ncp->chunk);
+#line 753
size_t nput = ncx_howmany(varp->type, extent);
+#line 753
+#line 753
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 753
RGN_WRITE, &xp);
+#line 753
if(lstatus != NC_NOERR)
+#line 753
return lstatus;
+#line 753
+#line 753
lstatus = ncx_putn_double_uint(&xp, nput, value);
+#line 753
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 753
{
+#line 753
/* not fatal to the loop */
+#line 753
status = lstatus;
+#line 753
}
+#line 753
+#line 753
(void) ncio_rel(ncp->nciop, offset,
+#line 753
RGN_MODIFIED);
+#line 753
+#line 753
remaining -= extent;
+#line 753
if(remaining == 0)
+#line 753
break; /* normal loop exit */
+#line 753
offset += extent;
+#line 753
value += nput;
+#line 753
+#line 753
}
+#line 753
+#line 753
return status;
+#line 753
}
+#line 753
static int
+#line 754
putNCvx_double_ulonglong(NC3_INFO* ncp, const NC_var *varp,
+#line 754
const size_t *start, size_t nelems, const ulonglong *value)
+#line 754
{
+#line 754
off_t offset = NC_varoffset(ncp, varp, start);
+#line 754
size_t remaining = varp->xsz * nelems;
+#line 754
int status = NC_NOERR;
+#line 754
void *xp;
+#line 754
+#line 754
if(nelems == 0)
+#line 754
return NC_NOERR;
+#line 754
+#line 754
assert(value != NULL);
+#line 754
+#line 754
for(;;)
+#line 754
{
+#line 754
size_t extent = MIN(remaining, ncp->chunk);
+#line 754
size_t nput = ncx_howmany(varp->type, extent);
+#line 754
+#line 754
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 754
RGN_WRITE, &xp);
+#line 754
if(lstatus != NC_NOERR)
+#line 754
return lstatus;
+#line 754
+#line 754
lstatus = ncx_putn_double_ulonglong(&xp, nput, value);
+#line 754
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 754
{
+#line 754
/* not fatal to the loop */
+#line 754
status = lstatus;
+#line 754
}
+#line 754
+#line 754
(void) ncio_rel(ncp->nciop, offset,
+#line 754
RGN_MODIFIED);
+#line 754
+#line 754
remaining -= extent;
+#line 754
if(remaining == 0)
+#line 754
break; /* normal loop exit */
+#line 754
offset += extent;
+#line 754
value += nput;
+#line 754
+#line 754
}
+#line 754
+#line 754
return status;
+#line 754
}
+#line 754
#endif /*NOTUSED*/
+#line 802
static int
+#line 803
getNCvx_char_char(const NC3_INFO* ncp, const NC_var *varp,
+#line 803
const size_t *start, size_t nelems, char *value)
+#line 803
{
+#line 803
off_t offset = NC_varoffset(ncp, varp, start);
+#line 803
size_t remaining = varp->xsz * nelems;
+#line 803
int status = NC_NOERR;
+#line 803
const void *xp;
+#line 803
+#line 803
if(nelems == 0)
+#line 803
return NC_NOERR;
+#line 803
+#line 803
assert(value != NULL);
+#line 803
+#line 803
for(;;)
+#line 803
{
+#line 803
size_t extent = MIN(remaining, ncp->chunk);
+#line 803
size_t nget = ncx_howmany(varp->type, extent);
+#line 803
+#line 803
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 803
0, (void **)&xp); /* cast away const */
+#line 803
if(lstatus != NC_NOERR)
+#line 803
return lstatus;
+#line 803
+#line 803
lstatus = ncx_getn_char_char(&xp, nget, value);
+#line 803
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 803
status = lstatus;
+#line 803
+#line 803
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 803
+#line 803
remaining -= extent;
+#line 803
if(remaining == 0)
+#line 803
break; /* normal loop exit */
+#line 803
offset += extent;
+#line 803
value += nget;
+#line 803
}
+#line 803
+#line 803
return status;
+#line 803
}
+#line 803
static int
+#line 805
getNCvx_schar_schar(const NC3_INFO* ncp, const NC_var *varp,
+#line 805
const size_t *start, size_t nelems, schar *value)
+#line 805
{
+#line 805
off_t offset = NC_varoffset(ncp, varp, start);
+#line 805
size_t remaining = varp->xsz * nelems;
+#line 805
int status = NC_NOERR;
+#line 805
const void *xp;
+#line 805
+#line 805
if(nelems == 0)
+#line 805
return NC_NOERR;
+#line 805
+#line 805
assert(value != NULL);
+#line 805
+#line 805
for(;;)
+#line 805
{
+#line 805
size_t extent = MIN(remaining, ncp->chunk);
+#line 805
size_t nget = ncx_howmany(varp->type, extent);
+#line 805
+#line 805
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 805
0, (void **)&xp); /* cast away const */
+#line 805
if(lstatus != NC_NOERR)
+#line 805
return lstatus;
+#line 805
+#line 805
lstatus = ncx_getn_schar_schar(&xp, nget, value);
+#line 805
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 805
status = lstatus;
+#line 805
+#line 805
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 805
+#line 805
remaining -= extent;
+#line 805
if(remaining == 0)
+#line 805
break; /* normal loop exit */
+#line 805
offset += extent;
+#line 805
value += nget;
+#line 805
}
+#line 805
+#line 805
return status;
+#line 805
}
+#line 805
static int
+#line 806
getNCvx_schar_short(const NC3_INFO* ncp, const NC_var *varp,
+#line 806
const size_t *start, size_t nelems, short *value)
+#line 806
{
+#line 806
off_t offset = NC_varoffset(ncp, varp, start);
+#line 806
size_t remaining = varp->xsz * nelems;
+#line 806
int status = NC_NOERR;
+#line 806
const void *xp;
+#line 806
+#line 806
if(nelems == 0)
+#line 806
return NC_NOERR;
+#line 806
+#line 806
assert(value != NULL);
+#line 806
+#line 806
for(;;)
+#line 806
{
+#line 806
size_t extent = MIN(remaining, ncp->chunk);
+#line 806
size_t nget = ncx_howmany(varp->type, extent);
+#line 806
+#line 806
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 806
0, (void **)&xp); /* cast away const */
+#line 806
if(lstatus != NC_NOERR)
+#line 806
return lstatus;
+#line 806
+#line 806
lstatus = ncx_getn_schar_short(&xp, nget, value);
+#line 806
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 806
status = lstatus;
+#line 806
+#line 806
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 806
+#line 806
remaining -= extent;
+#line 806
if(remaining == 0)
+#line 806
break; /* normal loop exit */
+#line 806
offset += extent;
+#line 806
value += nget;
+#line 806
}
+#line 806
+#line 806
return status;
+#line 806
}
+#line 806
static int
+#line 807
getNCvx_schar_int(const NC3_INFO* ncp, const NC_var *varp,
+#line 807
const size_t *start, size_t nelems, int *value)
+#line 807
{
+#line 807
off_t offset = NC_varoffset(ncp, varp, start);
+#line 807
size_t remaining = varp->xsz * nelems;
+#line 807
int status = NC_NOERR;
+#line 807
const void *xp;
+#line 807
+#line 807
if(nelems == 0)
+#line 807
return NC_NOERR;
+#line 807
+#line 807
assert(value != NULL);
+#line 807
+#line 807
for(;;)
+#line 807
{
+#line 807
size_t extent = MIN(remaining, ncp->chunk);
+#line 807
size_t nget = ncx_howmany(varp->type, extent);
+#line 807
+#line 807
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 807
0, (void **)&xp); /* cast away const */
+#line 807
if(lstatus != NC_NOERR)
+#line 807
return lstatus;
+#line 807
+#line 807
lstatus = ncx_getn_schar_int(&xp, nget, value);
+#line 807
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 807
status = lstatus;
+#line 807
+#line 807
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 807
+#line 807
remaining -= extent;
+#line 807
if(remaining == 0)
+#line 807
break; /* normal loop exit */
+#line 807
offset += extent;
+#line 807
value += nget;
+#line 807
}
+#line 807
+#line 807
return status;
+#line 807
}
+#line 807
static int
+#line 808
getNCvx_schar_float(const NC3_INFO* ncp, const NC_var *varp,
+#line 808
const size_t *start, size_t nelems, float *value)
+#line 808
{
+#line 808
off_t offset = NC_varoffset(ncp, varp, start);
+#line 808
size_t remaining = varp->xsz * nelems;
+#line 808
int status = NC_NOERR;
+#line 808
const void *xp;
+#line 808
+#line 808
if(nelems == 0)
+#line 808
return NC_NOERR;
+#line 808
+#line 808
assert(value != NULL);
+#line 808
+#line 808
for(;;)
+#line 808
{
+#line 808
size_t extent = MIN(remaining, ncp->chunk);
+#line 808
size_t nget = ncx_howmany(varp->type, extent);
+#line 808
+#line 808
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 808
0, (void **)&xp); /* cast away const */
+#line 808
if(lstatus != NC_NOERR)
+#line 808
return lstatus;
+#line 808
+#line 808
lstatus = ncx_getn_schar_float(&xp, nget, value);
+#line 808
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 808
status = lstatus;
+#line 808
+#line 808
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 808
+#line 808
remaining -= extent;
+#line 808
if(remaining == 0)
+#line 808
break; /* normal loop exit */
+#line 808
offset += extent;
+#line 808
value += nget;
+#line 808
}
+#line 808
+#line 808
return status;
+#line 808
}
+#line 808
static int
+#line 809
getNCvx_schar_double(const NC3_INFO* ncp, const NC_var *varp,
+#line 809
const size_t *start, size_t nelems, double *value)
+#line 809
{
+#line 809
off_t offset = NC_varoffset(ncp, varp, start);
+#line 809
size_t remaining = varp->xsz * nelems;
+#line 809
int status = NC_NOERR;
+#line 809
const void *xp;
+#line 809
+#line 809
if(nelems == 0)
+#line 809
return NC_NOERR;
+#line 809
+#line 809
assert(value != NULL);
+#line 809
+#line 809
for(;;)
+#line 809
{
+#line 809
size_t extent = MIN(remaining, ncp->chunk);
+#line 809
size_t nget = ncx_howmany(varp->type, extent);
+#line 809
+#line 809
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 809
0, (void **)&xp); /* cast away const */
+#line 809
if(lstatus != NC_NOERR)
+#line 809
return lstatus;
+#line 809
+#line 809
lstatus = ncx_getn_schar_double(&xp, nget, value);
+#line 809
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 809
status = lstatus;
+#line 809
+#line 809
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 809
+#line 809
remaining -= extent;
+#line 809
if(remaining == 0)
+#line 809
break; /* normal loop exit */
+#line 809
offset += extent;
+#line 809
value += nget;
+#line 809
}
+#line 809
+#line 809
return status;
+#line 809
}
+#line 809
static int
+#line 810
getNCvx_schar_longlong(const NC3_INFO* ncp, const NC_var *varp,
+#line 810
const size_t *start, size_t nelems, longlong *value)
+#line 810
{
+#line 810
off_t offset = NC_varoffset(ncp, varp, start);
+#line 810
size_t remaining = varp->xsz * nelems;
+#line 810
int status = NC_NOERR;
+#line 810
const void *xp;
+#line 810
+#line 810
if(nelems == 0)
+#line 810
return NC_NOERR;
+#line 810
+#line 810
assert(value != NULL);
+#line 810
+#line 810
for(;;)
+#line 810
{
+#line 810
size_t extent = MIN(remaining, ncp->chunk);
+#line 810
size_t nget = ncx_howmany(varp->type, extent);
+#line 810
+#line 810
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 810
0, (void **)&xp); /* cast away const */
+#line 810
if(lstatus != NC_NOERR)
+#line 810
return lstatus;
+#line 810
+#line 810
lstatus = ncx_getn_schar_longlong(&xp, nget, value);
+#line 810
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 810
status = lstatus;
+#line 810
+#line 810
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 810
+#line 810
remaining -= extent;
+#line 810
if(remaining == 0)
+#line 810
break; /* normal loop exit */
+#line 810
offset += extent;
+#line 810
value += nget;
+#line 810
}
+#line 810
+#line 810
return status;
+#line 810
}
+#line 810
static int
+#line 811
getNCvx_schar_uint(const NC3_INFO* ncp, const NC_var *varp,
+#line 811
const size_t *start, size_t nelems, uint *value)
+#line 811
{
+#line 811
off_t offset = NC_varoffset(ncp, varp, start);
+#line 811
size_t remaining = varp->xsz * nelems;
+#line 811
int status = NC_NOERR;
+#line 811
const void *xp;
+#line 811
+#line 811
if(nelems == 0)
+#line 811
return NC_NOERR;
+#line 811
+#line 811
assert(value != NULL);
+#line 811
+#line 811
for(;;)
+#line 811
{
+#line 811
size_t extent = MIN(remaining, ncp->chunk);
+#line 811
size_t nget = ncx_howmany(varp->type, extent);
+#line 811
+#line 811
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 811
0, (void **)&xp); /* cast away const */
+#line 811
if(lstatus != NC_NOERR)
+#line 811
return lstatus;
+#line 811
+#line 811
lstatus = ncx_getn_schar_uint(&xp, nget, value);
+#line 811
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 811
status = lstatus;
+#line 811
+#line 811
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 811
+#line 811
remaining -= extent;
+#line 811
if(remaining == 0)
+#line 811
break; /* normal loop exit */
+#line 811
offset += extent;
+#line 811
value += nget;
+#line 811
}
+#line 811
+#line 811
return status;
+#line 811
}
+#line 811
static int
+#line 812
getNCvx_schar_ulonglong(const NC3_INFO* ncp, const NC_var *varp,
+#line 812
const size_t *start, size_t nelems, ulonglong *value)
+#line 812
{
+#line 812
off_t offset = NC_varoffset(ncp, varp, start);
+#line 812
size_t remaining = varp->xsz * nelems;
+#line 812
int status = NC_NOERR;
+#line 812
const void *xp;
+#line 812
+#line 812
if(nelems == 0)
+#line 812
return NC_NOERR;
+#line 812
+#line 812
assert(value != NULL);
+#line 812
+#line 812
for(;;)
+#line 812
{
+#line 812
size_t extent = MIN(remaining, ncp->chunk);
+#line 812
size_t nget = ncx_howmany(varp->type, extent);
+#line 812
+#line 812
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 812
0, (void **)&xp); /* cast away const */
+#line 812
if(lstatus != NC_NOERR)
+#line 812
return lstatus;
+#line 812
+#line 812
lstatus = ncx_getn_schar_ulonglong(&xp, nget, value);
+#line 812
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 812
status = lstatus;
+#line 812
+#line 812
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 812
+#line 812
remaining -= extent;
+#line 812
if(remaining == 0)
+#line 812
break; /* normal loop exit */
+#line 812
offset += extent;
+#line 812
value += nget;
+#line 812
}
+#line 812
+#line 812
return status;
+#line 812
}
+#line 812
static int
+#line 814
getNCvx_short_schar(const NC3_INFO* ncp, const NC_var *varp,
+#line 814
const size_t *start, size_t nelems, schar *value)
+#line 814
{
+#line 814
off_t offset = NC_varoffset(ncp, varp, start);
+#line 814
size_t remaining = varp->xsz * nelems;
+#line 814
int status = NC_NOERR;
+#line 814
const void *xp;
+#line 814
+#line 814
if(nelems == 0)
+#line 814
return NC_NOERR;
+#line 814
+#line 814
assert(value != NULL);
+#line 814
+#line 814
for(;;)
+#line 814
{
+#line 814
size_t extent = MIN(remaining, ncp->chunk);
+#line 814
size_t nget = ncx_howmany(varp->type, extent);
+#line 814
+#line 814
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 814
0, (void **)&xp); /* cast away const */
+#line 814
if(lstatus != NC_NOERR)
+#line 814
return lstatus;
+#line 814
+#line 814
lstatus = ncx_getn_short_schar(&xp, nget, value);
+#line 814
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 814
status = lstatus;
+#line 814
+#line 814
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 814
+#line 814
remaining -= extent;
+#line 814
if(remaining == 0)
+#line 814
break; /* normal loop exit */
+#line 814
offset += extent;
+#line 814
value += nget;
+#line 814
}
+#line 814
+#line 814
return status;
+#line 814
}
+#line 814
static int
+#line 815
getNCvx_short_uchar(const NC3_INFO* ncp, const NC_var *varp,
+#line 815
const size_t *start, size_t nelems, uchar *value)
+#line 815
{
+#line 815
off_t offset = NC_varoffset(ncp, varp, start);
+#line 815
size_t remaining = varp->xsz * nelems;
+#line 815
int status = NC_NOERR;
+#line 815
const void *xp;
+#line 815
+#line 815
if(nelems == 0)
+#line 815
return NC_NOERR;
+#line 815
+#line 815
assert(value != NULL);
+#line 815
+#line 815
for(;;)
+#line 815
{
+#line 815
size_t extent = MIN(remaining, ncp->chunk);
+#line 815
size_t nget = ncx_howmany(varp->type, extent);
+#line 815
+#line 815
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 815
0, (void **)&xp); /* cast away const */
+#line 815
if(lstatus != NC_NOERR)
+#line 815
return lstatus;
+#line 815
+#line 815
lstatus = ncx_getn_short_uchar(&xp, nget, value);
+#line 815
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 815
status = lstatus;
+#line 815
+#line 815
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 815
+#line 815
remaining -= extent;
+#line 815
if(remaining == 0)
+#line 815
break; /* normal loop exit */
+#line 815
offset += extent;
+#line 815
value += nget;
+#line 815
}
+#line 815
+#line 815
return status;
+#line 815
}
+#line 815
static int
+#line 816
getNCvx_short_short(const NC3_INFO* ncp, const NC_var *varp,
+#line 816
const size_t *start, size_t nelems, short *value)
+#line 816
{
+#line 816
off_t offset = NC_varoffset(ncp, varp, start);
+#line 816
size_t remaining = varp->xsz * nelems;
+#line 816
int status = NC_NOERR;
+#line 816
const void *xp;
+#line 816
+#line 816
if(nelems == 0)
+#line 816
return NC_NOERR;
+#line 816
+#line 816
assert(value != NULL);
+#line 816
+#line 816
for(;;)
+#line 816
{
+#line 816
size_t extent = MIN(remaining, ncp->chunk);
+#line 816
size_t nget = ncx_howmany(varp->type, extent);
+#line 816
+#line 816
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 816
0, (void **)&xp); /* cast away const */
+#line 816
if(lstatus != NC_NOERR)
+#line 816
return lstatus;
+#line 816
+#line 816
lstatus = ncx_getn_short_short(&xp, nget, value);
+#line 816
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 816
status = lstatus;
+#line 816
+#line 816
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 816
+#line 816
remaining -= extent;
+#line 816
if(remaining == 0)
+#line 816
break; /* normal loop exit */
+#line 816
offset += extent;
+#line 816
value += nget;
+#line 816
}
+#line 816
+#line 816
return status;
+#line 816
}
+#line 816
static int
+#line 817
getNCvx_short_int(const NC3_INFO* ncp, const NC_var *varp,
+#line 817
const size_t *start, size_t nelems, int *value)
+#line 817
{
+#line 817
off_t offset = NC_varoffset(ncp, varp, start);
+#line 817
size_t remaining = varp->xsz * nelems;
+#line 817
int status = NC_NOERR;
+#line 817
const void *xp;
+#line 817
+#line 817
if(nelems == 0)
+#line 817
return NC_NOERR;
+#line 817
+#line 817
assert(value != NULL);
+#line 817
+#line 817
for(;;)
+#line 817
{
+#line 817
size_t extent = MIN(remaining, ncp->chunk);
+#line 817
size_t nget = ncx_howmany(varp->type, extent);
+#line 817
+#line 817
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 817
0, (void **)&xp); /* cast away const */
+#line 817
if(lstatus != NC_NOERR)
+#line 817
return lstatus;
+#line 817
+#line 817
lstatus = ncx_getn_short_int(&xp, nget, value);
+#line 817
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 817
status = lstatus;
+#line 817
+#line 817
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 817
+#line 817
remaining -= extent;
+#line 817
if(remaining == 0)
+#line 817
break; /* normal loop exit */
+#line 817
offset += extent;
+#line 817
value += nget;
+#line 817
}
+#line 817
+#line 817
return status;
+#line 817
}
+#line 817
static int
+#line 818
getNCvx_short_float(const NC3_INFO* ncp, const NC_var *varp,
+#line 818
const size_t *start, size_t nelems, float *value)
+#line 818
{
+#line 818
off_t offset = NC_varoffset(ncp, varp, start);
+#line 818
size_t remaining = varp->xsz * nelems;
+#line 818
int status = NC_NOERR;
+#line 818
const void *xp;
+#line 818
+#line 818
if(nelems == 0)
+#line 818
return NC_NOERR;
+#line 818
+#line 818
assert(value != NULL);
+#line 818
+#line 818
for(;;)
+#line 818
{
+#line 818
size_t extent = MIN(remaining, ncp->chunk);
+#line 818
size_t nget = ncx_howmany(varp->type, extent);
+#line 818
+#line 818
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 818
0, (void **)&xp); /* cast away const */
+#line 818
if(lstatus != NC_NOERR)
+#line 818
return lstatus;
+#line 818
+#line 818
lstatus = ncx_getn_short_float(&xp, nget, value);
+#line 818
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 818
status = lstatus;
+#line 818
+#line 818
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 818
+#line 818
remaining -= extent;
+#line 818
if(remaining == 0)
+#line 818
break; /* normal loop exit */
+#line 818
offset += extent;
+#line 818
value += nget;
+#line 818
}
+#line 818
+#line 818
return status;
+#line 818
}
+#line 818
static int
+#line 819
getNCvx_short_double(const NC3_INFO* ncp, const NC_var *varp,
+#line 819
const size_t *start, size_t nelems, double *value)
+#line 819
{
+#line 819
off_t offset = NC_varoffset(ncp, varp, start);
+#line 819
size_t remaining = varp->xsz * nelems;
+#line 819
int status = NC_NOERR;
+#line 819
const void *xp;
+#line 819
+#line 819
if(nelems == 0)
+#line 819
return NC_NOERR;
+#line 819
+#line 819
assert(value != NULL);
+#line 819
+#line 819
for(;;)
+#line 819
{
+#line 819
size_t extent = MIN(remaining, ncp->chunk);
+#line 819
size_t nget = ncx_howmany(varp->type, extent);
+#line 819
+#line 819
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 819
0, (void **)&xp); /* cast away const */
+#line 819
if(lstatus != NC_NOERR)
+#line 819
return lstatus;
+#line 819
+#line 819
lstatus = ncx_getn_short_double(&xp, nget, value);
+#line 819
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 819
status = lstatus;
+#line 819
+#line 819
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 819
+#line 819
remaining -= extent;
+#line 819
if(remaining == 0)
+#line 819
break; /* normal loop exit */
+#line 819
offset += extent;
+#line 819
value += nget;
+#line 819
}
+#line 819
+#line 819
return status;
+#line 819
}
+#line 819
static int
+#line 820
getNCvx_short_longlong(const NC3_INFO* ncp, const NC_var *varp,
+#line 820
const size_t *start, size_t nelems, longlong *value)
+#line 820
{
+#line 820
off_t offset = NC_varoffset(ncp, varp, start);
+#line 820
size_t remaining = varp->xsz * nelems;
+#line 820
int status = NC_NOERR;
+#line 820
const void *xp;
+#line 820
+#line 820
if(nelems == 0)
+#line 820
return NC_NOERR;
+#line 820
+#line 820
assert(value != NULL);
+#line 820
+#line 820
for(;;)
+#line 820
{
+#line 820
size_t extent = MIN(remaining, ncp->chunk);
+#line 820
size_t nget = ncx_howmany(varp->type, extent);
+#line 820
+#line 820
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 820
0, (void **)&xp); /* cast away const */
+#line 820
if(lstatus != NC_NOERR)
+#line 820
return lstatus;
+#line 820
+#line 820
lstatus = ncx_getn_short_longlong(&xp, nget, value);
+#line 820
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 820
status = lstatus;
+#line 820
+#line 820
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 820
+#line 820
remaining -= extent;
+#line 820
if(remaining == 0)
+#line 820
break; /* normal loop exit */
+#line 820
offset += extent;
+#line 820
value += nget;
+#line 820
}
+#line 820
+#line 820
return status;
+#line 820
}
+#line 820
static int
+#line 821
getNCvx_short_uint(const NC3_INFO* ncp, const NC_var *varp,
+#line 821
const size_t *start, size_t nelems, uint *value)
+#line 821
{
+#line 821
off_t offset = NC_varoffset(ncp, varp, start);
+#line 821
size_t remaining = varp->xsz * nelems;
+#line 821
int status = NC_NOERR;
+#line 821
const void *xp;
+#line 821
+#line 821
if(nelems == 0)
+#line 821
return NC_NOERR;
+#line 821
+#line 821
assert(value != NULL);
+#line 821
+#line 821
for(;;)
+#line 821
{
+#line 821
size_t extent = MIN(remaining, ncp->chunk);
+#line 821
size_t nget = ncx_howmany(varp->type, extent);
+#line 821
+#line 821
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 821
0, (void **)&xp); /* cast away const */
+#line 821
if(lstatus != NC_NOERR)
+#line 821
return lstatus;
+#line 821
+#line 821
lstatus = ncx_getn_short_uint(&xp, nget, value);
+#line 821
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 821
status = lstatus;
+#line 821
+#line 821
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 821
+#line 821
remaining -= extent;
+#line 821
if(remaining == 0)
+#line 821
break; /* normal loop exit */
+#line 821
offset += extent;
+#line 821
value += nget;
+#line 821
}
+#line 821
+#line 821
return status;
+#line 821
}
+#line 821
static int
+#line 822
getNCvx_short_ulonglong(const NC3_INFO* ncp, const NC_var *varp,
+#line 822
const size_t *start, size_t nelems, ulonglong *value)
+#line 822
{
+#line 822
off_t offset = NC_varoffset(ncp, varp, start);
+#line 822
size_t remaining = varp->xsz * nelems;
+#line 822
int status = NC_NOERR;
+#line 822
const void *xp;
+#line 822
+#line 822
if(nelems == 0)
+#line 822
return NC_NOERR;
+#line 822
+#line 822
assert(value != NULL);
+#line 822
+#line 822
for(;;)
+#line 822
{
+#line 822
size_t extent = MIN(remaining, ncp->chunk);
+#line 822
size_t nget = ncx_howmany(varp->type, extent);
+#line 822
+#line 822
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 822
0, (void **)&xp); /* cast away const */
+#line 822
if(lstatus != NC_NOERR)
+#line 822
return lstatus;
+#line 822
+#line 822
lstatus = ncx_getn_short_ulonglong(&xp, nget, value);
+#line 822
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 822
status = lstatus;
+#line 822
+#line 822
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 822
+#line 822
remaining -= extent;
+#line 822
if(remaining == 0)
+#line 822
break; /* normal loop exit */
+#line 822
offset += extent;
+#line 822
value += nget;
+#line 822
}
+#line 822
+#line 822
return status;
+#line 822
}
+#line 822
static int
+#line 824
getNCvx_int_schar(const NC3_INFO* ncp, const NC_var *varp,
+#line 824
const size_t *start, size_t nelems, schar *value)
+#line 824
{
+#line 824
off_t offset = NC_varoffset(ncp, varp, start);
+#line 824
size_t remaining = varp->xsz * nelems;
+#line 824
int status = NC_NOERR;
+#line 824
const void *xp;
+#line 824
+#line 824
if(nelems == 0)
+#line 824
return NC_NOERR;
+#line 824
+#line 824
assert(value != NULL);
+#line 824
+#line 824
for(;;)
+#line 824
{
+#line 824
size_t extent = MIN(remaining, ncp->chunk);
+#line 824
size_t nget = ncx_howmany(varp->type, extent);
+#line 824
+#line 824
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 824
0, (void **)&xp); /* cast away const */
+#line 824
if(lstatus != NC_NOERR)
+#line 824
return lstatus;
+#line 824
+#line 824
lstatus = ncx_getn_int_schar(&xp, nget, value);
+#line 824
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 824
status = lstatus;
+#line 824
+#line 824
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 824
+#line 824
remaining -= extent;
+#line 824
if(remaining == 0)
+#line 824
break; /* normal loop exit */
+#line 824
offset += extent;
+#line 824
value += nget;
+#line 824
}
+#line 824
+#line 824
return status;
+#line 824
}
+#line 824
static int
+#line 825
getNCvx_int_uchar(const NC3_INFO* ncp, const NC_var *varp,
+#line 825
const size_t *start, size_t nelems, uchar *value)
+#line 825
{
+#line 825
off_t offset = NC_varoffset(ncp, varp, start);
+#line 825
size_t remaining = varp->xsz * nelems;
+#line 825
int status = NC_NOERR;
+#line 825
const void *xp;
+#line 825
+#line 825
if(nelems == 0)
+#line 825
return NC_NOERR;
+#line 825
+#line 825
assert(value != NULL);
+#line 825
+#line 825
for(;;)
+#line 825
{
+#line 825
size_t extent = MIN(remaining, ncp->chunk);
+#line 825
size_t nget = ncx_howmany(varp->type, extent);
+#line 825
+#line 825
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 825
0, (void **)&xp); /* cast away const */
+#line 825
if(lstatus != NC_NOERR)
+#line 825
return lstatus;
+#line 825
+#line 825
lstatus = ncx_getn_int_uchar(&xp, nget, value);
+#line 825
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 825
status = lstatus;
+#line 825
+#line 825
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 825
+#line 825
remaining -= extent;
+#line 825
if(remaining == 0)
+#line 825
break; /* normal loop exit */
+#line 825
offset += extent;
+#line 825
value += nget;
+#line 825
}
+#line 825
+#line 825
return status;
+#line 825
}
+#line 825
static int
+#line 826
getNCvx_int_short(const NC3_INFO* ncp, const NC_var *varp,
+#line 826
const size_t *start, size_t nelems, short *value)
+#line 826
{
+#line 826
off_t offset = NC_varoffset(ncp, varp, start);
+#line 826
size_t remaining = varp->xsz * nelems;
+#line 826
int status = NC_NOERR;
+#line 826
const void *xp;
+#line 826
+#line 826
if(nelems == 0)
+#line 826
return NC_NOERR;
+#line 826
+#line 826
assert(value != NULL);
+#line 826
+#line 826
for(;;)
+#line 826
{
+#line 826
size_t extent = MIN(remaining, ncp->chunk);
+#line 826
size_t nget = ncx_howmany(varp->type, extent);
+#line 826
+#line 826
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 826
0, (void **)&xp); /* cast away const */
+#line 826
if(lstatus != NC_NOERR)
+#line 826
return lstatus;
+#line 826
+#line 826
lstatus = ncx_getn_int_short(&xp, nget, value);
+#line 826
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 826
status = lstatus;
+#line 826
+#line 826
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 826
+#line 826
remaining -= extent;
+#line 826
if(remaining == 0)
+#line 826
break; /* normal loop exit */
+#line 826
offset += extent;
+#line 826
value += nget;
+#line 826
}
+#line 826
+#line 826
return status;
+#line 826
}
+#line 826
static int
+#line 827
getNCvx_int_int(const NC3_INFO* ncp, const NC_var *varp,
+#line 827
const size_t *start, size_t nelems, int *value)
+#line 827
{
+#line 827
off_t offset = NC_varoffset(ncp, varp, start);
+#line 827
size_t remaining = varp->xsz * nelems;
+#line 827
int status = NC_NOERR;
+#line 827
const void *xp;
+#line 827
+#line 827
if(nelems == 0)
+#line 827
return NC_NOERR;
+#line 827
+#line 827
assert(value != NULL);
+#line 827
+#line 827
for(;;)
+#line 827
{
+#line 827
size_t extent = MIN(remaining, ncp->chunk);
+#line 827
size_t nget = ncx_howmany(varp->type, extent);
+#line 827
+#line 827
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 827
0, (void **)&xp); /* cast away const */
+#line 827
if(lstatus != NC_NOERR)
+#line 827
return lstatus;
+#line 827
+#line 827
lstatus = ncx_getn_int_int(&xp, nget, value);
+#line 827
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 827
status = lstatus;
+#line 827
+#line 827
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 827
+#line 827
remaining -= extent;
+#line 827
if(remaining == 0)
+#line 827
break; /* normal loop exit */
+#line 827
offset += extent;
+#line 827
value += nget;
+#line 827
}
+#line 827
+#line 827
return status;
+#line 827
}
+#line 827
static int
+#line 828
getNCvx_int_float(const NC3_INFO* ncp, const NC_var *varp,
+#line 828
const size_t *start, size_t nelems, float *value)
+#line 828
{
+#line 828
off_t offset = NC_varoffset(ncp, varp, start);
+#line 828
size_t remaining = varp->xsz * nelems;
+#line 828
int status = NC_NOERR;
+#line 828
const void *xp;
+#line 828
+#line 828
if(nelems == 0)
+#line 828
return NC_NOERR;
+#line 828
+#line 828
assert(value != NULL);
+#line 828
+#line 828
for(;;)
+#line 828
{
+#line 828
size_t extent = MIN(remaining, ncp->chunk);
+#line 828
size_t nget = ncx_howmany(varp->type, extent);
+#line 828
+#line 828
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 828
0, (void **)&xp); /* cast away const */
+#line 828
if(lstatus != NC_NOERR)
+#line 828
return lstatus;
+#line 828
+#line 828
lstatus = ncx_getn_int_float(&xp, nget, value);
+#line 828
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 828
status = lstatus;
+#line 828
+#line 828
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 828
+#line 828
remaining -= extent;
+#line 828
if(remaining == 0)
+#line 828
break; /* normal loop exit */
+#line 828
offset += extent;
+#line 828
value += nget;
+#line 828
}
+#line 828
+#line 828
return status;
+#line 828
}
+#line 828
static int
+#line 829
getNCvx_int_double(const NC3_INFO* ncp, const NC_var *varp,
+#line 829
const size_t *start, size_t nelems, double *value)
+#line 829
{
+#line 829
off_t offset = NC_varoffset(ncp, varp, start);
+#line 829
size_t remaining = varp->xsz * nelems;
+#line 829
int status = NC_NOERR;
+#line 829
const void *xp;
+#line 829
+#line 829
if(nelems == 0)
+#line 829
return NC_NOERR;
+#line 829
+#line 829
assert(value != NULL);
+#line 829
+#line 829
for(;;)
+#line 829
{
+#line 829
size_t extent = MIN(remaining, ncp->chunk);
+#line 829
size_t nget = ncx_howmany(varp->type, extent);
+#line 829
+#line 829
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 829
0, (void **)&xp); /* cast away const */
+#line 829
if(lstatus != NC_NOERR)
+#line 829
return lstatus;
+#line 829
+#line 829
lstatus = ncx_getn_int_double(&xp, nget, value);
+#line 829
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 829
status = lstatus;
+#line 829
+#line 829
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 829
+#line 829
remaining -= extent;
+#line 829
if(remaining == 0)
+#line 829
break; /* normal loop exit */
+#line 829
offset += extent;
+#line 829
value += nget;
+#line 829
}
+#line 829
+#line 829
return status;
+#line 829
}
+#line 829
static int
+#line 830
getNCvx_int_longlong(const NC3_INFO* ncp, const NC_var *varp,
+#line 830
const size_t *start, size_t nelems, longlong *value)
+#line 830
{
+#line 830
off_t offset = NC_varoffset(ncp, varp, start);
+#line 830
size_t remaining = varp->xsz * nelems;
+#line 830
int status = NC_NOERR;
+#line 830
const void *xp;
+#line 830
+#line 830
if(nelems == 0)
+#line 830
return NC_NOERR;
+#line 830
+#line 830
assert(value != NULL);
+#line 830
+#line 830
for(;;)
+#line 830
{
+#line 830
size_t extent = MIN(remaining, ncp->chunk);
+#line 830
size_t nget = ncx_howmany(varp->type, extent);
+#line 830
+#line 830
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 830
0, (void **)&xp); /* cast away const */
+#line 830
if(lstatus != NC_NOERR)
+#line 830
return lstatus;
+#line 830
+#line 830
lstatus = ncx_getn_int_longlong(&xp, nget, value);
+#line 830
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 830
status = lstatus;
+#line 830
+#line 830
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 830
+#line 830
remaining -= extent;
+#line 830
if(remaining == 0)
+#line 830
break; /* normal loop exit */
+#line 830
offset += extent;
+#line 830
value += nget;
+#line 830
}
+#line 830
+#line 830
return status;
+#line 830
}
+#line 830
static int
+#line 831
getNCvx_int_uint(const NC3_INFO* ncp, const NC_var *varp,
+#line 831
const size_t *start, size_t nelems, uint *value)
+#line 831
{
+#line 831
off_t offset = NC_varoffset(ncp, varp, start);
+#line 831
size_t remaining = varp->xsz * nelems;
+#line 831
int status = NC_NOERR;
+#line 831
const void *xp;
+#line 831
+#line 831
if(nelems == 0)
+#line 831
return NC_NOERR;
+#line 831
+#line 831
assert(value != NULL);
+#line 831
+#line 831
for(;;)
+#line 831
{
+#line 831
size_t extent = MIN(remaining, ncp->chunk);
+#line 831
size_t nget = ncx_howmany(varp->type, extent);
+#line 831
+#line 831
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 831
0, (void **)&xp); /* cast away const */
+#line 831
if(lstatus != NC_NOERR)
+#line 831
return lstatus;
+#line 831
+#line 831
lstatus = ncx_getn_int_uint(&xp, nget, value);
+#line 831
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 831
status = lstatus;
+#line 831
+#line 831
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 831
+#line 831
remaining -= extent;
+#line 831
if(remaining == 0)
+#line 831
break; /* normal loop exit */
+#line 831
offset += extent;
+#line 831
value += nget;
+#line 831
}
+#line 831
+#line 831
return status;
+#line 831
}
+#line 831
static int
+#line 832
getNCvx_int_ulonglong(const NC3_INFO* ncp, const NC_var *varp,
+#line 832
const size_t *start, size_t nelems, ulonglong *value)
+#line 832
{
+#line 832
off_t offset = NC_varoffset(ncp, varp, start);
+#line 832
size_t remaining = varp->xsz * nelems;
+#line 832
int status = NC_NOERR;
+#line 832
const void *xp;
+#line 832
+#line 832
if(nelems == 0)
+#line 832
return NC_NOERR;
+#line 832
+#line 832
assert(value != NULL);
+#line 832
+#line 832
for(;;)
+#line 832
{
+#line 832
size_t extent = MIN(remaining, ncp->chunk);
+#line 832
size_t nget = ncx_howmany(varp->type, extent);
+#line 832
+#line 832
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 832
0, (void **)&xp); /* cast away const */
+#line 832
if(lstatus != NC_NOERR)
+#line 832
return lstatus;
+#line 832
+#line 832
lstatus = ncx_getn_int_ulonglong(&xp, nget, value);
+#line 832
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 832
status = lstatus;
+#line 832
+#line 832
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 832
+#line 832
remaining -= extent;
+#line 832
if(remaining == 0)
+#line 832
break; /* normal loop exit */
+#line 832
offset += extent;
+#line 832
value += nget;
+#line 832
}
+#line 832
+#line 832
return status;
+#line 832
}
+#line 832
static int
+#line 834
getNCvx_float_schar(const NC3_INFO* ncp, const NC_var *varp,
+#line 834
const size_t *start, size_t nelems, schar *value)
+#line 834
{
+#line 834
off_t offset = NC_varoffset(ncp, varp, start);
+#line 834
size_t remaining = varp->xsz * nelems;
+#line 834
int status = NC_NOERR;
+#line 834
const void *xp;
+#line 834
+#line 834
if(nelems == 0)
+#line 834
return NC_NOERR;
+#line 834
+#line 834
assert(value != NULL);
+#line 834
+#line 834
for(;;)
+#line 834
{
+#line 834
size_t extent = MIN(remaining, ncp->chunk);
+#line 834
size_t nget = ncx_howmany(varp->type, extent);
+#line 834
+#line 834
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 834
0, (void **)&xp); /* cast away const */
+#line 834
if(lstatus != NC_NOERR)
+#line 834
return lstatus;
+#line 834
+#line 834
lstatus = ncx_getn_float_schar(&xp, nget, value);
+#line 834
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 834
status = lstatus;
+#line 834
+#line 834
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 834
+#line 834
remaining -= extent;
+#line 834
if(remaining == 0)
+#line 834
break; /* normal loop exit */
+#line 834
offset += extent;
+#line 834
value += nget;
+#line 834
}
+#line 834
+#line 834
return status;
+#line 834
}
+#line 834
static int
+#line 835
getNCvx_float_uchar(const NC3_INFO* ncp, const NC_var *varp,
+#line 835
const size_t *start, size_t nelems, uchar *value)
+#line 835
{
+#line 835
off_t offset = NC_varoffset(ncp, varp, start);
+#line 835
size_t remaining = varp->xsz * nelems;
+#line 835
int status = NC_NOERR;
+#line 835
const void *xp;
+#line 835
+#line 835
if(nelems == 0)
+#line 835
return NC_NOERR;
+#line 835
+#line 835
assert(value != NULL);
+#line 835
+#line 835
for(;;)
+#line 835
{
+#line 835
size_t extent = MIN(remaining, ncp->chunk);
+#line 835
size_t nget = ncx_howmany(varp->type, extent);
+#line 835
+#line 835
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 835
0, (void **)&xp); /* cast away const */
+#line 835
if(lstatus != NC_NOERR)
+#line 835
return lstatus;
+#line 835
+#line 835
lstatus = ncx_getn_float_uchar(&xp, nget, value);
+#line 835
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 835
status = lstatus;
+#line 835
+#line 835
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 835
+#line 835
remaining -= extent;
+#line 835
if(remaining == 0)
+#line 835
break; /* normal loop exit */
+#line 835
offset += extent;
+#line 835
value += nget;
+#line 835
}
+#line 835
+#line 835
return status;
+#line 835
}
+#line 835
static int
+#line 836
getNCvx_float_short(const NC3_INFO* ncp, const NC_var *varp,
+#line 836
const size_t *start, size_t nelems, short *value)
+#line 836
{
+#line 836
off_t offset = NC_varoffset(ncp, varp, start);
+#line 836
size_t remaining = varp->xsz * nelems;
+#line 836
int status = NC_NOERR;
+#line 836
const void *xp;
+#line 836
+#line 836
if(nelems == 0)
+#line 836
return NC_NOERR;
+#line 836
+#line 836
assert(value != NULL);
+#line 836
+#line 836
for(;;)
+#line 836
{
+#line 836
size_t extent = MIN(remaining, ncp->chunk);
+#line 836
size_t nget = ncx_howmany(varp->type, extent);
+#line 836
+#line 836
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 836
0, (void **)&xp); /* cast away const */
+#line 836
if(lstatus != NC_NOERR)
+#line 836
return lstatus;
+#line 836
+#line 836
lstatus = ncx_getn_float_short(&xp, nget, value);
+#line 836
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 836
status = lstatus;
+#line 836
+#line 836
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 836
+#line 836
remaining -= extent;
+#line 836
if(remaining == 0)
+#line 836
break; /* normal loop exit */
+#line 836
offset += extent;
+#line 836
value += nget;
+#line 836
}
+#line 836
+#line 836
return status;
+#line 836
}
+#line 836
static int
+#line 837
getNCvx_float_int(const NC3_INFO* ncp, const NC_var *varp,
+#line 837
const size_t *start, size_t nelems, int *value)
+#line 837
{
+#line 837
off_t offset = NC_varoffset(ncp, varp, start);
+#line 837
size_t remaining = varp->xsz * nelems;
+#line 837
int status = NC_NOERR;
+#line 837
const void *xp;
+#line 837
+#line 837
if(nelems == 0)
+#line 837
return NC_NOERR;
+#line 837
+#line 837
assert(value != NULL);
+#line 837
+#line 837
for(;;)
+#line 837
{
+#line 837
size_t extent = MIN(remaining, ncp->chunk);
+#line 837
size_t nget = ncx_howmany(varp->type, extent);
+#line 837
+#line 837
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 837
0, (void **)&xp); /* cast away const */
+#line 837
if(lstatus != NC_NOERR)
+#line 837
return lstatus;
+#line 837
+#line 837
lstatus = ncx_getn_float_int(&xp, nget, value);
+#line 837
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 837
status = lstatus;
+#line 837
+#line 837
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 837
+#line 837
remaining -= extent;
+#line 837
if(remaining == 0)
+#line 837
break; /* normal loop exit */
+#line 837
offset += extent;
+#line 837
value += nget;
+#line 837
}
+#line 837
+#line 837
return status;
+#line 837
}
+#line 837
static int
+#line 838
getNCvx_float_float(const NC3_INFO* ncp, const NC_var *varp,
+#line 838
const size_t *start, size_t nelems, float *value)
+#line 838
{
+#line 838
off_t offset = NC_varoffset(ncp, varp, start);
+#line 838
size_t remaining = varp->xsz * nelems;
+#line 838
int status = NC_NOERR;
+#line 838
const void *xp;
+#line 838
+#line 838
if(nelems == 0)
+#line 838
return NC_NOERR;
+#line 838
+#line 838
assert(value != NULL);
+#line 838
+#line 838
for(;;)
+#line 838
{
+#line 838
size_t extent = MIN(remaining, ncp->chunk);
+#line 838
size_t nget = ncx_howmany(varp->type, extent);
+#line 838
+#line 838
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 838
0, (void **)&xp); /* cast away const */
+#line 838
if(lstatus != NC_NOERR)
+#line 838
return lstatus;
+#line 838
+#line 838
lstatus = ncx_getn_float_float(&xp, nget, value);
+#line 838
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 838
status = lstatus;
+#line 838
+#line 838
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 838
+#line 838
remaining -= extent;
+#line 838
if(remaining == 0)
+#line 838
break; /* normal loop exit */
+#line 838
offset += extent;
+#line 838
value += nget;
+#line 838
}
+#line 838
+#line 838
return status;
+#line 838
}
+#line 838
static int
+#line 839
getNCvx_float_double(const NC3_INFO* ncp, const NC_var *varp,
+#line 839
const size_t *start, size_t nelems, double *value)
+#line 839
{
+#line 839
off_t offset = NC_varoffset(ncp, varp, start);
+#line 839
size_t remaining = varp->xsz * nelems;
+#line 839
int status = NC_NOERR;
+#line 839
const void *xp;
+#line 839
+#line 839
if(nelems == 0)
+#line 839
return NC_NOERR;
+#line 839
+#line 839
assert(value != NULL);
+#line 839
+#line 839
for(;;)
+#line 839
{
+#line 839
size_t extent = MIN(remaining, ncp->chunk);
+#line 839
size_t nget = ncx_howmany(varp->type, extent);
+#line 839
+#line 839
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 839
0, (void **)&xp); /* cast away const */
+#line 839
if(lstatus != NC_NOERR)
+#line 839
return lstatus;
+#line 839
+#line 839
lstatus = ncx_getn_float_double(&xp, nget, value);
+#line 839
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 839
status = lstatus;
+#line 839
+#line 839
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 839
+#line 839
remaining -= extent;
+#line 839
if(remaining == 0)
+#line 839
break; /* normal loop exit */
+#line 839
offset += extent;
+#line 839
value += nget;
+#line 839
}
+#line 839
+#line 839
return status;
+#line 839
}
+#line 839
static int
+#line 840
getNCvx_float_longlong(const NC3_INFO* ncp, const NC_var *varp,
+#line 840
const size_t *start, size_t nelems, longlong *value)
+#line 840
{
+#line 840
off_t offset = NC_varoffset(ncp, varp, start);
+#line 840
size_t remaining = varp->xsz * nelems;
+#line 840
int status = NC_NOERR;
+#line 840
const void *xp;
+#line 840
+#line 840
if(nelems == 0)
+#line 840
return NC_NOERR;
+#line 840
+#line 840
assert(value != NULL);
+#line 840
+#line 840
for(;;)
+#line 840
{
+#line 840
size_t extent = MIN(remaining, ncp->chunk);
+#line 840
size_t nget = ncx_howmany(varp->type, extent);
+#line 840
+#line 840
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 840
0, (void **)&xp); /* cast away const */
+#line 840
if(lstatus != NC_NOERR)
+#line 840
return lstatus;
+#line 840
+#line 840
lstatus = ncx_getn_float_longlong(&xp, nget, value);
+#line 840
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 840
status = lstatus;
+#line 840
+#line 840
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 840
+#line 840
remaining -= extent;
+#line 840
if(remaining == 0)
+#line 840
break; /* normal loop exit */
+#line 840
offset += extent;
+#line 840
value += nget;
+#line 840
}
+#line 840
+#line 840
return status;
+#line 840
}
+#line 840
static int
+#line 841
getNCvx_float_uint(const NC3_INFO* ncp, const NC_var *varp,
+#line 841
const size_t *start, size_t nelems, uint *value)
+#line 841
{
+#line 841
off_t offset = NC_varoffset(ncp, varp, start);
+#line 841
size_t remaining = varp->xsz * nelems;
+#line 841
int status = NC_NOERR;
+#line 841
const void *xp;
+#line 841
+#line 841
if(nelems == 0)
+#line 841
return NC_NOERR;
+#line 841
+#line 841
assert(value != NULL);
+#line 841
+#line 841
for(;;)
+#line 841
{
+#line 841
size_t extent = MIN(remaining, ncp->chunk);
+#line 841
size_t nget = ncx_howmany(varp->type, extent);
+#line 841
+#line 841
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 841
0, (void **)&xp); /* cast away const */
+#line 841
if(lstatus != NC_NOERR)
+#line 841
return lstatus;
+#line 841
+#line 841
lstatus = ncx_getn_float_uint(&xp, nget, value);
+#line 841
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 841
status = lstatus;
+#line 841
+#line 841
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 841
+#line 841
remaining -= extent;
+#line 841
if(remaining == 0)
+#line 841
break; /* normal loop exit */
+#line 841
offset += extent;
+#line 841
value += nget;
+#line 841
}
+#line 841
+#line 841
return status;
+#line 841
}
+#line 841
static int
+#line 842
getNCvx_float_ulonglong(const NC3_INFO* ncp, const NC_var *varp,
+#line 842
const size_t *start, size_t nelems, ulonglong *value)
+#line 842
{
+#line 842
off_t offset = NC_varoffset(ncp, varp, start);
+#line 842
size_t remaining = varp->xsz * nelems;
+#line 842
int status = NC_NOERR;
+#line 842
const void *xp;
+#line 842
+#line 842
if(nelems == 0)
+#line 842
return NC_NOERR;
+#line 842
+#line 842
assert(value != NULL);
+#line 842
+#line 842
for(;;)
+#line 842
{
+#line 842
size_t extent = MIN(remaining, ncp->chunk);
+#line 842
size_t nget = ncx_howmany(varp->type, extent);
+#line 842
+#line 842
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 842
0, (void **)&xp); /* cast away const */
+#line 842
if(lstatus != NC_NOERR)
+#line 842
return lstatus;
+#line 842
+#line 842
lstatus = ncx_getn_float_ulonglong(&xp, nget, value);
+#line 842
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 842
status = lstatus;
+#line 842
+#line 842
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 842
+#line 842
remaining -= extent;
+#line 842
if(remaining == 0)
+#line 842
break; /* normal loop exit */
+#line 842
offset += extent;
+#line 842
value += nget;
+#line 842
}
+#line 842
+#line 842
return status;
+#line 842
}
+#line 842
static int
+#line 844
getNCvx_double_schar(const NC3_INFO* ncp, const NC_var *varp,
+#line 844
const size_t *start, size_t nelems, schar *value)
+#line 844
{
+#line 844
off_t offset = NC_varoffset(ncp, varp, start);
+#line 844
size_t remaining = varp->xsz * nelems;
+#line 844
int status = NC_NOERR;
+#line 844
const void *xp;
+#line 844
+#line 844
if(nelems == 0)
+#line 844
return NC_NOERR;
+#line 844
+#line 844
assert(value != NULL);
+#line 844
+#line 844
for(;;)
+#line 844
{
+#line 844
size_t extent = MIN(remaining, ncp->chunk);
+#line 844
size_t nget = ncx_howmany(varp->type, extent);
+#line 844
+#line 844
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 844
0, (void **)&xp); /* cast away const */
+#line 844
if(lstatus != NC_NOERR)
+#line 844
return lstatus;
+#line 844
+#line 844
lstatus = ncx_getn_double_schar(&xp, nget, value);
+#line 844
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 844
status = lstatus;
+#line 844
+#line 844
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 844
+#line 844
remaining -= extent;
+#line 844
if(remaining == 0)
+#line 844
break; /* normal loop exit */
+#line 844
offset += extent;
+#line 844
value += nget;
+#line 844
}
+#line 844
+#line 844
return status;
+#line 844
}
+#line 844
static int
+#line 845
getNCvx_double_uchar(const NC3_INFO* ncp, const NC_var *varp,
+#line 845
const size_t *start, size_t nelems, uchar *value)
+#line 845
{
+#line 845
off_t offset = NC_varoffset(ncp, varp, start);
+#line 845
size_t remaining = varp->xsz * nelems;
+#line 845
int status = NC_NOERR;
+#line 845
const void *xp;
+#line 845
+#line 845
if(nelems == 0)
+#line 845
return NC_NOERR;
+#line 845
+#line 845
assert(value != NULL);
+#line 845
+#line 845
for(;;)
+#line 845
{
+#line 845
size_t extent = MIN(remaining, ncp->chunk);
+#line 845
size_t nget = ncx_howmany(varp->type, extent);
+#line 845
+#line 845
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 845
0, (void **)&xp); /* cast away const */
+#line 845
if(lstatus != NC_NOERR)
+#line 845
return lstatus;
+#line 845
+#line 845
lstatus = ncx_getn_double_uchar(&xp, nget, value);
+#line 845
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 845
status = lstatus;
+#line 845
+#line 845
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 845
+#line 845
remaining -= extent;
+#line 845
if(remaining == 0)
+#line 845
break; /* normal loop exit */
+#line 845
offset += extent;
+#line 845
value += nget;
+#line 845
}
+#line 845
+#line 845
return status;
+#line 845
}
+#line 845
static int
+#line 846
getNCvx_double_short(const NC3_INFO* ncp, const NC_var *varp,
+#line 846
const size_t *start, size_t nelems, short *value)
+#line 846
{
+#line 846
off_t offset = NC_varoffset(ncp, varp, start);
+#line 846
size_t remaining = varp->xsz * nelems;
+#line 846
int status = NC_NOERR;
+#line 846
const void *xp;
+#line 846
+#line 846
if(nelems == 0)
+#line 846
return NC_NOERR;
+#line 846
+#line 846
assert(value != NULL);
+#line 846
+#line 846
for(;;)
+#line 846
{
+#line 846
size_t extent = MIN(remaining, ncp->chunk);
+#line 846
size_t nget = ncx_howmany(varp->type, extent);
+#line 846
+#line 846
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 846
0, (void **)&xp); /* cast away const */
+#line 846
if(lstatus != NC_NOERR)
+#line 846
return lstatus;
+#line 846
+#line 846
lstatus = ncx_getn_double_short(&xp, nget, value);
+#line 846
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 846
status = lstatus;
+#line 846
+#line 846
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 846
+#line 846
remaining -= extent;
+#line 846
if(remaining == 0)
+#line 846
break; /* normal loop exit */
+#line 846
offset += extent;
+#line 846
value += nget;
+#line 846
}
+#line 846
+#line 846
return status;
+#line 846
}
+#line 846
static int
+#line 847
getNCvx_double_int(const NC3_INFO* ncp, const NC_var *varp,
+#line 847
const size_t *start, size_t nelems, int *value)
+#line 847
{
+#line 847
off_t offset = NC_varoffset(ncp, varp, start);
+#line 847
size_t remaining = varp->xsz * nelems;
+#line 847
int status = NC_NOERR;
+#line 847
const void *xp;
+#line 847
+#line 847
if(nelems == 0)
+#line 847
return NC_NOERR;
+#line 847
+#line 847
assert(value != NULL);
+#line 847
+#line 847
for(;;)
+#line 847
{
+#line 847
size_t extent = MIN(remaining, ncp->chunk);
+#line 847
size_t nget = ncx_howmany(varp->type, extent);
+#line 847
+#line 847
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 847
0, (void **)&xp); /* cast away const */
+#line 847
if(lstatus != NC_NOERR)
+#line 847
return lstatus;
+#line 847
+#line 847
lstatus = ncx_getn_double_int(&xp, nget, value);
+#line 847
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 847
status = lstatus;
+#line 847
+#line 847
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 847
+#line 847
remaining -= extent;
+#line 847
if(remaining == 0)
+#line 847
break; /* normal loop exit */
+#line 847
offset += extent;
+#line 847
value += nget;
+#line 847
}
+#line 847
+#line 847
return status;
+#line 847
}
+#line 847
static int
+#line 848
getNCvx_double_float(const NC3_INFO* ncp, const NC_var *varp,
+#line 848
const size_t *start, size_t nelems, float *value)
+#line 848
{
+#line 848
off_t offset = NC_varoffset(ncp, varp, start);
+#line 848
size_t remaining = varp->xsz * nelems;
+#line 848
int status = NC_NOERR;
+#line 848
const void *xp;
+#line 848
+#line 848
if(nelems == 0)
+#line 848
return NC_NOERR;
+#line 848
+#line 848
assert(value != NULL);
+#line 848
+#line 848
for(;;)
+#line 848
{
+#line 848
size_t extent = MIN(remaining, ncp->chunk);
+#line 848
size_t nget = ncx_howmany(varp->type, extent);
+#line 848
+#line 848
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 848
0, (void **)&xp); /* cast away const */
+#line 848
if(lstatus != NC_NOERR)
+#line 848
return lstatus;
+#line 848
+#line 848
lstatus = ncx_getn_double_float(&xp, nget, value);
+#line 848
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 848
status = lstatus;
+#line 848
+#line 848
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 848
+#line 848
remaining -= extent;
+#line 848
if(remaining == 0)
+#line 848
break; /* normal loop exit */
+#line 848
offset += extent;
+#line 848
value += nget;
+#line 848
}
+#line 848
+#line 848
return status;
+#line 848
}
+#line 848
static int
+#line 849
getNCvx_double_double(const NC3_INFO* ncp, const NC_var *varp,
+#line 849
const size_t *start, size_t nelems, double *value)
+#line 849
{
+#line 849
off_t offset = NC_varoffset(ncp, varp, start);
+#line 849
size_t remaining = varp->xsz * nelems;
+#line 849
int status = NC_NOERR;
+#line 849
const void *xp;
+#line 849
+#line 849
if(nelems == 0)
+#line 849
return NC_NOERR;
+#line 849
+#line 849
assert(value != NULL);
+#line 849
+#line 849
for(;;)
+#line 849
{
+#line 849
size_t extent = MIN(remaining, ncp->chunk);
+#line 849
size_t nget = ncx_howmany(varp->type, extent);
+#line 849
+#line 849
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 849
0, (void **)&xp); /* cast away const */
+#line 849
if(lstatus != NC_NOERR)
+#line 849
return lstatus;
+#line 849
+#line 849
lstatus = ncx_getn_double_double(&xp, nget, value);
+#line 849
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 849
status = lstatus;
+#line 849
+#line 849
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 849
+#line 849
remaining -= extent;
+#line 849
if(remaining == 0)
+#line 849
break; /* normal loop exit */
+#line 849
offset += extent;
+#line 849
value += nget;
+#line 849
}
+#line 849
+#line 849
return status;
+#line 849
}
+#line 849
static int
+#line 850
getNCvx_double_longlong(const NC3_INFO* ncp, const NC_var *varp,
+#line 850
const size_t *start, size_t nelems, longlong *value)
+#line 850
{
+#line 850
off_t offset = NC_varoffset(ncp, varp, start);
+#line 850
size_t remaining = varp->xsz * nelems;
+#line 850
int status = NC_NOERR;
+#line 850
const void *xp;
+#line 850
+#line 850
if(nelems == 0)
+#line 850
return NC_NOERR;
+#line 850
+#line 850
assert(value != NULL);
+#line 850
+#line 850
for(;;)
+#line 850
{
+#line 850
size_t extent = MIN(remaining, ncp->chunk);
+#line 850
size_t nget = ncx_howmany(varp->type, extent);
+#line 850
+#line 850
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 850
0, (void **)&xp); /* cast away const */
+#line 850
if(lstatus != NC_NOERR)
+#line 850
return lstatus;
+#line 850
+#line 850
lstatus = ncx_getn_double_longlong(&xp, nget, value);
+#line 850
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 850
status = lstatus;
+#line 850
+#line 850
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 850
+#line 850
remaining -= extent;
+#line 850
if(remaining == 0)
+#line 850
break; /* normal loop exit */
+#line 850
offset += extent;
+#line 850
value += nget;
+#line 850
}
+#line 850
+#line 850
return status;
+#line 850
}
+#line 850
static int
+#line 851
getNCvx_double_uint(const NC3_INFO* ncp, const NC_var *varp,
+#line 851
const size_t *start, size_t nelems, uint *value)
+#line 851
{
+#line 851
off_t offset = NC_varoffset(ncp, varp, start);
+#line 851
size_t remaining = varp->xsz * nelems;
+#line 851
int status = NC_NOERR;
+#line 851
const void *xp;
+#line 851
+#line 851
if(nelems == 0)
+#line 851
return NC_NOERR;
+#line 851
+#line 851
assert(value != NULL);
+#line 851
+#line 851
for(;;)
+#line 851
{
+#line 851
size_t extent = MIN(remaining, ncp->chunk);
+#line 851
size_t nget = ncx_howmany(varp->type, extent);
+#line 851
+#line 851
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 851
0, (void **)&xp); /* cast away const */
+#line 851
if(lstatus != NC_NOERR)
+#line 851
return lstatus;
+#line 851
+#line 851
lstatus = ncx_getn_double_uint(&xp, nget, value);
+#line 851
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 851
status = lstatus;
+#line 851
+#line 851
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 851
+#line 851
remaining -= extent;
+#line 851
if(remaining == 0)
+#line 851
break; /* normal loop exit */
+#line 851
offset += extent;
+#line 851
value += nget;
+#line 851
}
+#line 851
+#line 851
return status;
+#line 851
}
+#line 851
static int
+#line 852
getNCvx_double_ulonglong(const NC3_INFO* ncp, const NC_var *varp,
+#line 852
const size_t *start, size_t nelems, ulonglong *value)
+#line 852
{
+#line 852
off_t offset = NC_varoffset(ncp, varp, start);
+#line 852
size_t remaining = varp->xsz * nelems;
+#line 852
int status = NC_NOERR;
+#line 852
const void *xp;
+#line 852
+#line 852
if(nelems == 0)
+#line 852
return NC_NOERR;
+#line 852
+#line 852
assert(value != NULL);
+#line 852
+#line 852
for(;;)
+#line 852
{
+#line 852
size_t extent = MIN(remaining, ncp->chunk);
+#line 852
size_t nget = ncx_howmany(varp->type, extent);
+#line 852
+#line 852
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 852
0, (void **)&xp); /* cast away const */
+#line 852
if(lstatus != NC_NOERR)
+#line 852
return lstatus;
+#line 852
+#line 852
lstatus = ncx_getn_double_ulonglong(&xp, nget, value);
+#line 852
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 852
status = lstatus;
+#line 852
+#line 852
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 852
+#line 852
remaining -= extent;
+#line 852
if(remaining == 0)
+#line 852
break; /* normal loop exit */
+#line 852
offset += extent;
+#line 852
value += nget;
+#line 852
}
+#line 852
+#line 852
return status;
+#line 852
}
+#line 852
+#line 855
#ifdef NOTUSED
static int
+#line 856
getNCvx_schar_uchar(const NC3_INFO* ncp, const NC_var *varp,
+#line 856
const size_t *start, size_t nelems, uchar *value)
+#line 856
{
+#line 856
off_t offset = NC_varoffset(ncp, varp, start);
+#line 856
size_t remaining = varp->xsz * nelems;
+#line 856
int status = NC_NOERR;
+#line 856
const void *xp;
+#line 856
+#line 856
if(nelems == 0)
+#line 856
return NC_NOERR;
+#line 856
+#line 856
assert(value != NULL);
+#line 856
+#line 856
for(;;)
+#line 856
{
+#line 856
size_t extent = MIN(remaining, ncp->chunk);
+#line 856
size_t nget = ncx_howmany(varp->type, extent);
+#line 856
+#line 856
int lstatus = ncio_get(ncp->nciop, offset, extent,
+#line 856
0, (void **)&xp); /* cast away const */
+#line 856
if(lstatus != NC_NOERR)
+#line 856
return lstatus;
+#line 856
+#line 856
lstatus = ncx_getn_schar_uchar(&xp, nget, value);
+#line 856
if(lstatus != NC_NOERR && status == NC_NOERR)
+#line 856
status = lstatus;
+#line 856
+#line 856
(void) ncio_rel(ncp->nciop, offset, 0);
+#line 856
+#line 856
remaining -= extent;
+#line 856
if(remaining == 0)
+#line 856
break; /* normal loop exit */
+#line 856
offset += extent;
+#line 856
value += nget;
+#line 856
}
+#line 856
+#line 856
return status;
+#line 856
}
+#line 856
#endif /*NOTUSED*/
@@ -4814,6 +8772,7 @@ odo1(const size_t *const start, const size_t *const upper,
#endif
+#line 1018
/* Define a macro to allow hash on two type values */
#define CASE(nc1,nc2) (nc1*256+nc2)
diff --git a/libsrc/var.c b/libsrc/var.c
index f53b679..1caac85 100644
--- a/libsrc/var.c
+++ b/libsrc/var.c
@@ -20,8 +20,7 @@
/*
* Free var
- * Formerly
-NC_free_var(var)
+ * Formerly NC_free_var(var)
*/
void
free_NC_var(NC_var *varp)
@@ -39,8 +38,8 @@ free_NC_var(NC_var *varp)
}
-/*
- * Common code for new_NC_var()
+/*
+ * Common code for new_NC_var()
* and ncx_get_NC_var()
*/
NC_var *
@@ -82,6 +81,7 @@ new_x_NC_var(
#else /*!MALLOCHACK*/
varp->dimids = (int*)malloc(o1);
varp->shape = (size_t*)malloc(o2);
+ if(varp->shape) { memset(varp->shape,0,o2); }
varp->dsizes = (off_t*)malloc(o3);
#endif /*!MALLOCHACK*/
} else {
@@ -89,13 +89,13 @@ new_x_NC_var(
varp->shape = NULL;
varp->dsizes=NULL;
}
-
-
+
+
varp->xsz = 0;
varp->len = 0;
varp->begin = 0;
- return varp;
+ return varp;
}
@@ -109,7 +109,7 @@ new_NC_var(const char *uname, nc_type type,
{
NC_string *strp = NULL;
NC_var *varp = NULL;
-
+
char *name = (char *)utf8proc_NFC((const unsigned char *)uname);
if(name == NULL)
return NULL;
@@ -124,12 +124,13 @@ new_NC_var(const char *uname, nc_type type,
free_NC_string(strp);
return NULL;
}
-
+
varp->type = type;
if( ndims != 0 && dimids != NULL)
(void) memcpy(varp->dimids, dimids, ndims * sizeof(int));
-
+ else
+ varp->dimids=NULL;
return(varp);
@@ -144,7 +145,7 @@ dup_NC_var(const NC_var *rvarp)
if(varp == NULL)
return NULL;
-
+
if(dup_NC_attrarrayV(&varp->attrs, &rvarp->attrs) != NC_NOERR)
{
free_NC_var(varp);
@@ -202,7 +203,7 @@ void
free_NC_vararrayV(NC_vararray *ncap)
{
assert(ncap != NULL);
-
+
if(ncap->nalloc == 0)
return;
@@ -362,7 +363,7 @@ NC_findvar(const NC_vararray *ncap, const char *uname, NC_var **varpp)
return(-1); /* not found */
}
-/*
+/*
* For a netcdf type
* return the size of one element in the external representation.
* Note that arrays get rounded up to X_ALIGN boundaries.
@@ -383,7 +384,7 @@ ncx_szof(nc_type type)
return X_SIZEOF_INT;
case NC_FLOAT:
return X_SIZEOF_FLOAT;
- case NC_DOUBLE :
+ case NC_DOUBLE :
return X_SIZEOF_DOUBLE;
default:
assert("ncx_szof invalid type" == 0);
@@ -402,10 +403,10 @@ NC_var_shape(NC_var *varp, const NC_dimarray *dims)
{
size_t *shp, *op;
off_t *dsp;
- int *ip;
+ int *ip = NULL;
const NC_dim *dimp;
off_t product = 1;
-
+
varp->xsz = ncx_szof(varp->type);
if(varp->ndims == 0 || varp->dimids == NULL)
@@ -418,18 +419,18 @@ NC_var_shape(NC_var *varp, const NC_dimarray *dims)
* to determine the shape
*/
for(ip = varp->dimids, op = varp->shape
- ; ip < &varp->dimids[varp->ndims]; ip++, op++)
+ ; ip < &varp->dimids[varp->ndims]; ip++, op++)
{
if(*ip < 0 || (size_t) (*ip) >= ((dims != NULL) ? dims->nelems : 1) )
return NC_EBADDIM;
-
+
dimp = elem_NC_dimarray(dims, (size_t)*ip);
*op = dimp->size;
if(*op == NC_UNLIMITED && ip != varp->dimids)
return NC_EUNLIMPOS;
}
- /*
+ /*
* Compute the dsizes
*/
/* ndims is > 0 here */
@@ -438,12 +439,13 @@ NC_var_shape(NC_var *varp, const NC_dimarray *dims)
shp >= varp->shape;
shp--, dsp--)
{
- if(!(shp == varp->shape && IS_RECVAR(varp)))
+ /*if(!(shp == varp->shape && IS_RECVAR(varp)))*/
+ if( shp != NULL && (shp != varp->shape || !IS_RECVAR(varp)))
{
- if( (off_t)(*shp) <= OFF_T_MAX / product )
+ if( (off_t)(*shp) <= OFF_T_MAX / product )
{
- product *= *shp;
- } else
+ product *= (*shp > 0 ? *shp : 1);
+ } else
{
product = OFF_T_MAX ;
}
@@ -496,10 +498,12 @@ NC_check_vlen(NC_var *varp, size_t vlen_max) {
assert(varp != NULL);
for(ii = IS_RECVAR(varp) ? 1 : 0; ii < varp->ndims; ii++) {
- if (varp->shape[ii] > vlen_max / prod) {
- return 0; /* size in bytes won't fit in a 32-bit int */
- }
- prod *= varp->shape[ii];
+ if(!varp->shape)
+ return 0; /* Shape is undefined/NULL. */
+ if (varp->shape[ii] > vlen_max / prod) {
+ return 0; /* size in bytes won't fit in a 32-bit int */
+ }
+ prod *= varp->shape[ii];
}
return 1; /* OK */
}
@@ -546,7 +550,7 @@ NC3_def_var( int ncid, const char *name, nc_type type,
int varid;
NC_var *varp = NULL;
- status = NC_check_id(ncid, &nc);
+ status = NC_check_id(ncid, &nc);
if(status != NC_NOERR)
return status;
ncp = NC3_DATA(nc);
@@ -568,7 +572,7 @@ NC3_def_var( int ncid, const char *name, nc_type type,
if((unsigned long) ndims > X_INT_MAX) /* Backward compat */
{
return NC_EINVAL;
- }
+ }
if(ncp->vars.nelems >= NC_MAX_VARS)
{
@@ -580,7 +584,7 @@ NC3_def_var( int ncid, const char *name, nc_type type,
{
return NC_ENAMEINUSE;
}
-
+
varp = new_NC_var(name, type, ndims, dimids);
if(varp == NULL)
return NC_ENOMEM;
@@ -614,7 +618,7 @@ NC3_inq_varid(int ncid, const char *name, int *varid_ptr)
NC_var *varp;
int varid;
- status = NC_check_id(ncid, &nc);
+ status = NC_check_id(ncid, &nc);
if(status != NC_NOERR)
return status;
ncp = NC3_DATA(nc);
@@ -645,7 +649,7 @@ NC3_inq_var(int ncid,
NC_var *varp;
size_t ii;
- status = NC_check_id(ncid, &nc);
+ status = NC_check_id(ncid, &nc);
if(status != NC_NOERR)
return status;
ncp = NC3_DATA(nc);
@@ -692,7 +696,7 @@ NC3_rename_var(int ncid, int varid, const char *unewname)
int other;
char *newname; /* normalized */
- status = NC_check_id(ncid, &nc);
+ status = NC_check_id(ncid, &nc);
if(status != NC_NOERR)
return status;
ncp = NC3_DATA(nc);
@@ -712,7 +716,7 @@ NC3_rename_var(int ncid, int varid, const char *unewname)
{
return NC_ENAMEINUSE;
}
-
+
varp = NC_lookupvar(ncp, varid);
if(varp == NULL)
{
diff --git a/libsrc4/Makefile.in b/libsrc4/Makefile.in
new file mode 100644
index 0000000..7b886b2
--- /dev/null
+++ b/libsrc4/Makefile.in
@@ -0,0 +1,753 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# This is part of Unidata's netCDF package. Copyright 2005-2011, see
+# the COPYRIGHT file for more information.
+
+# This automake file generates the Makefile to build netCDF-4.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_3 = -DDLL_EXPORT
+subdir = libsrc4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libnetcdf4_la_LIBADD =
+am_libnetcdf4_la_OBJECTS = libnetcdf4_la-nc4dispatch.lo \
+ libnetcdf4_la-nc4attr.lo libnetcdf4_la-nc4dim.lo \
+ libnetcdf4_la-nc4file.lo libnetcdf4_la-nc4grp.lo \
+ libnetcdf4_la-nc4hdf.lo libnetcdf4_la-nc4internal.lo \
+ libnetcdf4_la-nc4type.lo libnetcdf4_la-nc4var.lo \
+ libnetcdf4_la-ncfunc.lo libnetcdf4_la-error4.lo
+libnetcdf4_la_OBJECTS = $(am_libnetcdf4_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libnetcdf4_la_SOURCES)
+DIST_SOURCES = $(libnetcdf4_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libnetcdf4_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_3)
+
+# This is our output. The netCDF-4 convenience library.
+noinst_LTLIBRARIES = libnetcdf4.la
+libnetcdf4_la_SOURCES = nc4dispatch.c nc4dispatch.h nc4attr.c nc4dim.c \
+nc4file.c nc4grp.c nc4hdf.c nc4internal.c nc4type.c nc4var.c ncfunc.c error4.c
+
+EXTRA_DIST = CMakeLists.txt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libsrc4/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libsrc4/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libnetcdf4.la: $(libnetcdf4_la_OBJECTS) $(libnetcdf4_la_DEPENDENCIES) $(EXTRA_libnetcdf4_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(libnetcdf4_la_OBJECTS) $(libnetcdf4_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-error4.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4attr.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4dim.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4dispatch.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4file.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4grp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4hdf.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4internal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4type.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-nc4var.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf4_la-ncfunc.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libnetcdf4_la-nc4dispatch.lo: nc4dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4dispatch.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4dispatch.Tpo -c -o libnetcdf4_la-nc4dispatch.lo `test -f 'nc4dispatch.c' || echo '$(srcdir)/'`nc4dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4dispatch.Tpo $(DEPDIR)/libnetcdf4_la-nc4dispatch.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4dispatch.c' object='libnetcdf4_la-nc4dispatch.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4dispatch.lo `test -f 'nc4dispatch.c' || echo '$(srcdir)/'`nc4dispatch.c
+
+libnetcdf4_la-nc4attr.lo: nc4attr.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4attr.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4attr.Tpo -c -o libnetcdf4_la-nc4attr.lo `test -f 'nc4attr.c' || echo '$(srcdir)/'`nc4attr.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4attr.Tpo $(DEPDIR)/libnetcdf4_la-nc4attr.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4attr.c' object='libnetcdf4_la-nc4attr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4attr.lo `test -f 'nc4attr.c' || echo '$(srcdir)/'`nc4attr.c
+
+libnetcdf4_la-nc4dim.lo: nc4dim.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4dim.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4dim.Tpo -c -o libnetcdf4_la-nc4dim.lo `test -f 'nc4dim.c' || echo '$(srcdir)/'`nc4dim.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4dim.Tpo $(DEPDIR)/libnetcdf4_la-nc4dim.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4dim.c' object='libnetcdf4_la-nc4dim.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4dim.lo `test -f 'nc4dim.c' || echo '$(srcdir)/'`nc4dim.c
+
+libnetcdf4_la-nc4file.lo: nc4file.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4file.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4file.Tpo -c -o libnetcdf4_la-nc4file.lo `test -f 'nc4file.c' || echo '$(srcdir)/'`nc4file.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4file.Tpo $(DEPDIR)/libnetcdf4_la-nc4file.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4file.c' object='libnetcdf4_la-nc4file.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4file.lo `test -f 'nc4file.c' || echo '$(srcdir)/'`nc4file.c
+
+libnetcdf4_la-nc4grp.lo: nc4grp.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4grp.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4grp.Tpo -c -o libnetcdf4_la-nc4grp.lo `test -f 'nc4grp.c' || echo '$(srcdir)/'`nc4grp.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4grp.Tpo $(DEPDIR)/libnetcdf4_la-nc4grp.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4grp.c' object='libnetcdf4_la-nc4grp.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4grp.lo `test -f 'nc4grp.c' || echo '$(srcdir)/'`nc4grp.c
+
+libnetcdf4_la-nc4hdf.lo: nc4hdf.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4hdf.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4hdf.Tpo -c -o libnetcdf4_la-nc4hdf.lo `test -f 'nc4hdf.c' || echo '$(srcdir)/'`nc4hdf.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4hdf.Tpo $(DEPDIR)/libnetcdf4_la-nc4hdf.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4hdf.c' object='libnetcdf4_la-nc4hdf.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4hdf.lo `test -f 'nc4hdf.c' || echo '$(srcdir)/'`nc4hdf.c
+
+libnetcdf4_la-nc4internal.lo: nc4internal.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4internal.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4internal.Tpo -c -o libnetcdf4_la-nc4internal.lo `test -f 'nc4internal.c' || echo '$(srcdir)/'`nc4internal.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4internal.Tpo $(DEPDIR)/libnetcdf4_la-nc4internal.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4internal.c' object='libnetcdf4_la-nc4internal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4internal.lo `test -f 'nc4internal.c' || echo '$(srcdir)/'`nc4internal.c
+
+libnetcdf4_la-nc4type.lo: nc4type.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4type.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4type.Tpo -c -o libnetcdf4_la-nc4type.lo `test -f 'nc4type.c' || echo '$(srcdir)/'`nc4type.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4type.Tpo $(DEPDIR)/libnetcdf4_la-nc4type.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4type.c' object='libnetcdf4_la-nc4type.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4type.lo `test -f 'nc4type.c' || echo '$(srcdir)/'`nc4type.c
+
+libnetcdf4_la-nc4var.lo: nc4var.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-nc4var.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-nc4var.Tpo -c -o libnetcdf4_la-nc4var.lo `test -f 'nc4var.c' || echo '$(srcdir)/'`nc4var.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-nc4var.Tpo $(DEPDIR)/libnetcdf4_la-nc4var.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc4var.c' object='libnetcdf4_la-nc4var.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-nc4var.lo `test -f 'nc4var.c' || echo '$(srcdir)/'`nc4var.c
+
+libnetcdf4_la-ncfunc.lo: ncfunc.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-ncfunc.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-ncfunc.Tpo -c -o libnetcdf4_la-ncfunc.lo `test -f 'ncfunc.c' || echo '$(srcdir)/'`ncfunc.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-ncfunc.Tpo $(DEPDIR)/libnetcdf4_la-ncfunc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ncfunc.c' object='libnetcdf4_la-ncfunc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-ncfunc.lo `test -f 'ncfunc.c' || echo '$(srcdir)/'`ncfunc.c
+
+libnetcdf4_la-error4.lo: error4.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf4_la-error4.lo -MD -MP -MF $(DEPDIR)/libnetcdf4_la-error4.Tpo -c -o libnetcdf4_la-error4.lo `test -f 'error4.c' || echo '$(srcdir)/'`error4.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf4_la-error4.Tpo $(DEPDIR)/libnetcdf4_la-error4.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='error4.c' object='libnetcdf4_la-error4.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf4_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf4_la-error4.lo `test -f 'error4.c' || echo '$(srcdir)/'`error4.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libsrc4/nc4attr.c b/libsrc4/nc4attr.c
index 7d4e181..452b47f 100644
--- a/libsrc4/nc4attr.c
+++ b/libsrc4/nc4attr.c
@@ -27,9 +27,9 @@ int nc4typelen(nc_type type);
info. Always locate the attribute by name, never by attnum.
The mem_type is ignored if data=NULL. */
int
-nc4_get_att(int ncid, NC *nc, int varid, const char *name,
- nc_type *xtype, nc_type mem_type, size_t *lenp,
- int *attnum, int is_long, void *data)
+nc4_get_att(int ncid, NC *nc, int varid, const char *name,
+ nc_type *xtype, nc_type mem_type, size_t *lenp,
+ int *attnum, int is_long, void *data)
{
NC_GRP_INFO_T *grp;
NC_HDF5_FILE_INFO_T *h5;
@@ -38,7 +38,7 @@ nc4_get_att(int ncid, NC *nc, int varid, const char *name,
int need_to_convert = 0;
int range_error = NC_NOERR;
- void *bufr = NULL;
+ void *bufr = NULL;
size_t type_size;
char norm_name[NC_MAX_NAME + 1];
int i;
@@ -48,7 +48,7 @@ nc4_get_att(int ncid, NC *nc, int varid, const char *name,
my_attnum = *attnum;
assert(nc && NC4_DATA(nc));
- LOG((3, "%s: ncid 0x%x varid %d name %s attnum %d mem_type %d",
+ LOG((3, "%s: ncid 0x%x varid %d name %s attnum %d mem_type %d",
__func__, ncid, varid, name, my_attnum, mem_type));
/* Find info for this file and group, and set pointer to each. */
@@ -64,7 +64,7 @@ nc4_get_att(int ncid, NC *nc, int varid, const char *name,
major failures. */
if ((retval = nc4_find_grp_att(grp, varid, norm_name, my_attnum, &att)))
BAIL(retval);
-
+
/* If mem_type is NC_NAT, it means we want to use the attribute's
* file type as the mem type as well. */
if (mem_type == NC_NAT)
@@ -100,14 +100,14 @@ nc4_get_att(int ncid, NC *nc, int varid, const char *name,
* the attribute's type. */
if (data && att->len && mem_type != att->nc_typeid &&
mem_type != NC_NAT &&
- !(mem_type == NC_CHAR &&
+ !(mem_type == NC_CHAR &&
(att->nc_typeid == NC_UBYTE || att->nc_typeid == NC_BYTE)))
{
if (!(bufr = malloc((size_t)(att->len * type_size))))
BAIL(NC_ENOMEM);
need_to_convert++;
- if ((retval = nc4_convert_type(att->data, bufr, att->nc_typeid,
- mem_type, (size_t)att->len, &range_error,
+ if ((retval = nc4_convert_type(att->data, bufr, att->nc_typeid,
+ mem_type, (size_t)att->len, &range_error,
NULL, (h5->cmode & NC_CLASSIC_MODEL), 0, is_long)))
BAIL(retval);
@@ -192,14 +192,14 @@ nc4_get_att(int ncid, NC *nc, int varid, const char *name,
/* Put attribute metadata into our global metadata. */
static int
-nc4_put_att(int ncid, NC *nc, int varid, const char *name,
- nc_type file_type, nc_type mem_type, size_t len, int is_long,
+nc4_put_att(int ncid, NC *nc, int varid, const char *name,
+ nc_type file_type, nc_type mem_type, size_t len, int is_long,
const void *data)
{
- NC_GRP_INFO_T *grp;
+ NC_GRP_INFO_T *grp;
NC_HDF5_FILE_INFO_T *h5;
NC_VAR_INFO_T *var = NULL;
- NC_ATT_INFO_T *att, **attlist = NULL, *varatt;
+ NC_ATT_INFO_T *att, **attlist = NULL;
char norm_name[NC_MAX_NAME + 1];
nc_bool_t new_att = NC_FALSE;
int retval = NC_NOERR, range_error = 0;
@@ -207,7 +207,7 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
int i;
int res;
- if (!name)
+ if (!name)
return NC_EBADNAME;
assert(nc && NC4_DATA(nc));
@@ -222,7 +222,7 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
/* Find info for this file and group, and set pointer to each. */
h5 = NC4_DATA(nc);
if (!(grp = nc4_rec_find_grp(h5->root_grp, (ncid & GRP_ID_MASK))))
- return NC_EBADGRPID;
+ return NC_EBADGRPID;
/* If the file is read-only, return an error. */
if (h5->no_write)
@@ -266,7 +266,7 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
{
/* For an existing att, if we're not in define mode, the len
must not be greater than the existing len for classic model. */
- if (!(h5->flags & NC_INDEF) &&
+ if (!(h5->flags & NC_INDEF) &&
len * nc4typelen(file_type) > (size_t)att->len * nc4typelen(att->nc_typeid))
{
if (h5->cmode & NC_CLASSIC_MODEL)
@@ -285,8 +285,8 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
return retval;
/* No character conversions are allowed. */
- if (file_type != mem_type &&
- (file_type == NC_CHAR || mem_type == NC_CHAR ||
+ if (file_type != mem_type &&
+ (file_type == NC_CHAR || mem_type == NC_CHAR ||
file_type == NC_STRING || mem_type == NC_STRING))
return NC_ECHAR;
@@ -334,11 +334,12 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
att->attnum = 0;
/* If this is the _FillValue attribute, then we will also have to
- * copy the value to the fll_vlue pointer of the NC_VAR_INFO_T
+ * copy the value to the fill_vlue pointer of the NC_VAR_INFO_T
* struct for this var. (But ignore a global _FillValue
* attribute). */
if (!strcmp(att->name, _FillValue) && varid != NC_GLOBAL)
{
+ NC_ATT_INFO_T *varatt;
int size;
/* Fill value must be same type and have exactly one value */
@@ -353,10 +354,10 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
/* If fill value hasn't been set, allocate space. Of course,
* vlens have to be different... */
- if ((retval = nc4_get_typelen_mem(grp->nc4_info, var->type_info->nc_typeid, 0,
+ if ((retval = nc4_get_typelen_mem(grp->nc4_info, var->type_info->nc_typeid, 0,
&type_size)))
return retval;
-
+
/* Already set a fill value? Now I'll have to free the old
* one. Make up your damn mind, would you? */
if (var->fill_value)
@@ -409,12 +410,11 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
}
else
memcpy(var->fill_value, data, type_size);
-
- /* Mark the var and all its atts as dirty, so they get
- * rewritten. */
- var->dirty = NC_TRUE;
- for (varatt = var->att; varatt; varatt = varatt->l.next)
- varatt->dirty = NC_TRUE;
+
+ /* Indicate that the fill value was changed, if the variable has already
+ * been created in the file, so the dataset gets deleted and re-created. */
+ if (var->created)
+ var->fill_val_changed = NC_TRUE;
}
/* Copy the attribute data, if there is any. VLENs and string
@@ -443,8 +443,8 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
BAIL(retval);
vldata1 = data;
- if (!(att->vldata = malloc(att->len * sizeof(hvl_t))))
- BAIL(NC_ENOMEM);
+ if (!(att->vldata = (nc_vlen_t*)malloc(att->len * sizeof(hvl_t))))
+ BAIL(NC_ENOMEM);
for (i = 0; i < att->len; i++)
{
att->vldata[i].len = vldata1[i].len;
@@ -457,7 +457,7 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
{
LOG((4, "copying array of NC_STRING"));
if (!(att->stdata = malloc(sizeof(char *) * att->len)))
- BAIL(NC_ENOMEM);
+ BAIL(NC_ENOMEM);
for (i = 0; i < att->len; i++)
{
if(NULL != ((char **)data)[i]) {
@@ -483,8 +483,8 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
else
{
/* Data types are like religions, in that one can convert. */
- if ((retval = nc4_convert_type(data, att->data, mem_type, file_type,
- len, &range_error, NULL,
+ if ((retval = nc4_convert_type(data, att->data, mem_type, file_type,
+ len, &range_error, NULL,
(h5->cmode & NC_CLASSIC_MODEL), is_long, 0)))
BAIL(retval);
}
@@ -493,10 +493,14 @@ nc4_put_att(int ncid, NC *nc, int varid, const char *name,
att->dirty = NC_TRUE;
att->created = NC_FALSE;
+ /* Mark attributes on variable dirty, so they get written */
+ if(var)
+ var->attr_dirty = NC_TRUE;
+
exit:
/* If there was an error return it, otherwise return any potential
range error value. If none, return NC_NOERR as usual.*/
- if (retval)
+ if (retval)
return retval;
if (range_error)
return NC_ERANGE;
@@ -526,7 +530,7 @@ NC4_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, size_t *lenp
if (h5->pnetcdf_file)
{
MPI_Offset mpi_len;
- int ret = ncmpi_inq_att(nc->int_ncid, varid, name, xtypep, &mpi_len);
+ int ret = ncmpi_inq_att(nc->int_ncid, varid, name, xtypep, &mpi_len);
if (ret != NC_NOERR)
return ret;
if (lenp)
@@ -539,7 +543,7 @@ NC4_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, size_t *lenp
}
/* Learn an attnum, given a name. */
-int
+int
NC4_inq_attid(int ncid, int varid, const char *name, int *attnump)
{
NC *nc;
@@ -562,7 +566,7 @@ NC4_inq_attid(int ncid, int varid, const char *name, int *attnump)
#endif /* USE_PNETCDF */
/* Handle netcdf-4 files. */
- return nc4_get_att(ncid, nc, varid, name, NULL, NC_UBYTE,
+ return nc4_get_att(ncid, nc, varid, name, NULL, NC_UBYTE,
NULL, attnump, 0, NULL);
}
@@ -576,7 +580,7 @@ NC4_inq_attname(int ncid, int varid, int attnum, char *name)
NC_HDF5_FILE_INFO_T *h5;
int retval = NC_NOERR;
- LOG((2, "nc_inq_attname: ncid 0x%x varid %d attnum %d",
+ LOG((2, "nc_inq_attname: ncid 0x%x varid %d attnum %d",
ncid, varid, attnum));
/* Find metadata. */
@@ -607,11 +611,11 @@ NC4_inq_attname(int ncid, int varid, int attnum, char *name)
/* I think all atts should be named the exact same thing, to avoid
confusion! */
int
-NC4_rename_att(int ncid, int varid, const char *name,
+NC4_rename_att(int ncid, int varid, const char *name,
const char *newname)
{
NC *nc;
- NC_GRP_INFO_T *grp;
+ NC_GRP_INFO_T *grp;
NC_HDF5_FILE_INFO_T *h5;
NC_VAR_INFO_T *var;
NC_ATT_INFO_T *att, *list;
@@ -714,14 +718,14 @@ NC4_rename_att(int ncid, int varid, const char *name,
/* Delete an att. Rub it out. Push the button on it. Liquidate
it. Bump it off. Take it for a one-way ride. Terminate it. Drop the
- bomb on it. You get the idea.
- Ed Hartnett, 10/1/3
+ bomb on it. You get the idea.
+ Ed Hartnett, 10/1/3
*/
int
NC4_del_att(int ncid, int varid, const char *name)
{
NC *nc;
- NC_GRP_INFO_T *grp;
+ NC_GRP_INFO_T *grp;
NC_HDF5_FILE_INFO_T *h5;
NC_ATT_INFO_T *att, *natt;
NC_VAR_INFO_T *var;
@@ -734,7 +738,7 @@ NC4_del_att(int ncid, int varid, const char *name)
LOG((2, "nc_del_att: ncid 0x%x varid %d name %s",
ncid, varid, name));
-
+
/* Find metadata for this file. */
if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5)))
return retval;
@@ -748,7 +752,7 @@ NC4_del_att(int ncid, int varid, const char *name)
#if 0 /*def USE_PNETCDF*/
/* Take care of files created/opened with parallel-netcdf library. */
if (h5->pnetcdf_file)
- return ncmpi_del_att(nc->int_ncid, varid, name);
+ return ncmpi_del_att(nc->int_ncid, varid, name);
#endif /* USE_PNETCDF */
/* If it's not in define mode, forget it. */
@@ -789,13 +793,17 @@ NC4_del_att(int ncid, int varid, const char *name)
break;
/* If att is NULL, we couldn't find the attribute. */
- if (!att)
+ if (!att)
BAIL_QUIET(NC_ENOTATT);
-
+
/* Delete it from the HDF5 file, if it's been created. */
if (att->created)
+ {
+ assert(locid);
+
if(H5Adelete(locid, att->name) < 0)
BAIL(NC_EATTMETA);
+ }
/* Renumber all following attributes. */
for (natt = att->l.next; natt; natt = natt->l.next)
@@ -804,7 +812,7 @@ NC4_del_att(int ncid, int varid, const char *name)
/* Delete this attribute from this list. */
if ((retval = nc4_att_list_del(attlist, att)))
BAIL(retval);
-
+
exit:
if (datasetid > 0) H5Dclose(datasetid);
return retval;
@@ -812,8 +820,8 @@ NC4_del_att(int ncid, int varid, const char *name)
/* Write an attribute with type conversion. */
static int
-nc4_put_att_tc(int ncid, int varid, const char *name, nc_type file_type,
- nc_type mem_type, int mem_type_is_long, size_t len,
+nc4_put_att_tc(int ncid, int varid, const char *name, nc_type file_type,
+ nc_type mem_type, int mem_type_is_long, size_t len,
const void *op)
{
NC *nc;
@@ -827,7 +835,7 @@ nc4_put_att_tc(int ncid, int varid, const char *name, nc_type file_type,
/* The length needs to be positive (cast needed for braindead
systems with signed size_t). */
- if((unsigned long) len > X_INT_MAX)
+ if((unsigned long) len > X_INT_MAX)
return NC_EINVAL;
/* Find metadata. */
@@ -848,26 +856,26 @@ nc4_put_att_tc(int ncid, int varid, const char *name, nc_type file_type,
switch(mem_type)
{
case NC_BYTE:
- return ncmpi_put_att_schar(nc->int_ncid, varid, name,
+ return ncmpi_put_att_schar(nc->int_ncid, varid, name,
file_type, len, op);
case NC_CHAR:
- return ncmpi_put_att_text(nc->int_ncid, varid, name,
+ return ncmpi_put_att_text(nc->int_ncid, varid, name,
len, op);
case NC_SHORT:
- return ncmpi_put_att_short(nc->int_ncid, varid, name,
+ return ncmpi_put_att_short(nc->int_ncid, varid, name,
file_type, len, op);
case NC_INT:
if (mem_type_is_long)
- return ncmpi_put_att_long(nc->int_ncid, varid, name,
+ return ncmpi_put_att_long(nc->int_ncid, varid, name,
file_type, len, op);
else
- return ncmpi_put_att_int(nc->int_ncid, varid, name,
+ return ncmpi_put_att_int(nc->int_ncid, varid, name,
file_type, len, op);
case NC_FLOAT:
- return ncmpi_put_att_float(nc->int_ncid, varid, name,
+ return ncmpi_put_att_float(nc->int_ncid, varid, name,
file_type, len, op);
case NC_DOUBLE:
- return ncmpi_put_att_double(nc->int_ncid, varid, name,
+ return ncmpi_put_att_double(nc->int_ncid, varid, name,
file_type, len, op);
case NC_NAT:
default:
@@ -877,20 +885,20 @@ nc4_put_att_tc(int ncid, int varid, const char *name, nc_type file_type,
#endif /* USE_PNETCDF */
/* Otherwise, handle things the netcdf-4 way. */
- return nc4_put_att(ncid, nc, varid, name, file_type, mem_type, len,
+ return nc4_put_att(ncid, nc, varid, name, file_type, mem_type, len,
mem_type_is_long, op);
}
/* Read an attribute of any type, with type conversion. This may be
* called by any of the nc_get_att_* functions. */
int
-nc4_get_att_tc(int ncid, int varid, const char *name, nc_type mem_type,
+nc4_get_att_tc(int ncid, int varid, const char *name, nc_type mem_type,
int mem_type_is_long, void *ip)
{
NC *nc;
NC_HDF5_FILE_INFO_T *h5;
- LOG((3, "nc4_get_att_tc: ncid 0x%x varid %d name %s mem_type %d",
+ LOG((3, "nc4_get_att_tc: ncid 0x%x varid %d name %s mem_type %d",
ncid, varid, name, mem_type));
/* Find metadata. */
@@ -932,12 +940,12 @@ nc4_get_att_tc(int ncid, int varid, const char *name, nc_type mem_type,
}
#endif /* USE_PNETCDF */
- return nc4_get_att(ncid, nc, varid, name, NULL, mem_type,
+ return nc4_get_att(ncid, nc, varid, name, NULL, mem_type,
NULL, NULL, mem_type_is_long, ip);
}
int
-NC4_put_att(int ncid, int varid, const char *name, nc_type xtype,
+NC4_put_att(int ncid, int varid, const char *name, nc_type xtype,
size_t nelems, const void *value, nc_type memtype)
{
return nc4_put_att_tc(ncid, varid, name, xtype, memtype, 0, nelems, value);
diff --git a/libsrc4/nc4dim.c b/libsrc4/nc4dim.c
index d971b83..c5fc3d6 100644
--- a/libsrc4/nc4dim.c
+++ b/libsrc4/nc4dim.c
@@ -268,7 +268,7 @@ NC4_rename_dim(int ncid, int dimid, const char *name)
NC *nc;
NC_GRP_INFO_T *grp;
NC_HDF5_FILE_INFO_T *h5;
- NC_DIM_INFO_T *dim;
+ NC_DIM_INFO_T *dim, *tmp_dim;
char norm_name[NC_MAX_NAME + 1];
int retval;
@@ -299,17 +299,18 @@ NC4_rename_dim(int ncid, int dimid, const char *name)
if ((retval = nc4_check_name(name, norm_name)))
return retval;
- /* Make sure the new name is not already in use in this group. */
+ /* Check if name is in use, and retain a pointer to the correct dim */
+ tmp_dim = NULL;
for (dim = grp->dim; dim; dim = dim->l.next)
+ {
if (!strncmp(dim->name, norm_name, NC_MAX_NAME))
return NC_ENAMEINUSE;
-
- /* Find the dim. */
- for (dim = grp->dim; dim; dim = dim->l.next)
if (dim->dimid == dimid)
- break;
- if (!dim)
+ tmp_dim = dim;
+ }
+ if (!tmp_dim)
return NC_EBADDIM;
+ dim = tmp_dim;
/* Check for renaming dimension w/o variable */
if (dim->hdf_dimscaleid)
diff --git a/libsrc4/nc4file.c b/libsrc4/nc4file.c
index f2aaf9b..364a773 100644
--- a/libsrc4/nc4file.c
+++ b/libsrc4/nc4file.c
@@ -1,11 +1,12 @@
-/** \file
+/** \file
The netCDF-4 file functions.
This file is part of netcdf-4, a netCDF-like interface for HDF5, or
a HDF5 backend for netCDF, depending on your point of view.
Copyright 2003, University Corporation for Atmospheric Research. See
-COPYRIGHT file for copying and redistribution conditions.
+COPYRIGHT file for copying and redistribution conditions.
+
*/
#include "config.h"
@@ -42,7 +43,11 @@ extern int num_spaces;
#define DIMENSION_LIST "DIMENSION_LIST"
#define NAME "NAME"
-/* Struct to track information about objects in a group, for nc4_rec_read_metadata() */
+/*! Struct to track information about objects in a group, for nc4_rec_read_metadata()
+
+ \internal
+
+*/
typedef struct NC4_rec_read_metadata_obj_info
{
hid_t oid; /* HDF5 object ID */
@@ -51,8 +56,12 @@ typedef struct NC4_rec_read_metadata_obj_info
struct NC4_rec_read_metadata_obj_info *next; /* Pointer to next node in list */
} NC4_rec_read_metadata_obj_info_t;
-/* User data struct for call to H5Literate() in nc4_rec_read_metadata() */
-/* Tracks the groups, named datatypes and datasets in the group, for later use */
+/*! User data struct for call to H5Literate() in nc4_rec_read_metadata()
+
+\internal
+
+Tracks the groups, named datatypes and datasets in the group, for later use.
+*/
typedef struct NC4_rec_read_metadata_ud
{
NC4_rec_read_metadata_obj_info_t *grps_head, *grps_tail; /* Pointers to head & tail of list of groups */
@@ -86,9 +95,9 @@ static const nc_type nc_type_constant_g[NUM_TYPES] = {NC_CHAR, NC_BYTE, NC_SHORT
NC_INT, NC_FLOAT, NC_DOUBLE, NC_UBYTE,
NC_USHORT, NC_UINT, NC_INT64,
NC_UINT64, NC_STRING};
-static const int nc_type_size_g[NUM_TYPES] = {sizeof(char), sizeof(char), sizeof(short),
+static const int nc_type_size_g[NUM_TYPES] = {sizeof(char), sizeof(char), sizeof(short),
sizeof(int), sizeof(float), sizeof(double), sizeof(unsigned char),
- sizeof(unsigned short), sizeof(unsigned int), sizeof(long long),
+ sizeof(unsigned short), sizeof(unsigned int), sizeof(long long),
sizeof(unsigned long long), sizeof(char *)};
/* Set chunk cache size. Only affects files opened/created *after* it
@@ -114,7 +123,7 @@ nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp)
if (nelemsp)
*nelemsp = nc4_chunk_cache_nelems;
-
+
if (preemptionp)
*preemptionp = nc4_chunk_cache_preemption;
return NC_NOERR;
@@ -161,7 +170,7 @@ nc4typelen(nc_type type)
case NC_INT:
case NC_UINT:
return 4;
- case NC_DOUBLE:
+ case NC_DOUBLE:
case NC_INT64:
case NC_UINT64:
return 8;
@@ -174,16 +183,16 @@ nc4typelen(nc_type type)
#define NC_HDF5_FILE 1
#define NC_HDF4_FILE 2
static int
-nc_check_for_hdf(const char *path, int use_parallel, MPI_Comm comm, MPI_Info info,
+nc_check_for_hdf(const char *path, int use_parallel, MPI_Comm comm, MPI_Info info,
int *hdf_file)
{
char blob[MAGIC_NUMBER_LEN];
-
+
assert(hdf_file && path);
LOG((3, "%s: path %s", __func__, path));
/* HDF5 function handles possible user block at beginning of file */
- if(H5Fis_hdf5(path))
+ if(H5Fis_hdf5(path))
{
*hdf_file = NC_HDF5_FILE;
} else {
@@ -217,7 +226,7 @@ nc_check_for_hdf(const char *path, int use_parallel, MPI_Comm comm, MPI_Info inf
}
fclose(fp);
}
-
+
/* Check for HDF4. */
if (!strncmp(blob, "\016\003\023\001", MAGIC_NUMBER_LEN))
*hdf_file = NC_HDF4_FILE;
@@ -226,12 +235,12 @@ nc_check_for_hdf(const char *path, int use_parallel, MPI_Comm comm, MPI_Info inf
}
return NC_NOERR;
}
-
+
/* Create a HDF5/netcdf-4 file. */
static int
nc4_create_file(const char *path, int cmode, MPI_Comm comm, MPI_Info info,
- NC *nc)
+ NC *nc)
{
hid_t fcpl_id, fapl_id = -1;
unsigned flags;
@@ -268,7 +277,7 @@ nc4_create_file(const char *path, int cmode, MPI_Comm comm, MPI_Info info,
fclose(fp);
return NC_EEXIST;
}
-
+
/* Add necessary structs to hold netcdf-4 file data. */
if ((retval = nc4_nc4f_list_add(nc, path, (NC_WRITE | cmode))))
BAIL(retval);
@@ -345,13 +354,13 @@ nc4_create_file(const char *path, int cmode, MPI_Comm comm, MPI_Info info,
if (H5Pset_fapl_core(fapl_id, 4096, persist))
BAIL(NC_EDISKLESS);
}
- if (H5Pset_cache(fapl_id, 0, nc4_chunk_cache_nelems, nc4_chunk_cache_size,
+ if (H5Pset_cache(fapl_id, 0, nc4_chunk_cache_nelems, nc4_chunk_cache_size,
nc4_chunk_cache_preemption) < 0)
BAIL(NC_EHDFERR);
- LOG((4, "%s: set HDF raw chunk cache to size %d nelems %d preemption %f",
+ LOG((4, "%s: set HDF raw chunk cache to size %d nelems %d preemption %f",
__func__, nc4_chunk_cache_size, nc4_chunk_cache_nelems, nc4_chunk_cache_preemption));
#endif /* USE_PARALLEL */
-
+
if (H5Pset_libver_bounds(fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
BAIL(NC_EHDFERR);
@@ -377,13 +386,13 @@ nc4_create_file(const char *path, int cmode, MPI_Comm comm, MPI_Info info,
BAIL(NC_EHDFERR);
/* Create the file. */
- if ((nc4_info->hdfid = H5Fcreate(path, flags, fcpl_id, fapl_id)) < 0)
+ if ((nc4_info->hdfid = H5Fcreate(path, flags, fcpl_id, fapl_id)) < 0)
/*Change the return error from NC_EFILEMETADATA to
System error EACCES because that is the more likely problem */
BAIL(EACCES);
/* Open the root group. */
- if ((nc4_info->root_grp->hdf_grpid = H5Gopen2(nc4_info->hdfid, "/",
+ if ((nc4_info->root_grp->hdf_grpid = H5Gopen2(nc4_info->hdfid, "/",
H5P_DEFAULT)) < 0)
BAIL(NC_EFILEMETA);
@@ -431,24 +440,24 @@ layer. Ignored if NULL.
\return NC_INVAL Invalid input (check cmode).
*/
int
-NC4_create(const char* path, int cmode, size_t initialsz, int basepe,
+NC4_create(const char* path, int cmode, size_t initialsz, int basepe,
size_t *chunksizehintp, int use_parallel, void *mpidata,
NC_Dispatch *dispatch, NC* nc_file)
{
- MPI_Comm comm = MPI_COMM_WORLD;
- MPI_Info info = MPI_INFO_NULL;
+ MPI_Comm comm = MPI_COMM_WORLD;
+ MPI_Info info = MPI_INFO_NULL;
int res;
assert(nc_file && path);
LOG((1, "%s: path %s cmode 0x%x comm %d info %d",
__func__, path, cmode, comm, info));
-
+
#ifdef USE_PARALLEL
- if (mpidata)
- {
- comm = ((NC_MPI_INFO *)mpidata)->comm;
- info = ((NC_MPI_INFO *)mpidata)->info;
+ if (mpidata)
+ {
+ comm = ((NC_MPI_INFO *)mpidata)->comm;
+ info = ((NC_MPI_INFO *)mpidata)->info;
}
#endif /* USE_PARALLEL */
@@ -506,7 +515,7 @@ NC4_create(const char* path, int cmode, size_t initialsz, int basepe,
assert(nc4_info);
nc4_info->pnetcdf_file++;
- res = ncmpi_create(comm, path, cmode, info, &(nc_file->int_ncid));
+ res = ncmpi_create(comm, path, cmode, info, &(nc_file->int_ncid));
}
#endif /* USE_PNETCDF */
@@ -519,8 +528,8 @@ NC4_create(const char* path, int cmode, size_t initialsz, int basepe,
* dimension without a variable - that is, a coordinate dimension
* which does not have any coordinate data. */
static int
-read_scale(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
- const H5G_stat_t *statbuf, hsize_t scale_size, hsize_t max_scale_size,
+read_scale(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
+ const H5G_stat_t *statbuf, hsize_t scale_size, hsize_t max_scale_size,
NC_DIM_INFO_T **dim)
{
NC_DIM_INFO_T *new_dim; /* Dimension added to group */
@@ -543,7 +552,7 @@ read_scale(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
BAIL(NC_EHDFERR);
if (attr_exists)
{
- if ((attid = H5Aopen_by_name(datasetid, ".", NC_DIMID_ATT_NAME,
+ if ((attid = H5Aopen_by_name(datasetid, ".", NC_DIMID_ATT_NAME,
H5P_DEFAULT, H5P_DEFAULT)) < 0)
BAIL(NC_EHDFERR);
@@ -587,7 +596,7 @@ read_scale(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
* error, just move on, there's no NAME.) */
if (H5DSget_scale_name(datasetid, dimscale_name_att, NC_MAX_NAME) >= 0)
{
- if (!strncmp(dimscale_name_att, DIM_WITHOUT_VARIABLE,
+ if (!strncmp(dimscale_name_att, DIM_WITHOUT_VARIABLE,
strlen(DIM_WITHOUT_VARIABLE)))
{
if (new_dim->unlimited)
@@ -656,7 +665,7 @@ read_coord_dimids(NC_VAR_INFO_T *var)
if (!ret && H5Aread(coord_attid, coord_att_typeid, var->dimids) < 0) ret++;
LOG((4, "dimscale %s is multidimensional and has coords", var->name));
-
+
/* Set my HDF5 IDs free! */
if (spaceid >= 0 && H5Sclose(spaceid) < 0) ret++;
#ifdef EXTRA_TESTS
@@ -669,8 +678,8 @@ read_coord_dimids(NC_VAR_INFO_T *var)
/* This function is called when reading a file's metadata for each
* dimension scale attached to a variable.*/
-static herr_t
-dimscale_visitor(hid_t did, unsigned dim, hid_t dsid,
+static herr_t
+dimscale_visitor(hid_t did, unsigned dim, hid_t dsid,
void *dimscale_hdf5_objids)
{
H5G_stat_t statbuf;
@@ -689,7 +698,7 @@ dimscale_visitor(hid_t did, unsigned dim, hid_t dsid,
/* Given an HDF5 type, set a pointer to netcdf type. */
static int
-get_netcdf_type(NC_HDF5_FILE_INFO_T *h5, hid_t native_typeid,
+get_netcdf_type(NC_HDF5_FILE_INFO_T *h5, hid_t native_typeid,
nc_type *xtype)
{
NC_TYPE_INFO_T *type;
@@ -796,7 +805,7 @@ get_netcdf_type(NC_HDF5_FILE_INFO_T *h5, hid_t native_typeid,
*xtype = type->nc_typeid;
return NC_NOERR;
}
-
+
*xtype = NC_NAT;
return NC_EBADTYPID;
}
@@ -835,14 +844,14 @@ get_type_info2(NC_HDF5_FILE_INFO_T *h5, hid_t datasetid,
h5_native_type_constant_g[9] = H5T_NATIVE_LLONG;
h5_native_type_constant_g[10] = H5T_NATIVE_ULLONG;
}
-
+
/* Get the HDF5 typeid - we'll need it later. */
if ((hdf_typeid = H5Dget_type(datasetid)) < 0)
return NC_EHDFERR;
/* Get the native typeid. Will be equivalent to hdf_typeid when
* creating but not necessarily when reading, a variable. */
- if ((native_typeid = H5Tget_native_type(hdf_typeid, H5T_DIR_DEFAULT)) < 0)
+ if ((native_typeid = H5Tget_native_type(hdf_typeid, H5T_DIR_DEFAULT)) < 0)
return NC_EHDFERR;
/* Is this type an integer, string, compound, or what? */
@@ -889,7 +898,7 @@ get_type_info2(NC_HDF5_FILE_INFO_T *h5, hid_t datasetid,
/* Find out about endianness. */
if (class == H5T_INTEGER)
{
- if ((order = H5Tget_order(hdf_typeid)) < 0)
+ if ((order = H5Tget_order(hdf_typeid)) < 0)
return NC_EHDFERR;
/* Copy this into the type_info struct. */
@@ -930,9 +939,9 @@ get_type_info2(NC_HDF5_FILE_INFO_T *h5, hid_t datasetid,
/* The type entry in the array of user-defined types already has
* an open data typeid (and native typeid), so close the ones we
* opened above. */
- if (H5Tclose(native_typeid) < 0)
+ if (H5Tclose(native_typeid) < 0)
return NC_EHDFERR;
- if (H5Tclose(hdf_typeid) < 0)
+ if (H5Tclose(hdf_typeid) < 0)
return NC_EHDFERR;
if (type)
@@ -943,7 +952,7 @@ get_type_info2(NC_HDF5_FILE_INFO_T *h5, hid_t datasetid,
}
/* Read an attribute. */
-static int
+static int
read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
{
hid_t spaceid = 0, file_typeid = 0;
@@ -952,7 +961,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
size_t type_size;
int att_ndims;
hssize_t att_npoints;
- H5T_class_t att_class;
+ H5T_class_t att_class;
int fixed_len_string = 0;
size_t fixed_size = 0;
@@ -963,7 +972,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
/* Get type of attribute in file. */
if ((file_typeid = H5Aget_type(attid)) < 0)
return NC_EATTMETA;
- if ((att->native_hdf_typeid = H5Tget_native_type(file_typeid, H5T_DIR_DEFAULT)) < 0)
+ if ((att->native_hdf_typeid = H5Tget_native_type(file_typeid, H5T_DIR_DEFAULT)) < 0)
BAIL(NC_EHDFERR);
if ((att_class = H5Tget_class(att->native_hdf_typeid)) < 0)
BAIL(NC_EATTMETA);
@@ -979,7 +988,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
/* Get len. */
if ((spaceid = H5Aget_space(attid)) < 0)
- BAIL(NC_EATTMETA);
+ BAIL(NC_EATTMETA);
#ifdef EXTRA_TESTS
num_spaces++;
#endif
@@ -998,7 +1007,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
{
/* NC_CHAR attributes are written as a scalar in HDF5, of type
* H5T_C_S1, of variable length. */
- if (att_ndims == 0)
+ if (att_ndims == 0)
{
if (!(dims[0] = H5Tget_size(file_typeid)))
BAIL(NC_EATTMETA);
@@ -1009,7 +1018,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
att->nc_typeid = NC_STRING;
dims[0] = att_npoints;
}
- }
+ }
else
{
H5S_class_t space_class;
@@ -1036,7 +1045,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
BAIL(NC_EATTMETA);
}
}
-
+
/* Tell the user what the length if this attribute is. */
att->len = dims[0];
@@ -1081,7 +1090,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
/* Read the fixed-len strings as one big block. */
if (H5Aread(attid, att->native_hdf_typeid, contig_buf) < 0)
BAIL(NC_EATTMETA);
-
+
/* Copy strings, one at a time, into their new home. Alloc
space for each string. The user will later free this
space with nc_free_string. */
@@ -1093,7 +1102,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
strncpy(att->stdata[i], cur, fixed_size);
cur += fixed_size;
}
-
+
/* Free contiguous memory buffer. */
free(contig_buf);
}
@@ -1120,7 +1129,7 @@ read_hdf5_att(NC_GRP_INFO_T *grp, hid_t attid, NC_ATT_INFO_T *att)
#ifdef EXTRA_TESTS
num_spaces--;
#endif
-
+
return NC_NOERR;
exit:
@@ -1150,9 +1159,9 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
LOG((4, "%s: type_name %s grp->name %s", __func__, type_name, grp->name));
/* What is the native type for this platform? */
- if ((native_typeid = H5Tget_native_type(hdf_typeid, H5T_DIR_DEFAULT)) < 0)
+ if ((native_typeid = H5Tget_native_type(hdf_typeid, H5T_DIR_DEFAULT)) < 0)
return NC_EHDFERR;
-
+
/* What is the size of this type on this platform. */
if (!(type_size = H5Tget_size(native_typeid)))
return NC_EHDFERR;
@@ -1184,7 +1193,7 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
char* member_name = NULL;
#ifdef JNA
char jna[1001];
-#endif
+#endif
type->nc_type_class = NC_COMPOUND;
@@ -1199,13 +1208,13 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
H5T_class_t mem_class;
nc_type member_xtype;
-
+
/* Get the typeid and native typeid of this member of the
* compound type. */
if ((member_hdf_typeid = H5Tget_member_type(type->native_hdf_typeid, m)) < 0)
return NC_EHDFERR;
- if ((member_native_typeid = H5Tget_native_type(member_hdf_typeid, H5T_DIR_DEFAULT)) < 0)
+ if ((member_native_typeid = H5Tget_native_type(member_hdf_typeid, H5T_DIR_DEFAULT)) < 0)
return NC_EHDFERR;
/* Get the name of the member.*/
@@ -1217,7 +1226,7 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
#ifdef JNA
else {
strncpy(jna,member_name,1000);
- member_name = jna;
+ member_name = jna;
}
#endif
@@ -1245,35 +1254,35 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
dim_size[d] = dims[d];
/* What is the netCDF typeid of this member? */
- if ((retval = get_netcdf_type(grp->nc4_info, H5Tget_super(member_hdf_typeid),
+ if ((retval = get_netcdf_type(grp->nc4_info, H5Tget_super(member_hdf_typeid),
&member_xtype)))
break;
/* Add this member to our list of fields in this compound type. */
- if ((retval = nc4_field_list_add(&type->u.c.field, type->u.c.num_fields++, member_name,
- member_offset, H5Tget_super(member_hdf_typeid),
- H5Tget_super(member_native_typeid),
+ if ((retval = nc4_field_list_add(&type->u.c.field, type->u.c.num_fields++, member_name,
+ member_offset, H5Tget_super(member_hdf_typeid),
+ H5Tget_super(member_native_typeid),
member_xtype, ndims, dim_size)))
break;
}
else
{
/* What is the netCDF typeid of this member? */
- if ((retval = get_netcdf_type(grp->nc4_info, member_native_typeid,
+ if ((retval = get_netcdf_type(grp->nc4_info, member_native_typeid,
&member_xtype)))
break;
/* Add this member to our list of fields in this compound type. */
- if ((retval = nc4_field_list_add(&type->u.c.field, type->u.c.num_fields++, member_name,
- member_offset, member_hdf_typeid, member_native_typeid,
+ if ((retval = nc4_field_list_add(&type->u.c.field, type->u.c.num_fields++, member_name,
+ member_offset, member_hdf_typeid, member_native_typeid,
member_xtype, 0, NULL)))
break;
- }
-
+ }
+
#ifndef JNA
/* Free the member name (which HDF5 allocated for us). */
- if(member_name != NULL) free(member_name);
-#endif
+ if(member_name != NULL) free(member_name);
+#endif
member_name = NULL;
}
#ifndef JNA
@@ -1314,10 +1323,10 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
return NC_EHDFERR;
/* What is the netcdf corresponding type. */
- if ((retval = get_netcdf_type(grp->nc4_info, base_hdf_typeid,
+ if ((retval = get_netcdf_type(grp->nc4_info, base_hdf_typeid,
&base_nc_type)))
return retval;
- LOG((5, "base_hdf_typeid 0x%x type_size %d base_nc_type %d",
+ LOG((5, "base_hdf_typeid 0x%x type_size %d base_nc_type %d",
base_hdf_typeid, type_size, base_nc_type));
/* Remember the base types for this vlen */
@@ -1340,7 +1349,7 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
char *member_name = NULL;
#ifdef JNA
char jna[1001];
-#endif
+#endif
type->nc_type_class = NC_ENUM;
@@ -1352,10 +1361,10 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
if (!(type_size = H5Tget_size(base_hdf_typeid)))
return NC_EHDFERR;
/* What is the netcdf corresponding type. */
- if ((retval = get_netcdf_type(grp->nc4_info, base_hdf_typeid,
+ if ((retval = get_netcdf_type(grp->nc4_info, base_hdf_typeid,
&base_nc_type)))
return retval;
- LOG((5, "base_hdf_typeid 0x%x type_size %d base_nc_type %d",
+ LOG((5, "base_hdf_typeid 0x%x type_size %d base_nc_type %d",
base_hdf_typeid, type_size, base_nc_type));
/* Remember the base types for this enum */
@@ -1363,7 +1372,7 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
type->u.e.base_hdf_typeid = base_hdf_typeid;
/* Find out how many member are in the enum. */
- if ((type->u.e.num_members = H5Tget_nmembers(hdf_typeid)) < 0)
+ if ((type->u.e.num_members = H5Tget_nmembers(hdf_typeid)) < 0)
return NC_EHDFERR;
/* Allocate space for one value. */
@@ -1378,11 +1387,11 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
if (!(member_name = H5Tget_member_name(hdf_typeid, i)))
{
retval = NC_EHDFERR;
- break;
+ break;
}
#ifdef JNA
strncpy(jna,member_name,1000);
- member_name = jna;
+ member_name = jna;
#endif
if (strlen(member_name) > NC_MAX_NAME)
@@ -1390,14 +1399,14 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
retval = NC_EBADNAME;
break;
}
- if (H5Tget_member_value(hdf_typeid, i, value) < 0)
+ if (H5Tget_member_value(hdf_typeid, i, value) < 0)
{
retval = NC_EHDFERR;
break;
}
/* Insert new field into this type's list of fields. */
- if ((retval = nc4_enum_member_add(&type->u.e.enum_member, type->size,
+ if ((retval = nc4_enum_member_add(&type->u.e.enum_member, type->size,
member_name, value)))
{
break;
@@ -1405,8 +1414,8 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
#ifndef JNA
/* Free the member name (which HDF5 allocated for us). */
- if(member_name != NULL) free(member_name);
-#endif
+ if(member_name != NULL) free(member_name);
+#endif
member_name = NULL;
}
@@ -1432,7 +1441,7 @@ read_type(NC_GRP_INFO_T *grp, hid_t hdf_typeid, char *type_name)
* file. This function reads in all the metadata about the var,
* including the attributes. */
static int
-read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
+read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
size_t ndims, NC_DIM_INFO_T *dim)
{
NC_VAR_INFO_T *var = NULL;
@@ -1464,7 +1473,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
/* Add a variable to the end of the group's var list. */
if ((retval = nc4_var_list_add(&grp->var, &var)))
BAIL(retval);
-
+
/* Fill in what we already know. */
var->hdf_datasetid = datasetid;
H5Iinc_ref(var->hdf_datasetid); /* Increment number of objects using ID */
@@ -1491,7 +1500,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
#endif
/* Learn about current chunk cache settings. */
- if ((H5Pget_chunk_cache(access_pid, &(var->chunk_cache_nelems),
+ if ((H5Pget_chunk_cache(access_pid, &(var->chunk_cache_nelems),
&(var->chunk_cache_size), &rdcc_w0)) < 0)
BAIL(NC_EHDFERR);
var->chunk_cache_preemption = rdcc_w0;
@@ -1526,7 +1535,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
/* Find out what filters are applied to this HDF5 dataset,
* fletcher32, deflate, and/or shuffle. All other filters are
* ignored. */
- if ((propid = H5Dget_create_plist(datasetid)) < 0)
+ if ((propid = H5Dget_create_plist(datasetid)) < 0)
BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_plists++;
@@ -1549,11 +1558,11 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
/* The possible values of filter (which is just an int) can be
* found in H5Zpublic.h. */
- if ((num_filters = H5Pget_nfilters(propid)) < 0)
+ if ((num_filters = H5Pget_nfilters(propid)) < 0)
BAIL(NC_EHDFERR);
for (f = 0; f < num_filters; f++)
{
- if ((filter = H5Pget_filter2(propid, f, NULL, &cd_nelems,
+ if ((filter = H5Pget_filter2(propid, f, NULL, &cd_nelems,
cd_values, 0, NULL, NULL)) < 0)
BAIL(NC_EHDFERR);
switch (filter)
@@ -1586,9 +1595,9 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
break;
}
}
-
+
/* Learn all about the type of this variable. */
- if ((retval = get_type_info2(grp->nc4_info, datasetid,
+ if ((retval = get_type_info2(grp->nc4_info, datasetid,
&var->type_info)))
BAIL(retval);
@@ -1622,9 +1631,9 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
BAIL(NC_ENOMEM);
}
}
-
+
/* Get the fill value from the HDF5 property lust. */
- if (H5Pget_fill_value(propid, var->type_info->native_hdf_typeid,
+ if (H5Pget_fill_value(propid, var->type_info->native_hdf_typeid,
var->fill_value) < 0)
BAIL(NC_EHDFERR);
}
@@ -1656,7 +1665,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
* coordinate variable) */
else
{
- int num_scales = 0;
+ int num_scales = 0;
/* Find out how many scales are attached to this
* dataset. H5DSget_num_scales returns an error if there are no
@@ -1670,7 +1679,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
/* Allocate space to remember whether the dimscale has been attached
* for each dimension. */
if (NULL == (var->dimscale_attached = calloc(ndims, sizeof(nc_bool_t))))
- BAIL(NC_ENOMEM);
+ BAIL(NC_ENOMEM);
/* Store id information allowing us to match hdf5
* dimscales to netcdf dimensions. */
@@ -1685,7 +1694,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
}
}
}
-
+
/* Now read all the attributes of this variable, ignoring the
ones that hold HDF5 dimension scale information. */
if ((natts = H5Aget_num_attrs(var->hdf_datasetid)) < 0)
@@ -1705,7 +1714,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
BAIL(NC_EATTMETA);
LOG((4, "%s:: a %d att_name %s", __func__, a, att_name));
- /* Should we ignore this attribute? */
+ /* Should we ignore this attribute? */
if (strcmp(att_name, REFERENCE_LIST) &&
strcmp(att_name, CLASS) &&
strcmp(att_name, DIMENSION_LIST) &&
@@ -1716,12 +1725,12 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
/* Add to the end of the list of atts for this var. */
if ((retval = nc4_att_list_add(&var->att, &att)))
BAIL(retval);
-
+
/* Fill in the information we know. */
att->attnum = var->natts++;
if (!(att->name = strdup(att_name)))
BAIL(NC_ENOMEM);
-
+
/* Read the rest of the info about the att,
* including its values. */
if ((retval = read_hdf5_att(grp, attid, att)))
@@ -1735,7 +1744,7 @@ read_var(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
else
BAIL(retval);
}
-
+
att->created = NC_TRUE;
} /* endif not HDF5 att */
} /* next attribute */
@@ -1846,7 +1855,7 @@ read_dataset(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
NC_DIM_INFO_T *dim = NULL; /* Dimension created for scales */
hid_t spaceid = 0;
int ndims;
- int is_scale = 0;
+ htri_t is_scale;
int retval = NC_NOERR;
/* Get the dimension information for this dataset. */
@@ -1882,8 +1891,8 @@ read_dataset(NC_GRP_INFO_T *grp, hid_t datasetid, const char *obj_name,
if (NULL == dim || (dim && !dim->hdf_dimscaleid))
if ((retval = read_var(grp, datasetid, obj_name, ndims, dim)))
BAIL(retval);
-
-exit:
+
+exit:
if (spaceid && H5Sclose(spaceid) <0)
BAIL2(retval);
#ifdef EXTRA_TESTS
@@ -1934,15 +1943,15 @@ nc4_rec_read_metadata_cb(hid_t grpid, const char *name, const H5L_info_t *info,
memset(&oinfo, 0, sizeof(oinfo));
/* Open this critter. */
- if ((oinfo.oid = H5Oopen(grpid, name, H5P_DEFAULT)) < 0)
+ if ((oinfo.oid = H5Oopen(grpid, name, H5P_DEFAULT)) < 0)
BAIL(H5_ITER_ERROR);
-
+
/* Get info about the object.*/
if (H5Gget_objinfo(oinfo.oid, ".", 1, &oinfo.statbuf) < 0)
BAIL(H5_ITER_ERROR);
strncpy(oinfo.oname, name, NC_MAX_NAME);
-
+
/* Add object to list, for later */
switch(oinfo.statbuf.type)
{
@@ -2037,13 +2046,13 @@ nc4_rec_read_metadata(NC_GRP_INFO_T *grp)
{
if (grp->parent)
{
- if ((grp->hdf_grpid = H5Gopen2(grp->parent->hdf_grpid,
+ if ((grp->hdf_grpid = H5Gopen2(grp->parent->hdf_grpid,
grp->name, H5P_DEFAULT)) < 0)
BAIL(NC_EHDFERR);
}
else
{
- if ((grp->hdf_grpid = H5Gopen2(grp->nc4_info->hdfid,
+ if ((grp->hdf_grpid = H5Gopen2(grp->nc4_info->hdfid,
"/", H5P_DEFAULT)) < 0)
BAIL(NC_EHDFERR);
}
@@ -2052,10 +2061,10 @@ nc4_rec_read_metadata(NC_GRP_INFO_T *grp)
/* Get the group creation flags, to check for creation ordering */
pid = H5Gget_create_plist(grp->hdf_grpid);
- H5Pget_link_creation_order(pid, &crt_order_flags);
+ H5Pget_link_creation_order(pid, &crt_order_flags);
if (H5Pclose(pid) < 0)
BAIL(NC_EHDFERR);
-
+
/* Set the iteration index to use */
if (crt_order_flags & H5P_CRT_ORDER_TRACKED)
iter_index = H5_INDEX_CRT_ORDER;
@@ -2090,7 +2099,7 @@ nc4_rec_read_metadata(NC_GRP_INFO_T *grp)
NC_HDF5_FILE_INFO_T *h5 = grp->nc4_info;
/* Add group to file's hierarchy */
- if ((retval = nc4_grp_list_add(&(grp->children), h5->next_nc_grpid++,
+ if ((retval = nc4_grp_list_add(&(grp->children), h5->next_nc_grpid++,
grp, grp->nc4_info->controller, oinfo->oname, &child_grp)))
BAIL(retval);
@@ -2110,7 +2119,7 @@ nc4_rec_read_metadata(NC_GRP_INFO_T *grp)
/* Scan the group for global (i.e. group-level) attributes. */
if ((retval = read_grp_atts(grp)))
BAIL(retval);
-
+
exit:
/* Clean up local information on error, if anything remains */
if (retval)
@@ -2138,7 +2147,7 @@ nc4_open_file(const char *path, int mode, MPI_Comm comm,
MPI_Info info, NC *nc)
{
hid_t fapl_id = H5P_DEFAULT;
- unsigned flags = (mode & NC_WRITE) ?
+ unsigned flags = (mode & NC_WRITE) ?
H5F_ACC_RDWR : H5F_ACC_RDONLY;
int retval;
NC_HDF5_FILE_INFO_T* nc4_info = NULL;
@@ -2158,7 +2167,7 @@ nc4_open_file(const char *path, int mode, MPI_Comm comm,
BAIL(retval);
nc4_info = NC4_DATA(nc);
assert(nc4_info && nc4_info->root_grp);
-
+
/* Need this access plist to control how HDF5 handles open onjects
* on file close. (Setting H5F_CLOSE_SEMI will cause H5Fclose to
* fail if there are any open objects in the file. */
@@ -2166,9 +2175,9 @@ nc4_open_file(const char *path, int mode, MPI_Comm comm,
BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_plists++;
-#endif
+#endif
#ifdef EXTRA_TESTS
- if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_SEMI))
+ if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_SEMI))
BAIL(NC_EHDFERR);
#else
if (H5Pset_fclose_degree(fapl_id, H5F_CLOSE_STRONG))
@@ -2220,13 +2229,13 @@ nc4_open_file(const char *path, int mode, MPI_Comm comm,
}
}
#else /* only set cache for non-parallel. */
- if (H5Pset_cache(fapl_id, 0, nc4_chunk_cache_nelems, nc4_chunk_cache_size,
+ if (H5Pset_cache(fapl_id, 0, nc4_chunk_cache_nelems, nc4_chunk_cache_size,
nc4_chunk_cache_preemption) < 0)
BAIL(NC_EHDFERR);
- LOG((4, "%s: set HDF raw chunk cache to size %d nelems %d preemption %f",
+ LOG((4, "%s: set HDF raw chunk cache to size %d nelems %d preemption %f",
__func__, nc4_chunk_cache_size, nc4_chunk_cache_nelems, nc4_chunk_cache_preemption));
#endif /* USE_PARALLEL */
-
+
/* The NetCDF-3.x prototype contains an mode option NC_SHARE for
multiple processes accessing the dataset concurrently. As there
is no HDF5 equivalent, NC_SHARE is treated as NC_NOWRITE. */
@@ -2251,11 +2260,11 @@ nc4_open_file(const char *path, int mode, MPI_Comm comm,
#ifdef LOGGING
/* This will print out the names, types, lens, etc of the vars and
- atts in the file, if the logging level is 2 or greater. */
+ atts in the file, if the logging level is 2 or greater. */
log_metadata_nc(nc);
#endif
- /* Close the property list. */
+ /* Close the property list. */
if (H5Pclose(fapl_id) < 0)
BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
@@ -2279,9 +2288,9 @@ exit:
}
/* Given an HDF4 type, set a pointer to netcdf type. */
-#ifdef USE_HDF4
+#ifdef USE_HDF4
static int
-get_netcdf_type_from_hdf4(NC_HDF5_FILE_INFO_T *h5, int32 hdf4_typeid,
+get_netcdf_type_from_hdf4(NC_HDF5_FILE_INFO_T *h5, int32 hdf4_typeid,
nc_type *xtype, NC_TYPE_INFO_T *type_info)
{
int t;
@@ -2405,9 +2414,9 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
/* Learn about this attribute. */
if (!(att->name = malloc(NC_MAX_HDF4_NAME * sizeof(char))))
return NC_ENOMEM;
- if (SDattrinfo(h5->sdid, a, att->name, &att_data_type, &att_count))
+ if (SDattrinfo(h5->sdid, a, att->name, &att_data_type, &att_count))
return NC_EATTMETA;
- if ((retval = get_netcdf_type_from_hdf4(h5, att_data_type,
+ if ((retval = get_netcdf_type_from_hdf4(h5, att_data_type,
&att->nc_typeid, NULL)))
return retval;
att->len = att_count;
@@ -2419,7 +2428,7 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
return NC_ENOMEM;
/* Read the data. */
- if (SDreadattr(h5->sdid, a, att->data))
+ if (SDreadattr(h5->sdid, a, att->data))
return NC_EHDFERR;
}
@@ -2429,25 +2438,25 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
NC_VAR_INFO_T *var;
int32 data_type, num_atts;
/* Problem: Number of dims is returned by the call that requires
- a pre-allocated array, 'dimsize'.
- From SDS_SD website:
- http://www.hdfgroup.org/training/HDFtraining/UsersGuide/SDS_SD.fm3.html
+ a pre-allocated array, 'dimsize'.
+ From SDS_SD website:
+ http://www.hdfgroup.org/training/HDFtraining/UsersGuide/SDS_SD.fm3.html
The maximum rank is 32, or MAX_VAR_DIMS (as defined in netcdf.h).
-
+
int32 dimsize[MAX_VAR_DIMS];
*/
int32 *dimsize = NULL;
size_t var_type_size;
int a;
-
+
/* Add a variable to the end of the group's var list. */
if ((retval = nc4_var_list_add(&grp->var, &var)))
return retval;
-
+
var->varid = grp->nvars++;
var->created = NC_TRUE;
var->written_to = NC_TRUE;
-
+
/* Open this dataset in HDF4 file. */
if ((var->sdsid = SDselect(h5->sdid, v)) == FAIL)
return NC_EVARMETA;
@@ -2455,19 +2464,19 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
/* Get shape, name, type, and attribute info about this dataset. */
if (!(var->name = malloc(NC_MAX_HDF4_NAME + 1)))
return NC_ENOMEM;
-
+
/* Invoke SDgetInfo with null dimsize to get rank. */
if (SDgetinfo(var->sdsid, var->name, &rank, NULL, &data_type, &num_atts))
return NC_EVARMETA;
-
+
if(!(dimsize = (int32*)malloc(sizeof(int32)*rank)))
return NC_ENOMEM;
-
+
if (SDgetinfo(var->sdsid, var->name, &rank, dimsize, &data_type, &num_atts)) {
if(dimsize) free(dimsize);
return NC_EVARMETA;
}
-
+
var->ndims = rank;
var->hdf4_data_type = data_type;
@@ -2476,7 +2485,7 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
if(dimsize) free(dimsize);
return NC_ENOMEM;
}
-
+
if ((retval = get_netcdf_type_from_hdf4(h5, data_type, &var->type_info->nc_typeid, var->type_info))) {
if(dimsize) free(dimsize);
return retval;
@@ -2484,14 +2493,14 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
/* Indicate that the variable has a pointer to the type */
var->type_info->rc++;
-
+
if ((retval = nc4_get_typelen_mem(h5, var->type_info->nc_typeid, 0, &var_type_size))) {
if(dimsize) free(dimsize);
return retval;
}
var->type_info->size = var_type_size;
- LOG((3, "reading HDF4 dataset %s, rank %d netCDF type %d", var->name,
+ LOG((3, "reading HDF4 dataset %s, rank %d netCDF type %d", var->name,
rank, var->type_info->nc_typeid));
/* Get the fill value. */
@@ -2514,13 +2523,13 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
if(dimsize) free(dimsize);
return NC_ENOMEM;
}
-
+
if (!(var->dimids = malloc(sizeof(int) * var->ndims))) {
if(dimsize) free(dimsize);
return NC_ENOMEM;
}
}
-
+
/* Find its dimensions. */
for (d = 0; d < var->ndims; d++)
@@ -2533,7 +2542,7 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
if(dimsize) free(dimsize);
return NC_EDIMMETA;
}
- if (SDdiminfo(dimid, dim_name, &dim_len, &dim_data_type,
+ if (SDdiminfo(dimid, dim_name, &dim_len, &dim_data_type,
&dim_num_attrs))
{
if(dimsize) free(dimsize);
@@ -2549,7 +2558,7 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
/* If we didn't find this dimension, add one. */
if (!dim)
{
- LOG((4, "adding dimension %s for HDF4 dataset %s",
+ LOG((4, "adding dimension %s for HDF4 dataset %s",
dim_name, var->name));
if ((retval = nc4_dim_list_add(&grp->dim, &dim)))
return retval;
@@ -2592,12 +2601,12 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
if(dimsize) free(dimsize);
return NC_EATTMETA;
}
- if ((retval = get_netcdf_type_from_hdf4(h5, att_data_type,
+ if ((retval = get_netcdf_type_from_hdf4(h5, att_data_type,
&att->nc_typeid, NULL))) {
if(dimsize) free(dimsize);
return retval;
}
-
+
att->len = att_count;
/* Allocate memory to hold the data. */
@@ -2640,16 +2649,16 @@ nc4_open_hdf4_file(const char *path, int mode, NC *nc)
#ifdef LOGGING
/* This will print out the names, types, lens, etc of the vars and
- atts in the file, if the logging level is 2 or greater. */
+ atts in the file, if the logging level is 2 or greater. */
log_metadata_nc(h5->root_grp->nc4_info->controller);
#endif
- return NC_NOERR;
+ return NC_NOERR;
return NC_ENOTBUILT;
}
#endif /* USE_HDF4 */
int
-NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
+NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
int use_parallel, void *mpidata, NC_Dispatch *dispatch, NC *nc_file)
{
int hdf_file = 0;
@@ -2659,17 +2668,17 @@ NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
assert(nc_file && path);
- LOG((1, "%s: path %s mode %d comm %d info %d",
+ LOG((1, "%s: path %s mode %d comm %d info %d",
__func__, path, mode, comm, info));
#ifdef USE_PARALLEL
- if (mpidata)
- {
+ if (mpidata)
+ {
comm = ((NC_MPI_INFO *)mpidata)->comm;
- info = ((NC_MPI_INFO *)mpidata)->info;
+ info = ((NC_MPI_INFO *)mpidata)->info;
}
#endif /* USE_PARALLEL */
-
+
/* If this is our first file, turn off HDF5 error messages. */
if (virgin)
{
@@ -2682,7 +2691,7 @@ NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
/* Check the mode for validity. First make sure only certain bits
* are turned on. Also MPI I/O and MPI POSIX cannot both be
* selected at once. */
- if (mode & ~(NC_WRITE | NC_SHARE | NC_MPIIO | NC_MPIPOSIX |
+ if (mode & ~(NC_WRITE | NC_SHARE | NC_MPIIO | NC_MPIPOSIX |
NC_PNETCDF | NC_NOCLOBBER | NC_NETCDF4 | NC_CLASSIC_MODEL) ||
(mode & NC_MPIIO && mode & NC_MPIPOSIX))
return NC_EINVAL;
@@ -2726,7 +2735,7 @@ NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
{
res = ncmpi_inq_nvars(nc_file->int_ncid, &pnetcdf_nvars);
for (i = 0; i < pnetcdf_nvars; i++)
- res = ncmpi_inq_varndims(nc_file->int_ncid, i,
+ res = ncmpi_inq_varndims(nc_file->int_ncid, i,
&(nc4_info->pnetcdf_ndims[i]));
}
@@ -2742,7 +2751,7 @@ NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
nc_file->int_ncid = nc_file->ext_ncid;
res = nc4_open_file(path, mode, comm, info, nc_file);
}
-#ifdef USE_HDF4
+#ifdef USE_HDF4
else if (hdf_file == NC_HDF4_FILE)
{
nc_file->int_ncid = nc_file->ext_ncid;
@@ -2764,12 +2773,12 @@ NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
accomplish this in HDF5 I have to delete the dataset, and recreate
it, with the fill value specified. */
/* QAK: This looks completely unused in the code. (?) */
-int
+int
NC4_set_fill(int ncid, int fillmode, int *old_modep)
{
NC *nc;
NC_HDF5_FILE_INFO_T* nc4_info;
-
+
LOG((2, "%s: ncid 0x%x fillmode %d", __func__, ncid, fillmode));
if (!(nc = nc4_find_nc_file(ncid,&nc4_info)))
@@ -2788,7 +2797,7 @@ NC4_set_fill(int ncid, int fillmode, int *old_modep)
if (old_modep)
*old_modep = nc4_info->fill_mode;
- nc4_info->fill_mode = fillmode;
+ nc4_info->fill_mode = fillmode;
#if 0 /*def USE_PNETCDF*/
/* Take care of files created/opened with parallel-netcdf library. */
@@ -2805,8 +2814,7 @@ NC4_set_fill(int ncid, int fillmode, int *old_modep)
int
NC4_redef(int ncid)
{
- //NC *nc;
- NC_HDF5_FILE_INFO_T* nc4_info;
+ NC_HDF5_FILE_INFO_T* nc4_info;
LOG((1, "%s: ncid 0x%x", __func__, ncid));
@@ -2859,7 +2867,7 @@ static int NC4_enddef(int ncid)
NC_HDF5_FILE_INFO_T* nc4_info;
LOG((1, "%s: ncid 0x%x", __func__, ncid));
-
+
if (!(nc = nc4_find_nc_file(ncid,&nc4_info)))
return NC_EBADID;
assert(nc4_info);
@@ -2900,21 +2908,21 @@ sync_netcdf4_file(NC_HDF5_FILE_INFO_T *h5)
/* Turn define mode off. */
h5->flags ^= NC_INDEF;
-
+
/* Redef mode needs to be tracked seperately for nc_abort. */
h5->redef = NC_FALSE;
}
#ifdef LOGGING
/* This will print out the names, types, lens, etc of the vars and
- atts in the file, if the logging level is 2 or greater. */
+ atts in the file, if the logging level is 2 or greater. */
log_metadata_nc(h5->root_grp->nc4_info->controller);
#endif
/* Write any metadata that has changed. */
if (!(h5->cmode & NC_NOWRITE))
{
- int bad_coord_order = 0; /* if detected, propagate to all groups to consistently store dimids */
+ nc_bool_t bad_coord_order = NC_FALSE; /* if detected, propagate to all groups to consistently store dimids */
if ((retval = nc4_rec_write_groups_types(h5->root_grp)))
return retval;
@@ -2995,7 +3003,7 @@ close_netcdf4_file(NC_HDF5_FILE_INFO_T *h5, int abort)
{
if (SDend(h5->sdid))
BAIL_QUIET(NC_EHDFERR);
- }
+ }
else
#endif /* USE_HDF4 */
{
@@ -3008,7 +3016,7 @@ close_netcdf4_file(NC_HDF5_FILE_INFO_T *h5, int abort)
MPI_Info_free(&h5->info);
}
#endif
- if (H5Fclose(h5->hdfid) < 0)
+ if (H5Fclose(h5->hdfid) < 0)
{
int nobjs;
@@ -3023,14 +3031,14 @@ close_netcdf4_file(NC_HDF5_FILE_INFO_T *h5, int abort)
* print out some info on to help the poor programmer figure it
* out. */
LOG((0, "There are %d HDF5 objects open!", nobjs));
-#endif
+#endif
BAIL_QUIET(NC_EHDFERR);
}
}
}
exit:
- /* Free the nc4_info struct; above code should have reclaimed
+ /* Free the nc4_info struct; above code should have reclaimed
everything else */
if(h5 != NULL)
free(h5);
@@ -3078,7 +3086,7 @@ NC4_abort(int ncid)
* metadata. */
if ((retval = close_netcdf4_file(nc4_info, 1)))
return retval;
-
+
/* Delete the file, if we should. */
if (delete_file)
if (remove(path) < 0)
@@ -3134,7 +3142,7 @@ NC4_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp)
NC_VAR_INFO_T *var;
int retval;
- LOG((2, "%s: ncid 0x%x", __func__, ncid));
+ LOG((2, "%s: ncid 0x%x", __func__, ncid));
/* Find file metadata. */
if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5)))
@@ -3185,7 +3193,7 @@ NC4_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp)
}
}
- return NC_NOERR;
+ return NC_NOERR;
}
@@ -3215,7 +3223,7 @@ nc_exit()
{
if (num_plists || num_spaces)
return NC_EHDFERR;
-
+
return NC_NOERR;
}
#endif /* EXTRA_TESTS */
@@ -3227,5 +3235,3 @@ nc_use_parallel_enabled()
return 0;
}
#endif /* USE_PARALLEL */
-
-
diff --git a/libsrc4/nc4grp.c b/libsrc4/nc4grp.c
index a858eee..fa8babf 100644
--- a/libsrc4/nc4grp.c
+++ b/libsrc4/nc4grp.c
@@ -65,7 +65,7 @@ NC4_def_grp(int parent_ncid, const char *name, int *new_ncid)
int
NC4_rename_grp(int grpid, const char *name)
{
- NC_GRP_INFO_T *grp, *g;
+ NC_GRP_INFO_T *grp;
NC_HDF5_FILE_INFO_T *h5;
char norm_name[NC_MAX_NAME + 1];
int retval;
diff --git a/libsrc4/nc4hdf.c b/libsrc4/nc4hdf.c
index bc0efde..d37f62a 100644
--- a/libsrc4/nc4hdf.c
+++ b/libsrc4/nc4hdf.c
@@ -38,38 +38,38 @@ int num_spaces;
* that case, I need to recreate the dim's dimension scale dataset,
* and then I need to go to every var in the file which uses that
* dimension, and attach the new dimension scale. */
-static int
+int
rec_reattach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid)
{
- NC_VAR_INFO_T *var;
- NC_GRP_INFO_T *child_grp;
- int d;
- int retval;
+ NC_VAR_INFO_T *var;
+ NC_GRP_INFO_T *child_grp;
+ int d;
+ int retval;
- assert(grp && grp->name && dimid >= 0 && dimscaleid >= 0);
- LOG((3, "%s: grp->name %s", __func__, grp->name));
+ assert(grp && grp->name && dimid >= 0 && dimscaleid >= 0);
+ LOG((3, "%s: grp->name %s", __func__, grp->name));
- /* If there are any child groups, attach dimscale there, if needed. */
- for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
- if ((retval = rec_reattach_scales(child_grp, dimid, dimscaleid)))
- return retval;
+ /* If there are any child groups, attach dimscale there, if needed. */
+ for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
+ if ((retval = rec_reattach_scales(child_grp, dimid, dimscaleid)))
+ return retval;
- /* Find any vars that use this dimension id. */
- for (var = grp->var; var; var = var->l.next)
- for (d = 0; d < var->ndims; d++)
- if (var->dimids[d] == dimid && !var->dimscale)
- {
- LOG((2, "%s: attaching scale for dimid %d to var %s",
- __func__, var->dimids[d], var->name));
- if (var->created)
+ /* Find any vars that use this dimension id. */
+ for (var = grp->var; var; var = var->l.next)
+ for (d = 0; d < var->ndims; d++)
+ if (var->dimids[d] == dimid && !var->dimscale)
+ {
+ LOG((2, "%s: attaching scale for dimid %d to var %s",
+ __func__, var->dimids[d], var->name));
+ if (var->created)
{
- if (H5DSattach_scale(var->hdf_datasetid, dimscaleid, d) < 0)
- return NC_EHDFERR;
- var->dimscale_attached[d] = NC_TRUE;
+ if (H5DSattach_scale(var->hdf_datasetid, dimscaleid, d) < 0)
+ return NC_EHDFERR;
+ var->dimscale_attached[d] = NC_TRUE;
}
- }
+ }
- return NC_NOERR;
+ return NC_NOERR;
}
/* This function is needed to handle one special case: what if the
@@ -81,60 +81,60 @@ rec_reattach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid)
int
rec_detach_scales(NC_GRP_INFO_T *grp, int dimid, hid_t dimscaleid)
{
- NC_VAR_INFO_T *var;
- NC_GRP_INFO_T *child_grp;
- int d;
- int retval;
+ NC_VAR_INFO_T *var;
+ NC_GRP_INFO_T *child_grp;
+ int d;
+ int retval;
- assert(grp && grp->name && dimid >= 0 && dimscaleid >= 0);
- LOG((3, "%s: grp->name %s", __func__, grp->name));
+ assert(grp && grp->name && dimid >= 0 && dimscaleid >= 0);
+ LOG((3, "%s: grp->name %s", __func__, grp->name));
- /* If there are any child groups, detach dimscale there, if needed. */
- for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
- if ((retval = rec_detach_scales(child_grp, dimid, dimscaleid)))
- return retval;
+ /* If there are any child groups, detach dimscale there, if needed. */
+ for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
+ if ((retval = rec_detach_scales(child_grp, dimid, dimscaleid)))
+ return retval;
- /* Find any vars that use this dimension id. */
- for (var = grp->var; var; var = var->l.next)
- for (d = 0; d < var->ndims; d++)
- if (var->dimids[d] == dimid && !var->dimscale)
- {
- LOG((2, "%s: detaching scale for dimid %d to var %s",
- __func__, var->dimids[d], var->name));
- if (var->created)
- if (var->dimscale_attached && var->dimscale_attached[d])
- {
- if (H5DSdetach_scale(var->hdf_datasetid, dimscaleid, d) < 0)
- return NC_EHDFERR;
- var->dimscale_attached[d] = NC_FALSE;
- }
- }
-
- return NC_NOERR;
+ /* Find any vars that use this dimension id. */
+ for (var = grp->var; var; var = var->l.next)
+ for (d = 0; d < var->ndims; d++)
+ if (var->dimids[d] == dimid && !var->dimscale)
+ {
+ LOG((2, "%s: detaching scale for dimid %d to var %s",
+ __func__, var->dimids[d], var->name));
+ if (var->created)
+ if (var->dimscale_attached && var->dimscale_attached[d])
+ {
+ if (H5DSdetach_scale(var->hdf_datasetid, dimscaleid, d) < 0)
+ return NC_EHDFERR;
+ var->dimscale_attached[d] = NC_FALSE;
+ }
+ }
+
+ return NC_NOERR;
}
/* Open the dataset and leave it open. */
-int
+int
nc4_open_var_grp2(NC_GRP_INFO_T *grp, int varid, hid_t *dataset)
{
- NC_VAR_INFO_T *var;
-
- /* Find the requested varid. */
- for (var = grp->var; var; var = var->l.next)
- if (var->varid == varid)
- break;
- if (!var)
+ NC_VAR_INFO_T *var;
+
+ /* Find the requested varid. */
+ for (var = grp->var; var; var = var->l.next)
+ if (var->varid == varid)
+ break;
+ if (!var)
+ return NC_ENOTVAR;
+
+ /* Open this dataset if necessary. */
+ if (!var->hdf_datasetid)
+ if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name,
+ H5P_DEFAULT)) < 0)
return NC_ENOTVAR;
-
- /* Open this dataset if necessary. */
- if (!var->hdf_datasetid)
- if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name,
- H5P_DEFAULT)) < 0)
- return NC_ENOTVAR;
-
- *dataset = var->hdf_datasetid;
-
- return NC_NOERR;
+
+ *dataset = var->hdf_datasetid;
+
+ return NC_NOERR;
}
/* Get the default fill value for an atomic type. Memory for
@@ -142,341 +142,341 @@ nc4_open_var_grp2(NC_GRP_INFO_T *grp, int varid, hid_t *dataset)
int
nc4_get_default_fill_value(const NC_TYPE_INFO_T *type_info, void *fill_value)
{
- switch (type_info->nc_typeid)
- {
- case NC_CHAR:
- *(char *)fill_value = NC_FILL_CHAR;
- break;
+ switch (type_info->nc_typeid)
+ {
+ case NC_CHAR:
+ *(char *)fill_value = NC_FILL_CHAR;
+ break;
- case NC_STRING:
- *(char **)fill_value = strdup(NC_FILL_STRING);
- break;
+ case NC_STRING:
+ *(char **)fill_value = strdup(NC_FILL_STRING);
+ break;
- case NC_BYTE:
- *(signed char *)fill_value = NC_FILL_BYTE;
- break;
+ case NC_BYTE:
+ *(signed char *)fill_value = NC_FILL_BYTE;
+ break;
- case NC_SHORT:
- *(short *)fill_value = NC_FILL_SHORT;
- break;
+ case NC_SHORT:
+ *(short *)fill_value = NC_FILL_SHORT;
+ break;
- case NC_INT:
- *(int *)fill_value = NC_FILL_INT;
- break;
+ case NC_INT:
+ *(int *)fill_value = NC_FILL_INT;
+ break;
- case NC_UBYTE:
- *(unsigned char *)fill_value = NC_FILL_UBYTE;
- break;
+ case NC_UBYTE:
+ *(unsigned char *)fill_value = NC_FILL_UBYTE;
+ break;
- case NC_USHORT:
- *(unsigned short *)fill_value = NC_FILL_USHORT;
- break;
+ case NC_USHORT:
+ *(unsigned short *)fill_value = NC_FILL_USHORT;
+ break;
- case NC_UINT:
- *(unsigned int *)fill_value = NC_FILL_UINT;
- break;
+ case NC_UINT:
+ *(unsigned int *)fill_value = NC_FILL_UINT;
+ break;
- case NC_INT64:
- *(long long *)fill_value = NC_FILL_INT64;
- break;
+ case NC_INT64:
+ *(long long *)fill_value = NC_FILL_INT64;
+ break;
- case NC_UINT64:
- *(unsigned long long *)fill_value = NC_FILL_UINT64;
- break;
+ case NC_UINT64:
+ *(unsigned long long *)fill_value = NC_FILL_UINT64;
+ break;
- case NC_FLOAT:
- *(float *)fill_value = NC_FILL_FLOAT;
- break;
+ case NC_FLOAT:
+ *(float *)fill_value = NC_FILL_FLOAT;
+ break;
- case NC_DOUBLE:
- *(double *)fill_value = NC_FILL_DOUBLE;
- break;
+ case NC_DOUBLE:
+ *(double *)fill_value = NC_FILL_DOUBLE;
+ break;
- default:
- return NC_EINVAL;
- }
+ default:
+ return NC_EINVAL;
+ }
- return NC_NOERR;
+ return NC_NOERR;
}
/* What fill value should be used for a variable? */
static int
get_fill_value(NC_HDF5_FILE_INFO_T *h5, NC_VAR_INFO_T *var, void **fillp)
-{
- size_t size;
- int retval;
-
- /* Find out how much space we need for this type's fill value. */
- if (var->type_info->nc_type_class == NC_VLEN)
- size = sizeof(nc_vlen_t);
- else if (var->type_info->nc_type_class == NC_STRING)
- size = sizeof(char *);
- else
- {
- if ((retval = nc4_get_typelen_mem(h5, var->type_info->nc_typeid, 0, &size)))
- return retval;
- }
- assert(size);
-
- /* Allocate the space. */
- if (!((*fillp) = calloc(1, size)))
- return NC_ENOMEM;
-
- /* If the user has set a fill_value for this var, use, otherwise
- * find the default fill value. */
- if (var->fill_value)
- {
+{
+ size_t size;
+ int retval;
+
+ /* Find out how much space we need for this type's fill value. */
+ if (var->type_info->nc_type_class == NC_VLEN)
+ size = sizeof(nc_vlen_t);
+ else if (var->type_info->nc_type_class == NC_STRING)
+ size = sizeof(char *);
+ else
+ {
+ if ((retval = nc4_get_typelen_mem(h5, var->type_info->nc_typeid, 0, &size)))
+ return retval;
+ }
+ assert(size);
+
+ /* Allocate the space. */
+ if (!((*fillp) = calloc(1, size)))
+ return NC_ENOMEM;
+
+ /* If the user has set a fill_value for this var, use, otherwise
+ * find the default fill value. */
+ if (var->fill_value)
+ {
LOG((4, "Found a fill value for var %s", var->name));
- if (var->type_info->nc_type_class == NC_VLEN)
- {
- nc_vlen_t *in_vlen = (nc_vlen_t *)(var->fill_value), *fv_vlen = (nc_vlen_t *)(*fillp);
-
- fv_vlen->len = in_vlen->len;
- if (!(fv_vlen->p = malloc(size * in_vlen->len)))
- {
- free(*fillp);
- *fillp = NULL;
- return NC_ENOMEM;
- }
- memcpy(fv_vlen->p, in_vlen->p, in_vlen->len * size);
- }
- else if (var->type_info->nc_type_class == NC_STRING)
- {
- if (*(char **)var->fill_value)
- if (!(**(char ***)fillp = strdup(*(char **)var->fill_value)))
+ if (var->type_info->nc_type_class == NC_VLEN)
+ {
+ nc_vlen_t *in_vlen = (nc_vlen_t *)(var->fill_value), *fv_vlen = (nc_vlen_t *)(*fillp);
+
+ fv_vlen->len = in_vlen->len;
+ if (!(fv_vlen->p = malloc(size * in_vlen->len)))
{
- free(*fillp);
- *fillp = NULL;
- return NC_ENOMEM;
+ free(*fillp);
+ *fillp = NULL;
+ return NC_ENOMEM;
}
- }
+ memcpy(fv_vlen->p, in_vlen->p, in_vlen->len * size);
+ }
+ else if (var->type_info->nc_type_class == NC_STRING)
+ {
+ if (*(char **)var->fill_value)
+ if (!(**(char ***)fillp = strdup(*(char **)var->fill_value)))
+ {
+ free(*fillp);
+ *fillp = NULL;
+ return NC_ENOMEM;
+ }
+ }
else
- memcpy((*fillp), var->fill_value, size);
- }
- else
- {
+ memcpy((*fillp), var->fill_value, size);
+ }
+ else
+ {
if (nc4_get_default_fill_value(var->type_info, *fillp))
- {
- /* Note: release memory, but don't return error on failure */
- free(*fillp);
- *fillp = NULL;
- }
- }
-
- return NC_NOERR;
+ {
+ /* Note: release memory, but don't return error on failure */
+ free(*fillp);
+ *fillp = NULL;
+ }
+ }
+
+ return NC_NOERR;
}
/* Given a netcdf type, return appropriate HDF typeid. */
/* (All hdf_typeid's returned from this routine must be H5Tclosed by the caller) */
int
-nc4_get_hdf_typeid(NC_HDF5_FILE_INFO_T *h5, nc_type xtype,
- hid_t *hdf_typeid, int endianness)
+nc4_get_hdf_typeid(NC_HDF5_FILE_INFO_T *h5, nc_type xtype,
+ hid_t *hdf_typeid, int endianness)
{
- NC_TYPE_INFO_T *type;
- hid_t typeid = 0;
- int retval = NC_NOERR;
+ NC_TYPE_INFO_T *type;
+ hid_t typeid = 0;
+ int retval = NC_NOERR;
- assert(hdf_typeid && h5);
+ assert(hdf_typeid && h5);
- *hdf_typeid = -1;
+ *hdf_typeid = -1;
- /* Determine an appropriate HDF5 datatype */
- if (xtype == NC_NAT)
- /* NAT = 'Not A Type' (c.f. NaN) */
- return NC_EBADTYPE;
- else if (xtype == NC_CHAR || xtype == NC_STRING)
- {
+ /* Determine an appropriate HDF5 datatype */
+ if (xtype == NC_NAT)
+ /* NAT = 'Not A Type' (c.f. NaN) */
+ return NC_EBADTYPE;
+ else if (xtype == NC_CHAR || xtype == NC_STRING)
+ {
/* NC_CHAR & NC_STRING types create a new HDF5 datatype */
if (xtype == NC_CHAR)
- {
- if ((typeid = H5Tcopy(H5T_C_S1)) < 0)
+ {
+ if ((typeid = H5Tcopy(H5T_C_S1)) < 0)
return NC_EHDFERR;
- if (H5Tset_strpad(typeid, H5T_STR_NULLTERM) < 0)
+ if (H5Tset_strpad(typeid, H5T_STR_NULLTERM) < 0)
BAIL(NC_EVARMETA);
- /* Take ownership of the newly created HDF5 datatype */
- *hdf_typeid = typeid;
- typeid = 0;
- }
+ /* Take ownership of the newly created HDF5 datatype */
+ *hdf_typeid = typeid;
+ typeid = 0;
+ }
else
- {
- if ((typeid = H5Tcopy(H5T_C_S1)) < 0)
+ {
+ if ((typeid = H5Tcopy(H5T_C_S1)) < 0)
return NC_EHDFERR;
- if (H5Tset_size(typeid, H5T_VARIABLE) < 0)
+ if (H5Tset_size(typeid, H5T_VARIABLE) < 0)
BAIL(NC_EVARMETA);
- /* Take ownership of the newly created HDF5 datatype */
- *hdf_typeid = typeid;
- typeid = 0;
- }
- }
- else
- {
+ /* Take ownership of the newly created HDF5 datatype */
+ *hdf_typeid = typeid;
+ typeid = 0;
+ }
+ }
+ else
+ {
/* All other types use an existing HDF5 datatype */
switch (xtype)
- {
- case NC_BYTE: /* signed 1 byte integer */
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_I8LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_I8BE;
- else
- typeid = H5T_NATIVE_SCHAR;
- break;
-
- case NC_SHORT: /* signed 2 byte integer */
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_I16LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_I16BE;
- else
- typeid = H5T_NATIVE_SHORT;
- break;
-
- case NC_INT:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_I32LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_I32BE;
- else
- typeid = H5T_NATIVE_INT;
- break;
-
- case NC_UBYTE:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_U8LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_U8BE;
- else
- typeid = H5T_NATIVE_UCHAR;
- break;
-
- case NC_USHORT:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_U16LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_U16BE;
- else
- typeid = H5T_NATIVE_USHORT;
- break;
-
- case NC_UINT:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_U32LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_U32BE;
- else
- typeid = H5T_NATIVE_UINT;
- break;
-
- case NC_INT64:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_I64LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_I64BE;
- else
- typeid = H5T_NATIVE_LLONG;
- break;
-
- case NC_UINT64:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_STD_U64LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_STD_U64BE;
- else
- typeid = H5T_NATIVE_ULLONG;
- break;
-
- case NC_FLOAT:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_IEEE_F32LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_IEEE_F32BE;
- else
- typeid = H5T_NATIVE_FLOAT;
- break;
-
- case NC_DOUBLE:
- if (endianness == NC_ENDIAN_LITTLE)
- typeid = H5T_IEEE_F64LE;
- else if (endianness == NC_ENDIAN_BIG)
- typeid = H5T_IEEE_F64BE;
- else
- typeid = H5T_NATIVE_DOUBLE;
- break;
-
- default:
- /* Maybe this is a user defined type? */
- if (nc4_find_type(h5, xtype, &type))
- return NC_EBADTYPE;
- if (!type)
- return NC_EBADTYPE;
- typeid = type->hdf_typeid;
- break;
- }
+ {
+ case NC_BYTE: /* signed 1 byte integer */
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_I8LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_I8BE;
+ else
+ typeid = H5T_NATIVE_SCHAR;
+ break;
+
+ case NC_SHORT: /* signed 2 byte integer */
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_I16LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_I16BE;
+ else
+ typeid = H5T_NATIVE_SHORT;
+ break;
+
+ case NC_INT:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_I32LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_I32BE;
+ else
+ typeid = H5T_NATIVE_INT;
+ break;
+
+ case NC_UBYTE:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_U8LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_U8BE;
+ else
+ typeid = H5T_NATIVE_UCHAR;
+ break;
+
+ case NC_USHORT:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_U16LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_U16BE;
+ else
+ typeid = H5T_NATIVE_USHORT;
+ break;
+
+ case NC_UINT:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_U32LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_U32BE;
+ else
+ typeid = H5T_NATIVE_UINT;
+ break;
+
+ case NC_INT64:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_I64LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_I64BE;
+ else
+ typeid = H5T_NATIVE_LLONG;
+ break;
+
+ case NC_UINT64:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_STD_U64LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_STD_U64BE;
+ else
+ typeid = H5T_NATIVE_ULLONG;
+ break;
+
+ case NC_FLOAT:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_IEEE_F32LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_IEEE_F32BE;
+ else
+ typeid = H5T_NATIVE_FLOAT;
+ break;
+
+ case NC_DOUBLE:
+ if (endianness == NC_ENDIAN_LITTLE)
+ typeid = H5T_IEEE_F64LE;
+ else if (endianness == NC_ENDIAN_BIG)
+ typeid = H5T_IEEE_F64BE;
+ else
+ typeid = H5T_NATIVE_DOUBLE;
+ break;
+
+ default:
+ /* Maybe this is a user defined type? */
+ if (nc4_find_type(h5, xtype, &type))
+ return NC_EBADTYPE;
+ if (!type)
+ return NC_EBADTYPE;
+ typeid = type->hdf_typeid;
+ break;
+ }
assert(typeid);
/* Copy the HDF5 datatype, so the function operates uniformly */
- if ((*hdf_typeid = H5Tcopy(typeid)) < 0)
- return NC_EHDFERR;
+ if ((*hdf_typeid = H5Tcopy(typeid)) < 0)
+ return NC_EHDFERR;
typeid = 0;
- }
- assert(*hdf_typeid != -1);
-
-exit:
- if (typeid > 0 && H5Tclose(typeid) < 0)
- BAIL2(NC_EHDFERR);
- return retval;
+ }
+ assert(*hdf_typeid != -1);
+
+ exit:
+ if (typeid > 0 && H5Tclose(typeid) < 0)
+ BAIL2(NC_EHDFERR);
+ return retval;
}
/* Do some common check for nc4_put_vara and nc4_get_vara. These
* checks have to be done when both reading and writing data. */
-static int
+static int
check_for_vara(nc_type *mem_nc_type, NC_VAR_INFO_T *var, NC_HDF5_FILE_INFO_T *h5)
{
- int retval;
-
- /* If mem_nc_type is NC_NAT, it means we want to use the file type
- * as the mem type as well. */
- assert(mem_nc_type);
- if (*mem_nc_type == NC_NAT)
- *mem_nc_type = var->type_info->nc_typeid;
- assert(*mem_nc_type);
-
- /* No NC_CHAR conversions, you pervert! */
- if (var->type_info->nc_typeid != *mem_nc_type &&
- (var->type_info->nc_typeid == NC_CHAR || *mem_nc_type == NC_CHAR))
- return NC_ECHAR;
-
- /* If we're in define mode, we can't read or write data. */
- if (h5->flags & NC_INDEF)
- {
+ int retval;
+
+ /* If mem_nc_type is NC_NAT, it means we want to use the file type
+ * as the mem type as well. */
+ assert(mem_nc_type);
+ if (*mem_nc_type == NC_NAT)
+ *mem_nc_type = var->type_info->nc_typeid;
+ assert(*mem_nc_type);
+
+ /* No NC_CHAR conversions, you pervert! */
+ if (var->type_info->nc_typeid != *mem_nc_type &&
+ (var->type_info->nc_typeid == NC_CHAR || *mem_nc_type == NC_CHAR))
+ return NC_ECHAR;
+
+ /* If we're in define mode, we can't read or write data. */
+ if (h5->flags & NC_INDEF)
+ {
if (h5->cmode & NC_CLASSIC_MODEL)
- return NC_EINDEFINE;
+ return NC_EINDEFINE;
if ((retval = nc4_enddef_netcdf4_file(h5)))
- return retval;
- }
+ return retval;
+ }
- return NC_NOERR;
+ return NC_NOERR;
}
#ifdef LOGGING
-/* Print some debug info about dimensions to the log. */
+/* Print some debug info about dimensions to the log. */
static void
-log_dim_info(NC_VAR_INFO_T *var, hsize_t *fdims, hsize_t *fmaxdims,
+log_dim_info(NC_VAR_INFO_T *var, hsize_t *fdims, hsize_t *fmaxdims,
hsize_t *start, hsize_t *count)
{
- int d2;
-
- /* Print some debugging info... */
- LOG((4, "%s: var name %s ndims %d", __func__, var->name, var->ndims));
- LOG((4, "File space, and requested:"));
- for (d2 = 0; d2 < var->ndims; d2++)
- {
- LOG((4, "fdims[%d]=%Ld fmaxdims[%d]=%Ld", d2, fdims[d2], d2,
+ int d2;
+
+ /* Print some debugging info... */
+ LOG((4, "%s: var name %s ndims %d", __func__, var->name, var->ndims));
+ LOG((4, "File space, and requested:"));
+ for (d2 = 0; d2 < var->ndims; d2++)
+ {
+ LOG((4, "fdims[%d]=%Ld fmaxdims[%d]=%Ld", d2, fdims[d2], d2,
fmaxdims[d2]));
LOG((4, "start[%d]=%Ld count[%d]=%Ld", d2, start[d2], d2, count[d2]));
- }
+ }
}
#endif /* LOGGING */
@@ -484,25 +484,25 @@ log_dim_info(NC_VAR_INFO_T *var, hsize_t *fdims, hsize_t *fmaxdims,
static int
set_par_access(NC_HDF5_FILE_INFO_T *h5, NC_VAR_INFO_T *var, hid_t xfer_plistid)
{
- /* If netcdf is built with parallel I/O, then parallel access can
- * be used, and, if this file was opened or created for parallel
- * access, we need to set the transfer mode. */
- if (h5->parallel)
- {
- H5FD_mpio_xfer_t hdf5_xfer_mode;
+ /* If netcdf is built with parallel I/O, then parallel access can
+ * be used, and, if this file was opened or created for parallel
+ * access, we need to set the transfer mode. */
+ if (h5->parallel)
+ {
+ H5FD_mpio_xfer_t hdf5_xfer_mode;
/* Decide on collective or independent. */
hdf5_xfer_mode = (var->parallel_access != NC_INDEPENDENT) ?
- H5FD_MPIO_COLLECTIVE : H5FD_MPIO_INDEPENDENT;
+ H5FD_MPIO_COLLECTIVE : H5FD_MPIO_INDEPENDENT;
/* Set the mode in the transfer property list. */
if (H5Pset_dxpl_mpio(xfer_plistid, hdf5_xfer_mode) < 0)
- return NC_EPARINIT;
+ return NC_EPARINIT;
- LOG((4, "%s: %d H5FD_MPIO_COLLECTIVE: %d H5FD_MPIO_INDEPENDENT: %d",
+ LOG((4, "%s: %d H5FD_MPIO_COLLECTIVE: %d H5FD_MPIO_INDEPENDENT: %d",
__func__, (int)hdf5_xfer_mode, H5FD_MPIO_COLLECTIVE, H5FD_MPIO_INDEPENDENT));
- }
- return NC_NOERR;
+ }
+ return NC_NOERR;
}
#endif
@@ -511,144 +511,144 @@ set_par_access(NC_HDF5_FILE_INFO_T *h5, NC_VAR_INFO_T *var, hid_t xfer_plistid)
* big enchilda, the grand poo-bah, the alpha dog, the head honcho,
* the big cheese, the mighty kahuna, the top bananna, the high
* muckity-muck, numero uno. Well, you get the idea. */
-int
-nc4_put_vara(NC *nc, int ncid, int varid, const size_t *startp,
- const size_t *countp, nc_type mem_nc_type, int is_long, void *data)
+int
+nc4_put_vara(NC *nc, int ncid, int varid, const size_t *startp,
+ const size_t *countp, nc_type mem_nc_type, int is_long, void *data)
{
- NC_GRP_INFO_T *grp;
- NC_HDF5_FILE_INFO_T *h5;
- NC_VAR_INFO_T *var;
- NC_DIM_INFO_T *dim;
-
- hid_t file_spaceid = 0, mem_spaceid = 0, xfer_plistid = 0;
-
- hsize_t xtend_size[NC_MAX_VAR_DIMS] , count[NC_MAX_VAR_DIMS];
- hsize_t fdims[NC_MAX_VAR_DIMS], fmaxdims[NC_MAX_VAR_DIMS];
- hsize_t start[NC_MAX_VAR_DIMS];
- int need_to_extend = 0;
- int retval = NC_NOERR, range_error = 0, i, d2;
- void *bufr = NULL;
-#ifndef HDF5_CONVERT
- int need_to_convert = 0;
- size_t len = 1;
+ NC_GRP_INFO_T *grp;
+ NC_HDF5_FILE_INFO_T *h5;
+ NC_VAR_INFO_T *var;
+ NC_DIM_INFO_T *dim;
+
+ hid_t file_spaceid = 0, mem_spaceid = 0, xfer_plistid = 0;
+
+ hsize_t xtend_size[NC_MAX_VAR_DIMS] , count[NC_MAX_VAR_DIMS];
+ hsize_t fdims[NC_MAX_VAR_DIMS], fmaxdims[NC_MAX_VAR_DIMS];
+ hsize_t start[NC_MAX_VAR_DIMS];
+ int need_to_extend = 0;
+ int retval = NC_NOERR, range_error = 0, i, d2;
+ void *bufr = NULL;
+#ifndef HDF5_CONVERT
+ int need_to_convert = 0;
+ size_t len = 1;
#endif
#ifdef HDF5_CONVERT
- hid_t mem_typeid = 0;
-#endif
+ hid_t mem_typeid = 0;
+#endif
- /* Find our metadata for this file, group, and var. */
- assert(nc);
- if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var)))
- return retval;
- h5 = NC4_DATA(nc);
- assert(grp && h5 && var && var->name);
+ /* Find our metadata for this file, group, and var. */
+ assert(nc);
+ if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var)))
+ return retval;
+ h5 = NC4_DATA(nc);
+ assert(grp && h5 && var && var->name);
- LOG((3, "%s: var->name %s mem_nc_type %d is_long %d",
- __func__, var->name, mem_nc_type, is_long));
+ LOG((3, "%s: var->name %s mem_nc_type %d is_long %d",
+ __func__, var->name, mem_nc_type, is_long));
- /* Check some stuff about the type and the file. If the file must
- * be switched from define mode, it happens here. */
- if ((retval = check_for_vara(&mem_nc_type, var, h5)))
- return retval;
+ /* Check some stuff about the type and the file. If the file must
+ * be switched from define mode, it happens here. */
+ if ((retval = check_for_vara(&mem_nc_type, var, h5)))
+ return retval;
- /* Convert from size_t and ptrdiff_t to hssize_t, and hsize_t. */
- for (i = 0; i < var->ndims; i++)
- {
+ /* Convert from size_t and ptrdiff_t to hssize_t, and hsize_t. */
+ for (i = 0; i < var->ndims; i++)
+ {
start[i] = startp[i];
count[i] = countp[i];
- }
-
- /* Open this dataset if necessary, also checking for a weird case:
- * a non-coordinate (and non-scalar) variable that has the same
- * name as a dimension. */
- if (var->hdf5_name && strlen(var->hdf5_name) >= strlen(NON_COORD_PREPEND) &&
- strncmp(var->hdf5_name, NON_COORD_PREPEND, strlen(NON_COORD_PREPEND)) == 0 &&
- var->ndims)
- if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->hdf5_name,
- H5P_DEFAULT)) < 0)
- return NC_ENOTVAR;
- if (!var->hdf_datasetid)
- if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name,
- H5P_DEFAULT)) < 0)
- return NC_ENOTVAR;
-
- /* Get file space of data. */
- if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
- BAIL(NC_EHDFERR);
+ }
+
+ /* Open this dataset if necessary, also checking for a weird case:
+ * a non-coordinate (and non-scalar) variable that has the same
+ * name as a dimension. */
+ if (var->hdf5_name && strlen(var->hdf5_name) >= strlen(NON_COORD_PREPEND) &&
+ strncmp(var->hdf5_name, NON_COORD_PREPEND, strlen(NON_COORD_PREPEND)) == 0 &&
+ var->ndims)
+ if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->hdf5_name,
+ H5P_DEFAULT)) < 0)
+ return NC_ENOTVAR;
+ if (!var->hdf_datasetid)
+ if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name,
+ H5P_DEFAULT)) < 0)
+ return NC_ENOTVAR;
+
+ /* Get file space of data. */
+ if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_spaces++;
+ num_spaces++;
#endif
- /* Check to ensure the user selection is
- * valid. H5Sget_simple_extent_dims gets the sizes of all the dims
- * and put them in fdims. */
- if (H5Sget_simple_extent_dims(file_spaceid, fdims, fmaxdims) < 0)
- BAIL(NC_EHDFERR);
-
+ /* Check to ensure the user selection is
+ * valid. H5Sget_simple_extent_dims gets the sizes of all the dims
+ * and put them in fdims. */
+ if (H5Sget_simple_extent_dims(file_spaceid, fdims, fmaxdims) < 0)
+ BAIL(NC_EHDFERR);
+
#ifdef LOGGING
- log_dim_info(var, fdims, fmaxdims, start, count);
+ log_dim_info(var, fdims, fmaxdims, start, count);
#endif
- /* Check dimension bounds. Remember that unlimited dimnsions can
- * put data beyond their current length. */
- for (d2 = 0; d2 < var->ndims; d2++)
- {
+ /* Check dimension bounds. Remember that unlimited dimnsions can
+ * put data beyond their current length. */
+ for (d2 = 0; d2 < var->ndims; d2++)
+ {
for (dim = grp->dim; dim; dim = dim->l.next)
- {
- if (dim->dimid == var->dimids[d2])
- {
- if (!dim->unlimited)
+ {
+ if (dim->dimid == var->dimids[d2])
{
- if (start[d2] >= (hssize_t)fdims[d2])
- BAIL_QUIET(NC_EINVALCOORDS);
- if (start[d2] + count[d2] > fdims[d2])
- BAIL_QUIET(NC_EEDGE);
+ if (!dim->unlimited)
+ {
+ if (start[d2] >= (hssize_t)fdims[d2])
+ BAIL_QUIET(NC_EINVALCOORDS);
+ if (start[d2] + count[d2] > fdims[d2])
+ BAIL_QUIET(NC_EEDGE);
+ }
}
- }
- }
- }
-
- /* Now you would think that no one would be crazy enough to write
- a scalar dataspace with one of the array function calls, but you
- would be wrong. So let's check to see if the dataset is
- scalar. If it is, we won't try to set up a hyperslab. */
- if (H5Sget_simple_extent_type(file_spaceid) == H5S_SCALAR)
- {
- if ((mem_spaceid = H5Screate(H5S_SCALAR)) < 0)
- BAIL(NC_EHDFERR);
+ }
+ }
+
+ /* Now you would think that no one would be crazy enough to write
+ a scalar dataspace with one of the array function calls, but you
+ would be wrong. So let's check to see if the dataset is
+ scalar. If it is, we won't try to set up a hyperslab. */
+ if (H5Sget_simple_extent_type(file_spaceid) == H5S_SCALAR)
+ {
+ if ((mem_spaceid = H5Screate(H5S_SCALAR)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces++;
#endif
- }
- else
- {
- if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET, start, NULL,
+ }
+ else
+ {
+ if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET, start, NULL,
count, NULL) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
/* Create a space for the memory, just big enough to hold the slab
we want. */
- if ((mem_spaceid = H5Screate_simple(var->ndims, count, NULL)) < 0)
- BAIL(NC_EHDFERR);
+ if ((mem_spaceid = H5Screate_simple(var->ndims, count, NULL)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces++;
#endif
- }
-
-#ifndef HDF5_CONVERT
- /* Are we going to convert any data? (No converting of compound or
- * opaque types.) */
- if ((mem_nc_type != var->type_info->nc_typeid || (var->type_info->nc_typeid == NC_INT && is_long)) &&
- mem_nc_type != NC_COMPOUND && mem_nc_type != NC_OPAQUE)
- {
+ }
+
+#ifndef HDF5_CONVERT
+ /* Are we going to convert any data? (No converting of compound or
+ * opaque types.) */
+ if ((mem_nc_type != var->type_info->nc_typeid || (var->type_info->nc_typeid == NC_INT && is_long)) &&
+ mem_nc_type != NC_COMPOUND && mem_nc_type != NC_OPAQUE)
+ {
size_t file_type_size;
/* We must convert - allocate a buffer. */
need_to_convert++;
if (var->ndims)
- for (d2=0; d2<var->ndims; d2++)
- len *= countp[d2];
- LOG((4, "converting data for var %s type=%d len=%d", var->name,
+ for (d2=0; d2<var->ndims; d2++)
+ len *= countp[d2];
+ LOG((4, "converting data for var %s type=%d len=%d", var->name,
var->type_info->nc_typeid, len));
/* Later on, we will need to know the size of this type in the
@@ -660,353 +660,353 @@ nc4_put_vara(NC *nc, int ncid, int varid, const size_t *startp,
* the data in the file. If we're writing, we need bufr to be
* big enough to hold all the data in the file's type. */
if (!(bufr = malloc(len * file_type_size)))
- BAIL(NC_ENOMEM);
- }
- else
+ BAIL(NC_ENOMEM);
+ }
+ else
#endif /* ifndef HDF5_CONVERT */
- bufr = data;
+ bufr = data;
#ifdef HDF5_CONVERT
- /* Get the HDF type of the data in memory. */
- if ((retval = nc4_get_hdf_typeid(h5, mem_nc_type, &mem_typeid,
- var->type_info->endianness)))
- BAIL(retval);
+ /* Get the HDF type of the data in memory. */
+ if ((retval = nc4_get_hdf_typeid(h5, mem_nc_type, &mem_typeid,
+ var->type_info->endianness)))
+ BAIL(retval);
#endif
-
- /* Create the data transfer property list. */
- if ((xfer_plistid = H5Pcreate(H5P_DATASET_XFER)) < 0)
- BAIL(NC_EHDFERR);
+
+ /* Create the data transfer property list. */
+ if ((xfer_plistid = H5Pcreate(H5P_DATASET_XFER)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_plists++;
+ num_plists++;
#endif
- /* Apply the callback function which will detect range
- * errors. Which one to call depends on the length of the
- * destination buffer type. */
+ /* Apply the callback function which will detect range
+ * errors. Which one to call depends on the length of the
+ * destination buffer type. */
#ifdef HDF5_CONVERT
- if (H5Pset_type_conv_cb(xfer_plistid, except_func, &range_error) < 0)
- BAIL(NC_EHDFERR);
+ if (H5Pset_type_conv_cb(xfer_plistid, except_func, &range_error) < 0)
+ BAIL(NC_EHDFERR);
#endif
#ifdef USE_PARALLEL
- /* Set up parallel I/O, if needed. */
- if ((retval = set_par_access(h5, var, xfer_plistid)))
- BAIL(retval);
+ /* Set up parallel I/O, if needed. */
+ if ((retval = set_par_access(h5, var, xfer_plistid)))
+ BAIL(retval);
#endif
- /* Read/write this hyperslab into memory. */
- /* Does the dataset have to be extended? If it's already
- extended to the required size, it will do no harm to reextend
- it to that size. */
- if (var->ndims)
- {
+ /* Read/write this hyperslab into memory. */
+ /* Does the dataset have to be extended? If it's already
+ extended to the required size, it will do no harm to reextend
+ it to that size. */
+ if (var->ndims)
+ {
for (d2 = 0; d2 < var->ndims; d2++)
- {
- if ((retval = nc4_find_dim(grp, var->dimids[d2], &dim, NULL)))
+ {
+ if ((retval = nc4_find_dim(grp, var->dimids[d2], &dim, NULL)))
BAIL(retval);
- if (dim->unlimited)
- {
- if (start[d2] + count[d2] > fdims[d2])
+ if (dim->unlimited)
{
- xtend_size[d2] = start[d2] + count[d2];
- need_to_extend++;
+ if (start[d2] + count[d2] > fdims[d2])
+ {
+ xtend_size[d2] = start[d2] + count[d2];
+ need_to_extend++;
+ }
+ else
+ xtend_size[d2] = fdims[d2];
+
+ if (start[d2] + count[d2] > dim->len)
+ {
+ dim->len = start[d2] + count[d2];
+ dim->extended = NC_TRUE;
+ }
}
- else
- xtend_size[d2] = fdims[d2];
-
- if (start[d2] + count[d2] > dim->len)
+ else
{
- dim->len = start[d2] + count[d2];
- dim->extended = NC_TRUE;
+ xtend_size[d2] = dim->len;
}
- }
- else
- {
- xtend_size[d2] = dim->len;
- }
- }
+ }
#ifdef USE_PARALLEL
- /* Check if anyone wants to extend */
- if (h5->parallel && NC_COLLECTIVE == var->parallel_access)
- {
- /* Form consensus opinion among all processes about whether to perform
- * collective I/O
- */
- if(MPI_SUCCESS != MPI_Allreduce(MPI_IN_PLACE, &need_to_extend, 1, MPI_INT, MPI_BOR, h5->comm))
+ /* Check if anyone wants to extend */
+ if (h5->parallel && NC_COLLECTIVE == var->parallel_access)
+ {
+ /* Form consensus opinion among all processes about whether to perform
+ * collective I/O
+ */
+ if(MPI_SUCCESS != MPI_Allreduce(MPI_IN_PLACE, &need_to_extend, 1, MPI_INT, MPI_BOR, h5->comm))
BAIL(NC_EMPI);
- }
+ }
#endif /* USE_PARALLEL */
/* If we need to extend it, we also need a new file_spaceid
to reflect the new size of the space. */
if (need_to_extend)
- {
- LOG((4, "extending dataset"));
+ {
+ LOG((4, "extending dataset"));
#ifdef USE_PARALLEL
- if (h5->parallel)
- {
- if(NC_COLLECTIVE != var->parallel_access)
+ if (h5->parallel)
+ {
+ if(NC_COLLECTIVE != var->parallel_access)
BAIL(NC_ECANTEXTEND);
- /* Reach consensus about dimension sizes to extend to */
- /* (Note: Somewhat hackish, with the use of MPI_INTEGER, but MPI_MAX is
- * correct with this usage, as long as it's not executed on
- * heterogenous systems)
- */
- if(MPI_SUCCESS != MPI_Allreduce(MPI_IN_PLACE, &xtend_size, (var->ndims * (sizeof(hsize_t) / sizeof(int))), MPI_UNSIGNED, MPI_MAX, h5->comm))
+ /* Reach consensus about dimension sizes to extend to */
+ /* (Note: Somewhat hackish, with the use of MPI_INTEGER, but MPI_MAX is
+ * correct with this usage, as long as it's not executed on
+ * heterogenous systems)
+ */
+ if(MPI_SUCCESS != MPI_Allreduce(MPI_IN_PLACE, &xtend_size, (var->ndims * (sizeof(hsize_t) / sizeof(int))), MPI_UNSIGNED, MPI_MAX, h5->comm))
BAIL(NC_EMPI);
- }
+ }
#endif /* USE_PARALLEL */
- if (H5Dset_extent(var->hdf_datasetid, xtend_size) < 0)
+ if (H5Dset_extent(var->hdf_datasetid, xtend_size) < 0)
BAIL(NC_EHDFERR);
- if (file_spaceid > 0 && H5Sclose(file_spaceid) < 0)
- BAIL2(NC_EHDFERR);
- if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
+ if (file_spaceid > 0 && H5Sclose(file_spaceid) < 0)
+ BAIL2(NC_EHDFERR);
+ if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_spaces++;
+ num_spaces++;
#endif
- if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET,
- start, NULL, count, NULL) < 0)
+ if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET,
+ start, NULL, count, NULL) < 0)
BAIL(NC_EHDFERR);
- }
- }
+ }
+ }
#ifndef HDF5_CONVERT
- /* Do we need to convert the data? */
- if (need_to_convert)
- {
- if ((retval = nc4_convert_type(data, bufr, mem_nc_type, var->type_info->nc_typeid,
+ /* Do we need to convert the data? */
+ if (need_to_convert)
+ {
+ if ((retval = nc4_convert_type(data, bufr, mem_nc_type, var->type_info->nc_typeid,
len, &range_error, var->fill_value,
(h5->cmode & NC_CLASSIC_MODEL), is_long, 0)))
- BAIL(retval);
- }
+ BAIL(retval);
+ }
#endif
- /* Write the data. At last! */
- LOG((4, "about to H5Dwrite datasetid 0x%x mem_spaceid 0x%x "
- "file_spaceid 0x%x", var->hdf_datasetid, mem_spaceid, file_spaceid));
- if (H5Dwrite(var->hdf_datasetid, var->type_info->hdf_typeid,
- mem_spaceid, file_spaceid, xfer_plistid, bufr) < 0)
- BAIL(NC_EHDFERR);
-
- /* Remember that we have written to this var so that Fill Value
- * can't be set for it. */
- if (!var->written_to)
- var->written_to = NC_TRUE;
-
- /* For strict netcdf-3 rules, ignore erange errors between UBYTE
- * and BYTE types. */
- if ((h5->cmode & NC_CLASSIC_MODEL) &&
- (var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) &&
- (mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) &&
- range_error)
- range_error = 0;
-
- exit:
+ /* Write the data. At last! */
+ LOG((4, "about to H5Dwrite datasetid 0x%x mem_spaceid 0x%x "
+ "file_spaceid 0x%x", var->hdf_datasetid, mem_spaceid, file_spaceid));
+ if (H5Dwrite(var->hdf_datasetid, var->type_info->hdf_typeid,
+ mem_spaceid, file_spaceid, xfer_plistid, bufr) < 0)
+ BAIL(NC_EHDFERR);
+
+ /* Remember that we have written to this var so that Fill Value
+ * can't be set for it. */
+ if (!var->written_to)
+ var->written_to = NC_TRUE;
+
+ /* For strict netcdf-3 rules, ignore erange errors between UBYTE
+ * and BYTE types. */
+ if ((h5->cmode & NC_CLASSIC_MODEL) &&
+ (var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) &&
+ (mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) &&
+ range_error)
+ range_error = 0;
+
+ exit:
#ifdef HDF5_CONVERT
- if (mem_typeid > 0 && H5Tclose(mem_typeid) < 0)
- BAIL2(NC_EHDFERR);
+ if (mem_typeid > 0 && H5Tclose(mem_typeid) < 0)
+ BAIL2(NC_EHDFERR);
#endif
- if (file_spaceid > 0 && H5Sclose(file_spaceid) < 0)
- BAIL2(NC_EHDFERR);
+ if (file_spaceid > 0 && H5Sclose(file_spaceid) < 0)
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_spaces--;
+ num_spaces--;
#endif
- if (mem_spaceid > 0 && H5Sclose(mem_spaceid) < 0)
- BAIL2(NC_EHDFERR);
+ if (mem_spaceid > 0 && H5Sclose(mem_spaceid) < 0)
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_spaces--;
+ num_spaces--;
#endif
- if (xfer_plistid && (H5Pclose(xfer_plistid) < 0))
- BAIL2(NC_EPARINIT);
+ if (xfer_plistid && (H5Pclose(xfer_plistid) < 0))
+ BAIL2(NC_EPARINIT);
#ifdef EXTRA_TESTS
- num_plists--;
+ num_plists--;
#endif
#ifndef HDF5_CONVERT
- if (need_to_convert) free(bufr);
+ if (need_to_convert) free(bufr);
#endif
- /* If there was an error return it, otherwise return any potential
- range error value. If none, return NC_NOERR as usual.*/
- if (retval)
- return retval;
- if (range_error)
- return NC_ERANGE;
- return NC_NOERR;
+ /* If there was an error return it, otherwise return any potential
+ range error value. If none, return NC_NOERR as usual.*/
+ if (retval)
+ return retval;
+ if (range_error)
+ return NC_ERANGE;
+ return NC_NOERR;
}
-int
-nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
- const size_t *countp, nc_type mem_nc_type, int is_long, void *data)
+int
+nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
+ const size_t *countp, nc_type mem_nc_type, int is_long, void *data)
{
- NC_GRP_INFO_T *grp, *g;
- NC_HDF5_FILE_INFO_T *h5;
- NC_VAR_INFO_T *var;
- NC_DIM_INFO_T *dim;
-
- hid_t file_spaceid = 0, mem_spaceid = 0;
- hid_t xfer_plistid = 0;
- size_t file_type_size;
-
- hsize_t *xtend_size = NULL, count[NC_MAX_VAR_DIMS];
- hsize_t fdims[NC_MAX_VAR_DIMS], fmaxdims[NC_MAX_VAR_DIMS];
- hsize_t start[NC_MAX_VAR_DIMS];
- void *fillvalue = NULL;
- int no_read = 0, provide_fill = 0;
- int fill_value_size[NC_MAX_VAR_DIMS];
- int scalar = 0, retval = NC_NOERR, range_error = 0, i, d2;
- void *bufr = NULL;
+ NC_GRP_INFO_T *grp, *g;
+ NC_HDF5_FILE_INFO_T *h5;
+ NC_VAR_INFO_T *var;
+ NC_DIM_INFO_T *dim;
+
+ hid_t file_spaceid = 0, mem_spaceid = 0;
+ hid_t xfer_plistid = 0;
+ size_t file_type_size;
+
+ hsize_t *xtend_size = NULL, count[NC_MAX_VAR_DIMS];
+ hsize_t fdims[NC_MAX_VAR_DIMS], fmaxdims[NC_MAX_VAR_DIMS];
+ hsize_t start[NC_MAX_VAR_DIMS];
+ void *fillvalue = NULL;
+ int no_read = 0, provide_fill = 0;
+ int fill_value_size[NC_MAX_VAR_DIMS];
+ int scalar = 0, retval = NC_NOERR, range_error = 0, i, d2;
+ void *bufr = NULL;
#ifdef HDF5_CONVERT
- hid_t mem_typeid = 0;
-#endif
-#ifndef HDF5_CONVERT
- int need_to_convert = 0;
- size_t len = 1;
+ hid_t mem_typeid = 0;
+#endif
+#ifndef HDF5_CONVERT
+ int need_to_convert = 0;
+ size_t len = 1;
#endif
- /* Find our metadata for this file, group, and var. */
- assert(nc);
- if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var)))
- return retval;
- h5 = NC4_DATA(nc);
- assert(grp && h5 && var && var->name);
+ /* Find our metadata for this file, group, and var. */
+ assert(nc);
+ if ((retval = nc4_find_g_var_nc(nc, ncid, varid, &grp, &var)))
+ return retval;
+ h5 = NC4_DATA(nc);
+ assert(grp && h5 && var && var->name);
- LOG((3, "%s: var->name %s mem_nc_type %d is_long %d",
- __func__, var->name, mem_nc_type, is_long));
+ LOG((3, "%s: var->name %s mem_nc_type %d is_long %d",
+ __func__, var->name, mem_nc_type, is_long));
- /* Check some stuff about the type and the file. */
- if ((retval = check_for_vara(&mem_nc_type, var, h5)))
- return retval;
+ /* Check some stuff about the type and the file. */
+ if ((retval = check_for_vara(&mem_nc_type, var, h5)))
+ return retval;
- /* Convert from size_t and ptrdiff_t to hssize_t, and hsize_t. */
- for (i = 0; i < var->ndims; i++)
- {
+ /* Convert from size_t and ptrdiff_t to hssize_t, and hsize_t. */
+ for (i = 0; i < var->ndims; i++)
+ {
start[i] = startp[i];
count[i] = countp[i];
- }
-
- /* Open this dataset if necessary, also checking for a weird case:
- * a non-coordinate (and non-scalar) variable that has the same
- * name as a dimension. */
- if (var->hdf5_name && strlen(var->hdf5_name) >= strlen(NON_COORD_PREPEND) &&
- strncmp(var->hdf5_name, NON_COORD_PREPEND, strlen(NON_COORD_PREPEND)) == 0 &&
- var->ndims)
- if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->hdf5_name,
- H5P_DEFAULT)) < 0)
- return NC_ENOTVAR;
- if (!var->hdf_datasetid)
- if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name,
- H5P_DEFAULT)) < 0)
- return NC_ENOTVAR;
-
- /* Get file space of data. */
- if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
- BAIL(NC_EHDFERR);
+ }
+
+ /* Open this dataset if necessary, also checking for a weird case:
+ * a non-coordinate (and non-scalar) variable that has the same
+ * name as a dimension. */
+ if (var->hdf5_name && strlen(var->hdf5_name) >= strlen(NON_COORD_PREPEND) &&
+ strncmp(var->hdf5_name, NON_COORD_PREPEND, strlen(NON_COORD_PREPEND)) == 0 &&
+ var->ndims)
+ if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->hdf5_name,
+ H5P_DEFAULT)) < 0)
+ return NC_ENOTVAR;
+ if (!var->hdf_datasetid)
+ if ((var->hdf_datasetid = H5Dopen2(grp->hdf_grpid, var->name,
+ H5P_DEFAULT)) < 0)
+ return NC_ENOTVAR;
+
+ /* Get file space of data. */
+ if ((file_spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_spaces++;
+ num_spaces++;
#endif
- /* Check to ensure the user selection is
- * valid. H5Sget_simple_extent_dims gets the sizes of all the dims
- * and put them in fdims. */
- if (H5Sget_simple_extent_dims(file_spaceid, fdims, fmaxdims) < 0)
- BAIL(NC_EHDFERR);
+ /* Check to ensure the user selection is
+ * valid. H5Sget_simple_extent_dims gets the sizes of all the dims
+ * and put them in fdims. */
+ if (H5Sget_simple_extent_dims(file_spaceid, fdims, fmaxdims) < 0)
+ BAIL(NC_EHDFERR);
#ifdef LOGGING
- log_dim_info(var, fdims, fmaxdims, start, count);
-#endif
-
- /* Check dimension bounds. Remember that unlimited dimensions can
- * put data beyond their current length. */
- for (d2 = 0; d2 < var->ndims; d2++)
- for (g = grp; g; g = g->parent)
- for (dim = g->dim; dim; dim = dim->l.next)
- if (dim->dimid == var->dimids[d2])
- {
- if (dim->unlimited)
- {
- size_t ulen;
-
- /* We can't go beyond the largest current extent of
- the unlimited dim. */
- if ((retval = NC4_inq_dim(ncid, dim->dimid, NULL, &ulen)))
- BAIL(retval);
-
- /* Check for out of bound requests. */
- if (start[d2] >= (hssize_t)ulen && count[d2])
- BAIL_QUIET(NC_EINVALCOORDS);
- if (start[d2] + count[d2] > ulen)
- BAIL_QUIET(NC_EEDGE);
-
- /* Things get a little tricky here. If we're getting
- a GET request beyond the end of this var's
- current length in an unlimited dimension, we'll
- later need to return the fill value for the
- variable. */
- if (start[d2] >= (hssize_t)fdims[d2])
- fill_value_size[d2] = count[d2];
- else if (start[d2] + count[d2] > fdims[d2])
- fill_value_size[d2] = count[d2] - (fdims[d2] - start[d2]);
- else
- fill_value_size[d2] = 0;
- count[d2] -= fill_value_size[d2];
- if (fill_value_size[d2])
- provide_fill++;
- }
- else
- {
- /* Check for out of bound requests. */
- if (start[d2] >= (hssize_t)fdims[d2])
- BAIL_QUIET(NC_EINVALCOORDS);
- if (start[d2] + count[d2] > fdims[d2])
- BAIL_QUIET(NC_EEDGE);
+ log_dim_info(var, fdims, fmaxdims, start, count);
+#endif
+
+ /* Check dimension bounds. Remember that unlimited dimensions can
+ * put data beyond their current length. */
+ for (d2 = 0; d2 < var->ndims; d2++)
+ for (g = grp; g; g = g->parent)
+ for (dim = g->dim; dim; dim = dim->l.next)
+ if (dim->dimid == var->dimids[d2])
+ {
+ if (dim->unlimited)
+ {
+ size_t ulen;
+
+ /* We can't go beyond the largest current extent of
+ the unlimited dim. */
+ if ((retval = NC4_inq_dim(ncid, dim->dimid, NULL, &ulen)))
+ BAIL(retval);
+
+ /* Check for out of bound requests. */
+ if (start[d2] >= (hssize_t)ulen && count[d2])
+ BAIL_QUIET(NC_EINVALCOORDS);
+ if (start[d2] + count[d2] > ulen)
+ BAIL_QUIET(NC_EEDGE);
- /* Set the fill value boundary */
+ /* Things get a little tricky here. If we're getting
+ a GET request beyond the end of this var's
+ current length in an unlimited dimension, we'll
+ later need to return the fill value for the
+ variable. */
+ if (start[d2] >= (hssize_t)fdims[d2])
fill_value_size[d2] = count[d2];
- }
- }
-
- /* A little quirk: if any of the count values are zero, don't
- * read. */
- for (d2 = 0; d2 < var->ndims; d2++)
- if (count[d2] == 0)
- no_read++;
-
- /* Later on, we will need to know the size of this type in the
- * file. */
- assert(var->type_info->size);
- file_type_size = var->type_info->size;
-
- if (!no_read)
- {
+ else if (start[d2] + count[d2] > fdims[d2])
+ fill_value_size[d2] = count[d2] - (fdims[d2] - start[d2]);
+ else
+ fill_value_size[d2] = 0;
+ count[d2] -= fill_value_size[d2];
+ if (fill_value_size[d2])
+ provide_fill++;
+ }
+ else
+ {
+ /* Check for out of bound requests. */
+ if (start[d2] >= (hssize_t)fdims[d2])
+ BAIL_QUIET(NC_EINVALCOORDS);
+ if (start[d2] + count[d2] > fdims[d2])
+ BAIL_QUIET(NC_EEDGE);
+
+ /* Set the fill value boundary */
+ fill_value_size[d2] = count[d2];
+ }
+ }
+
+ /* A little quirk: if any of the count values are zero, don't
+ * read. */
+ for (d2 = 0; d2 < var->ndims; d2++)
+ if (count[d2] == 0)
+ no_read++;
+
+ /* Later on, we will need to know the size of this type in the
+ * file. */
+ assert(var->type_info->size);
+ file_type_size = var->type_info->size;
+
+ if (!no_read)
+ {
/* Now you would think that no one would be crazy enough to write
a scalar dataspace with one of the array function calls, but you
would be wrong. So let's check to see if the dataset is
scalar. If it is, we won't try to set up a hyperslab. */
if (H5Sget_simple_extent_type(file_spaceid) == H5S_SCALAR)
- {
- if ((mem_spaceid = H5Screate(H5S_SCALAR)) < 0)
+ {
+ if ((mem_spaceid = H5Screate(H5S_SCALAR)) < 0)
BAIL(NC_EHDFERR);
- scalar++;
+ scalar++;
#ifdef EXTRA_TESTS
- num_spaces++;
+ num_spaces++;
#endif
- }
+ }
else
- {
- if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET,
- start, NULL, count, NULL) < 0)
+ {
+ if (H5Sselect_hyperslab(file_spaceid, H5S_SELECT_SET,
+ start, NULL, count, NULL) < 0)
BAIL(NC_EHDFERR);
- /* Create a space for the memory, just big enough to hold the slab
- we want. */
- if ((mem_spaceid = H5Screate_simple(var->ndims, count, NULL)) < 0)
+ /* Create a space for the memory, just big enough to hold the slab
+ we want. */
+ if ((mem_spaceid = H5Screate_simple(var->ndims, count, NULL)) < 0)
BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_spaces++;
+ num_spaces++;
#endif
- }
+ }
/* Fix bug when reading HDF5 files with variable of type
* fixed-length string. We need to make it look like a
@@ -1014,53 +1014,53 @@ nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
* model supports, lacking anonymous dimensions. So
* variable-length strings are in allocated memory that user has
* to free, which we allocate here. */
- if(var->type_info->nc_type_class == NC_STRING &&
- H5Tget_size(var->type_info->hdf_typeid) > 1 &&
- !H5Tis_variable_str(var->type_info->hdf_typeid)) {
- hsize_t fstring_len;
+ if(var->type_info->nc_type_class == NC_STRING &&
+ H5Tget_size(var->type_info->hdf_typeid) > 1 &&
+ !H5Tis_variable_str(var->type_info->hdf_typeid)) {
+ hsize_t fstring_len;
- if ((fstring_len = H5Tget_size(var->type_info->hdf_typeid)) == 0)
+ if ((fstring_len = H5Tget_size(var->type_info->hdf_typeid)) == 0)
BAIL(NC_EHDFERR);
- if (!(*(char **)data = malloc(1 + fstring_len)))
- BAIL(NC_ENOMEM);
- bufr = *(char **)data;
+ if (!(*(char **)data = malloc(1 + fstring_len)))
+ BAIL(NC_ENOMEM);
+ bufr = *(char **)data;
}
-
-#ifndef HDF5_CONVERT
+
+#ifndef HDF5_CONVERT
/* Are we going to convert any data? (No converting of compound or
* opaque types.) */
- if ((mem_nc_type != var->type_info->nc_typeid || (var->type_info->nc_typeid == NC_INT && is_long)) &&
+ if ((mem_nc_type != var->type_info->nc_typeid || (var->type_info->nc_typeid == NC_INT && is_long)) &&
mem_nc_type != NC_COMPOUND && mem_nc_type != NC_OPAQUE)
- {
- /* We must convert - allocate a buffer. */
- need_to_convert++;
- if (var->ndims)
+ {
+ /* We must convert - allocate a buffer. */
+ need_to_convert++;
+ if (var->ndims)
for (d2 = 0; d2 < var->ndims; d2++)
- len *= countp[d2];
- LOG((4, "converting data for var %s type=%d len=%d", var->name,
- var->type_info->nc_typeid, len));
-
- /* If we're reading, we need bufr to have enough memory to store
- * the data in the file. If we're writing, we need bufr to be
- * big enough to hold all the data in the file's type. */
- if (!(bufr = malloc(len * file_type_size)))
+ len *= countp[d2];
+ LOG((4, "converting data for var %s type=%d len=%d", var->name,
+ var->type_info->nc_typeid, len));
+
+ /* If we're reading, we need bufr to have enough memory to store
+ * the data in the file. If we're writing, we need bufr to be
+ * big enough to hold all the data in the file's type. */
+ if (!(bufr = malloc(len * file_type_size)))
BAIL(NC_ENOMEM);
- }
+ }
else
#endif /* ifndef HDF5_CONVERT */
- if(!bufr)
+ if(!bufr)
bufr = data;
/* Get the HDF type of the data in memory. */
#ifdef HDF5_CONVERT
- if ((retval = nc4_get_hdf_typeid(h5, mem_nc_type, &mem_typeid,
- var->type_info->endianness)))
- BAIL(retval);
+ if ((retval = nc4_get_hdf_typeid(h5, mem_nc_type, &mem_typeid,
+ var->type_info->endianness)))
+ BAIL(retval);
#endif
-
+
/* Create the data transfer property list. */
if ((xfer_plistid = H5Pcreate(H5P_DATASET_XFER)) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_plists++;
#endif
@@ -1069,21 +1069,21 @@ nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
/* Apply the callback function which will detect range
* errors. Which one to call depends on the length of the
* destination buffer type. */
- if (H5Pset_type_conv_cb(xfer_plistid, except_func, &range_error) < 0)
- BAIL(NC_EHDFERR);
+ if (H5Pset_type_conv_cb(xfer_plistid, except_func, &range_error) < 0)
+ BAIL(NC_EHDFERR);
#endif
#ifdef USE_PARALLEL
/* Set up parallel I/O, if needed. */
if ((retval = set_par_access(h5, var, xfer_plistid)))
- BAIL(retval);
+ BAIL(retval);
#endif
/* Read this hyperslab into memory. */
LOG((5, "About to H5Dread some data..."));
- if (H5Dread(var->hdf_datasetid, var->type_info->native_hdf_typeid,
+ if (H5Dread(var->hdf_datasetid, var->type_info->native_hdf_typeid,
mem_spaceid, file_spaceid, xfer_plistid, bufr) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifndef HDF5_CONVERT
/* Eventually the block below will go away. Right now it's
@@ -1092,20 +1092,20 @@ nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
being added to HDF5 at the HDF5 World Hall of Coding right
now, by a staff of thousands of programming gnomes. */
if (need_to_convert)
- {
- if ((retval = nc4_convert_type(bufr, data, var->type_info->nc_typeid, mem_nc_type,
- len, &range_error, var->fill_value,
- (h5->cmode & NC_CLASSIC_MODEL), 0, is_long)))
+ {
+ if ((retval = nc4_convert_type(bufr, data, var->type_info->nc_typeid, mem_nc_type,
+ len, &range_error, var->fill_value,
+ (h5->cmode & NC_CLASSIC_MODEL), 0, is_long)))
BAIL(retval);
- /* For strict netcdf-3 rules, ignore erange errors between UBYTE
- * and BYTE types. */
- if ((h5->cmode & NC_CLASSIC_MODEL) &&
- (var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) &&
- (mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) &&
- range_error)
+ /* For strict netcdf-3 rules, ignore erange errors between UBYTE
+ * and BYTE types. */
+ if ((h5->cmode & NC_CLASSIC_MODEL) &&
+ (var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) &&
+ (mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) &&
+ range_error)
range_error = 0;
- }
+ }
#endif
/* For strict netcdf-3 rules, ignore erange errors between UBYTE
@@ -1114,106 +1114,257 @@ nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
(var->type_info->nc_typeid == NC_UBYTE || var->type_info->nc_typeid == NC_BYTE) &&
(mem_nc_type == NC_UBYTE || mem_nc_type == NC_BYTE) &&
range_error)
- range_error = 0;
+ range_error = 0;
- } /* endif ! no_read */
+ } /* endif ! no_read */
- /* Now we need to fake up any further data that was asked for,
- using the fill values instead. First skip past the data we
- just read, if any. */
- if (!scalar && provide_fill)
- {
+ /* Now we need to fake up any further data that was asked for,
+ using the fill values instead. First skip past the data we
+ just read, if any. */
+ if (!scalar && provide_fill)
+ {
void *filldata;
size_t real_data_size = 0;
size_t fill_len;
/* Skip past the real data we've already read. */
if (!no_read)
- for (real_data_size = file_type_size, d2 = 0; d2 < var->ndims; d2++)
- real_data_size *= (count[d2] - start[d2]);
+ for (real_data_size = file_type_size, d2 = 0; d2 < var->ndims; d2++)
+ real_data_size *= (count[d2] - start[d2]);
/* Get the fill value from the HDF5 variable. Memory will be
* allocated. */
if (get_fill_value(h5, var, &fillvalue) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
/* How many fill values do we need? */
- for (fill_len = 1, d2 = 0; d2 < var->ndims; d2++)
- fill_len *= (fill_value_size[d2] ? fill_value_size[d2] : 1);
+ for (fill_len = 1, d2 = 0; d2 < var->ndims; d2++)
+ fill_len *= (fill_value_size[d2] ? fill_value_size[d2] : 1);
/* Copy the fill value into the rest of the data buffer. */
filldata = (char *)data + real_data_size;
for (i = 0; i < fill_len; i++)
- {
- if (var->type_info->nc_type_class == NC_STRING)
- {
- if (*(char **)fillvalue)
+ {
+ if (var->type_info->nc_type_class == NC_STRING)
{
- if (!(*(char **)filldata = strdup(*(char **)fillvalue)))
- BAIL(NC_ENOMEM);
+ if (*(char **)fillvalue)
+ {
+ if (!(*(char **)filldata = strdup(*(char **)fillvalue)))
+ BAIL(NC_ENOMEM);
+ }
+ else
+ *(char **)filldata = NULL;
}
- else
- *(char **)filldata = NULL;
- }
- else
+ else
memcpy(filldata, fillvalue, file_type_size);
- filldata = (char *)filldata + file_type_size;
- }
- }
+ filldata = (char *)filldata + file_type_size;
+ }
+ }
- exit:
+ exit:
#ifdef HDF5_CONVERT
- if (mem_typeid > 0 && H5Tclose(mem_typeid) < 0)
- BAIL2(NC_EHDFERR);
+ if (mem_typeid > 0 && H5Tclose(mem_typeid) < 0)
+ BAIL2(NC_EHDFERR);
#endif
- if (file_spaceid > 0)
- {
+ if (file_spaceid > 0)
+ {
if (H5Sclose(file_spaceid) < 0)
- BAIL2(NC_EHDFERR);
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces--;
#endif
- }
- if (mem_spaceid > 0)
- {
+ }
+ if (mem_spaceid > 0)
+ {
if (H5Sclose(mem_spaceid) < 0)
- BAIL2(NC_EHDFERR);
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces--;
#endif
- }
- if (xfer_plistid > 0)
- {
+ }
+ if (xfer_plistid > 0)
+ {
if (H5Pclose(xfer_plistid) < 0)
- BAIL2(NC_EHDFERR);
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_plists--;
#endif
- }
+ }
#ifndef HDF5_CONVERT
- if (need_to_convert)
- free(bufr);
+ if (need_to_convert)
+ free(bufr);
#endif
- if (xtend_size)
- free(xtend_size);
- if (fillvalue)
- {
+ if (xtend_size)
+ free(xtend_size);
+ if (fillvalue)
+ {
if (var->type_info->nc_type_class == NC_VLEN)
- nc_free_vlen((nc_vlen_t *)fillvalue);
+ nc_free_vlen((nc_vlen_t *)fillvalue);
else if (var->type_info->nc_type_class == NC_STRING && *(char **)fillvalue)
- free(*(char **)fillvalue);
+ free(*(char **)fillvalue);
free(fillvalue);
- }
+ }
+
+ /* If there was an error return it, otherwise return any potential
+ range error value. If none, return NC_NOERR as usual.*/
+ if (retval)
+ return retval;
+ if (range_error)
+ return NC_ERANGE;
+ return NC_NOERR;
+}
- /* If there was an error return it, otherwise return any potential
- range error value. If none, return NC_NOERR as usual.*/
- if (retval)
- return retval;
- if (range_error)
- return NC_ERANGE;
- return NC_NOERR;
+/* Read or write an attribute. */
+static int
+put_att_grpa(NC_GRP_INFO_T *grp, int varid, NC_ATT_INFO_T *att)
+{
+ hid_t datasetid = 0, locid;
+ hid_t attid = 0, spaceid = 0, file_typeid = 0;
+ hsize_t dims[1]; /* netcdf attributes always 1-D. */
+ htri_t attr_exists;
+ int retval = NC_NOERR;
+ void *data;
+ int phoney_data = 99;
+
+ assert(att->name);
+ LOG((3, "%s: varid %d att->attnum %d att->name %s att->nc_typeid %d att->len %d",
+ __func__, varid, att->attnum, att->name,
+ att->nc_typeid, att->len));
+
+ /* If the file is read-only, return an error. */
+ if (grp->nc4_info->no_write)
+ BAIL(NC_EPERM);
+
+ /* Get the hid to attach the attribute to, or read it from. */
+ if (varid == NC_GLOBAL)
+ locid = grp->hdf_grpid;
+ else
+ {
+ if ((retval = nc4_open_var_grp2(grp, varid, &datasetid)))
+ BAIL(retval);
+ locid = datasetid;
+ }
+
+ /* Delete the att if it exists already. */
+ if ((attr_exists = H5Aexists(locid, att->name)) < 0)
+ BAIL(NC_EHDFERR);
+ if (attr_exists)
+ {
+ if (H5Adelete(locid, att->name) < 0)
+ BAIL(NC_EHDFERR);
+ }
+
+ /* Get the length ready, and find the HDF type we'll be
+ * writing. */
+ dims[0] = att->len;
+ if ((retval = nc4_get_hdf_typeid(grp->nc4_info, att->nc_typeid,
+ &file_typeid, 0)))
+ BAIL(retval);
+
+ /* Even if the length is zero, HDF5 won't let me write with a
+ * NULL pointer. So if the length of the att is zero, point to
+ * some phoney data (which won't be written anyway.)*/
+ if (!dims[0])
+ data = &phoney_data;
+ else if (att->data)
+ data = att->data;
+ else if (att->stdata)
+ data = att->stdata;
+ else
+ data = att->vldata;
+
+ /* NC_CHAR types require some extra work. The space ID is set to
+ * scalar, and the type is told how long the string is. If it's
+ * really zero length, set the size to 1. (The fact that it's
+ * really zero will be marked by the NULL dataspace, but HDF5
+ * doesn't allow me to set the size of the type to zero.)*/
+ if (att->nc_typeid == NC_CHAR)
+ {
+ size_t string_size = dims[0];
+ if (!string_size)
+ {
+ string_size = 1;
+ if ((spaceid = H5Screate(H5S_NULL)) < 0)
+ BAIL(NC_EATTMETA);
+#ifdef EXTRA_TESTS
+ num_spaces++;
+#endif
+ }
+ else
+ {
+ if ((spaceid = H5Screate(H5S_SCALAR)) < 0)
+ BAIL(NC_EATTMETA);
+#ifdef EXTRA_TESTS
+ num_spaces++;
+#endif
+ }
+ if (H5Tset_size(file_typeid, string_size) < 0)
+ BAIL(NC_EATTMETA);
+ if (H5Tset_strpad(file_typeid, H5T_STR_NULLTERM) < 0)
+ BAIL(NC_EATTMETA);
+ }
+ else
+ {
+ if (!att->len)
+ {
+ if ((spaceid = H5Screate(H5S_NULL)) < 0)
+ BAIL(NC_EATTMETA);
+#ifdef EXTRA_TESTS
+ num_spaces++;
+#endif
+ }
+ else
+ {
+ if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0)
+ BAIL(NC_EATTMETA);
+#ifdef EXTRA_TESTS
+ num_spaces++;
+#endif
+ }
+ }
+ if ((attid = H5Acreate(locid, att->name, file_typeid, spaceid,
+ H5P_DEFAULT)) < 0)
+ BAIL(NC_EATTMETA);
+
+ /* Write the values, (even if length is zero). */
+ if (H5Awrite(attid, file_typeid, data) < 0)
+ BAIL(NC_EATTMETA);
+
+ exit:
+ if (file_typeid && H5Tclose(file_typeid))
+ BAIL2(NC_EHDFERR);
+ if (attid > 0 && H5Aclose(attid) < 0)
+ BAIL2(NC_EHDFERR);
+ if (spaceid > 0 && H5Sclose(spaceid) < 0)
+ BAIL2(NC_EHDFERR);
+#ifdef EXTRA_TESTS
+ num_spaces--;
+#endif
+ return retval;
+}
+
+/* Write all the dirty atts in an attlist. */
+static int
+write_attlist(NC_ATT_INFO_T *attlist, int varid, NC_GRP_INFO_T *grp)
+{
+ NC_ATT_INFO_T *att;
+ int retval;
+
+ for (att = attlist; att; att = att->l.next)
+ {
+ if (att->dirty)
+ {
+ LOG((4, "%s: writing att %s to varid %d", __func__, att->name, varid));
+ if ((retval = put_att_grpa(grp, varid, att)))
+ return retval;
+ att->dirty = NC_FALSE;
+ att->created = NC_TRUE;
+ }
+ }
+ return NC_NOERR;
}
+
/* This function is a bit of a hack. Turns out that HDF5 dimension
* scales cannot themselves have scales attached. This leaves
* multidimensional coordinate variables hosed. So this function
@@ -1225,645 +1376,513 @@ nc4_get_vara(NC *nc, int ncid, int varid, const size_t *startp,
* natural approach, made with whole grains, and locally-grown
* vegetables. */
static int
-write_coord_dimids(NC_VAR_INFO_T *var)
+write_coord_dimids(NC_VAR_INFO_T *var)
{
- hsize_t coords_len[1];
- hid_t c_spaceid = -1, c_attid = -1;
- int ret = 0;
+ hsize_t coords_len[1];
+ hid_t c_spaceid = -1, c_attid = -1;
+ int ret = 0;
- /* Write our attribute. */
- coords_len[0] = var->ndims;
- if ((c_spaceid = H5Screate_simple(1, coords_len, coords_len)) < 0) ret++;
+ /* Write our attribute. */
+ coords_len[0] = var->ndims;
+ if ((c_spaceid = H5Screate_simple(1, coords_len, coords_len)) < 0) ret++;
#ifdef EXTRA_TESTS
- num_spaces++;
+ num_spaces++;
#endif
- if (!ret && (c_attid = H5Acreate(var->hdf_datasetid, COORDINATES, H5T_NATIVE_INT,
- c_spaceid, H5P_DEFAULT)) < 0) ret++;
- if (!ret && H5Awrite(c_attid, H5T_NATIVE_INT, var->dimids) < 0) ret++;
+ if (!ret && (c_attid = H5Acreate(var->hdf_datasetid, COORDINATES, H5T_NATIVE_INT,
+ c_spaceid, H5P_DEFAULT)) < 0) ret++;
+ if (!ret && H5Awrite(c_attid, H5T_NATIVE_INT, var->dimids) < 0) ret++;
- /* Close up shop. */
- if (c_spaceid > 0 && H5Sclose(c_spaceid) < 0) ret++;
+ /* Close up shop. */
+ if (c_spaceid > 0 && H5Sclose(c_spaceid) < 0) ret++;
#ifdef EXTRA_TESTS
- num_spaces--;
+ num_spaces--;
#endif
- if (c_attid > 0 && H5Aclose(c_attid) < 0) ret++;
- return ret ? NC_EHDFERR : 0;
+ if (c_attid > 0 && H5Aclose(c_attid) < 0) ret++;
+ return ret ? NC_EHDFERR : 0;
}
/* Write a special attribute for the netCDF-4 dimension ID. */
static int
write_netcdf4_dimid(hid_t datasetid, int dimid)
{
- hid_t dimid_spaceid, dimid_attid;
- htri_t attr_exists;
+ hid_t dimid_spaceid, dimid_attid;
+ htri_t attr_exists;
- /* Create the space. */
- if ((dimid_spaceid = H5Screate(H5S_SCALAR)) < 0)
- return NC_EHDFERR;
+ /* Create the space. */
+ if ((dimid_spaceid = H5Screate(H5S_SCALAR)) < 0)
+ return NC_EHDFERR;
#ifdef EXTRA_TESTS
- num_spaces++;
-#endif
-
- /* Does the attribute already exist? If so, don't try to create it. */
- if ((attr_exists = H5Aexists(datasetid, NC_DIMID_ATT_NAME)) < 0)
- return NC_EHDFERR;
- if (attr_exists)
- dimid_attid = H5Aopen_by_name(datasetid, ".", NC_DIMID_ATT_NAME,
- H5P_DEFAULT, H5P_DEFAULT);
- else
- /* Create the attribute if needed. */
- dimid_attid = H5Acreate(datasetid, NC_DIMID_ATT_NAME,
- H5T_NATIVE_INT, dimid_spaceid, H5P_DEFAULT);
- if (dimid_attid < 0)
- return NC_EHDFERR;
-
-
- /* Write it. */
- LOG((4, "%s: writting secret dimid %d", __func__, dimid));
- if (H5Awrite(dimid_attid, H5T_NATIVE_INT, &dimid) < 0)
- return NC_EHDFERR;
-
- /* Close stuff*/
- if (H5Sclose(dimid_spaceid) < 0)
- return NC_EHDFERR;
+ num_spaces++;
+#endif
+
+ /* Does the attribute already exist? If so, don't try to create it. */
+ if ((attr_exists = H5Aexists(datasetid, NC_DIMID_ATT_NAME)) < 0)
+ return NC_EHDFERR;
+ if (attr_exists)
+ dimid_attid = H5Aopen_by_name(datasetid, ".", NC_DIMID_ATT_NAME,
+ H5P_DEFAULT, H5P_DEFAULT);
+ else
+ /* Create the attribute if needed. */
+ dimid_attid = H5Acreate(datasetid, NC_DIMID_ATT_NAME,
+ H5T_NATIVE_INT, dimid_spaceid, H5P_DEFAULT);
+ if (dimid_attid < 0)
+ return NC_EHDFERR;
+
+
+ /* Write it. */
+ LOG((4, "%s: writing secret dimid %d", __func__, dimid));
+ if (H5Awrite(dimid_attid, H5T_NATIVE_INT, &dimid) < 0)
+ return NC_EHDFERR;
+
+ /* Close stuff*/
+ if (H5Sclose(dimid_spaceid) < 0)
+ return NC_EHDFERR;
#ifdef EXTRA_TESTS
- num_spaces--;
+ num_spaces--;
#endif
- if (H5Aclose(dimid_attid) < 0)
- return NC_EHDFERR;
+ if (H5Aclose(dimid_attid) < 0)
+ return NC_EHDFERR;
- return NC_NOERR;
+ return NC_NOERR;
}
/* This function creates the HDF5 dataset for a variable. */
static int
-var_create_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, int write_dimid)
+var_create_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, nc_bool_t write_dimid)
{
- NC_GRP_INFO_T *g;
- hid_t plistid = 0, access_plistid = 0, typeid = 0, spaceid = 0;
- hsize_t *chunksize = NULL, *dimsize = NULL, *maxdimsize = NULL;
- int d;
- void *fillp = NULL;
- NC_DIM_INFO_T *dim = NULL;
- int dims_found = 0;
- char *name_to_use;
- int retval = NC_NOERR;
-
- LOG((3, "%s:: name %s", __func__, var->name));
-
- /* Scalar or not, we need a creation property list. */
- if ((plistid = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- BAIL(NC_EHDFERR);
+ NC_GRP_INFO_T *g;
+ hid_t plistid = 0, access_plistid = 0, typeid = 0, spaceid = 0;
+ hsize_t chunksize[H5S_MAX_RANK], dimsize[H5S_MAX_RANK], maxdimsize[H5S_MAX_RANK];
+ int d;
+ void *fillp = NULL;
+ NC_DIM_INFO_T *dim = NULL;
+ int dims_found = 0;
+ char *name_to_use;
+ int retval = NC_NOERR;
+
+ LOG((3, "%s:: name %s", __func__, var->name));
+
+ /* Scalar or not, we need a creation property list. */
+ if ((plistid = H5Pcreate(H5P_DATASET_CREATE)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_plists++;
+ num_plists++;
#endif
- if ((access_plistid = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
- BAIL(NC_EHDFERR);
+ if ((access_plistid = H5Pcreate(H5P_DATASET_ACCESS)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_plists++;
+ num_plists++;
#endif
-
- /* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */
- if (H5Pset_obj_track_times(plistid,0)<0)
- BAIL(NC_EHDFERR);
- /* Find the HDF5 type of the dataset. */
- if ((retval = nc4_get_hdf_typeid(grp->nc4_info, var->type_info->nc_typeid, &typeid,
- var->type_info->endianness)))
- BAIL(retval);
+ /* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */
+ if (H5Pset_obj_track_times(plistid,0)<0)
+ BAIL(NC_EHDFERR);
- /* Figure out what fill value to set, if any. */
- if (var->no_fill)
- {
+ /* Find the HDF5 type of the dataset. */
+ if ((retval = nc4_get_hdf_typeid(grp->nc4_info, var->type_info->nc_typeid, &typeid,
+ var->type_info->endianness)))
+ BAIL(retval);
+
+ /* Figure out what fill value to set, if any. */
+ if (var->no_fill)
+ {
/* Required to truly turn HDF5 fill values off */
if (H5Pset_fill_time(plistid, H5D_FILL_TIME_NEVER) < 0)
- BAIL(NC_EHDFERR);
- }
- else
- {
+ BAIL(NC_EHDFERR);
+ }
+ else
+ {
if ((retval = get_fill_value(grp->nc4_info, var, &fillp)))
- BAIL(retval);
+ BAIL(retval);
/* If there is a fill value, set it. */
if (fillp)
- {
- if (var->type_info->nc_type_class == NC_STRING)
- {
- if (H5Pset_fill_value(plistid, typeid, fillp) < 0)
- BAIL(NC_EHDFERR);
- }
- else
- {
- /* The fill value set in HDF5 must always be presented as
- * a native type, even if the endianness for this dataset
- * is non-native. HDF5 will translate the fill value to
- * the target endiannesss. */
- hid_t fill_typeid = 0;
-
- if ((retval = nc4_get_hdf_typeid(grp->nc4_info, var->type_info->nc_typeid, &fill_typeid,
- NC_ENDIAN_NATIVE)))
- BAIL(retval);
- if (H5Pset_fill_value(plistid, fill_typeid, fillp) < 0)
- {
- if (H5Tclose(fill_typeid) < 0)
+ {
+ if (var->type_info->nc_type_class == NC_STRING)
+ {
+ if (H5Pset_fill_value(plistid, typeid, fillp) < 0)
+ BAIL(NC_EHDFERR);
+ }
+ else
+ {
+ /* The fill value set in HDF5 must always be presented as
+ * a native type, even if the endianness for this dataset
+ * is non-native. HDF5 will translate the fill value to
+ * the target endiannesss. */
+ hid_t fill_typeid = 0;
+
+ if ((retval = nc4_get_hdf_typeid(grp->nc4_info, var->type_info->nc_typeid, &fill_typeid,
+ NC_ENDIAN_NATIVE)))
+ BAIL(retval);
+ if (H5Pset_fill_value(plistid, fill_typeid, fillp) < 0)
+ {
+ if (H5Tclose(fill_typeid) < 0)
+ BAIL(NC_EHDFERR);
BAIL(NC_EHDFERR);
- BAIL(NC_EHDFERR);
+ }
+ if (H5Tclose(fill_typeid) < 0)
+ BAIL(NC_EHDFERR);
}
- if (H5Tclose(fill_typeid) < 0)
- BAIL(NC_EHDFERR);
- }
- }
- }
-
- /* If the user wants to shuffle the data, set that up now. */
- if (var->shuffle)
- if (H5Pset_shuffle(plistid) < 0)
- BAIL(NC_EHDFERR);
-
- /* If the user wants to deflate the data, set that up now. */
- if (var->deflate)
- if (H5Pset_deflate(plistid, var->deflate_level) < 0)
- BAIL(NC_EHDFERR);
-
- /* Szip? NO! We don't want anyone to produce szipped netCDF files! */
-/* #ifdef USE_SZIP */
-/* if (var->options_mask) */
-/* if (H5Pset_szip(plistid, var->options_mask, var->bits_per_pixel) < 0) */
-/* BAIL(NC_EHDFERR); */
-/* #endif */
-
- /* If the user wants to fletcher error correcton, set that up now. */
- if (var->fletcher32)
- if (H5Pset_fletcher32(plistid) < 0)
- BAIL(NC_EHDFERR);
-
- /* If ndims non-zero, get info for all dimensions. We look up the
- dimids and get the len of each dimension. We need this to create
- the space for the dataset. In netCDF a dimension length of zero
- means an unlimited dimension. */
- if (var->ndims)
- {
+ }
+ }
+
+ /* If the user wants to shuffle the data, set that up now. */
+ if (var->shuffle)
+ if (H5Pset_shuffle(plistid) < 0)
+ BAIL(NC_EHDFERR);
+
+ /* If the user wants to deflate the data, set that up now. */
+ if (var->deflate)
+ if (H5Pset_deflate(plistid, var->deflate_level) < 0)
+ BAIL(NC_EHDFERR);
+
+ /* Szip? NO! We don't want anyone to produce szipped netCDF files! */
+ /* #ifdef USE_SZIP */
+ /* if (var->options_mask) */
+ /* if (H5Pset_szip(plistid, var->options_mask, var->bits_per_pixel) < 0) */
+ /* BAIL(NC_EHDFERR); */
+ /* #endif */
+
+ /* If the user wants to fletcher error correcton, set that up now. */
+ if (var->fletcher32)
+ if (H5Pset_fletcher32(plistid) < 0)
+ BAIL(NC_EHDFERR);
+
+ /* If ndims non-zero, get info for all dimensions. We look up the
+ dimids and get the len of each dimension. We need this to create
+ the space for the dataset. In netCDF a dimension length of zero
+ means an unlimited dimension. */
+ if (var->ndims)
+ {
int unlimdim = 0;
/* Check to see if any unlimited dimensions are used in this var. */
for (d = 0; d < var->ndims; d++)
- if (var->dim[d]->unlimited)
- unlimdim++;
+ if (var->dim[d]->unlimited)
+ unlimdim++;
/* If there are no unlimited dims, and no filters, and the user
* has not specified chunksizes, use contiguous variable for
* better performance. */
if(!var->shuffle && !var->deflate && !var->options_mask &&
- !var->fletcher32 && (var->chunksizes == NULL || !var->chunksizes[0])) {
+ !var->fletcher32 && (var->chunksizes == NULL || !var->chunksizes[0])) {
#ifdef USE_HDF4
- NC_HDF5_FILE_INFO_T *h5 = grp->nc4_info;
- if(h5->hdf4 || !unlimdim)
-#else
- if(!unlimdim)
+ NC_HDF5_FILE_INFO_T *h5 = grp->nc4_info;
+ if(h5->hdf4 || !unlimdim)
+#else
+ if(!unlimdim)
#endif
- var->contiguous = NC_TRUE;
+ var->contiguous = NC_TRUE;
}
- if (!(dimsize = malloc(var->ndims * sizeof(hsize_t))))
- BAIL(NC_ENOMEM);
- if (!(maxdimsize = malloc(var->ndims * sizeof(hsize_t))))
- BAIL(NC_ENOMEM);
- if (!var->contiguous)
- if (!(chunksize = malloc(var->ndims * sizeof(hsize_t))))
- BAIL(NC_ENOMEM);
-
+
+ /* Gather current & maximum dimension sizes, along with chunk sizes */
for (d = 0; d < var->ndims; d++)
- {
- for (g = grp; g && (dims_found < var->ndims); g = g->parent)
- {
- for (dim = g->dim; dim; dim = dim->l.next)
- {
- if (dim->dimid == var->dimids[d])
- {
- dimsize[d] = dim->unlimited ? NC_HDF5_UNLIMITED_DIMSIZE : dim->len;
- maxdimsize[d] = dim->unlimited ? H5S_UNLIMITED : (hsize_t)dim->len;
- if (!var->contiguous) {
- if (var->chunksizes[d])
- chunksize[d] = var->chunksizes[d];
- else
- {
- size_t type_size;
- if (var->type_info->nc_type_class == NC_STRING)
- type_size = sizeof(char *);
- else
- type_size = var->type_info->size;
-
- /* Unlimited dim always gets chunksize of 1. */
- if (dim->unlimited)
- chunksize[d] = 1;
+ {
+ for (g = grp; g && (dims_found < var->ndims); g = g->parent)
+ {
+ for (dim = g->dim; dim; dim = dim->l.next)
+ {
+ if (dim->dimid == var->dimids[d])
+ {
+ dimsize[d] = dim->unlimited ? NC_HDF5_UNLIMITED_DIMSIZE : dim->len;
+ maxdimsize[d] = dim->unlimited ? H5S_UNLIMITED : (hsize_t)dim->len;
+ if (!var->contiguous) {
+ if (var->chunksizes[d])
+ chunksize[d] = var->chunksizes[d];
else
- chunksize[d] = pow((double)DEFAULT_CHUNK_SIZE/type_size,
- 1/(double)(var->ndims - unlimdim));
-
- /* If the chunksize is greater than the dim
- * length, make it the dim length. */
- if (!dim->unlimited && chunksize[d] > dim->len)
- chunksize[d] = dim->len;
-
- /* Remember the computed chunksize */
- var->chunksizes[d] = chunksize[d];
- }
- }
+ {
+ size_t type_size;
+ if (var->type_info->nc_type_class == NC_STRING)
+ type_size = sizeof(char *);
+ else
+ type_size = var->type_info->size;
+
+ /* Unlimited dim always gets chunksize of 1. */
+ if (dim->unlimited)
+ chunksize[d] = 1;
+ else
+ chunksize[d] = pow((double)DEFAULT_CHUNK_SIZE/type_size,
+ 1/(double)(var->ndims - unlimdim));
+
+ /* If the chunksize is greater than the dim
+ * length, make it the dim length. */
+ if (!dim->unlimited && chunksize[d] > dim->len)
+ chunksize[d] = dim->len;
+
+ /* Remember the computed chunksize */
+ var->chunksizes[d] = chunksize[d];
+ }
+ }
+
+ dims_found++;
+ break;
+ }
+ }
+ }
+ }
- dims_found++;
- break;
- }
- }
- }
- }
-
if (var->contiguous)
- {
- if (H5Pset_layout(plistid, H5D_CONTIGUOUS) < 0)
+ {
+ if (H5Pset_layout(plistid, H5D_CONTIGUOUS) < 0)
BAIL(NC_EHDFERR);
- }
+ }
else
- {
- if (H5Pset_chunk(plistid, var->ndims, chunksize) < 0)
+ {
+ if (H5Pset_chunk(plistid, var->ndims, chunksize) < 0)
BAIL(NC_EHDFERR);
- }
-
+ }
+
/* Create the dataspace. */
if ((spaceid = H5Screate_simple(var->ndims, dimsize, maxdimsize)) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces++;
#endif
- }
- else
- {
+ }
+ else
+ {
if ((spaceid = H5Screate(H5S_SCALAR)) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces++;
#endif
- }
+ }
- /* Turn on creation order tracking. */
- if (H5Pset_attr_creation_order(plistid, H5P_CRT_ORDER_TRACKED|
- H5P_CRT_ORDER_INDEXED) < 0)
- BAIL(NC_EHDFERR);
+ /* Turn on creation order tracking. */
+ if (H5Pset_attr_creation_order(plistid, H5P_CRT_ORDER_TRACKED|
+ H5P_CRT_ORDER_INDEXED) < 0)
+ BAIL(NC_EHDFERR);
- /* Set per-var chunk cache, for chunked datasets. */
- if (!var->contiguous && var->chunk_cache_size)
- if (H5Pset_chunk_cache(access_plistid, var->chunk_cache_nelems,
- var->chunk_cache_size, var->chunk_cache_preemption) < 0)
- BAIL(NC_EHDFERR);
-
- /* At long last, create the dataset. */
- name_to_use = var->hdf5_name ? var->hdf5_name : var->name;
- LOG((4, "%s: about to H5Dcreate dataset %s of type 0x%x", __func__,
- name_to_use, typeid));
- if ((var->hdf_datasetid = H5Dcreate2(grp->hdf_grpid, name_to_use, typeid,
- spaceid, H5P_DEFAULT, plistid, access_plistid)) < 0)
+ /* Set per-var chunk cache, for chunked datasets. */
+ if (!var->contiguous && var->chunk_cache_size)
+ if (H5Pset_chunk_cache(access_plistid, var->chunk_cache_nelems,
+ var->chunk_cache_size, var->chunk_cache_preemption) < 0)
BAIL(NC_EHDFERR);
- var->created = NC_TRUE;
- var->dirty = NC_FALSE;
-
- /* If this is a dimscale, mark it as such in the HDF5 file. Also
- * find the dimension info and store the dataset id of the dimscale
- * dataset. */
- if (var->dimscale)
- {
+
+ /* At long last, create the dataset. */
+ name_to_use = var->hdf5_name ? var->hdf5_name : var->name;
+ LOG((4, "%s: about to H5Dcreate dataset %s of type 0x%x", __func__,
+ name_to_use, typeid));
+ if ((var->hdf_datasetid = H5Dcreate2(grp->hdf_grpid, name_to_use, typeid,
+ spaceid, H5P_DEFAULT, plistid, access_plistid)) < 0)
+ BAIL(NC_EHDFERR);
+ var->created = NC_TRUE;
+ var->is_new_var = NC_FALSE;
+
+ /* If this is a dimscale, mark it as such in the HDF5 file. Also
+ * find the dimension info and store the dataset id of the dimscale
+ * dataset. */
+ if (var->dimscale)
+ {
if (H5DSset_scale(var->hdf_datasetid, var->name) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
/* If this is a multidimensional coordinate variable, write a
* coordinates attribute. */
if (var->ndims > 1)
- if ((retval = write_coord_dimids(var)))
- BAIL(retval);
+ if ((retval = write_coord_dimids(var)))
+ BAIL(retval);
/* If desired, write the netCDF dimid. */
if (write_dimid)
- if ((retval = write_netcdf4_dimid(var->hdf_datasetid, var->dimids[0])))
- BAIL(retval);
- }
-
-exit:
- if (typeid > 0 && H5Tclose(typeid) < 0)
- BAIL2(NC_EHDFERR);
- if (plistid > 0 && H5Pclose(plistid) < 0)
- BAIL2(NC_EHDFERR);
+ if ((retval = write_netcdf4_dimid(var->hdf_datasetid, var->dimids[0])))
+ BAIL(retval);
+ }
+
+
+ /* Write attributes for this var. */
+ if ((retval = write_attlist(var->att, var->varid, grp)))
+ BAIL(retval);
+ var->attr_dirty = NC_FALSE;
+
+ exit:
+ if (typeid > 0 && H5Tclose(typeid) < 0)
+ BAIL2(NC_EHDFERR);
+ if (plistid > 0 && H5Pclose(plistid) < 0)
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_plists--;
+ num_plists--;
#endif
- if (access_plistid > 0 && H5Pclose(access_plistid) < 0)
- BAIL2(NC_EHDFERR);
+ if (access_plistid > 0 && H5Pclose(access_plistid) < 0)
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_plists--;
+ num_plists--;
#endif
- if (spaceid > 0 && H5Sclose(spaceid) < 0)
- BAIL2(NC_EHDFERR);
+ if (spaceid > 0 && H5Sclose(spaceid) < 0)
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_spaces--;
+ num_spaces--;
#endif
- if (maxdimsize) free(maxdimsize);
- if (dimsize) free(dimsize);
- if (chunksize) free(chunksize);
- if (fillp)
- {
+ if (fillp)
+ {
if (var->type_info->nc_type_class == NC_VLEN)
- nc_free_vlen((nc_vlen_t *)fillp);
+ nc_free_vlen((nc_vlen_t *)fillp);
else if (var->type_info->nc_type_class == NC_STRING && *(char **)fillp)
- free(*(char **)fillp);
+ free(*(char **)fillp);
free(fillp);
- }
-
- return retval;
+ }
+
+ return retval;
}
/* Adjust the chunk cache of a var for better performance. */
int
nc4_adjust_var_cache(NC_GRP_INFO_T *grp, NC_VAR_INFO_T * var)
{
- size_t chunk_size_bytes = 1;
- int d;
- int retval;
+ size_t chunk_size_bytes = 1;
+ int d;
+ int retval;
- /* Nothing to be done. */
- if (var->contiguous)
- return NC_NOERR;
+ /* Nothing to be done. */
+ if (var->contiguous)
+ return NC_NOERR;
#ifdef USE_PARALLEL
- return NC_NOERR;
-#endif
-
- /* How many bytes in the chunk? */
- for (d = 0; d < var->ndims; d++)
- chunk_size_bytes *= var->chunksizes[d];
- if (var->type_info->size)
- chunk_size_bytes *= var->type_info->size;
- else
- chunk_size_bytes *= sizeof(char *);
-
- /* If the chunk cache is too small, and the user has not changed
- * the default value of the chunk cache size, then increase the
- * size of the cache. */
- if (var->chunk_cache_size == CHUNK_CACHE_SIZE)
- if (chunk_size_bytes > var->chunk_cache_size)
+ return NC_NOERR;
+#endif
+
+ /* How many bytes in the chunk? */
+ for (d = 0; d < var->ndims; d++)
+ chunk_size_bytes *= var->chunksizes[d];
+ if (var->type_info->size)
+ chunk_size_bytes *= var->type_info->size;
+ else
+ chunk_size_bytes *= sizeof(char *);
+
+ /* If the chunk cache is too small, and the user has not changed
+ * the default value of the chunk cache size, then increase the
+ * size of the cache. */
+ if (var->chunk_cache_size == CHUNK_CACHE_SIZE)
+ if (chunk_size_bytes > var->chunk_cache_size)
{
- var->chunk_cache_size = chunk_size_bytes * DEFAULT_CHUNKS_IN_CACHE;
- if (var->chunk_cache_size > MAX_DEFAULT_CACHE_SIZE)
- var->chunk_cache_size = MAX_DEFAULT_CACHE_SIZE;
- if ((retval = nc4_reopen_dataset(grp, var)))
- return retval;
+ var->chunk_cache_size = chunk_size_bytes * DEFAULT_CHUNKS_IN_CACHE;
+ if (var->chunk_cache_size > MAX_DEFAULT_CACHE_SIZE)
+ var->chunk_cache_size = MAX_DEFAULT_CACHE_SIZE;
+ if ((retval = nc4_reopen_dataset(grp, var)))
+ return retval;
}
- return NC_NOERR;
+ return NC_NOERR;
}
-/* Read or write an attribute. */
-static int
-put_att_grpa(NC_GRP_INFO_T *grp, int varid, NC_ATT_INFO_T *att)
+/* Create a HDF5 defined type from a NC_TYPE_INFO_T struct, and commit
+ * it to the file. */
+static int
+commit_type(NC_GRP_INFO_T *grp, NC_TYPE_INFO_T *type)
{
- hid_t datasetid = 0, locid;
- hid_t attid = 0, spaceid = 0, file_typeid = 0;
- hsize_t dims[1]; /* netcdf attributes always 1-D. */
- htri_t attr_exists;
- int retval = NC_NOERR;
- void *data;
- int phoney_data = 99;
-
- assert(att->name);
- LOG((3, "%s: varid %d att->attnum %d att->name %s att->nc_typeid %d att->len %d",
- __func__, varid, att->attnum, att->name,
- att->nc_typeid, att->len));
-
- /* If the file is read-only, return an error. */
- if (grp->nc4_info->no_write)
- BAIL(NC_EPERM);
-
- /* Get the hid to attach the attribute to, or read it from. */
- if (varid == NC_GLOBAL)
- locid = grp->hdf_grpid;
- else
- {
- if ((retval = nc4_open_var_grp2(grp, varid, &datasetid)))
- BAIL(retval);
- locid = datasetid;
- }
+ int retval;
- /* Delete the att if it exists already. */
- if ((attr_exists = H5Aexists(locid, att->name)) < 0)
- BAIL(NC_EHDFERR);
- if (attr_exists)
- {
- if (H5Adelete(locid, att->name) < 0)
- BAIL(NC_EHDFERR);
- }
-
- /* Get the length ready, and find the HDF type we'll be
- * writing. */
- dims[0] = att->len;
- if ((retval = nc4_get_hdf_typeid(grp->nc4_info, att->nc_typeid,
- &file_typeid, 0)))
- BAIL(retval);
+ assert(grp && type);
- /* Even if the length is zero, HDF5 won't let me write with a
- * NULL pointer. So if the length of the att is zero, point to
- * some phoney data (which won't be written anyway.)*/
- if (!dims[0])
- data = &phoney_data;
- else if (att->data)
- data = att->data;
- else if (att->stdata)
- data = att->stdata;
- else
- data = att->vldata;
-
- /* NC_CHAR types require some extra work. The space ID is set to
- * scalar, and the type is told how long the string is. If it's
- * really zero length, set the size to 1. (The fact that it's
- * really zero will be marked by the NULL dataspace, but HDF5
- * doesn't allow me to set the size of the type to zero.)*/
- if (att->nc_typeid == NC_CHAR)
- {
- size_t string_size = dims[0];
- if (!string_size)
- {
- string_size = 1;
- if ((spaceid = H5Screate(H5S_NULL)) < 0)
- BAIL(NC_EATTMETA);
-#ifdef EXTRA_TESTS
- num_spaces++;
-#endif
- }
- else
- {
- if ((spaceid = H5Screate(H5S_SCALAR)) < 0)
- BAIL(NC_EATTMETA);
-#ifdef EXTRA_TESTS
- num_spaces++;
-#endif
- }
- if (H5Tset_size(file_typeid, string_size) < 0)
- BAIL(NC_EATTMETA);
- if (H5Tset_strpad(file_typeid, H5T_STR_NULLTERM) < 0)
- BAIL(NC_EATTMETA);
- }
- else
- {
- if (!att->len)
- {
- if ((spaceid = H5Screate(H5S_NULL)) < 0)
- BAIL(NC_EATTMETA);
-#ifdef EXTRA_TESTS
- num_spaces++;
-#endif
- }
- else
- {
- if ((spaceid = H5Screate_simple(1, dims, NULL)) < 0)
- BAIL(NC_EATTMETA);
-#ifdef EXTRA_TESTS
- num_spaces++;
-#endif
- }
- }
- if ((attid = H5Acreate(locid, att->name, file_typeid, spaceid,
- H5P_DEFAULT)) < 0)
- BAIL(NC_EATTMETA);
-
- /* Write the values, (even if length is zero). */
- if (H5Awrite(attid, file_typeid, data) < 0)
- BAIL(NC_EATTMETA);
-
-exit:
- if (file_typeid && H5Tclose(file_typeid))
- BAIL2(NC_EHDFERR);
- if (attid > 0 && H5Aclose(attid) < 0)
- BAIL2(NC_EHDFERR);
- if (spaceid > 0 && H5Sclose(spaceid) < 0)
- BAIL2(NC_EHDFERR);
-#ifdef EXTRA_TESTS
- num_spaces--;
-#endif
- return retval;
-}
-
-/* Create a HDF5 defined type from a NC_TYPE_INFO_T struct, and commit
- * it to the file. */
-static int
-commit_type(NC_GRP_INFO_T *grp, NC_TYPE_INFO_T *type)
-{
- int retval;
-
- assert(grp && type);
+ /* Did we already record this type? */
+ if (type->committed)
+ return NC_NOERR;
- /* Did we already record this type? */
- if (type->committed)
- return NC_NOERR;
-
- /* Is this a compound type? */
- if (type->nc_type_class == NC_COMPOUND)
- {
+ /* Is this a compound type? */
+ if (type->nc_type_class == NC_COMPOUND)
+ {
NC_FIELD_INFO_T *field;
hid_t hdf_base_typeid, hdf_typeid;
if ((type->hdf_typeid = H5Tcreate(H5T_COMPOUND, type->size)) < 0)
- return NC_EHDFERR;
- LOG((4, "creating compound type %s hdf_typeid 0x%x", type->name,
+ return NC_EHDFERR;
+ LOG((4, "creating compound type %s hdf_typeid 0x%x", type->name,
type->hdf_typeid));
for (field = type->u.c.field; field; field = field->l.next)
- {
- if ((retval = nc4_get_hdf_typeid(grp->nc4_info, field->nc_typeid,
- &hdf_base_typeid, type->endianness)))
+ {
+ if ((retval = nc4_get_hdf_typeid(grp->nc4_info, field->nc_typeid,
+ &hdf_base_typeid, type->endianness)))
return retval;
- /* If this is an array, create a special array type. */
- if (field->ndims)
- {
- int d;
- hsize_t dims[NC_MAX_VAR_DIMS];
-
- for (d = 0; d < field->ndims; d++)
- dims[d] = field->dim_size[d];
- if ((hdf_typeid = H5Tarray_create(hdf_base_typeid, field->ndims,
- dims, NULL)) < 0)
+ /* If this is an array, create a special array type. */
+ if (field->ndims)
{
- if (H5Tclose(hdf_base_typeid) < 0)
+ int d;
+ hsize_t dims[NC_MAX_VAR_DIMS];
+
+ for (d = 0; d < field->ndims; d++)
+ dims[d] = field->dim_size[d];
+ if ((hdf_typeid = H5Tarray_create(hdf_base_typeid, field->ndims,
+ dims, NULL)) < 0)
+ {
+ if (H5Tclose(hdf_base_typeid) < 0)
+ return NC_EHDFERR;
return NC_EHDFERR;
- return NC_EHDFERR;
- }
- if (H5Tclose(hdf_base_typeid) < 0)
- return NC_EHDFERR;
- }
- else
- hdf_typeid = hdf_base_typeid;
- LOG((4, "inserting field %s offset %d hdf_typeid 0x%x", field->name,
- field->offset, hdf_typeid));
- if (H5Tinsert(type->hdf_typeid, field->name, field->offset,
- hdf_typeid) < 0)
+ }
+ if (H5Tclose(hdf_base_typeid) < 0)
+ return NC_EHDFERR;
+ }
+ else
+ hdf_typeid = hdf_base_typeid;
+ LOG((4, "inserting field %s offset %d hdf_typeid 0x%x", field->name,
+ field->offset, hdf_typeid));
+ if (H5Tinsert(type->hdf_typeid, field->name, field->offset,
+ hdf_typeid) < 0)
return NC_EHDFERR;
- if (H5Tclose(hdf_typeid) < 0)
+ if (H5Tclose(hdf_typeid) < 0)
return NC_EHDFERR;
- }
- }
- else if (type->nc_type_class == NC_VLEN)
- {
+ }
+ }
+ else if (type->nc_type_class == NC_VLEN)
+ {
/* Find the HDF typeid of the base type of this vlen. */
- if ((retval = nc4_get_hdf_typeid(grp->nc4_info, type->u.v.base_nc_typeid,
- &type->u.v.base_hdf_typeid, type->endianness)))
- return retval;
+ if ((retval = nc4_get_hdf_typeid(grp->nc4_info, type->u.v.base_nc_typeid,
+ &type->u.v.base_hdf_typeid, type->endianness)))
+ return retval;
/* Create a vlen type. */
if ((type->hdf_typeid = H5Tvlen_create(type->u.v.base_hdf_typeid)) < 0)
- return NC_EHDFERR;
- }
- else if (type->nc_type_class == NC_OPAQUE)
- {
+ return NC_EHDFERR;
+ }
+ else if (type->nc_type_class == NC_OPAQUE)
+ {
/* Create the opaque type. */
if ((type->hdf_typeid = H5Tcreate(H5T_OPAQUE, type->size)) < 0)
- return NC_EHDFERR;
- }
- else if (type->nc_type_class == NC_ENUM)
- {
+ return NC_EHDFERR;
+ }
+ else if (type->nc_type_class == NC_ENUM)
+ {
NC_ENUM_MEMBER_INFO_T *enum_m;
if (!type->u.e.enum_member)
- return NC_EINVAL;
+ return NC_EINVAL;
/* Find the HDF typeid of the base type of this enum. */
- if ((retval = nc4_get_hdf_typeid(grp->nc4_info, type->u.e.base_nc_typeid,
- &type->u.e.base_hdf_typeid, type->endianness)))
- return retval;
-
+ if ((retval = nc4_get_hdf_typeid(grp->nc4_info, type->u.e.base_nc_typeid,
+ &type->u.e.base_hdf_typeid, type->endianness)))
+ return retval;
+
/* Create an enum type. */
- if ((type->hdf_typeid = H5Tenum_create(type->u.e.base_hdf_typeid)) < 0)
- return NC_EHDFERR;
-
+ if ((type->hdf_typeid = H5Tenum_create(type->u.e.base_hdf_typeid)) < 0)
+ return NC_EHDFERR;
+
/* Add all the members to the HDF5 type. */
- for (enum_m = type->u.e.enum_member; enum_m; enum_m = enum_m->l.next)
- if (H5Tenum_insert(type->hdf_typeid, enum_m->name, enum_m->value) < 0)
- return NC_EHDFERR;
- }
- else
- {
+ for (enum_m = type->u.e.enum_member; enum_m; enum_m = enum_m->l.next)
+ if (H5Tenum_insert(type->hdf_typeid, enum_m->name, enum_m->value) < 0)
+ return NC_EHDFERR;
+ }
+ else
+ {
LOG((0, "Unknown class: %d", type->nc_type_class));
return NC_EBADTYPE;
- }
-
- /* Commit the type. */
- if (H5Tcommit(grp->hdf_grpid, type->name, type->hdf_typeid) < 0)
- return NC_EHDFERR;
- type->committed = NC_TRUE;
- LOG((4, "just committed type %s, HDF typeid: 0x%x", type->name,
- type->hdf_typeid));
-
- /* Later we will always use the native typeid. In this case, it is
- * a copy of the same type pointed to by hdf_typeid, but it's
- * easier to maintain a copy. */
- if ((type->native_hdf_typeid = H5Tget_native_type(type->hdf_typeid,
- H5T_DIR_DEFAULT)) < 0)
- return NC_EHDFERR;
-
- return NC_NOERR;
+ }
+
+ /* Commit the type. */
+ if (H5Tcommit(grp->hdf_grpid, type->name, type->hdf_typeid) < 0)
+ return NC_EHDFERR;
+ type->committed = NC_TRUE;
+ LOG((4, "just committed type %s, HDF typeid: 0x%x", type->name,
+ type->hdf_typeid));
+
+ /* Later we will always use the native typeid. In this case, it is
+ * a copy of the same type pointed to by hdf_typeid, but it's
+ * easier to maintain a copy. */
+ if ((type->native_hdf_typeid = H5Tget_native_type(type->hdf_typeid,
+ H5T_DIR_DEFAULT)) < 0)
+ return NC_EHDFERR;
+
+ return NC_NOERR;
}
/* Write an attribute, with value 1, to indicate that strict NC3 rules
@@ -1871,106 +1890,106 @@ commit_type(NC_GRP_INFO_T *grp, NC_TYPE_INFO_T *type)
static int
write_nc3_strict_att(hid_t hdf_grpid)
{
- hid_t attid = 0, spaceid = 0;
- int one = 1, num, a;
- char att_name[NC_MAX_NAME + 1];
- int retval = NC_NOERR;
-
- /* If the attribute already exists, call that a success and return
- * NC_NOERR. */
- if ((num = H5Aget_num_attrs(hdf_grpid)) < 0)
- return NC_EHDFERR;
- for (a = 0; a < num; a++)
- {
+ hid_t attid = 0, spaceid = 0;
+ int one = 1, num, a;
+ char att_name[NC_MAX_NAME + 1];
+ int retval = NC_NOERR;
+
+ /* If the attribute already exists, call that a success and return
+ * NC_NOERR. */
+ if ((num = H5Aget_num_attrs(hdf_grpid)) < 0)
+ return NC_EHDFERR;
+ for (a = 0; a < num; a++)
+ {
if ((attid = H5Aopen_idx(hdf_grpid, (unsigned int)a)) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
if (H5Aget_name(attid, NC_MAX_HDF5_NAME, att_name) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
if (!strcmp(att_name, NC3_STRICT_ATT_NAME))
- {
- if (H5Aclose(attid) < 0)
+ {
+ if (H5Aclose(attid) < 0)
return NC_EFILEMETA;
- return NC_NOERR;
- }
- }
-
- /* Create the attribute to mark this as a file that needs to obey
- * strict netcdf-3 rules. */
- if ((spaceid = H5Screate(H5S_SCALAR)) < 0)
- BAIL(NC_EFILEMETA);
+ return NC_NOERR;
+ }
+ }
+
+ /* Create the attribute to mark this as a file that needs to obey
+ * strict netcdf-3 rules. */
+ if ((spaceid = H5Screate(H5S_SCALAR)) < 0)
+ BAIL(NC_EFILEMETA);
#ifdef EXTRA_TESTS
- num_spaces++;
+ num_spaces++;
#endif
- if ((attid = H5Acreate(hdf_grpid, NC3_STRICT_ATT_NAME,
- H5T_NATIVE_INT, spaceid, H5P_DEFAULT)) < 0)
- BAIL(NC_EFILEMETA);
- if (H5Awrite(attid, H5T_NATIVE_INT, &one) < 0)
- BAIL(NC_EFILEMETA);
-
- exit:
- if (spaceid && (H5Sclose(spaceid) < 0))
- BAIL2(NC_EFILEMETA);
+ if ((attid = H5Acreate(hdf_grpid, NC3_STRICT_ATT_NAME,
+ H5T_NATIVE_INT, spaceid, H5P_DEFAULT)) < 0)
+ BAIL(NC_EFILEMETA);
+ if (H5Awrite(attid, H5T_NATIVE_INT, &one) < 0)
+ BAIL(NC_EFILEMETA);
+
+ exit:
+ if (spaceid && (H5Sclose(spaceid) < 0))
+ BAIL2(NC_EFILEMETA);
#ifdef EXTRA_TESTS
- num_spaces--;
+ num_spaces--;
#endif
- if (attid && (H5Aclose(attid) < 0))
- BAIL2(NC_EFILEMETA);
- return retval;
+ if (attid && (H5Aclose(attid) < 0))
+ BAIL2(NC_EFILEMETA);
+ return retval;
}
static int
create_group(NC_GRP_INFO_T *grp)
{
- hid_t gcpl_id = 0;
- int retval = NC_NOERR;;
+ hid_t gcpl_id = 0;
+ int retval = NC_NOERR;;
- assert(grp);
+ assert(grp);
- /* If this is not the root group, create it in the HDF5 file. */
- if (grp->parent)
- {
+ /* If this is not the root group, create it in the HDF5 file. */
+ if (grp->parent)
+ {
/* Create group, with link_creation_order set in the group
* creation property list. */
if ((gcpl_id = H5Pcreate(H5P_GROUP_CREATE)) < 0)
- return NC_EHDFERR;
+ return NC_EHDFERR;
#ifdef EXTRA_TESTS
num_plists++;
#endif
/* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */
if (H5Pset_obj_track_times(gcpl_id,0)<0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
if (H5Pset_link_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED|H5P_CRT_ORDER_INDEXED) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
if (H5Pset_attr_creation_order(gcpl_id, H5P_CRT_ORDER_TRACKED|H5P_CRT_ORDER_INDEXED) < 0)
- BAIL(NC_EHDFERR);
- if ((grp->hdf_grpid = H5Gcreate2(grp->parent->hdf_grpid, grp->name,
+ BAIL(NC_EHDFERR);
+ if ((grp->hdf_grpid = H5Gcreate2(grp->parent->hdf_grpid, grp->name,
H5P_DEFAULT, gcpl_id, H5P_DEFAULT)) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
if (H5Pclose(gcpl_id) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_plists--;
#endif
- }
- else
- {
+ }
+ else
+ {
/* Since this is the root group, we have to open it. */
if ((grp->hdf_grpid = H5Gopen2(grp->nc4_info->hdfid, "/", H5P_DEFAULT)) < 0)
- BAIL(NC_EFILEMETA);
- }
- return NC_NOERR;
+ BAIL(NC_EFILEMETA);
+ }
+ return NC_NOERR;
- exit:
- if (gcpl_id > 0 && H5Pclose(gcpl_id) < 0)
- BAIL2(NC_EHDFERR);
+ exit:
+ if (gcpl_id > 0 && H5Pclose(gcpl_id) < 0)
+ BAIL2(NC_EHDFERR);
#ifdef EXTRA_TESTS
- num_plists--;
+ num_plists--;
#endif
- if (grp->hdf_grpid > 0 && H5Gclose(grp->hdf_grpid) < 0)
- BAIL2(NC_EHDFERR);
- return retval;
+ if (grp->hdf_grpid > 0 && H5Gclose(grp->hdf_grpid) < 0)
+ BAIL2(NC_EHDFERR);
+ return retval;
}
/* After all the datasets of the file have been read, it's time to
@@ -1980,120 +1999,99 @@ create_group(NC_GRP_INFO_T *grp)
static int
attach_dimscales(NC_GRP_INFO_T *grp)
{
- NC_VAR_INFO_T *var;
- NC_DIM_INFO_T *dim1;
- NC_GRP_INFO_T *g;
- int d;
- int retval = NC_NOERR;
-
- /* Attach dimension scales. */
- for (var = grp->var; var; var = var->l.next)
- {
+ NC_VAR_INFO_T *var;
+ NC_DIM_INFO_T *dim1;
+ NC_GRP_INFO_T *g;
+ int d;
+ int retval = NC_NOERR;
+
+ /* Attach dimension scales. */
+ for (var = grp->var; var; var = var->l.next)
+ {
/* Scales themselves do not attach. But I really wish they
* would. */
- if (var->dimscale)
- {
- /* If this is a multidimensional coordinate variable, it will
- * have a special coords attribute (read earlier) with a list
- * of the dimensions for this variable. */
- }
- else /* not a dimscale... */
- {
- /* Find the scale for each dimension and attach it. */
- for (d = 0; d < var->ndims; d++)
- {
- /* Is there a dimscale for this dimension? */
- if (var->dimscale_attached)
- {
- if (!var->dimscale_attached[d])
- {
- for (g = grp; g && !var->dimscale_attached[d]; g = g->parent)
- for (dim1 = g->dim; dim1; dim1 = dim1->l.next)
- if (var->dimids[d] == dim1->dimid)
- {
- hid_t dim_datasetid; /* Dataset ID for dimension */
-
- LOG((2, "%s: attaching scale for dimid %d to var %s",
- __func__, var->dimids[d], var->name));
-
- /* Find dataset ID for dimension */
- if (dim1->coord_var)
- dim_datasetid = dim1->coord_var->hdf_datasetid;
- else
- dim_datasetid = dim1->hdf_dimscaleid;
- assert(dim_datasetid > 0);
- if (H5DSattach_scale(var->hdf_datasetid, dim_datasetid, d) < 0)
- BAIL(NC_EHDFERR);
- var->dimscale_attached[d] = NC_TRUE;
- break;
- }
- }
-
- /* If we didn't find a dimscale to attach, that's a problem! */
- if (!var->dimscale_attached[d])
- {
- LOG((0, "no dimscale found!"));
- return NC_EDIMSCALE;
- }
- }
- else
- {
- /* Create a phoney dimension! */
-
- }
- }
- } /* next d */
- }
-
- exit:
- return retval;
-}
-
-/* Write all the dirty atts in an attlist. */
-static int
-write_attlist(NC_ATT_INFO_T *attlist, int varid, NC_GRP_INFO_T *grp)
-{
- NC_ATT_INFO_T *att;
- int retval;
+ if (var->dimscale)
+ {
+ /* If this is a multidimensional coordinate variable, it will
+ * have a special coords attribute (read earlier) with a list
+ * of the dimensions for this variable. */
+ }
+ else /* not a dimscale... */
+ {
+ /* Find the scale for each dimension and attach it. */
+ for (d = 0; d < var->ndims; d++)
+ {
+ /* Is there a dimscale for this dimension? */
+ if (var->dimscale_attached)
+ {
+ if (!var->dimscale_attached[d])
+ {
+ for (g = grp; g && !var->dimscale_attached[d]; g = g->parent)
+ for (dim1 = g->dim; dim1; dim1 = dim1->l.next)
+ if (var->dimids[d] == dim1->dimid)
+ {
+ hid_t dim_datasetid; /* Dataset ID for dimension */
+
+ LOG((2, "%s: attaching scale for dimid %d to var %s",
+ __func__, var->dimids[d], var->name));
+
+ /* Find dataset ID for dimension */
+ if (dim1->coord_var)
+ dim_datasetid = dim1->coord_var->hdf_datasetid;
+ else
+ dim_datasetid = dim1->hdf_dimscaleid;
+ assert(dim_datasetid > 0);
+ if (H5DSattach_scale(var->hdf_datasetid, dim_datasetid, d) < 0)
+ BAIL(NC_EHDFERR);
+ var->dimscale_attached[d] = NC_TRUE;
+ break;
+ }
+ }
+
+ /* If we didn't find a dimscale to attach, that's a problem! */
+ if (!var->dimscale_attached[d])
+ {
+ LOG((0, "no dimscale found!"));
+ return NC_EDIMSCALE;
+ }
+ }
+ else
+ {
+ /* Create a phoney dimension! */
+
+ }
+ }
+ } /* next d */
+ }
- for (att = attlist; att; att = att->l.next)
- {
- if (att->dirty)
- {
- LOG((4, "%s: writing att %s to varid %d", __func__, att->name, varid));
- if ((retval = put_att_grpa(grp, varid, att)))
- return retval;
- att->dirty = NC_FALSE;
- att->created = NC_TRUE;
- }
- }
- return NC_NOERR;
+ exit:
+ return retval;
}
static int
-var_exists(hid_t grpid, char *name, int *exists)
+var_exists(hid_t grpid, char *name, nc_bool_t *exists)
{
- htri_t link_exists;
+ htri_t link_exists;
- /* Reset the boolean */
- *exists = 0;
+ /* Reset the boolean */
+ *exists = NC_FALSE;
- /* Check if the object name exists in the group */
- if ((link_exists = H5Lexists(grpid, name, H5P_DEFAULT)) < 0)
- return NC_EHDFERR;
- if (link_exists)
- {
+ /* Check if the object name exists in the group */
+ if ((link_exists = H5Lexists(grpid, name, H5P_DEFAULT)) < 0)
+ return NC_EHDFERR;
+ if (link_exists)
+ {
H5G_stat_t statbuf;
/* Get info about the object */
if (H5Gget_objinfo(grpid, name, 1, &statbuf) < 0)
- return NC_EHDFERR;
+ return NC_EHDFERR;
if (H5G_DATASET == statbuf.type)
- *exists = 1;
- }
+ *exists = NC_TRUE;
+ }
- return NC_NOERR;
+ return NC_NOERR;
}
/* This function writes a variable. The principle difficulty comes
@@ -2101,151 +2099,230 @@ var_exists(hid_t grpid, char *name, int *exists)
* already written to the file as a dimension-only dimscale. If this
* occurs, then it must be deleted and recreated. */
static int
-write_var(NC_VAR_INFO_T *var, NC_GRP_INFO_T *grp, int write_dimid)
+write_var(NC_VAR_INFO_T *var, NC_GRP_INFO_T *grp, nc_bool_t write_dimid)
{
- NC_DIM_INFO_T *d1 = NULL;
- int replace_existing_var = 0;
- int exists;
- int retval;
-
- if (!var->dirty)
- {
- if (write_dimid && var->ndims)
- if ((retval = write_netcdf4_dimid(var->hdf_datasetid, var->dimids[0])))
- BAIL(retval);
- }
- else
- {
- LOG((4, "%s: writing var %s", __func__, var->name));
-
- if (var->created)
- replace_existing_var = 1;
-
- /* If this is a coordinate var, and a dataset has already
- * been created for it, then delete that dataset and recreate
- * it (because its type may be wrong anyway.) But then we
- * have to reattach dimension scales for all vars! Oh well,
- * this all only happens when the user defines a var, writes
- * metadata, reenters define mode, and adds a coordinate
- * var. Presumably this will happen rarely. */
-
- /* Is this a coordinate var that has already been created in
- * the HDF5 as a dimscale dataset? Check for dims with the
- * same name in this group. If there is one, check to see if
- * this object exists in the HDF group. */
- if (var->dimscale)
- for (d1 = grp->dim; d1; d1 = d1->l.next)
- if (!strcmp(d1->name, var->name))
- {
- if ((retval = var_exists(grp->hdf_grpid, var->name, &exists)))
+ nc_bool_t replace_existing_var = NC_FALSE;
+ int retval;
+
+ LOG((4, "%s: writing var %s", __func__, var->name));
+
+ /* If the variable has already been created & the fill value changed,
+ * indicate that the existing variable should be replaced. */
+ if (var->created && var->fill_val_changed)
+ {
+ replace_existing_var = NC_TRUE;
+ var->fill_val_changed = NC_FALSE;
+ }
+
+ /* Is this a coordinate var that has already been created in
+ * the HDF5 file as a dimscale dataset? Check for dims with the
+ * same name in this group. If there is one, check to see if
+ * this object exists in the HDF group. */
+ if (var->became_coord_var)
+ {
+ NC_DIM_INFO_T *d1;
+
+ for (d1 = grp->dim; d1; d1 = d1->l.next)
+ if (!strcmp(d1->name, var->name))
+ {
+ nc_bool_t exists;
+
+ if ((retval = var_exists(grp->hdf_grpid, var->name, &exists)))
+ return retval;
+ if (exists)
+ {
+ /* Indicate that the variable already exists, and should be replaced */
+ replace_existing_var = NC_TRUE;
+ break;
+ }
+ }
+ }
+
+ /* Check dims if the variable will be replaced, so that the dimensions
+ * will be de-attached and re-attached correctly. */
+ /* (Note: There's a temptation to merge this loop over the dimensions with
+ * the prior loop over dimensions, but that blurs the line over the
+ * purpose of them, so they are currently separate. If performance
+ * becomes an issue here, it would be possible to merge them. -QAK)
+ */
+ if (replace_existing_var)
+ {
+ NC_DIM_INFO_T *d1;
+
+ for (d1 = grp->dim; d1; d1 = d1->l.next)
+ if (!strcmp(d1->name, var->name))
+ {
+ nc_bool_t exists;
+
+ if ((retval = var_exists(grp->hdf_grpid, var->name, &exists)))
+ return retval;
+ if (exists)
+ {
+ hid_t dim_datasetid; /* Dataset ID for dimension */
+
+ /* Find dataset ID for dimension */
+ if (d1->coord_var)
+ dim_datasetid = d1->coord_var->hdf_datasetid;
+ else
+ dim_datasetid = d1->hdf_dimscaleid;
+ assert(dim_datasetid > 0);
+
+ /* If we're replacing an existing dimscale dataset, go to
+ * every var in the file and detach this dimension scale,
+ * because we have to delete it. */
+ if ((retval = rec_detach_scales(grp->nc4_info->root_grp,
+ var->dimids[0], dim_datasetid)))
return retval;
- if (exists)
- {
- hid_t dim_datasetid; /* Dataset ID for dimension */
-
- /* Indicate that the variable already exists */
- replace_existing_var++;
-
- /* Find dataset ID for dimension */
- if (d1->coord_var)
- dim_datasetid = d1->coord_var->hdf_datasetid;
- else
- dim_datasetid = d1->hdf_dimscaleid;
- assert(dim_datasetid > 0);
-
- /* If we're replacing an existing dimscale dataset, go to
- * every var in the file and detach this dimension scale,
- * because we have to delete it. */
- if ((retval = rec_detach_scales(grp->nc4_info->root_grp,
- var->dimids[0], dim_datasetid)))
- return retval;
- break;
- }
- }
-
- /* Delete the HDF5 dataset that is to be replaced. */
- if (replace_existing_var)
- {
- /* If this is not a dimension scale, do this stuff. */
- if (!var->dimscale && var->dimscale_attached)
- {
- int dims_detached = 0;
- int finished = 0;
- int d;
- NC_DIM_INFO_T *dim1;
- NC_GRP_INFO_T *g;
-
- /* If this is a regular var, detach all its dim scales. */
- for (d = 0; d < var->ndims; d++)
- if (var->dimscale_attached[d])
- for (g = grp; g && !finished; g = g->parent)
- for (dim1 = g->dim; dim1; dim1 = dim1->l.next)
- if (var->dimids[d] == dim1->dimid)
- {
- hid_t dim_datasetid; /* Dataset ID for dimension */
-
- /* Find dataset ID for dimension */
- if (dim1->coord_var)
- dim_datasetid = dim1->coord_var->hdf_datasetid;
- else
- dim_datasetid = dim1->hdf_dimscaleid;
- assert(dim_datasetid > 0);
-
- if (H5DSdetach_scale(var->hdf_datasetid, dim_datasetid, d) < 0)
- BAIL(NC_EHDFERR);
- var->dimscale_attached[d] = NC_FALSE;
- if (dims_detached++ == var->ndims)
- finished++;
- }
- }
+ break;
+ }
+ }
+ }
+
+ /* If this is not a dimension scale, do this stuff. */
+ if (var->was_coord_var && var->dimscale_attached)
+ {
+ /* If the variable already exists in the file, Remove any dimension scale
+ * attributes from it, if they exist. */
+ /* (The HDF5 Dimension Scale API should really have an API routine
+ * for making a dataset not a scale. -QAK) */
+ if (var->created)
+ {
+ htri_t attr_exists;
- /* Free the HDF5 dataset id. */
- if (var->hdf_datasetid && H5Dclose(var->hdf_datasetid) < 0)
+ /* (We could do a better job here and verify that the attributes are
+ * really dimension scale 'CLASS' & 'NAME' attributes, but that would be
+ * poking about in the HDF5 DimScale internal data) */
+ if ((attr_exists = H5Aexists(var->hdf_datasetid, "CLASS")) < 0)
BAIL(NC_EHDFERR);
- var->hdf_datasetid = 0;
-
- /* Now delete the variable. */
- if (H5Gunlink(grp->hdf_grpid, var->name) < 0)
- return NC_EDIMMETA;
- }
+ if (attr_exists)
+ {
+ if (H5Adelete(var->hdf_datasetid, "CLASS") < 0)
+ BAIL(NC_EHDFERR);
+ }
+ if ((attr_exists = H5Aexists(var->hdf_datasetid, "NAME")) < 0)
+ BAIL(NC_EHDFERR);
+ if (attr_exists)
+ {
+ if (H5Adelete(var->hdf_datasetid, "NAME") < 0)
+ BAIL(NC_EHDFERR);
+ }
+ }
- /* Create the dataset. */
+ if (var->dimscale_attached)
+ {
+ int dims_detached = 0;
+ nc_bool_t finished = NC_FALSE;
+ int d;
+
+ /* If this is a regular var, detach all its dim scales. */
+ for (d = 0; d < var->ndims; d++)
+ if (var->dimscale_attached[d])
+ {
+ NC_GRP_INFO_T *g;
+
+ for (g = grp; g && !finished; g = g->parent)
+ {
+ NC_DIM_INFO_T *dim1;
+
+ for (dim1 = g->dim; dim1; dim1 = dim1->l.next)
+ if (var->dimids[d] == dim1->dimid)
+ {
+ hid_t dim_datasetid; /* Dataset ID for dimension */
+
+ /* Find dataset ID for dimension */
+ if (dim1->coord_var)
+ dim_datasetid = dim1->coord_var->hdf_datasetid;
+ else
+ dim_datasetid = dim1->hdf_dimscaleid;
+ assert(dim_datasetid > 0);
+
+ if (H5DSdetach_scale(var->hdf_datasetid, dim_datasetid, d) < 0)
+ BAIL(NC_EHDFERR);
+ var->dimscale_attached[d] = NC_FALSE;
+ if (dims_detached++ == var->ndims)
+ finished = NC_TRUE;
+ }
+ }
+ }
+ }
+ }
+
+ /* Delete the HDF5 dataset that is to be replaced. */
+ if (replace_existing_var)
+ {
+ /* Free the HDF5 dataset id. */
+ if (var->hdf_datasetid && H5Dclose(var->hdf_datasetid) < 0)
+ BAIL(NC_EHDFERR);
+ var->hdf_datasetid = 0;
+
+ /* Now delete the variable. */
+ if (H5Gunlink(grp->hdf_grpid, var->name) < 0)
+ return NC_EDIMMETA;
+ }
+
+ /* Create the dataset. */
+ if (var->is_new_var || replace_existing_var)
+ {
if ((retval = var_create_dataset(grp, var, write_dimid)))
- return retval;
-
+ return retval;
+ }
+ else
+ {
+ if (write_dimid && var->ndims)
+ if ((retval = write_netcdf4_dimid(var->hdf_datasetid, var->dimids[0])))
+ BAIL(retval);
+ }
+
+ if (replace_existing_var)
+ {
/* If this is a dimension scale, reattach the scale everywhere it
* is used. (Recall that netCDF dimscales are always 1-D). */
- if (replace_existing_var && var->dimscale)
- {
- if ((retval = rec_reattach_scales(grp->nc4_info->root_grp,
- var->dimids[0], var->hdf_datasetid)))
+ if(var->dimscale)
+ {
+ if ((retval = rec_reattach_scales(grp->nc4_info->root_grp,
+ var->dimids[0], var->hdf_datasetid)))
return retval;
- }
- }
-
- /* Now check the atributes for this var. */
- /* Write attributes for this var. */
- if ((retval = write_attlist(var->att, var->varid, grp)))
- BAIL(retval);
-
- return NC_NOERR;
- exit:
- return retval;
+ }
+ /* If it's not a dimension scale, clear the dimscale attached flags,
+ * so the dimensions are re-attached. */
+ else
+ {
+ if (var->dimscale_attached)
+ memset(var->dimscale_attached, 0, sizeof(nc_bool_t) * var->ndims);
+ }
+ }
+
+ /* Clear coord. var state transition flags */
+ var->was_coord_var = NC_FALSE;
+ var->became_coord_var = NC_FALSE;
+
+ /* Now check the attributes for this var. */
+ if (var->attr_dirty)
+ {
+ /* Write attributes for this var. */
+ if ((retval = write_attlist(var->att, var->varid, grp)))
+ BAIL(retval);
+ var->attr_dirty = NC_FALSE;
+ }
+
+ return NC_NOERR;
+ exit:
+ return retval;
}
static int
-write_dim(NC_DIM_INFO_T *dim, NC_GRP_INFO_T *grp, int write_dimid)
+write_dim(NC_DIM_INFO_T *dim, NC_GRP_INFO_T *grp, nc_bool_t write_dimid)
{
- int retval;
-
- /* If there's no dimscale dataset for this dim, create one,
- * and mark that it should be hidden from netCDF as a
- * variable. (That is, it should appear as a dimension
- * without an associated variable.) */
- if (0 == dim->hdf_dimscaleid)
- {
+ int retval;
+
+ /* If there's no dimscale dataset for this dim, create one,
+ * and mark that it should be hidden from netCDF as a
+ * variable. (That is, it should appear as a dimension
+ * without an associated variable.) */
+ if (0 == dim->hdf_dimscaleid)
+ {
hid_t spaceid, create_propid;
- hsize_t dims[1], max_dims[1], chunk_dims[1] = {1};
+ hsize_t dims[1], max_dims[1], chunk_dims[1] = {1};
char dimscale_wo_var[NC_MAX_NAME];
LOG((4, "%s: creating dim %s", __func__, dim->name));
@@ -2257,49 +2334,49 @@ write_dim(NC_DIM_INFO_T *dim, NC_GRP_INFO_T *grp, int write_dimid)
* unlimited (i.e. it's an unlimited dimension), then set
* up chunking, with a chunksize of 1. */
if ((create_propid = H5Pcreate(H5P_DATASET_CREATE)) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_plists++;
#endif
/* RJ: this suppose to be FALSE that is defined in H5 private.h as 0 */
if (H5Pset_obj_track_times(create_propid,0)<0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
dims[0] = dim->len;
max_dims[0] = dim->len;
- if (dim->unlimited)
- {
- max_dims[0] = H5S_UNLIMITED;
- if (H5Pset_chunk(create_propid, 1, chunk_dims) < 0)
+ if (dim->unlimited)
+ {
+ max_dims[0] = H5S_UNLIMITED;
+ if (H5Pset_chunk(create_propid, 1, chunk_dims) < 0)
BAIL(NC_EHDFERR);
- }
+ }
/* Set up space. */
- if ((spaceid = H5Screate_simple(1, dims, max_dims)) < 0)
- BAIL(NC_EHDFERR);
+ if ((spaceid = H5Screate_simple(1, dims, max_dims)) < 0)
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces++;
#endif
if (H5Pset_attr_creation_order(create_propid, H5P_CRT_ORDER_TRACKED|
H5P_CRT_ORDER_INDEXED) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
/* Create the dataset that will be the dimension scale. */
LOG((4, "%s: about to H5Dcreate a dimscale dataset %s", __func__, dim->name));
- if ((dim->hdf_dimscaleid = H5Dcreate1(grp->hdf_grpid, dim->name, H5T_IEEE_F32BE,
+ if ((dim->hdf_dimscaleid = H5Dcreate1(grp->hdf_grpid, dim->name, H5T_IEEE_F32BE,
spaceid, create_propid)) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
/* Close the spaceid and create_propid. */
if (H5Sclose(spaceid) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_spaces--;
#endif
if (H5Pclose(create_propid) < 0)
- BAIL(NC_EHDFERR);
+ BAIL(NC_EHDFERR);
#ifdef EXTRA_TESTS
num_plists--;
#endif
@@ -2309,12 +2386,12 @@ write_dim(NC_DIM_INFO_T *dim, NC_GRP_INFO_T *grp, int write_dimid)
* a DIM WITHOUT A VARIABLE! */
sprintf(dimscale_wo_var, "%s%10d", DIM_WITHOUT_VARIABLE, (int)dim->len);
if (H5DSset_scale(dim->hdf_dimscaleid, dimscale_wo_var) < 0)
- BAIL(NC_EHDFERR);
- }
-
- /* Did we extend an unlimited dimension? */
- if (dim->extended)
- {
+ BAIL(NC_EHDFERR);
+ }
+
+ /* Did we extend an unlimited dimension? */
+ if (dim->extended)
+ {
NC_VAR_INFO_T *v1;
assert(dim->unlimited);
@@ -2322,58 +2399,58 @@ write_dim(NC_DIM_INFO_T *dim, NC_GRP_INFO_T *grp, int write_dimid)
* the secret length information at the end of the NAME
* attribute. */
for (v1 = grp->var; v1; v1 = v1->l.next)
- if (!strcmp(v1->name, dim->name))
- break;
-
+ if (!strcmp(v1->name, dim->name))
+ break;
+
if (v1)
- {
- hsize_t *new_size = NULL;
- NC_GRP_INFO_T *g;
- NC_DIM_INFO_T *dim1;
- int d1;
-
- /* Extend the dimension scale dataset to reflect the new
- * length of the dimension. */
- if (!(new_size = malloc(v1->ndims * sizeof(hsize_t))))
+ {
+ hsize_t *new_size = NULL;
+ NC_GRP_INFO_T *g;
+ NC_DIM_INFO_T *dim1;
+ int d1;
+
+ /* Extend the dimension scale dataset to reflect the new
+ * length of the dimension. */
+ if (!(new_size = malloc(v1->ndims * sizeof(hsize_t))))
BAIL(NC_ENOMEM);
- for (d1 = 0; d1 < v1->ndims; d1++)
- {
- if (v1->dimids[d1] == dim->dimid)
- new_size[d1] = dim->len;
- else
+ for (d1 = 0; d1 < v1->ndims; d1++)
{
- int break_it = 0;
-
- for (g = grp; g && !break_it; g = g->parent)
- for (dim1 = g->dim; dim1; dim1 = dim1->l.next)
- if (dim1->dimid == v1->dimids[d1])
- {
- new_size[d1] = dim1->len;
- break_it++;
- break;
- }
- }
- }
- if (H5Dset_extent(v1->hdf_datasetid, new_size) < 0) {
- free(new_size);
- BAIL(NC_EHDFERR);
- }
- free(new_size);
- }
- }
-
- /* If desired, write the secret dimid. This will be used instead of
- * the dimid that the dimension would otherwise receive based on
- * creation order. This can be necessary when dims and their
- * coordinate variables were created in different order. */
- if (write_dimid && dim->hdf_dimscaleid)
- if ((retval = write_netcdf4_dimid(dim->hdf_dimscaleid, dim->dimid)))
- BAIL(retval);
-
- return NC_NOERR;
- exit:
-
- return retval;
+ if (v1->dimids[d1] == dim->dimid)
+ new_size[d1] = dim->len;
+ else
+ {
+ int break_it = 0;
+
+ for (g = grp; g && !break_it; g = g->parent)
+ for (dim1 = g->dim; dim1; dim1 = dim1->l.next)
+ if (dim1->dimid == v1->dimids[d1])
+ {
+ new_size[d1] = dim1->len;
+ break_it++;
+ break;
+ }
+ }
+ }
+ if (H5Dset_extent(v1->hdf_datasetid, new_size) < 0) {
+ free(new_size);
+ BAIL(NC_EHDFERR);
+ }
+ free(new_size);
+ }
+ }
+
+ /* If desired, write the secret dimid. This will be used instead of
+ * the dimid that the dimension would otherwise receive based on
+ * creation order. This can be necessary when dims and their
+ * coordinate variables were created in different order. */
+ if (write_dimid && dim->hdf_dimscaleid)
+ if ((retval = write_netcdf4_dimid(dim->hdf_dimscaleid, dim->dimid)))
+ BAIL(retval);
+
+ return NC_NOERR;
+ exit:
+
+ return retval;
}
/* Recursively determine if there is a mismatch between order of
@@ -2383,59 +2460,59 @@ write_dim(NC_DIM_INFO_T *dim, NC_GRP_INFO_T *grp, int write_dimid)
* defined, which require the same treatment to fix a potential bug
* when such variables occur in subgroups. */
int
-nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, int *bad_coord_orderp)
+nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, nc_bool_t *bad_coord_orderp)
{
- NC_VAR_INFO_T *var;
- NC_GRP_INFO_T *child_grp;
- int last_dimid = -1;
- int retval;
-
- /* Iterate over variables in this group */
- for (var = grp->var; var; var = var->l.next)
- {
+ NC_VAR_INFO_T *var;
+ NC_GRP_INFO_T *child_grp;
+ int last_dimid = -1;
+ int retval;
+
+ /* Iterate over variables in this group */
+ for (var = grp->var; var; var = var->l.next)
+ {
/* Only matters for dimension scale variables, with non-scalar dimensionality */
if (var->dimscale && var->ndims)
- {
- /* If the user writes coord vars in a different order then he
- * defined their dimensions, then, when the file is reopened, the
- * order of the dimids will change to match the order of the coord
- * vars. Detect if this is about to happen. */
- if (var->dimids[0] < last_dimid)
- {
- LOG((5, "%s: %s is out of order coord var", __func__, var->name));
- *bad_coord_orderp = 1;
- return NC_NOERR;
- }
- last_dimid = var->dimids[0];
-
- /* If there are multidimensional coordinate variables defined, then
- * it's also necessary to preserve dimension IDs when the file is
- * reopened ... */
- if (var->ndims > 1)
- {
- LOG((5, "%s: %s is multidimensional coord var", __func__, var->name));
- *bad_coord_orderp = 1;
- return NC_NOERR;
- }
-
- /* Did the user define a dimension, end define mode, reenter define
- * mode, and then define a coordinate variable for that dimension?
- * If so, dimensions will be out of order. */
- if (var->dirty && !var->created)
- {
- LOG((5, "%s: coord var defined after enddef/redef", __func__));
- *bad_coord_orderp = 1;
- return NC_NOERR;
- }
- }
- }
+ {
+ /* If the user writes coord vars in a different order then he
+ * defined their dimensions, then, when the file is reopened, the
+ * order of the dimids will change to match the order of the coord
+ * vars. Detect if this is about to happen. */
+ if (var->dimids[0] < last_dimid)
+ {
+ LOG((5, "%s: %s is out of order coord var", __func__, var->name));
+ *bad_coord_orderp = NC_TRUE;
+ return NC_NOERR;
+ }
+ last_dimid = var->dimids[0];
+
+ /* If there are multidimensional coordinate variables defined, then
+ * it's also necessary to preserve dimension IDs when the file is
+ * reopened ... */
+ if (var->ndims > 1)
+ {
+ LOG((5, "%s: %s is multidimensional coord var", __func__, var->name));
+ *bad_coord_orderp = NC_TRUE;
+ return NC_NOERR;
+ }
- /* If there are any child groups, check them also for this condition. */
- for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
- if ((retval = nc4_rec_detect_need_to_preserve_dimids(child_grp, bad_coord_orderp)))
- return retval;
+ /* Did the user define a dimension, end define mode, reenter define
+ * mode, and then define a coordinate variable for that dimension?
+ * If so, dimensions will be out of order. */
+ if (var->is_new_var || var->became_coord_var)
+ {
+ LOG((5, "%s: coord var defined after enddef/redef", __func__));
+ *bad_coord_orderp = NC_TRUE;
+ return NC_NOERR;
+ }
+ }
+ }
- return NC_NOERR;
+ /* If there are any child groups, check them also for this condition. */
+ for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
+ if ((retval = nc4_rec_detect_need_to_preserve_dimids(child_grp, bad_coord_orderp)))
+ return retval;
+
+ return NC_NOERR;
}
@@ -2443,103 +2520,105 @@ nc4_rec_detect_need_to_preserve_dimids(NC_GRP_INFO_T *grp, int *bad_coord_orderp
* have all already been written. Propagate bad cooordinate order to
* subgroups, if detected. */
int
-nc4_rec_write_metadata(NC_GRP_INFO_T *grp, int bad_coord_order)
+nc4_rec_write_metadata(NC_GRP_INFO_T *grp, nc_bool_t bad_coord_order)
{
- NC_DIM_INFO_T *dim;
- NC_VAR_INFO_T *var;
- NC_GRP_INFO_T *child_grp;
- int found_coord, coord_varid = -1, wrote_coord;
+ NC_DIM_INFO_T *dim;
+ NC_VAR_INFO_T *var;
+ NC_GRP_INFO_T *child_grp;
+ int coord_varid = -1;
- int retval;
+ int retval;
- assert(grp && grp->name && grp->hdf_grpid);
- LOG((3, "%s: grp->name %s, bad_coord_order %d", __func__, grp->name, bad_coord_order));
+ assert(grp && grp->name && grp->hdf_grpid);
+ LOG((3, "%s: grp->name %s, bad_coord_order %d", __func__, grp->name, bad_coord_order));
+
+ /* Write global attributes for this group. */
+ if ((retval = write_attlist(grp->att, NC_GLOBAL, grp)))
+ return retval;
+
+ /* Set the pointers to the beginning of the list of dims & vars in this
+ * group. */
+ dim = grp->dim;
+ var = grp->var;
+
+ /* Because of HDF5 ordering the dims and vars have to be stored in
+ * this way to ensure that the dims and coordinate vars come out in
+ * the correct order. */
+ while (dim || var)
+ {
+ nc_bool_t found_coord, wrote_coord;
- /* Write global attributes for this group. */
- if ((retval = write_attlist(grp->att, NC_GLOBAL, grp)))
- return retval;
-
- /* Set the pointerito the beginning of the list of dims & vars in this
- * group. */
- dim = grp->dim;
- var = grp->var;
-
- /* Because of HDF5 ordering the dims and vars have to be stored in
- * this way to ensure that the dims and coordinate vars come out in
- * the correct order. */
- while (dim || var)
- {
/* Write non-coord dims in order, stopping at the first one that
* has an associated coord var. */
- for (found_coord = 0; dim && !found_coord; dim = dim->l.next)
- {
- if (!dim->coord_var)
- {
- if ((retval = write_dim(dim, grp, bad_coord_order)))
- return retval;
- }
- else
- {
- coord_varid = dim->coord_var->varid;
- found_coord++;
- }
- }
+ for (found_coord = NC_FALSE; dim && !found_coord; dim = dim->l.next)
+ {
+ if (!dim->coord_var)
+ {
+ if ((retval = write_dim(dim, grp, bad_coord_order)))
+ return retval;
+ }
+ else
+ {
+ coord_varid = dim->coord_var->varid;
+ found_coord = NC_TRUE;
+ }
+ }
/* Write each var. When we get to the coord var we are waiting
* for (if any), then we break after writing it. */
- for (wrote_coord = 0; var && !wrote_coord; var = var->l.next)
- {
- if ((retval = write_var(var, grp, bad_coord_order)))
+ for (wrote_coord = NC_FALSE; var && !wrote_coord; var = var->l.next)
+ {
+ if ((retval = write_var(var, grp, bad_coord_order)))
return retval;
- if (found_coord && var->varid == coord_varid)
- wrote_coord++;
- }
- } /* end while */
+ if (found_coord && var->varid == coord_varid)
+ wrote_coord = NC_TRUE;
+ }
+ } /* end while */
+
+ if ((retval = attach_dimscales(grp)))
+ return retval;
- if ((retval = attach_dimscales(grp)))
+ /* If there are any child groups, write their metadata. */
+ for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
+ if ((retval = nc4_rec_write_metadata(child_grp, bad_coord_order)))
return retval;
-
- /* If there are any child groups, write their metadata. */
- for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
- if ((retval = nc4_rec_write_metadata(child_grp, bad_coord_order)))
- return retval;
-
- return NC_NOERR;
+
+ return NC_NOERR;
}
/* Recursively write all groups and types. */
int
nc4_rec_write_groups_types(NC_GRP_INFO_T *grp)
{
- NC_GRP_INFO_T *child_grp;
- NC_TYPE_INFO_T *type;
- int retval;
-
- assert(grp && grp->name);
- LOG((3, "%s: grp->name %s", __func__, grp->name));
-
- /* Create the group in the HDF5 file if it doesn't exist. */
- if (!grp->hdf_grpid)
- if ((retval = create_group(grp)))
- return retval;
-
- /* If this is the root group of a file with strict NC3 rules, write
- * an attribute. But don't leave the attribute open. */
- if (!grp->parent && (grp->nc4_info->cmode & NC_CLASSIC_MODEL))
- if ((retval = write_nc3_strict_att(grp->hdf_grpid)))
- return retval;
-
- /* If there are any user-defined types, write them now. */
- for (type = grp->type; type; type = type->l.next)
- if ((retval = commit_type(grp, type)))
- return retval;
-
- /* If there are any child groups, write their groups and types. */
- for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
- if ((retval = nc4_rec_write_groups_types(child_grp)))
- return retval;
-
- return NC_NOERR;
+ NC_GRP_INFO_T *child_grp;
+ NC_TYPE_INFO_T *type;
+ int retval;
+
+ assert(grp && grp->name);
+ LOG((3, "%s: grp->name %s", __func__, grp->name));
+
+ /* Create the group in the HDF5 file if it doesn't exist. */
+ if (!grp->hdf_grpid)
+ if ((retval = create_group(grp)))
+ return retval;
+
+ /* If this is the root group of a file with strict NC3 rules, write
+ * an attribute. But don't leave the attribute open. */
+ if (!grp->parent && (grp->nc4_info->cmode & NC_CLASSIC_MODEL))
+ if ((retval = write_nc3_strict_att(grp->hdf_grpid)))
+ return retval;
+
+ /* If there are any user-defined types, write them now. */
+ for (type = grp->type; type; type = type->l.next)
+ if ((retval = commit_type(grp, type)))
+ return retval;
+
+ /* If there are any child groups, write their groups and types. */
+ for (child_grp = grp->children; child_grp; child_grp = child_grp->l.next)
+ if ((retval = nc4_rec_write_groups_types(child_grp)))
+ return retval;
+
+ return NC_NOERR;
}
/*! Copy data from one buffer to another, performing appropriate data conversion.
@@ -2548,972 +2627,972 @@ nc4_rec_write_groups_types(NC_GRP_INFO_T *grp)
accordance with the types. Range errors will be noted, and the fill
value used (or the default fill value if none is supplied) for
values that overflow the type.
-
+
I should be able to take this out when HDF5 does the right thing
with data type conversion.
-
+
Ed Hartnett, 11/15/3
*/
int
-nc4_convert_type(const void *src, void *dest,
- const nc_type src_type, const nc_type dest_type,
- const size_t len, int *range_error,
- const void *fill_value, int strict_nc3, int src_long,
+nc4_convert_type(const void *src, void *dest,
+ const nc_type src_type, const nc_type dest_type,
+ const size_t len, int *range_error,
+ const void *fill_value, int strict_nc3, int src_long,
int dest_long)
{
- char *cp, *cp1;
- float *fp, *fp1;
- double *dp, *dp1;
- int *ip, *ip1;
- signed long *lp, *lp1;
- short *sp, *sp1;
- signed char *bp, *bp1;
- unsigned char *ubp, *ubp1;
- unsigned short *usp, *usp1;
- unsigned int *uip, *uip1;
- long long *lip, *lip1;
- unsigned long long *ulip, *ulip1;
- size_t count = 0;
-
- *range_error = 0;
- LOG((3, "%s: len %d src_type %d dest_type %d src_long %d dest_long %d",
- __func__, len, src_type, dest_type, src_long, dest_long));
-
- /* OK, this is ugly. If you can think of anything better, I'm open
- to suggestions!
-
- Note that we don't use a default fill value for type
- NC_BYTE. This is because Lord Voldemort cast a nofilleramous spell
- at Harry Potter, but it bounced off his scar and hit the netcdf-4
- code.
- */
- switch (src_type)
- {
- case NC_CHAR:
- switch (dest_type)
- {
- case NC_CHAR:
- for (cp = (char *)src, cp1 = dest; count < len; count++)
- *cp1++ = *cp++;
- break;
- default:
- LOG((0, "%s: Uknown destination type.", __func__));
- }
- break;
-
- case NC_BYTE:
- switch (dest_type)
- {
- case NC_BYTE:
- for (bp = (signed char *)src, bp1 = dest; count < len; count++)
- *bp1++ = *bp++;
- break;
- case NC_UBYTE:
- for (bp = (signed char *)src, ubp = dest; count < len; count++)
- {
- if (*bp < 0)
- (*range_error)++;
- *ubp++ = *bp++;
- }
- break;
- case NC_SHORT:
- for (bp = (signed char *)src, sp = dest; count < len; count++)
- *sp++ = *bp++;
- break;
- case NC_USHORT:
- for (bp = (signed char *)src, usp = dest; count < len; count++)
- {
- if (*bp < 0)
- (*range_error)++;
- *usp++ = *bp++;
- }
- break;
- case NC_INT:
- if (dest_long)
- {
- for (bp = (signed char *)src, lp = dest; count < len; count++)
- *lp++ = *bp++;
- break;
- }
- else
- {
- for (bp = (signed char *)src, ip = dest; count < len; count++)
- *ip++ = *bp++;
- break;
- }
- case NC_UINT:
- for (bp = (signed char *)src, uip = dest; count < len; count++)
- {
- if (*bp < 0)
- (*range_error)++;
- *uip++ = *bp++;
- }
- break;
- case NC_INT64:
- for (bp = (signed char *)src, lip = dest; count < len; count++)
- *lip++ = *bp++;
- break;
- case NC_UINT64:
- for (bp = (signed char *)src, ulip = dest; count < len; count++)
- {
- if (*bp < 0)
- (*range_error)++;
- *ulip++ = *bp++;
- }
- break;
- case NC_FLOAT:
- for (bp = (signed char *)src, fp = dest; count < len; count++)
- *fp++ = *bp++;
- break;
- case NC_DOUBLE:
- for (bp = (signed char *)src, dp = dest; count < len; count++)
- *dp++ = *bp++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_UBYTE:
- switch (dest_type)
- {
- case NC_BYTE:
- for (ubp = (unsigned char *)src, bp = dest; count < len; count++)
- {
- if (!strict_nc3 && *ubp > X_SCHAR_MAX)
- (*range_error)++;
- *bp++ = *ubp++;
- }
- break;
- case NC_SHORT:
- for (ubp = (unsigned char *)src, sp = dest; count < len; count++)
- *sp++ = *ubp++;
- break;
- case NC_UBYTE:
- for (ubp = (unsigned char *)src, ubp1 = dest; count < len; count++)
- *ubp1++ = *ubp++;
- break;
- case NC_USHORT:
- for (ubp = (unsigned char *)src, usp = dest; count < len; count++)
- *usp++ = *ubp++;
- break;
- case NC_INT:
- if (dest_long)
- {
- for (ubp = (unsigned char *)src, lp = dest; count < len; count++)
- *lp++ = *ubp++;
- break;
- }
- else
- {
- for (ubp = (unsigned char *)src, ip = dest; count < len; count++)
- *ip++ = *ubp++;
- break;
- }
- case NC_UINT:
- for (ubp = (unsigned char *)src, uip = dest; count < len; count++)
- *uip++ = *ubp++;
- break;
- case NC_INT64:
- for (ubp = (unsigned char *)src, lip = dest; count < len; count++)
- *lip++ = *ubp++;
- break;
- case NC_UINT64:
- for (ubp = (unsigned char *)src, ulip = dest; count < len; count++)
- *ulip++ = *ubp++;
- break;
- case NC_FLOAT:
- for (ubp = (unsigned char *)src, fp = dest; count < len; count++)
- *fp++ = *ubp++;
- break;
- case NC_DOUBLE:
- for (ubp = (unsigned char *)src, dp = dest; count < len; count++)
- *dp++ = *ubp++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_SHORT:
- switch (dest_type)
- {
- case NC_UBYTE:
- for (sp = (short *)src, ubp = dest; count < len; count++)
- {
- if (*sp > X_UCHAR_MAX || *sp < 0)
- (*range_error)++;
- *ubp++ = *sp++;
- }
- break;
- case NC_BYTE:
- for (sp = (short *)src, bp = dest; count < len; count++)
- {
- if (*sp > X_SCHAR_MAX || *sp < X_SCHAR_MIN)
- (*range_error)++;
- *bp++ = *sp++;
- }
- break;
- case NC_SHORT:
- for (sp = (short *)src, sp1 = dest; count < len; count++)
- *sp1++ = *sp++;
- break;
- case NC_USHORT:
- for (sp = (short *)src, usp = dest; count < len; count++)
- {
- if (*sp < 0)
- (*range_error)++;
- *usp++ = *sp++;
- }
- break;
- case NC_INT:
- if (dest_long)
- for (sp = (short *)src, lp = dest; count < len; count++)
- *lp++ = *sp++;
- else
- for (sp = (short *)src, ip = dest; count < len; count++)
- *ip++ = *sp++;
- break;
- case NC_UINT:
- for (sp = (short *)src, uip = dest; count < len; count++)
- {
- if (*sp < 0)
- (*range_error)++;
- *uip++ = *sp++;
- }
- break;
- case NC_INT64:
- for (sp = (short *)src, lip = dest; count < len; count++)
- *lip++ = *sp++;
- break;
- case NC_UINT64:
- for (sp = (short *)src, ulip = dest; count < len; count++)
- {
- if (*sp < 0)
- (*range_error)++;
- *ulip++ = *sp++;
- }
- break;
- case NC_FLOAT:
- for (sp = (short *)src, fp = dest; count < len; count++)
- *fp++ = *sp++;
- break;
- case NC_DOUBLE:
- for (sp = (short *)src, dp = dest; count < len; count++)
- *dp++ = *sp++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_USHORT:
- switch (dest_type)
- {
- case NC_UBYTE:
- for (usp = (unsigned short *)src, ubp = dest; count < len; count++)
- {
- if (*usp > X_UCHAR_MAX)
- (*range_error)++;
- *ubp++ = *usp++;
- }
- break;
- case NC_BYTE:
- for (usp = (unsigned short *)src, bp = dest; count < len; count++)
- {
- if (*usp > X_SCHAR_MAX)
- (*range_error)++;
- *bp++ = *usp++;
- }
- break;
- case NC_SHORT:
- for (usp = (unsigned short *)src, sp = dest; count < len; count++)
- {
- if (*usp > X_SHORT_MAX)
- (*range_error)++;
- *sp++ = *usp++;
- }
- break;
- case NC_USHORT:
- for (usp = (unsigned short *)src, usp1 = dest; count < len; count++)
- *usp1++ = *usp++;
- break;
- case NC_INT:
- if (dest_long)
- for (usp = (unsigned short *)src, lp = dest; count < len; count++)
- *lp++ = *usp++;
- else
- for (usp = (unsigned short *)src, ip = dest; count < len; count++)
- *ip++ = *usp++;
- break;
- case NC_UINT:
- for (usp = (unsigned short *)src, uip = dest; count < len; count++)
- *uip++ = *usp++;
- break;
- case NC_INT64:
- for (usp = (unsigned short *)src, lip = dest; count < len; count++)
- *lip++ = *usp++;
- break;
- case NC_UINT64:
- for (usp = (unsigned short *)src, ulip = dest; count < len; count++)
- *ulip++ = *usp++;
- break;
- case NC_FLOAT:
- for (usp = (unsigned short *)src, fp = dest; count < len; count++)
- *fp++ = *usp++;
- break;
- case NC_DOUBLE:
- for (usp = (unsigned short *)src, dp = dest; count < len; count++)
- *dp++ = *usp++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_INT:
- if (src_long)
- {
- switch (dest_type)
- {
- case NC_UBYTE:
- for (lp = (long *)src, ubp = dest; count < len; count++)
- {
- if (*lp > X_UCHAR_MAX || *lp < 0)
- (*range_error)++;
- *ubp++ = *lp++;
- }
- break;
- case NC_BYTE:
- for (lp = (long *)src, bp = dest; count < len; count++)
- {
- if (*lp > X_SCHAR_MAX || *lp < X_SCHAR_MIN)
- (*range_error)++;
- *bp++ = *lp++;
- }
- break;
- case NC_SHORT:
- for (lp = (long *)src, sp = dest; count < len; count++)
- {
- if (*lp > X_SHORT_MAX || *lp < X_SHORT_MIN)
- (*range_error)++;
- *sp++ = *lp++;
- }
- break;
- case NC_USHORT:
- for (lp = (long *)src, usp = dest; count < len; count++)
- {
- if (*lp > X_USHORT_MAX || *lp < 0)
- (*range_error)++;
- *usp++ = *lp++;
- }
- break;
- case NC_INT: /* src is long */
- if (dest_long)
- {
- for (lp = (long *)src, lp1 = dest; count < len; count++)
- {
- if (*lp > X_LONG_MAX || *lp < X_LONG_MIN)
- (*range_error)++;
- *lp1++ = *lp++;
- }
- }
- else /* dest is int */
- {
- for (lp = (long *)src, ip = dest; count < len; count++)
- {
- if (*lp > X_INT_MAX || *lp < X_INT_MIN)
- (*range_error)++;
- *ip++ = *lp++;
- }
- }
- break;
- case NC_UINT:
- for (lp = (long *)src, uip = dest; count < len; count++)
- {
- if (*lp > X_UINT_MAX || *lp < 0)
- (*range_error)++;
- *uip++ = *lp++;
- }
- break;
- case NC_INT64:
- for (lp = (long *)src, lip = dest; count < len; count++)
- *lip++ = *lp++;
- break;
- case NC_UINT64:
- for (lp = (long *)src, ulip = dest; count < len; count++)
- {
- if (*lp < 0)
- (*range_error)++;
- *ulip++ = *lp++;
- }
- break;
- case NC_FLOAT:
- for (lp = (long *)src, fp = dest; count < len; count++)
- *fp++ = *lp++;
- break;
- case NC_DOUBLE:
- for (lp = (long *)src, dp = dest; count < len; count++)
- *dp++ = *lp++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- }
- else
- {
- switch (dest_type)
- {
- case NC_UBYTE:
- for (ip = (int *)src, ubp = dest; count < len; count++)
- {
- if (*ip > X_UCHAR_MAX || *ip < 0)
- (*range_error)++;
- *ubp++ = *ip++;
- }
- break;
- case NC_BYTE:
- for (ip = (int *)src, bp = dest; count < len; count++)
- {
- if (*ip > X_SCHAR_MAX || *ip < X_SCHAR_MIN)
- (*range_error)++;
- *bp++ = *ip++;
- }
- break;
- case NC_SHORT:
- for (ip = (int *)src, sp = dest; count < len; count++)
- {
- if (*ip > X_SHORT_MAX || *ip < X_SHORT_MIN)
- (*range_error)++;
- *sp++ = *ip++;
- }
- break;
- case NC_USHORT:
- for (ip = (int *)src, usp = dest; count < len; count++)
- {
- if (*ip > X_USHORT_MAX || *ip < 0)
- (*range_error)++;
- *usp++ = *ip++;
- }
- break;
- case NC_INT: /* src is int */
- if (dest_long)
- {
- for (ip = (int *)src, lp1 = dest; count < len; count++)
- {
- if (*ip > X_LONG_MAX || *ip < X_LONG_MIN)
- (*range_error)++;
- *lp1++ = *ip++;
- }
- }
- else /* dest is int */
- {
- for (ip = (int *)src, ip1 = dest; count < len; count++)
- {
- if (*ip > X_INT_MAX || *ip < X_INT_MIN)
- (*range_error)++;
- *ip1++ = *ip++;
- }
- }
- break;
- case NC_UINT:
- for (ip = (int *)src, uip = dest; count < len; count++)
- {
- if (*ip > X_UINT_MAX || *ip < 0)
- (*range_error)++;
- *uip++ = *ip++;
- }
- break;
- case NC_INT64:
- for (ip = (int *)src, lip = dest; count < len; count++)
- *lip++ = *ip++;
- break;
- case NC_UINT64:
- for (ip = (int *)src, ulip = dest; count < len; count++)
- {
- if (*ip < 0)
- (*range_error)++;
- *ulip++ = *ip++;
- }
- break;
- case NC_FLOAT:
- for (ip = (int *)src, fp = dest; count < len; count++)
- *fp++ = *ip++;
- break;
- case NC_DOUBLE:
- for (ip = (int *)src, dp = dest; count < len; count++)
- *dp++ = *ip++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- }
- break;
-
- case NC_UINT:
- switch (dest_type)
- {
- case NC_UBYTE:
- for (uip = (unsigned int *)src, ubp = dest; count < len; count++)
- {
- if (*uip > X_UCHAR_MAX)
- (*range_error)++;
- *ubp++ = *uip++;
- }
- break;
- case NC_BYTE:
- for (uip = (unsigned int *)src, bp = dest; count < len; count++)
- {
- if (*uip > X_SCHAR_MAX)
- (*range_error)++;
- *bp++ = *uip++;
- }
- break;
- case NC_SHORT:
- for (uip = (unsigned int *)src, sp = dest; count < len; count++)
- {
- if (*uip > X_SHORT_MAX)
- (*range_error)++;
- *sp++ = *uip++;
- }
- break;
- case NC_USHORT:
- for (uip = (unsigned int *)src, usp = dest; count < len; count++)
- {
- if (*uip > X_USHORT_MAX)
- (*range_error)++;
- *usp++ = *uip++;
- }
- break;
- case NC_INT:
- if (dest_long)
- for (uip = (unsigned int *)src, lp = dest; count < len; count++)
- {
- if (*uip > X_LONG_MAX)
- (*range_error)++;
- *lp++ = *uip++;
- }
- else
- for (uip = (unsigned int *)src, ip = dest; count < len; count++)
- {
- if (*uip > X_INT_MAX)
- (*range_error)++;
- *ip++ = *uip++;
- }
- break;
- case NC_UINT:
- for (uip = (unsigned int *)src, uip1 = dest; count < len; count++)
- {
- if (*uip > X_UINT_MAX)
- (*range_error)++;
- *uip1++ = *uip++;
- }
- break;
- case NC_INT64:
- for (uip = (unsigned int *)src, lip = dest; count < len; count++)
- *lip++ = *uip++;
- break;
- case NC_UINT64:
- for (uip = (unsigned int *)src, ulip = dest; count < len; count++)
- *ulip++ = *uip++;
- break;
- case NC_FLOAT:
- for (uip = (unsigned int *)src, fp = dest; count < len; count++)
- *fp++ = *uip++;
- break;
- case NC_DOUBLE:
- for (uip = (unsigned int *)src, dp = dest; count < len; count++)
- *dp++ = *uip++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_INT64:
- switch (dest_type)
- {
+ char *cp, *cp1;
+ float *fp, *fp1;
+ double *dp, *dp1;
+ int *ip, *ip1;
+ signed long *lp, *lp1;
+ short *sp, *sp1;
+ signed char *bp, *bp1;
+ unsigned char *ubp, *ubp1;
+ unsigned short *usp, *usp1;
+ unsigned int *uip, *uip1;
+ long long *lip, *lip1;
+ unsigned long long *ulip, *ulip1;
+ size_t count = 0;
+
+ *range_error = 0;
+ LOG((3, "%s: len %d src_type %d dest_type %d src_long %d dest_long %d",
+ __func__, len, src_type, dest_type, src_long, dest_long));
+
+ /* OK, this is ugly. If you can think of anything better, I'm open
+ to suggestions!
+
+ Note that we don't use a default fill value for type
+ NC_BYTE. This is because Lord Voldemort cast a nofilleramous spell
+ at Harry Potter, but it bounced off his scar and hit the netcdf-4
+ code.
+ */
+ switch (src_type)
+ {
+ case NC_CHAR:
+ switch (dest_type)
+ {
+ case NC_CHAR:
+ for (cp = (char *)src, cp1 = dest; count < len; count++)
+ *cp1++ = *cp++;
+ break;
+ default:
+ LOG((0, "%s: Uknown destination type.", __func__));
+ }
+ break;
+
+ case NC_BYTE:
+ switch (dest_type)
+ {
+ case NC_BYTE:
+ for (bp = (signed char *)src, bp1 = dest; count < len; count++)
+ *bp1++ = *bp++;
+ break;
+ case NC_UBYTE:
+ for (bp = (signed char *)src, ubp = dest; count < len; count++)
+ {
+ if (*bp < 0)
+ (*range_error)++;
+ *ubp++ = *bp++;
+ }
+ break;
+ case NC_SHORT:
+ for (bp = (signed char *)src, sp = dest; count < len; count++)
+ *sp++ = *bp++;
+ break;
+ case NC_USHORT:
+ for (bp = (signed char *)src, usp = dest; count < len; count++)
+ {
+ if (*bp < 0)
+ (*range_error)++;
+ *usp++ = *bp++;
+ }
+ break;
+ case NC_INT:
+ if (dest_long)
+ {
+ for (bp = (signed char *)src, lp = dest; count < len; count++)
+ *lp++ = *bp++;
+ break;
+ }
+ else
+ {
+ for (bp = (signed char *)src, ip = dest; count < len; count++)
+ *ip++ = *bp++;
+ break;
+ }
+ case NC_UINT:
+ for (bp = (signed char *)src, uip = dest; count < len; count++)
+ {
+ if (*bp < 0)
+ (*range_error)++;
+ *uip++ = *bp++;
+ }
+ break;
+ case NC_INT64:
+ for (bp = (signed char *)src, lip = dest; count < len; count++)
+ *lip++ = *bp++;
+ break;
+ case NC_UINT64:
+ for (bp = (signed char *)src, ulip = dest; count < len; count++)
+ {
+ if (*bp < 0)
+ (*range_error)++;
+ *ulip++ = *bp++;
+ }
+ break;
+ case NC_FLOAT:
+ for (bp = (signed char *)src, fp = dest; count < len; count++)
+ *fp++ = *bp++;
+ break;
+ case NC_DOUBLE:
+ for (bp = (signed char *)src, dp = dest; count < len; count++)
+ *dp++ = *bp++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_UBYTE:
+ switch (dest_type)
+ {
+ case NC_BYTE:
+ for (ubp = (unsigned char *)src, bp = dest; count < len; count++)
+ {
+ if (!strict_nc3 && *ubp > X_SCHAR_MAX)
+ (*range_error)++;
+ *bp++ = *ubp++;
+ }
+ break;
+ case NC_SHORT:
+ for (ubp = (unsigned char *)src, sp = dest; count < len; count++)
+ *sp++ = *ubp++;
+ break;
+ case NC_UBYTE:
+ for (ubp = (unsigned char *)src, ubp1 = dest; count < len; count++)
+ *ubp1++ = *ubp++;
+ break;
+ case NC_USHORT:
+ for (ubp = (unsigned char *)src, usp = dest; count < len; count++)
+ *usp++ = *ubp++;
+ break;
+ case NC_INT:
+ if (dest_long)
+ {
+ for (ubp = (unsigned char *)src, lp = dest; count < len; count++)
+ *lp++ = *ubp++;
+ break;
+ }
+ else
+ {
+ for (ubp = (unsigned char *)src, ip = dest; count < len; count++)
+ *ip++ = *ubp++;
+ break;
+ }
+ case NC_UINT:
+ for (ubp = (unsigned char *)src, uip = dest; count < len; count++)
+ *uip++ = *ubp++;
+ break;
+ case NC_INT64:
+ for (ubp = (unsigned char *)src, lip = dest; count < len; count++)
+ *lip++ = *ubp++;
+ break;
+ case NC_UINT64:
+ for (ubp = (unsigned char *)src, ulip = dest; count < len; count++)
+ *ulip++ = *ubp++;
+ break;
+ case NC_FLOAT:
+ for (ubp = (unsigned char *)src, fp = dest; count < len; count++)
+ *fp++ = *ubp++;
+ break;
+ case NC_DOUBLE:
+ for (ubp = (unsigned char *)src, dp = dest; count < len; count++)
+ *dp++ = *ubp++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_SHORT:
+ switch (dest_type)
+ {
+ case NC_UBYTE:
+ for (sp = (short *)src, ubp = dest; count < len; count++)
+ {
+ if (*sp > X_UCHAR_MAX || *sp < 0)
+ (*range_error)++;
+ *ubp++ = *sp++;
+ }
+ break;
+ case NC_BYTE:
+ for (sp = (short *)src, bp = dest; count < len; count++)
+ {
+ if (*sp > X_SCHAR_MAX || *sp < X_SCHAR_MIN)
+ (*range_error)++;
+ *bp++ = *sp++;
+ }
+ break;
+ case NC_SHORT:
+ for (sp = (short *)src, sp1 = dest; count < len; count++)
+ *sp1++ = *sp++;
+ break;
+ case NC_USHORT:
+ for (sp = (short *)src, usp = dest; count < len; count++)
+ {
+ if (*sp < 0)
+ (*range_error)++;
+ *usp++ = *sp++;
+ }
+ break;
+ case NC_INT:
+ if (dest_long)
+ for (sp = (short *)src, lp = dest; count < len; count++)
+ *lp++ = *sp++;
+ else
+ for (sp = (short *)src, ip = dest; count < len; count++)
+ *ip++ = *sp++;
+ break;
+ case NC_UINT:
+ for (sp = (short *)src, uip = dest; count < len; count++)
+ {
+ if (*sp < 0)
+ (*range_error)++;
+ *uip++ = *sp++;
+ }
+ break;
+ case NC_INT64:
+ for (sp = (short *)src, lip = dest; count < len; count++)
+ *lip++ = *sp++;
+ break;
+ case NC_UINT64:
+ for (sp = (short *)src, ulip = dest; count < len; count++)
+ {
+ if (*sp < 0)
+ (*range_error)++;
+ *ulip++ = *sp++;
+ }
+ break;
+ case NC_FLOAT:
+ for (sp = (short *)src, fp = dest; count < len; count++)
+ *fp++ = *sp++;
+ break;
+ case NC_DOUBLE:
+ for (sp = (short *)src, dp = dest; count < len; count++)
+ *dp++ = *sp++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_USHORT:
+ switch (dest_type)
+ {
+ case NC_UBYTE:
+ for (usp = (unsigned short *)src, ubp = dest; count < len; count++)
+ {
+ if (*usp > X_UCHAR_MAX)
+ (*range_error)++;
+ *ubp++ = *usp++;
+ }
+ break;
+ case NC_BYTE:
+ for (usp = (unsigned short *)src, bp = dest; count < len; count++)
+ {
+ if (*usp > X_SCHAR_MAX)
+ (*range_error)++;
+ *bp++ = *usp++;
+ }
+ break;
+ case NC_SHORT:
+ for (usp = (unsigned short *)src, sp = dest; count < len; count++)
+ {
+ if (*usp > X_SHORT_MAX)
+ (*range_error)++;
+ *sp++ = *usp++;
+ }
+ break;
+ case NC_USHORT:
+ for (usp = (unsigned short *)src, usp1 = dest; count < len; count++)
+ *usp1++ = *usp++;
+ break;
+ case NC_INT:
+ if (dest_long)
+ for (usp = (unsigned short *)src, lp = dest; count < len; count++)
+ *lp++ = *usp++;
+ else
+ for (usp = (unsigned short *)src, ip = dest; count < len; count++)
+ *ip++ = *usp++;
+ break;
+ case NC_UINT:
+ for (usp = (unsigned short *)src, uip = dest; count < len; count++)
+ *uip++ = *usp++;
+ break;
+ case NC_INT64:
+ for (usp = (unsigned short *)src, lip = dest; count < len; count++)
+ *lip++ = *usp++;
+ break;
+ case NC_UINT64:
+ for (usp = (unsigned short *)src, ulip = dest; count < len; count++)
+ *ulip++ = *usp++;
+ break;
+ case NC_FLOAT:
+ for (usp = (unsigned short *)src, fp = dest; count < len; count++)
+ *fp++ = *usp++;
+ break;
+ case NC_DOUBLE:
+ for (usp = (unsigned short *)src, dp = dest; count < len; count++)
+ *dp++ = *usp++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_INT:
+ if (src_long)
+ {
+ switch (dest_type)
+ {
case NC_UBYTE:
- for (lip = (long long *)src, ubp = dest; count < len; count++)
- {
- if (*lip > X_UCHAR_MAX || *lip < 0)
- (*range_error)++;
- *ubp++ = *lip++;
- }
- break;
+ for (lp = (long *)src, ubp = dest; count < len; count++)
+ {
+ if (*lp > X_UCHAR_MAX || *lp < 0)
+ (*range_error)++;
+ *ubp++ = *lp++;
+ }
+ break;
case NC_BYTE:
- for (lip = (long long *)src, bp = dest; count < len; count++)
- {
- if (*lip > X_SCHAR_MAX || *lip < X_SCHAR_MIN)
- (*range_error)++;
- *bp++ = *lip++;
- }
- break;
+ for (lp = (long *)src, bp = dest; count < len; count++)
+ {
+ if (*lp > X_SCHAR_MAX || *lp < X_SCHAR_MIN)
+ (*range_error)++;
+ *bp++ = *lp++;
+ }
+ break;
case NC_SHORT:
- for (lip = (long long *)src, sp = dest; count < len; count++)
- {
- if (*lip > X_SHORT_MAX || *lip < X_SHORT_MIN)
- (*range_error)++;
- *sp++ = *lip++;
- }
- break;
+ for (lp = (long *)src, sp = dest; count < len; count++)
+ {
+ if (*lp > X_SHORT_MAX || *lp < X_SHORT_MIN)
+ (*range_error)++;
+ *sp++ = *lp++;
+ }
+ break;
case NC_USHORT:
- for (lip = (long long *)src, usp = dest; count < len; count++)
- {
- if (*lip > X_USHORT_MAX || *lip < 0)
- (*range_error)++;
- *usp++ = *lip++;
- }
- break;
- case NC_UINT:
- for (lip = (long long *)src, uip = dest; count < len; count++)
- {
- if (*lip > X_UINT_MAX || *lip < 0)
- (*range_error)++;
- *uip++ = *lip++;
- }
- break;
- case NC_INT:
- if (dest_long)
- for (lip = (long long *)src, lp = dest; count < len; count++)
- {
- if (*lip > X_LONG_MAX || *lip < X_LONG_MIN)
+ for (lp = (long *)src, usp = dest; count < len; count++)
+ {
+ if (*lp > X_USHORT_MAX || *lp < 0)
+ (*range_error)++;
+ *usp++ = *lp++;
+ }
+ break;
+ case NC_INT: /* src is long */
+ if (dest_long)
+ {
+ for (lp = (long *)src, lp1 = dest; count < len; count++)
+ {
+ if (*lp > X_LONG_MAX || *lp < X_LONG_MIN)
(*range_error)++;
- *lp++ = *lip++;
- }
- else
- for (lip = (long long *)src, ip = dest; count < len; count++)
- {
- if (*lip > X_INT_MAX || *lip < X_INT_MIN)
+ *lp1++ = *lp++;
+ }
+ }
+ else /* dest is int */
+ {
+ for (lp = (long *)src, ip = dest; count < len; count++)
+ {
+ if (*lp > X_INT_MAX || *lp < X_INT_MIN)
(*range_error)++;
- *ip++ = *lip++;
- }
- break;
- case NC_INT64:
- for (lip = (long long *)src, lip1 = dest; count < len; count++)
- *lip1++ = *lip++;
- break;
- case NC_UINT64:
- for (lip = (long long *)src, ulip = dest; count < len; count++)
- {
- if (*lip < 0)
- (*range_error)++;
- *ulip++ = *lip++;
- }
- break;
- case NC_FLOAT:
- for (lip = (long long *)src, fp = dest; count < len; count++)
- *fp++ = *lip++;
- break;
- case NC_DOUBLE:
- for (lip = (long long *)src, dp = dest; count < len; count++)
- *dp++ = *lip++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_UINT64:
- switch (dest_type)
- {
- case NC_UBYTE:
- for (ulip = (unsigned long long *)src, ubp = dest; count < len; count++)
- {
- if (*ulip > X_UCHAR_MAX)
- (*range_error)++;
- *ubp++ = *ulip++;
- }
- break;
- case NC_BYTE:
- for (ulip = (unsigned long long *)src, bp = dest; count < len; count++)
- {
- if (*ulip > X_SCHAR_MAX)
- (*range_error)++;
- *bp++ = *ulip++;
- }
- break;
- case NC_SHORT:
- for (ulip = (unsigned long long *)src, sp = dest; count < len; count++)
- {
- if (*ulip > X_SHORT_MAX)
- (*range_error)++;
- *sp++ = *ulip++;
- }
- break;
- case NC_USHORT:
- for (ulip = (unsigned long long *)src, usp = dest; count < len; count++)
- {
- if (*ulip > X_USHORT_MAX)
- (*range_error)++;
- *usp++ = *ulip++;
- }
- break;
+ *ip++ = *lp++;
+ }
+ }
+ break;
case NC_UINT:
- for (ulip = (unsigned long long *)src, uip = dest; count < len; count++)
- {
- if (*ulip > X_UINT_MAX)
- (*range_error)++;
- *uip++ = *ulip++;
- }
- break;
- case NC_INT:
- if (dest_long)
- for (ulip = (unsigned long long *)src, lp = dest; count < len; count++)
- {
- if (*ulip > X_LONG_MAX)
- (*range_error)++;
- *lp++ = *ulip++;
- }
- else
- for (ulip = (unsigned long long *)src, ip = dest; count < len; count++)
- {
- if (*ulip > X_INT_MAX)
- (*range_error)++;
- *ip++ = *ulip++;
- }
- break;
- case NC_INT64:
- for (ulip = (unsigned long long *)src, lip = dest; count < len; count++)
- {
- if (*ulip > X_INT64_MAX)
+ for (lp = (long *)src, uip = dest; count < len; count++)
+ {
+ if (*lp > X_UINT_MAX || *lp < 0)
(*range_error)++;
- *lip++ = *ulip++;
- }
- break;
- case NC_UINT64:
- for (ulip = (unsigned long long *)src, ulip1 = dest; count < len; count++)
- *ulip1++ = *ulip++;
- break;
- case NC_FLOAT:
- for (ulip = (unsigned long long *)src, fp = dest; count < len; count++)
- *fp++ = *ulip++;
- break;
- case NC_DOUBLE:
- for (ulip = (unsigned long long *)src, dp = dest; count < len; count++)
- *dp++ = *ulip++;
- break;
- default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_FLOAT:
- switch (dest_type)
- {
- case NC_UBYTE:
- for (fp = (float *)src, ubp = dest; count < len; count++)
- {
- if (*fp > X_UCHAR_MAX || *fp < 0)
- (*range_error)++;
- *ubp++ = *fp++;
- }
- break;
- case NC_BYTE:
- for (fp = (float *)src, bp = dest; count < len; count++)
- {
- if (*fp > (double)X_SCHAR_MAX || *fp < (double)X_SCHAR_MIN)
- (*range_error)++;
- *bp++ = *fp++;
- }
- break;
- case NC_SHORT:
- for (fp = (float *)src, sp = dest; count < len; count++)
- {
- if (*fp > (double)X_SHORT_MAX || *fp < (double)X_SHORT_MIN)
- (*range_error)++;
- *sp++ = *fp++;
- }
- break;
- case NC_USHORT:
- for (fp = (float *)src, usp = dest; count < len; count++)
- {
- if (*fp > X_USHORT_MAX || *fp < 0)
- (*range_error)++;
- *usp++ = *fp++;
- }
- break;
- case NC_UINT:
- for (fp = (float *)src, uip = dest; count < len; count++)
- {
- if (*fp > X_UINT_MAX || *fp < 0)
- (*range_error)++;
- *uip++ = *fp++;
- }
- break;
- case NC_INT:
- if (dest_long)
- for (fp = (float *)src, lp = dest; count < len; count++)
- {
- if (*fp > (double)X_LONG_MAX || *fp < (double)X_LONG_MIN)
- (*range_error)++;
- *lp++ = *fp++;
- }
- else
- for (fp = (float *)src, ip = dest; count < len; count++)
- {
- if (*fp > (double)X_INT_MAX || *fp < (double)X_INT_MIN)
- (*range_error)++;
- *ip++ = *fp++;
- }
- break;
+ *uip++ = *lp++;
+ }
+ break;
case NC_INT64:
- for (fp = (float *)src, lip = dest; count < len; count++)
- {
- if (*fp > X_INT64_MAX || *fp <X_INT64_MIN)
- (*range_error)++;
- *lip++ = *fp++;
- }
- break;
+ for (lp = (long *)src, lip = dest; count < len; count++)
+ *lip++ = *lp++;
+ break;
case NC_UINT64:
- for (fp = (float *)src, lip = dest; count < len; count++)
- {
- if (*fp > X_UINT64_MAX || *fp < 0)
+ for (lp = (long *)src, ulip = dest; count < len; count++)
+ {
+ if (*lp < 0)
(*range_error)++;
- *lip++ = *fp++;
- }
- break;
+ *ulip++ = *lp++;
+ }
+ break;
case NC_FLOAT:
- for (fp = (float *)src, fp1 = dest; count < len; count++)
- {
-/* if (*fp > X_FLOAT_MAX || *fp < X_FLOAT_MIN)
- (*range_error)++;*/
- *fp1++ = *fp++;
- }
- break;
+ for (lp = (long *)src, fp = dest; count < len; count++)
+ *fp++ = *lp++;
+ break;
case NC_DOUBLE:
- for (fp = (float *)src, dp = dest; count < len; count++)
- *dp++ = *fp++;
- break;
+ for (lp = (long *)src, dp = dest; count < len; count++)
+ *dp++ = *lp++;
+ break;
default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- case NC_DOUBLE:
- switch (dest_type)
- {
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ }
+ else
+ {
+ switch (dest_type)
+ {
case NC_UBYTE:
- for (dp = (double *)src, ubp = dest; count < len; count++)
- {
- if (*dp > X_UCHAR_MAX || *dp < 0)
- (*range_error)++;
- *ubp++ = *dp++;
- }
- break;
+ for (ip = (int *)src, ubp = dest; count < len; count++)
+ {
+ if (*ip > X_UCHAR_MAX || *ip < 0)
+ (*range_error)++;
+ *ubp++ = *ip++;
+ }
+ break;
case NC_BYTE:
- for (dp = (double *)src, bp = dest; count < len; count++)
- {
- if (*dp > X_SCHAR_MAX || *dp < X_SCHAR_MIN)
- (*range_error)++;
- *bp++ = *dp++;
- }
- break;
+ for (ip = (int *)src, bp = dest; count < len; count++)
+ {
+ if (*ip > X_SCHAR_MAX || *ip < X_SCHAR_MIN)
+ (*range_error)++;
+ *bp++ = *ip++;
+ }
+ break;
case NC_SHORT:
- for (dp = (double *)src, sp = dest; count < len; count++)
- {
- if (*dp > X_SHORT_MAX || *dp < X_SHORT_MIN)
- (*range_error)++;
- *sp++ = *dp++;
- }
- break;
+ for (ip = (int *)src, sp = dest; count < len; count++)
+ {
+ if (*ip > X_SHORT_MAX || *ip < X_SHORT_MIN)
+ (*range_error)++;
+ *sp++ = *ip++;
+ }
+ break;
case NC_USHORT:
- for (dp = (double *)src, usp = dest; count < len; count++)
- {
- if (*dp > X_USHORT_MAX || *dp < 0)
- (*range_error)++;
- *usp++ = *dp++;
- }
- break;
- case NC_UINT:
- for (dp = (double *)src, uip = dest; count < len; count++)
- {
- if (*dp > X_UINT_MAX || *dp < 0)
- (*range_error)++;
- *uip++ = *dp++;
- }
- break;
- case NC_INT:
- if (dest_long)
- for (dp = (double *)src, lp = dest; count < len; count++)
- {
- if (*dp > X_LONG_MAX || *dp < X_LONG_MIN)
+ for (ip = (int *)src, usp = dest; count < len; count++)
+ {
+ if (*ip > X_USHORT_MAX || *ip < 0)
+ (*range_error)++;
+ *usp++ = *ip++;
+ }
+ break;
+ case NC_INT: /* src is int */
+ if (dest_long)
+ {
+ for (ip = (int *)src, lp1 = dest; count < len; count++)
+ {
+ if (*ip > X_LONG_MAX || *ip < X_LONG_MIN)
(*range_error)++;
- *lp++ = *dp++;
- }
- else
- for (dp = (double *)src, ip = dest; count < len; count++)
- {
- if (*dp > X_INT_MAX || *dp < X_INT_MIN)
+ *lp1++ = *ip++;
+ }
+ }
+ else /* dest is int */
+ {
+ for (ip = (int *)src, ip1 = dest; count < len; count++)
+ {
+ if (*ip > X_INT_MAX || *ip < X_INT_MIN)
(*range_error)++;
- *ip++ = *dp++;
- }
- break;
- case NC_INT64:
- for (dp = (double *)src, lip = dest; count < len; count++)
- {
- if (*dp > X_INT64_MAX || *dp < X_INT64_MIN)
+ *ip1++ = *ip++;
+ }
+ }
+ break;
+ case NC_UINT:
+ for (ip = (int *)src, uip = dest; count < len; count++)
+ {
+ if (*ip > X_UINT_MAX || *ip < 0)
(*range_error)++;
- *lip++ = *dp++;
- }
- break;
+ *uip++ = *ip++;
+ }
+ break;
+ case NC_INT64:
+ for (ip = (int *)src, lip = dest; count < len; count++)
+ *lip++ = *ip++;
+ break;
case NC_UINT64:
- for (dp = (double *)src, lip = dest; count < len; count++)
- {
- if (*dp > X_UINT64_MAX || *dp < 0)
+ for (ip = (int *)src, ulip = dest; count < len; count++)
+ {
+ if (*ip < 0)
(*range_error)++;
- *lip++ = *dp++;
- }
- break;
+ *ulip++ = *ip++;
+ }
+ break;
case NC_FLOAT:
- for (dp = (double *)src, fp = dest; count < len; count++)
- {
- if (*dp > X_FLOAT_MAX || *dp < X_FLOAT_MIN)
- (*range_error)++;
- *fp++ = *dp++;
- }
- break;
+ for (ip = (int *)src, fp = dest; count < len; count++)
+ *fp++ = *ip++;
+ break;
case NC_DOUBLE:
- for (dp = (double *)src, dp1 = dest; count < len; count++)
- {
- /* if (*dp > X_DOUBLE_MAX || *dp < X_DOUBLE_MIN) */
- /* (*range_error)++; */
- *dp1++ = *dp++;
- }
- break;
+ for (ip = (int *)src, dp = dest; count < len; count++)
+ *dp++ = *ip++;
+ break;
default:
- LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- break;
-
- default:
- LOG((0, "%s: unexpected src type. src_type %d, dest_type %d",
- __func__, src_type, dest_type));
- return NC_EBADTYPE;
- }
- return NC_NOERR;
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ }
+ break;
+
+ case NC_UINT:
+ switch (dest_type)
+ {
+ case NC_UBYTE:
+ for (uip = (unsigned int *)src, ubp = dest; count < len; count++)
+ {
+ if (*uip > X_UCHAR_MAX)
+ (*range_error)++;
+ *ubp++ = *uip++;
+ }
+ break;
+ case NC_BYTE:
+ for (uip = (unsigned int *)src, bp = dest; count < len; count++)
+ {
+ if (*uip > X_SCHAR_MAX)
+ (*range_error)++;
+ *bp++ = *uip++;
+ }
+ break;
+ case NC_SHORT:
+ for (uip = (unsigned int *)src, sp = dest; count < len; count++)
+ {
+ if (*uip > X_SHORT_MAX)
+ (*range_error)++;
+ *sp++ = *uip++;
+ }
+ break;
+ case NC_USHORT:
+ for (uip = (unsigned int *)src, usp = dest; count < len; count++)
+ {
+ if (*uip > X_USHORT_MAX)
+ (*range_error)++;
+ *usp++ = *uip++;
+ }
+ break;
+ case NC_INT:
+ if (dest_long)
+ for (uip = (unsigned int *)src, lp = dest; count < len; count++)
+ {
+ if (*uip > X_LONG_MAX)
+ (*range_error)++;
+ *lp++ = *uip++;
+ }
+ else
+ for (uip = (unsigned int *)src, ip = dest; count < len; count++)
+ {
+ if (*uip > X_INT_MAX)
+ (*range_error)++;
+ *ip++ = *uip++;
+ }
+ break;
+ case NC_UINT:
+ for (uip = (unsigned int *)src, uip1 = dest; count < len; count++)
+ {
+ if (*uip > X_UINT_MAX)
+ (*range_error)++;
+ *uip1++ = *uip++;
+ }
+ break;
+ case NC_INT64:
+ for (uip = (unsigned int *)src, lip = dest; count < len; count++)
+ *lip++ = *uip++;
+ break;
+ case NC_UINT64:
+ for (uip = (unsigned int *)src, ulip = dest; count < len; count++)
+ *ulip++ = *uip++;
+ break;
+ case NC_FLOAT:
+ for (uip = (unsigned int *)src, fp = dest; count < len; count++)
+ *fp++ = *uip++;
+ break;
+ case NC_DOUBLE:
+ for (uip = (unsigned int *)src, dp = dest; count < len; count++)
+ *dp++ = *uip++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_INT64:
+ switch (dest_type)
+ {
+ case NC_UBYTE:
+ for (lip = (long long *)src, ubp = dest; count < len; count++)
+ {
+ if (*lip > X_UCHAR_MAX || *lip < 0)
+ (*range_error)++;
+ *ubp++ = *lip++;
+ }
+ break;
+ case NC_BYTE:
+ for (lip = (long long *)src, bp = dest; count < len; count++)
+ {
+ if (*lip > X_SCHAR_MAX || *lip < X_SCHAR_MIN)
+ (*range_error)++;
+ *bp++ = *lip++;
+ }
+ break;
+ case NC_SHORT:
+ for (lip = (long long *)src, sp = dest; count < len; count++)
+ {
+ if (*lip > X_SHORT_MAX || *lip < X_SHORT_MIN)
+ (*range_error)++;
+ *sp++ = *lip++;
+ }
+ break;
+ case NC_USHORT:
+ for (lip = (long long *)src, usp = dest; count < len; count++)
+ {
+ if (*lip > X_USHORT_MAX || *lip < 0)
+ (*range_error)++;
+ *usp++ = *lip++;
+ }
+ break;
+ case NC_UINT:
+ for (lip = (long long *)src, uip = dest; count < len; count++)
+ {
+ if (*lip > X_UINT_MAX || *lip < 0)
+ (*range_error)++;
+ *uip++ = *lip++;
+ }
+ break;
+ case NC_INT:
+ if (dest_long)
+ for (lip = (long long *)src, lp = dest; count < len; count++)
+ {
+ if (*lip > X_LONG_MAX || *lip < X_LONG_MIN)
+ (*range_error)++;
+ *lp++ = *lip++;
+ }
+ else
+ for (lip = (long long *)src, ip = dest; count < len; count++)
+ {
+ if (*lip > X_INT_MAX || *lip < X_INT_MIN)
+ (*range_error)++;
+ *ip++ = *lip++;
+ }
+ break;
+ case NC_INT64:
+ for (lip = (long long *)src, lip1 = dest; count < len; count++)
+ *lip1++ = *lip++;
+ break;
+ case NC_UINT64:
+ for (lip = (long long *)src, ulip = dest; count < len; count++)
+ {
+ if (*lip < 0)
+ (*range_error)++;
+ *ulip++ = *lip++;
+ }
+ break;
+ case NC_FLOAT:
+ for (lip = (long long *)src, fp = dest; count < len; count++)
+ *fp++ = *lip++;
+ break;
+ case NC_DOUBLE:
+ for (lip = (long long *)src, dp = dest; count < len; count++)
+ *dp++ = *lip++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_UINT64:
+ switch (dest_type)
+ {
+ case NC_UBYTE:
+ for (ulip = (unsigned long long *)src, ubp = dest; count < len; count++)
+ {
+ if (*ulip > X_UCHAR_MAX)
+ (*range_error)++;
+ *ubp++ = *ulip++;
+ }
+ break;
+ case NC_BYTE:
+ for (ulip = (unsigned long long *)src, bp = dest; count < len; count++)
+ {
+ if (*ulip > X_SCHAR_MAX)
+ (*range_error)++;
+ *bp++ = *ulip++;
+ }
+ break;
+ case NC_SHORT:
+ for (ulip = (unsigned long long *)src, sp = dest; count < len; count++)
+ {
+ if (*ulip > X_SHORT_MAX)
+ (*range_error)++;
+ *sp++ = *ulip++;
+ }
+ break;
+ case NC_USHORT:
+ for (ulip = (unsigned long long *)src, usp = dest; count < len; count++)
+ {
+ if (*ulip > X_USHORT_MAX)
+ (*range_error)++;
+ *usp++ = *ulip++;
+ }
+ break;
+ case NC_UINT:
+ for (ulip = (unsigned long long *)src, uip = dest; count < len; count++)
+ {
+ if (*ulip > X_UINT_MAX)
+ (*range_error)++;
+ *uip++ = *ulip++;
+ }
+ break;
+ case NC_INT:
+ if (dest_long)
+ for (ulip = (unsigned long long *)src, lp = dest; count < len; count++)
+ {
+ if (*ulip > X_LONG_MAX)
+ (*range_error)++;
+ *lp++ = *ulip++;
+ }
+ else
+ for (ulip = (unsigned long long *)src, ip = dest; count < len; count++)
+ {
+ if (*ulip > X_INT_MAX)
+ (*range_error)++;
+ *ip++ = *ulip++;
+ }
+ break;
+ case NC_INT64:
+ for (ulip = (unsigned long long *)src, lip = dest; count < len; count++)
+ {
+ if (*ulip > X_INT64_MAX)
+ (*range_error)++;
+ *lip++ = *ulip++;
+ }
+ break;
+ case NC_UINT64:
+ for (ulip = (unsigned long long *)src, ulip1 = dest; count < len; count++)
+ *ulip1++ = *ulip++;
+ break;
+ case NC_FLOAT:
+ for (ulip = (unsigned long long *)src, fp = dest; count < len; count++)
+ *fp++ = *ulip++;
+ break;
+ case NC_DOUBLE:
+ for (ulip = (unsigned long long *)src, dp = dest; count < len; count++)
+ *dp++ = *ulip++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_FLOAT:
+ switch (dest_type)
+ {
+ case NC_UBYTE:
+ for (fp = (float *)src, ubp = dest; count < len; count++)
+ {
+ if (*fp > X_UCHAR_MAX || *fp < 0)
+ (*range_error)++;
+ *ubp++ = *fp++;
+ }
+ break;
+ case NC_BYTE:
+ for (fp = (float *)src, bp = dest; count < len; count++)
+ {
+ if (*fp > (double)X_SCHAR_MAX || *fp < (double)X_SCHAR_MIN)
+ (*range_error)++;
+ *bp++ = *fp++;
+ }
+ break;
+ case NC_SHORT:
+ for (fp = (float *)src, sp = dest; count < len; count++)
+ {
+ if (*fp > (double)X_SHORT_MAX || *fp < (double)X_SHORT_MIN)
+ (*range_error)++;
+ *sp++ = *fp++;
+ }
+ break;
+ case NC_USHORT:
+ for (fp = (float *)src, usp = dest; count < len; count++)
+ {
+ if (*fp > X_USHORT_MAX || *fp < 0)
+ (*range_error)++;
+ *usp++ = *fp++;
+ }
+ break;
+ case NC_UINT:
+ for (fp = (float *)src, uip = dest; count < len; count++)
+ {
+ if (*fp > X_UINT_MAX || *fp < 0)
+ (*range_error)++;
+ *uip++ = *fp++;
+ }
+ break;
+ case NC_INT:
+ if (dest_long)
+ for (fp = (float *)src, lp = dest; count < len; count++)
+ {
+ if (*fp > (double)X_LONG_MAX || *fp < (double)X_LONG_MIN)
+ (*range_error)++;
+ *lp++ = *fp++;
+ }
+ else
+ for (fp = (float *)src, ip = dest; count < len; count++)
+ {
+ if (*fp > (double)X_INT_MAX || *fp < (double)X_INT_MIN)
+ (*range_error)++;
+ *ip++ = *fp++;
+ }
+ break;
+ case NC_INT64:
+ for (fp = (float *)src, lip = dest; count < len; count++)
+ {
+ if (*fp > X_INT64_MAX || *fp <X_INT64_MIN)
+ (*range_error)++;
+ *lip++ = *fp++;
+ }
+ break;
+ case NC_UINT64:
+ for (fp = (float *)src, lip = dest; count < len; count++)
+ {
+ if (*fp > X_UINT64_MAX || *fp < 0)
+ (*range_error)++;
+ *lip++ = *fp++;
+ }
+ break;
+ case NC_FLOAT:
+ for (fp = (float *)src, fp1 = dest; count < len; count++)
+ {
+ /* if (*fp > X_FLOAT_MAX || *fp < X_FLOAT_MIN)
+ (*range_error)++;*/
+ *fp1++ = *fp++;
+ }
+ break;
+ case NC_DOUBLE:
+ for (fp = (float *)src, dp = dest; count < len; count++)
+ *dp++ = *fp++;
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ case NC_DOUBLE:
+ switch (dest_type)
+ {
+ case NC_UBYTE:
+ for (dp = (double *)src, ubp = dest; count < len; count++)
+ {
+ if (*dp > X_UCHAR_MAX || *dp < 0)
+ (*range_error)++;
+ *ubp++ = *dp++;
+ }
+ break;
+ case NC_BYTE:
+ for (dp = (double *)src, bp = dest; count < len; count++)
+ {
+ if (*dp > X_SCHAR_MAX || *dp < X_SCHAR_MIN)
+ (*range_error)++;
+ *bp++ = *dp++;
+ }
+ break;
+ case NC_SHORT:
+ for (dp = (double *)src, sp = dest; count < len; count++)
+ {
+ if (*dp > X_SHORT_MAX || *dp < X_SHORT_MIN)
+ (*range_error)++;
+ *sp++ = *dp++;
+ }
+ break;
+ case NC_USHORT:
+ for (dp = (double *)src, usp = dest; count < len; count++)
+ {
+ if (*dp > X_USHORT_MAX || *dp < 0)
+ (*range_error)++;
+ *usp++ = *dp++;
+ }
+ break;
+ case NC_UINT:
+ for (dp = (double *)src, uip = dest; count < len; count++)
+ {
+ if (*dp > X_UINT_MAX || *dp < 0)
+ (*range_error)++;
+ *uip++ = *dp++;
+ }
+ break;
+ case NC_INT:
+ if (dest_long)
+ for (dp = (double *)src, lp = dest; count < len; count++)
+ {
+ if (*dp > X_LONG_MAX || *dp < X_LONG_MIN)
+ (*range_error)++;
+ *lp++ = *dp++;
+ }
+ else
+ for (dp = (double *)src, ip = dest; count < len; count++)
+ {
+ if (*dp > X_INT_MAX || *dp < X_INT_MIN)
+ (*range_error)++;
+ *ip++ = *dp++;
+ }
+ break;
+ case NC_INT64:
+ for (dp = (double *)src, lip = dest; count < len; count++)
+ {
+ if (*dp > X_INT64_MAX || *dp < X_INT64_MIN)
+ (*range_error)++;
+ *lip++ = *dp++;
+ }
+ break;
+ case NC_UINT64:
+ for (dp = (double *)src, lip = dest; count < len; count++)
+ {
+ if (*dp > X_UINT64_MAX || *dp < 0)
+ (*range_error)++;
+ *lip++ = *dp++;
+ }
+ break;
+ case NC_FLOAT:
+ for (dp = (double *)src, fp = dest; count < len; count++)
+ {
+ if (*dp > X_FLOAT_MAX || *dp < X_FLOAT_MIN)
+ (*range_error)++;
+ *fp++ = *dp++;
+ }
+ break;
+ case NC_DOUBLE:
+ for (dp = (double *)src, dp1 = dest; count < len; count++)
+ {
+ /* if (*dp > X_DOUBLE_MAX || *dp < X_DOUBLE_MIN) */
+ /* (*range_error)++; */
+ *dp1++ = *dp++;
+ }
+ break;
+ default:
+ LOG((0, "%s: unexpected dest type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ break;
+
+ default:
+ LOG((0, "%s: unexpected src type. src_type %d, dest_type %d",
+ __func__, src_type, dest_type));
+ return NC_EBADTYPE;
+ }
+ return NC_NOERR;
}
/* In our first pass through the data, we may have encountered
@@ -3522,263 +3601,277 @@ nc4_convert_type(const void *src, void *dest,
int
nc4_rec_match_dimscales(NC_GRP_INFO_T *grp)
{
- NC_GRP_INFO_T *g;
- NC_VAR_INFO_T *var;
- NC_DIM_INFO_T *dim;
- int retval = NC_NOERR;
-
- assert(grp && grp->name);
- LOG((4, "%s: grp->name %s", __func__, grp->name));
-
- /* Perform var dimscale match for child groups. */
- for (g = grp->children; g; g = g->l.next)
- if ((retval = nc4_rec_match_dimscales(g)))
- return retval;
-
- /* Check all the vars in this group. If they have dimscale info,
- * try and find a dimension for them. */
- for (var = grp->var; var; var = var->l.next)
- {
+ NC_GRP_INFO_T *g;
+ NC_VAR_INFO_T *var;
+ NC_DIM_INFO_T *dim;
+ int retval = NC_NOERR;
+
+ assert(grp && grp->name);
+ LOG((4, "%s: grp->name %s", __func__, grp->name));
+
+ /* Perform var dimscale match for child groups. */
+ for (g = grp->children; g; g = g->l.next)
+ if ((retval = nc4_rec_match_dimscales(g)))
+ return retval;
+
+ /* Check all the vars in this group. If they have dimscale info,
+ * try and find a dimension for them. */
+ for (var = grp->var; var; var = var->l.next)
+ {
/* Skip dimension scale variables */
if (!var->dimscale)
- {
- int d;
+ {
+ int d;
- /* Are there dimscales for this variable? */
- if (var->dimscale_hdf5_objids)
- {
- for (d = 0; d < var->ndims; d++)
+ /* Are there dimscales for this variable? */
+ if (var->dimscale_hdf5_objids)
{
- int finished = 0;
+ for (d = 0; d < var->ndims; d++)
+ {
+ nc_bool_t finished = NC_FALSE;
- LOG((5, "%s: var %s has dimscale info...", __func__, var->name));
- /* Look at all the dims in this group to see if they
- * match. */
- for (g = grp; g && !finished; g = g->parent)
- {
- for (dim = g->dim; dim; dim = dim->l.next)
- {
- if (var->dimscale_hdf5_objids[d].fileno[0] == dim->hdf5_objid.fileno[0] &&
- var->dimscale_hdf5_objids[d].objno[0] == dim->hdf5_objid.objno[0] &&
- var->dimscale_hdf5_objids[d].fileno[1] == dim->hdf5_objid.fileno[1] &&
- var->dimscale_hdf5_objids[d].objno[1] == dim->hdf5_objid.objno[1])
- {
- LOG((4, "%s: for dimension %d, found dim %s",
- __func__, d, dim->name));
- var->dimids[d] = dim->dimid;
- finished++;
- break;
- }
- } /* next dim */
- } /* next grp */
- LOG((5, "%s: dimid for this dimscale is %d", __func__, var->type_info->nc_typeid));
- } /* next var->dim */
- }
- /* No dimscales for this var! Invent phony dimensions. */
- else
- {
- hid_t spaceid = 0;
- hsize_t *h5dimlen = NULL, *h5dimlenmax = NULL;
- int dataset_ndims;
-
- /* Find the space information for this dimension. */
- if ((spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
- return NC_EHDFERR;
+ LOG((5, "%s: var %s has dimscale info...", __func__, var->name));
+ /* Look at all the dims in this group to see if they
+ * match. */
+ for (g = grp; g && !finished; g = g->parent)
+ {
+ for (dim = g->dim; dim; dim = dim->l.next)
+ {
+ if (var->dimscale_hdf5_objids[d].fileno[0] == dim->hdf5_objid.fileno[0] &&
+ var->dimscale_hdf5_objids[d].objno[0] == dim->hdf5_objid.objno[0] &&
+ var->dimscale_hdf5_objids[d].fileno[1] == dim->hdf5_objid.fileno[1] &&
+ var->dimscale_hdf5_objids[d].objno[1] == dim->hdf5_objid.objno[1])
+ {
+ LOG((4, "%s: for dimension %d, found dim %s",
+ __func__, d, dim->name));
+ var->dimids[d] = dim->dimid;
+ finished = NC_TRUE;
+ break;
+ }
+ } /* next dim */
+ } /* next grp */
+ LOG((5, "%s: dimid for this dimscale is %d", __func__, var->type_info->nc_typeid));
+ } /* next var->dim */
+ }
+ /* No dimscales for this var! Invent phony dimensions. */
+ else
+ {
+ hid_t spaceid = 0;
+ hsize_t *h5dimlen = NULL, *h5dimlenmax = NULL;
+ int dataset_ndims;
+
+ /* Find the space information for this dimension. */
+ if ((spaceid = H5Dget_space(var->hdf_datasetid)) < 0)
+ return NC_EHDFERR;
#ifdef EXTRA_TESTS
- num_spaces++;
-#endif
-
- /* Get the len of each dim in the space. */
- if (var->ndims)
- {
- if (!(h5dimlen = malloc(var->ndims * sizeof(hsize_t))))
- return NC_ENOMEM;
- if (!(h5dimlenmax = malloc(var->ndims * sizeof(hsize_t))))
- {
- free(h5dimlen);
- return NC_ENOMEM;
- }
- if ((dataset_ndims = H5Sget_simple_extent_dims(spaceid, h5dimlen,
- h5dimlenmax)) < 0)
- return NC_EHDFERR;
- if (dataset_ndims != var->ndims)
- return NC_EHDFERR;
- }
- else
- {
- /* Make sure it's scalar. */
- if (H5Sget_simple_extent_type(spaceid) != H5S_SCALAR)
- return NC_EHDFERR;
- }
-
- /* Release the space object. */
- if (H5Sclose(spaceid) < 0)
- return NC_EHDFERR;
+ num_spaces++;
+#endif
+
+ /* Get the len of each dim in the space. */
+ if (var->ndims)
+ {
+ if (!(h5dimlen = malloc(var->ndims * sizeof(hsize_t))))
+ return NC_ENOMEM;
+ if (!(h5dimlenmax = malloc(var->ndims * sizeof(hsize_t))))
+ {
+ free(h5dimlen);
+ return NC_ENOMEM;
+ }
+ if ((dataset_ndims = H5Sget_simple_extent_dims(spaceid, h5dimlen,
+ h5dimlenmax)) < 0) {
+ free(h5dimlenmax);
+ free(h5dimlen);
+ return NC_EHDFERR;
+ }
+ if (dataset_ndims != var->ndims) {
+ free(h5dimlenmax);
+ free(h5dimlen);
+ return NC_EHDFERR;
+ }
+ }
+ else
+ {
+ /* Make sure it's scalar. */
+ if (H5Sget_simple_extent_type(spaceid) != H5S_SCALAR)
+ return NC_EHDFERR;
+ }
+
+ /* Release the space object. */
+ if (H5Sclose(spaceid) < 0) {
+ free(h5dimlen);
+ free(h5dimlenmax);
+ return NC_EHDFERR;
+ }
#ifdef EXTRA_TESTS
- num_spaces--;
-#endif
-
- /* Create a phony dimension for each dimension in the
- * dataset, unless there already is one the correct
- * size. */
- for (d = 0; d < var->ndims; d++)
- {
- /* Is there already a phony dimension of the correct size? */
- for (dim = grp->dim; dim; dim = dim->l.next)
- if ((dim->len == h5dimlen[d]) &&
- ((h5dimlenmax[d] == H5S_UNLIMITED && dim->unlimited) ||
- (h5dimlenmax[d] != H5S_UNLIMITED && !dim->unlimited)))
- break;
-
- /* Didn't find a phony dim? Then create one. */
- if (!dim)
- {
- char phony_dim_name[NC_MAX_NAME + 1];
-
- LOG((3, "%s: creating phony dim for var %s", __func__, var->name));
- if ((retval = nc4_dim_list_add(&grp->dim, &dim)))
- return retval;
- grp->ndims++;
- dim->dimid = grp->nc4_info->next_dimid++;
- sprintf(phony_dim_name, "phony_dim_%d", dim->dimid);
- if (!(dim->name = strdup(phony_dim_name)))
- return NC_ENOMEM;
- dim->len = h5dimlen[d];
- if (h5dimlenmax[d] == H5S_UNLIMITED)
- dim->unlimited = NC_TRUE;
- }
-
- /* The variable must remember the dimid. */
- var->dimids[d] = dim->dimid;
- } /* next dim */
-
- /* Free the memory we malloced. */
- free(h5dimlen);
- free(h5dimlenmax);
- }
- }
- }
+ num_spaces--;
+#endif
+
+ /* Create a phony dimension for each dimension in the
+ * dataset, unless there already is one the correct
+ * size. */
+ for (d = 0; d < var->ndims; d++)
+ {
+ /* Is there already a phony dimension of the correct size? */
+ for (dim = grp->dim; dim; dim = dim->l.next)
+ if ((dim->len == h5dimlen[d]) &&
+ ((h5dimlenmax[d] == H5S_UNLIMITED && dim->unlimited) ||
+ (h5dimlenmax[d] != H5S_UNLIMITED && !dim->unlimited)))
+ break;
+
+ /* Didn't find a phony dim? Then create one. */
+ if (!dim)
+ {
+ char phony_dim_name[NC_MAX_NAME + 1];
+
+ LOG((3, "%s: creating phony dim for var %s", __func__, var->name));
+ if ((retval = nc4_dim_list_add(&grp->dim, &dim))) {
+ free(h5dimlenmax);
+ free(h5dimlen);
+ return retval;
+ }
+ grp->ndims++;
+ dim->dimid = grp->nc4_info->next_dimid++;
+ sprintf(phony_dim_name, "phony_dim_%d", dim->dimid);
+ if (!(dim->name = strdup(phony_dim_name))) {
+ free(h5dimlenmax);
+ free(h5dimlen);
+ return NC_ENOMEM;
+ }
+ dim->len = h5dimlen[d];
+ if (h5dimlenmax[d] == H5S_UNLIMITED)
+ dim->unlimited = NC_TRUE;
+ }
+
+ /* The variable must remember the dimid. */
+ var->dimids[d] = dim->dimid;
+ } /* next dim */
+
+ /* Free the memory we malloced. */
+ free(h5dimlen);
+ free(h5dimlenmax);
+ }
+ }
+ }
- return retval;
+ return retval;
}
/* Get the length, in bytes, of one element of a type in memory. */
-int
-nc4_get_typelen_mem(NC_HDF5_FILE_INFO_T *h5, nc_type xtype, int is_long,
+int
+nc4_get_typelen_mem(NC_HDF5_FILE_INFO_T *h5, nc_type xtype, int is_long,
size_t *len)
{
- NC_TYPE_INFO_T *type;
- int retval;
-
- LOG((4, "%s xtype: %d", __func__, xtype));
- assert(len);
-
- /* If this is an atomic type, the answer is easy. */
- switch (xtype)
- {
- case NC_BYTE:
- case NC_CHAR:
- case NC_UBYTE:
- *len = sizeof(char);
- return NC_NOERR;
- case NC_SHORT:
- case NC_USHORT:
- *len = sizeof(short);
- return NC_NOERR;
- case NC_INT:
- case NC_UINT:
- if (is_long)
- *len = sizeof(long);
- else
- *len = sizeof(int);
- return NC_NOERR;
- case NC_FLOAT:
- *len = sizeof(float);
- return NC_NOERR;
- case NC_DOUBLE:
- *len = sizeof(double);
- return NC_NOERR;
- case NC_INT64:
- case NC_UINT64:
- *len = sizeof(long long);
- return NC_NOERR;
- case NC_STRING:
- *len = sizeof(char *);
- return NC_NOERR;
- }
-
- /* See if var is compound type. */
- if ((retval = nc4_find_type(h5, xtype, &type)))
- return retval;
+ NC_TYPE_INFO_T *type;
+ int retval;
+
+ LOG((4, "%s xtype: %d", __func__, xtype));
+ assert(len);
+
+ /* If this is an atomic type, the answer is easy. */
+ switch (xtype)
+ {
+ case NC_BYTE:
+ case NC_CHAR:
+ case NC_UBYTE:
+ *len = sizeof(char);
+ return NC_NOERR;
+ case NC_SHORT:
+ case NC_USHORT:
+ *len = sizeof(short);
+ return NC_NOERR;
+ case NC_INT:
+ case NC_UINT:
+ if (is_long)
+ *len = sizeof(long);
+ else
+ *len = sizeof(int);
+ return NC_NOERR;
+ case NC_FLOAT:
+ *len = sizeof(float);
+ return NC_NOERR;
+ case NC_DOUBLE:
+ *len = sizeof(double);
+ return NC_NOERR;
+ case NC_INT64:
+ case NC_UINT64:
+ *len = sizeof(long long);
+ return NC_NOERR;
+ case NC_STRING:
+ *len = sizeof(char *);
+ return NC_NOERR;
+ }
- if (!type)
- return NC_EBADTYPE;
+ /* See if var is compound type. */
+ if ((retval = nc4_find_type(h5, xtype, &type)))
+ return retval;
+
+ if (!type)
+ return NC_EBADTYPE;
- *len = type->size;
+ *len = type->size;
- LOG((5, "type->size ", type->size));
+ LOG((5, "type->size ", type->size));
- return NC_NOERR;
+ return NC_NOERR;
}
/* Get the class of a type */
-int
+int
nc4_get_typeclass(const NC_HDF5_FILE_INFO_T *h5, nc_type xtype, int *type_class)
{
- int retval = NC_NOERR;
+ int retval = NC_NOERR;
- LOG((4, "%s xtype: %d", __func__, xtype));
- assert(type_class);
+ LOG((4, "%s xtype: %d", __func__, xtype));
+ assert(type_class);
- /* If this is an atomic type, the answer is easy. */
- if (xtype <= NC_STRING)
- {
+ /* If this is an atomic type, the answer is easy. */
+ if (xtype <= NC_STRING)
+ {
switch (xtype)
- {
- case NC_BYTE:
- case NC_UBYTE:
- case NC_SHORT:
- case NC_USHORT:
- case NC_INT:
- case NC_UINT:
- case NC_INT64:
- case NC_UINT64:
- /* NC_INT is class used for all integral types */
- *type_class = NC_INT;
- break;
-
- case NC_FLOAT:
- case NC_DOUBLE:
- /* NC_FLOAT is class used for all floating-point types */
- *type_class = NC_FLOAT;
- break;
-
- case NC_CHAR:
- *type_class = NC_CHAR;
- break;
-
- case NC_STRING:
- *type_class = NC_STRING;
- break;
-
- default:
- BAIL(NC_EBADTYPE);
- }
- }
- else
- {
+ {
+ case NC_BYTE:
+ case NC_UBYTE:
+ case NC_SHORT:
+ case NC_USHORT:
+ case NC_INT:
+ case NC_UINT:
+ case NC_INT64:
+ case NC_UINT64:
+ /* NC_INT is class used for all integral types */
+ *type_class = NC_INT;
+ break;
+
+ case NC_FLOAT:
+ case NC_DOUBLE:
+ /* NC_FLOAT is class used for all floating-point types */
+ *type_class = NC_FLOAT;
+ break;
+
+ case NC_CHAR:
+ *type_class = NC_CHAR;
+ break;
+
+ case NC_STRING:
+ *type_class = NC_STRING;
+ break;
+
+ default:
+ BAIL(NC_EBADTYPE);
+ }
+ }
+ else
+ {
NC_TYPE_INFO_T *type;
/* See if it's a used-defined type */
if ((retval = nc4_find_type(h5, xtype, &type)))
- BAIL(retval);
+ BAIL(retval);
if (!type)
- BAIL(NC_EBADTYPE);
+ BAIL(NC_EBADTYPE);
*type_class = type->nc_type_class;
- }
+ }
-exit:
- return retval;
+ exit:
+ return retval;
}
-
diff --git a/libsrc4/nc4internal.c b/libsrc4/nc4internal.c
index 82a6050..95b04bc 100644
--- a/libsrc4/nc4internal.c
+++ b/libsrc4/nc4internal.c
@@ -67,7 +67,7 @@ nc4_check_name(const char *name, char *norm_name)
return NC_EINVAL;
strcpy(norm_name, temp);
free(temp);
-
+
return NC_NOERR;
}
@@ -83,7 +83,7 @@ find_var_dim_max_length(NC_GRP_INFO_T *grp, int varid, int dimid, size_t *maxlen
int retval = NC_NOERR;
*maxlen = 0;
-
+
/* Find this var. */
for (var = grp->var; var; var = var->l.next)
if (var->varid == varid)
@@ -123,10 +123,10 @@ find_var_dim_max_length(NC_GRP_INFO_T *grp, int varid, int dimid, size_t *maxlen
BAIL(NC_ENOMEM);
if (!(h5dimlenmax = malloc(dataset_ndims * sizeof(hsize_t))))
BAIL(NC_ENOMEM);
- if ((dataset_ndims = H5Sget_simple_extent_dims(spaceid,
+ if ((dataset_ndims = H5Sget_simple_extent_dims(spaceid,
h5dimlen, h5dimlenmax)) < 0)
BAIL(NC_EHDFERR);
- LOG((5, "find_var_dim_max_length: varid %d len %d max: %d",
+ LOG((5, "find_var_dim_max_length: varid %d len %d max: %d",
varid, (int)h5dimlen[0], (int)h5dimlenmax[0]));
for (d=0; d<dataset_ndims; d++) {
if (var->dimids[d] == dimid) {
@@ -173,7 +173,7 @@ nc4_nc4f_list_add(NC *nc, const char *path, int mode)
/* There's always at least one open group - the root
* group. Allocate space for one group's worth of information. Set
* its hdf id, name, and a pointer to it's file structure. */
- return nc4_grp_list_add(&(h5->root_grp), h5->next_nc_grpid++,
+ return nc4_grp_list_add(&(h5->root_grp), h5->next_nc_grpid++,
NULL, nc, NC_GROUP_NAME, NULL);
}
@@ -247,7 +247,7 @@ nc4_find_nc_grp_h5(int ncid, NC **nc, NC_GRP_INFO_T **grpp,
}
#endif
#endif
-
+
if (h5) {
assert(h5->root_grp);
/* If we can't find it, the grp id part of ncid is bad. */
@@ -272,7 +272,7 @@ nc4_rec_find_grp(NC_GRP_INFO_T *start_grp, int target_nc_grpid)
NC_GRP_INFO_T *g, *res;
assert(start_grp);
-
+
/* Is this the group we are searching for? */
if (start_grp->nc_grpid == target_nc_grpid)
return start_grp;
@@ -290,7 +290,7 @@ nc4_rec_find_grp(NC_GRP_INFO_T *start_grp, int target_nc_grpid)
/* Given an ncid and varid, get pointers to the group and var
* metadata. */
int
-nc4_find_g_var_nc(NC *nc, int ncid, int varid,
+nc4_find_g_var_nc(NC *nc, int ncid, int varid,
NC_GRP_INFO_T **grp, NC_VAR_INFO_T **var)
{
NC_HDF5_FILE_INFO_T* h5 = NC4_DATA(nc);
@@ -301,9 +301,9 @@ nc4_find_g_var_nc(NC *nc, int ncid, int varid,
/* It is possible for *grp to be NULL. If it is,
return an error. */
- if(*grp == NULL)
+ if(*grp == NULL)
return NC_ENOTVAR;
-
+
/* Find the var info. */
for ((*var) = (*grp)->var; (*var); (*var) = (*var)->l.next)
if ((*var)->varid == varid)
@@ -320,8 +320,8 @@ nc4_find_dim(NC_GRP_INFO_T *grp, int dimid, NC_DIM_INFO_T **dim,
NC_GRP_INFO_T **dim_grp)
{
NC_GRP_INFO_T *g, *dg = NULL;
- int finished = 0;
-
+ int finished = 0;
+
assert(grp && dim);
/* Find the dim info. */
@@ -337,7 +337,7 @@ nc4_find_dim(NC_GRP_INFO_T *grp, int dimid, NC_DIM_INFO_T **dim,
/* If we didn't find it, return an error. */
if (!(*dim))
return NC_EBADDIM;
-
+
/* Give the caller the group the dimension is in. */
if (dim_grp)
*dim_grp = dg;
@@ -368,7 +368,7 @@ nc4_rec_find_hdf_type(NC_GRP_INFO_T *start_grp, hid_t target_hdf_typeid)
htri_t equal;
assert(start_grp);
-
+
/* Does this group have the type we are searching for? */
for (type = start_grp->type; type; type = type->l.next)
{
@@ -396,7 +396,7 @@ nc4_rec_find_named_type(NC_GRP_INFO_T *start_grp, char *name)
NC_TYPE_INFO_T *type, *res;
assert(start_grp);
-
+
/* Does this group have the type we are searching for? */
for (type = start_grp->type; type; type = type->l.next)
if (!strcmp(type->name, name))
@@ -419,7 +419,7 @@ nc4_rec_find_nc_type(const NC_GRP_INFO_T *start_grp, nc_type target_nc_typeid)
NC_TYPE_INFO_T *type;
assert(start_grp);
-
+
/* Does this group have the type we are searching for? */
for (type = start_grp->type; type; type = type->l.next)
if (type->nc_typeid == target_nc_typeid)
@@ -471,8 +471,8 @@ nc4_find_dim_len(NC_GRP_INFO_T *grp, int dimid, size_t **len)
{
NC_GRP_INFO_T *g;
NC_VAR_INFO_T *var;
- int retval;
-
+ int retval;
+
assert(grp && len);
LOG((3, "nc4_find_dim_len: grp->name %s dimid %d", grp->name, dimid));
@@ -491,10 +491,10 @@ nc4_find_dim_len(NC_GRP_INFO_T *grp, int dimid, size_t **len)
/* Find max length of dim in this variable... */
if ((retval = find_var_dim_max_length(grp, var->varid, dimid, &mylen)))
return retval;
-
+
**len = **len > mylen ? **len : mylen;
}
-
+
return NC_NOERR;
}
@@ -507,7 +507,7 @@ nc4_find_grp_att(NC_GRP_INFO_T *grp, int varid, const char *name, int attnum,
NC_ATT_INFO_T *attlist = NULL;
assert(grp && grp->name);
- LOG((4, "nc4_find_grp_att: grp->name %s varid %d name %s attnum %d",
+ LOG((4, "nc4_find_grp_att: grp->name %s varid %d name %s attnum %d",
grp->name, varid, name, attnum));
/* Get either the global or a variable attribute list. */
@@ -550,7 +550,7 @@ nc4_find_nc_att(int ncid, int varid, const char *name, int attnum,
NC_ATT_INFO_T *attlist = NULL;
int retval;
- LOG((4, "nc4_find_nc_att: ncid 0x%x varid %d name %s attnum %d",
+ LOG((4, "nc4_find_nc_att: ncid 0x%x varid %d name %s attnum %d",
ncid, varid, name, attnum));
/* Find info for this file and group, and set pointer to each. */
@@ -597,10 +597,10 @@ nc4_find_nc_file(int ext_ncid, NC_HDF5_FILE_INFO_T** h5p)
stat = NC_check_id(ext_ncid,&nc);
if(stat != NC_NOERR)
nc = NULL;
-
+
if(nc)
if(h5p) *h5p = (NC_HDF5_FILE_INFO_T*)nc->dispatchdata;
-
+
return nc;
}
@@ -619,7 +619,7 @@ obj_list_add(NC_LIST_NODE_T **list, NC_LIST_NODE_T *obj)
break;
o->next = obj;
obj->prev = o;
- }
+ }
else
*list = obj;
}
@@ -705,8 +705,8 @@ nc4_att_list_add(NC_ATT_INFO_T **list, NC_ATT_INFO_T **att)
/* Add to the end of a group list. Can't use 0 as a new_nc_grpid -
* it's reserverd for the root group. */
int
-nc4_grp_list_add(NC_GRP_INFO_T **list, int new_nc_grpid,
- NC_GRP_INFO_T *parent_grp, NC *nc,
+nc4_grp_list_add(NC_GRP_INFO_T **list, int new_nc_grpid,
+ NC_GRP_INFO_T *parent_grp, NC *nc,
char *name, NC_GRP_INFO_T **grp)
{
NC_GRP_INFO_T *new_grp;
@@ -799,7 +799,7 @@ nc4_type_list_add(NC_GRP_INFO_T *grp, size_t size, const char *name,
/* Add to the end of a compound field list. */
int
nc4_field_list_add(NC_FIELD_INFO_T **list, int fieldid, const char *name,
- size_t offset, hid_t field_hdf_typeid, hid_t native_typeid,
+ size_t offset, hid_t field_hdf_typeid, hid_t native_typeid,
nc_type xtype, int ndims, const int *dim_sizesp)
{
NC_FIELD_INFO_T *field;
@@ -846,7 +846,7 @@ nc4_field_list_add(NC_FIELD_INFO_T **list, int fieldid, const char *name,
/* Add a member to an enum type. */
int
-nc4_enum_member_add(NC_ENUM_MEMBER_INFO_T **list, size_t size,
+nc4_enum_member_add(NC_ENUM_MEMBER_INFO_T **list, size_t size,
const char *name, const void *value)
{
NC_ENUM_MEMBER_INFO_T *member;
@@ -995,18 +995,18 @@ nc4_var_list_del(NC_VAR_INFO_T **list, NC_VAR_INFO_T *var)
}
/* Free some things that may be allocated. */
- if (var->chunksizes)
+ if (var->chunksizes)
{free(var->chunksizes);var->chunksizes = NULL;}
-
+
if (var->hdf5_name)
{free(var->hdf5_name); var->hdf5_name = NULL;}
-
+
if (var->name)
{free(var->name); var->name = NULL;}
if (var->dimids)
{free(var->dimids); var->dimids = NULL;}
-
+
if (var->dim)
{free(var->dim); var->dim = NULL;}
@@ -1037,7 +1037,7 @@ nc4_var_list_del(NC_VAR_INFO_T **list, NC_VAR_INFO_T *var)
return retval;
var->type_info = NULL;
}
-
+
/* Delete any HDF5 dimscale objid information. */
if (var->dimscale_hdf5_objids)
free(var->dimscale_hdf5_objids);
@@ -1091,8 +1091,8 @@ grp_list_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp)
/* Recursively delete the data for a group (and everything it
* contains) in our internal metadata store. */
-int
-nc4_rec_grp_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp)
+int
+nc4_rec_grp_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp)
{
NC_GRP_INFO_T *g, *c;
NC_VAR_INFO_T *v, *var;
@@ -1141,7 +1141,7 @@ nc4_rec_grp_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp)
return retval;
var = v;
}
-
+
/* Delete all dims. */
dim = grp->dim;
while (dim)
@@ -1157,7 +1157,7 @@ nc4_rec_grp_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp)
}
/* Delete all types. */
- type = grp->type;
+ type = grp->type;
while (type)
{
LOG((4, "%s: deleting type %s", __func__, type->name));
@@ -1167,9 +1167,9 @@ nc4_rec_grp_del(NC_GRP_INFO_T **list, NC_GRP_INFO_T *grp)
type = t;
}
- /* Tell HDF5 we're closing this group. */
+ /* Tell HDF5 we're closing this group. */
LOG((4, "%s: closing group %s", __func__, grp->name));
- if (grp->hdf_grpid && H5Gclose(grp->hdf_grpid) < 0)
+ if (grp->hdf_grpid && H5Gclose(grp->hdf_grpid) < 0)
return NC_EHDFERR;
/* Free the name. */
@@ -1246,7 +1246,7 @@ nc4_break_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *coord_var, NC_DIM_INFO_T
/* If we're replacing an existing dimscale dataset, go to
* every var in the file and detach this dimension scale. */
- if ((retval = rec_detach_scales(grp->nc4_info->root_grp,
+ if ((retval = rec_detach_scales(grp->nc4_info->root_grp,
dim->dimid, coord_var->hdf_datasetid)))
return retval;
@@ -1263,9 +1263,12 @@ nc4_break_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *coord_var, NC_DIM_INFO_T
/* Detach dimension from variable */
coord_var->dimscale = NC_FALSE;
- coord_var->dirty = NC_TRUE;
dim->coord_var = NULL;
+ /* Set state transition indicators */
+ coord_var->was_coord_var = NC_TRUE;
+ coord_var->became_coord_var = NC_FALSE;
+
return NC_NOERR;
}
@@ -1275,11 +1278,6 @@ nc4_reform_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, NC_DIM_INFO_T *dim)
{
int retval = NC_NOERR;
- /* Attach variable to dimension */
- var->dimscale = NC_TRUE;
- var->dirty = NC_TRUE;
- dim->coord_var = var;
-
/* Detach dimscales from the [new] coordinate variable */
if(var->dimscale_attached)
{
@@ -1293,16 +1291,16 @@ nc4_reform_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, NC_DIM_INFO_T *dim)
if(var->dimscale_attached[d])
{
NC_GRP_INFO_T *g;
-
+
for (g = grp; g && !finished; g = g->parent)
{
NC_DIM_INFO_T *dim1;
-
+
for (dim1 = g->dim; dim1 && !finished; dim1 = dim1->l.next)
if (var->dimids[d] == dim1->dimid)
{
hid_t dim_datasetid; /* Dataset ID for dimension */
-
+
/* Find dataset ID for dimension */
if (dim1->coord_var)
dim_datasetid = dim1->coord_var->hdf_datasetid;
@@ -1324,16 +1322,37 @@ nc4_reform_coord_var(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, NC_DIM_INFO_T *dim)
}
/* Use variable's dataset ID for the dimscale ID */
- if (dim->hdf_dimscaleid)
+ if (dim->hdf_dimscaleid && grp != NULL)
{
if (H5Dclose(dim->hdf_dimscaleid) < 0)
BAIL(NC_EHDFERR);
dim->hdf_dimscaleid = 0;
- /* Now delete the dimscale's dataset (it will be recreated later, if necessary) */
+ /* Now delete the dimscale's dataset
+ (it will be recreated later, if necessary) */
if (H5Gunlink(grp->hdf_grpid, dim->name) < 0)
- return NC_EDIMMETA;
+ return NC_EDIMMETA;
+ }
+
+ /* Attach variable to dimension */
+ var->dimscale = NC_TRUE;
+ dim->coord_var = var;
+
+ /* Check if this variable used to be a coord. var */
+ if (var->was_coord_var)
+ {
+ /* Reattach the scale everywhere it is used. */
+ /* (Recall that netCDF dimscales are always 1-D) */
+ if ((retval = rec_reattach_scales(grp->nc4_info->root_grp,
+ var->dimids[0], var->hdf_datasetid)))
+ return retval;
+
+ /* Set state transition indicator (cancels earlier transition) */
+ var->was_coord_var = NC_FALSE;
}
+ else
+ /* Set state transition indicator */
+ var->became_coord_var = NC_TRUE;
exit:
return retval;
@@ -1365,7 +1384,7 @@ nc4_normalize_name(const char *name, char *norm_name)
/* Use this to set the global log level. Set it to NC_TURN_OFF_LOGGING
(-1) to turn off all logging. Set it to 0 to show only errors, and
to higher numbers to show more and more logging details. */
-int
+int
nc_set_log_level(int new_level)
{
/* If the user wants to completely turn off logging, turn off HDF5
@@ -1378,7 +1397,7 @@ nc_set_log_level(int new_level)
}
/* Do we need to turn HDF5 logging back on? */
- if (new_level > NC_TURN_OFF_LOGGING &&
+ if (new_level > NC_TURN_OFF_LOGGING &&
nc_log_level <= NC_TURN_OFF_LOGGING)
{
if (H5Eset_auto((H5E_auto_t)&H5Eprint, stderr) < 0)
@@ -1390,7 +1409,7 @@ nc_set_log_level(int new_level)
nc_log_level = new_level;
LOG((4, "log_level changed to %d", nc_log_level));
return 0;
-}
+}
/* Recursively print the metadata of a group. */
#define MAX_NESTS 10
@@ -1414,7 +1433,7 @@ rec_print_metadata(NC_GRP_INFO_T *grp, int tab_count)
LOG((2, "%s GROUP - %s nc_grpid: %d nvars: %d natts: %d",
tabs, grp->name, grp->nc_grpid, grp->nvars, grp->natts));
-
+
for(att = grp->att; att; att = att->l.next)
LOG((2, "%s GROUP ATTRIBUTE - attnum: %d name: %s type: %d len: %d",
tabs, att->attnum, att->name, att->nc_typeid, att->len));
@@ -1422,7 +1441,7 @@ rec_print_metadata(NC_GRP_INFO_T *grp, int tab_count)
for(dim = grp->dim; dim; dim = dim->l.next)
LOG((2, "%s DIMENSION - dimid: %d name: %s len: %d unlimited: %d",
tabs, dim->dimid, dim->name, dim->len, dim->unlimited));
-
+
for(var = grp->var; var; var = var->l.next)
{
if(var->ndims > 0)
@@ -1436,7 +1455,7 @@ rec_print_metadata(NC_GRP_INFO_T *grp, int tab_count)
}
}
LOG((2, "%s VARIABLE - varid: %d name: %s type: %d ndims: %d dimscale: %d dimids:%s",
- tabs, var->varid, var->name, var->type_info->nc_typeid, var->ndims, (int)var->dimscale,
+ tabs, var->varid, var->name, var->type_info->nc_typeid, var->ndims, (int)var->dimscale,
(dims_string ? dims_string : " -")));
for(att = var->att; att; att = att->l.next)
LOG((2, "%s VAR ATTRIBUTE - attnum: %d name: %s type: %d len: %d",
@@ -1447,19 +1466,19 @@ rec_print_metadata(NC_GRP_INFO_T *grp, int tab_count)
dims_string = NULL;
}
}
-
+
for (type = grp->type; type; type = type->l.next)
{
LOG((2, "%s TYPE - nc_typeid: %d hdf_typeid: 0x%x size: %d committed: %d "
- "name: %s num_fields: %d", tabs, type->nc_typeid,
- type->hdf_typeid, type->size, (int)type->committed, type->name,
+ "name: %s num_fields: %d", tabs, type->nc_typeid,
+ type->hdf_typeid, type->size, (int)type->committed, type->name,
type->u.c.num_fields));
/* Is this a compound type? */
if (type->nc_type_class == NC_COMPOUND)
{
LOG((3, "compound type"));
for (field = type->u.c.field; field; field = field->l.next)
- LOG((4, "field %s offset %d nctype %d ndims %d", field->name,
+ LOG((4, "field %s offset %d nctype %d ndims %d", field->name,
field->offset, field->nc_typeid, field->ndims));
}
else if (type->nc_type_class == NC_VLEN)
@@ -1480,7 +1499,7 @@ rec_print_metadata(NC_GRP_INFO_T *grp, int tab_count)
return NC_EBADTYPE;
}
}
-
+
/* Call self for each child of this group. */
if (grp->children)
{
@@ -1488,7 +1507,7 @@ rec_print_metadata(NC_GRP_INFO_T *grp, int tab_count)
if ((retval = rec_print_metadata(g, tab_count + 1)))
return retval;
}
-
+
return NC_NOERR;
}
@@ -1500,7 +1519,7 @@ log_metadata_nc(NC *nc)
{
NC_HDF5_FILE_INFO_T *h5 = NC4_DATA(nc);
- LOG((2, "*** NetCDF-4 Internal Metadata: int_ncid 0x%x ext_ncid 0x%x",
+ LOG((2, "*** NetCDF-4 Internal Metadata: int_ncid 0x%x ext_ncid 0x%x",
nc->int_ncid, nc->ext_ncid));
if (!h5)
{
@@ -1508,8 +1527,8 @@ log_metadata_nc(NC *nc)
return NC_NOERR;
}
LOG((2, "FILE - hdfid: 0x%x path: %s cmode: 0x%x parallel: %d redef: %d "
- "fill_mode: %d no_write: %d next_nc_grpid: %d", h5->hdfid, nc->path,
- h5->cmode, (int)h5->parallel, (int)h5->redef, h5->fill_mode, (int)h5->no_write,
+ "fill_mode: %d no_write: %d next_nc_grpid: %d", h5->hdfid, nc->path,
+ h5->cmode, (int)h5->parallel, (int)h5->redef, h5->fill_mode, (int)h5->no_write,
h5->next_nc_grpid));
return rec_print_metadata(h5->root_grp, 0);
}
@@ -1524,7 +1543,7 @@ NC4_show_metadata(int ncid)
#ifdef LOGGING
NC *nc;
int old_log_level = nc_log_level;
-
+
/* Find file metadata. */
if (!(nc = nc4_find_nc_file(ncid,NULL)))
return NC_EBADID;
@@ -1536,4 +1555,3 @@ NC4_show_metadata(int ncid)
#endif /*LOGGING*/
return retval;
}
-
diff --git a/libsrc4/nc4type.c b/libsrc4/nc4type.c
index af4db82..b1bf50c 100644
--- a/libsrc4/nc4type.c
+++ b/libsrc4/nc4type.c
@@ -26,7 +26,7 @@ EXTERNL int
NC4_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
nc_type typeid2, int *equalp)
{
- NC_GRP_INFO_T *grp1, *grp2;
+ NC_GRP_INFO_T *grpone, *grptwo;
NC_TYPE_INFO_T *type1, *type2;
int retval;
@@ -62,14 +62,14 @@ NC4_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
}
/* Not atomic types - so find type1 and type2 information. */
- if ((retval = nc4_find_nc4_grp(ncid1, &grp1)))
+ if ((retval = nc4_find_nc4_grp(ncid1, &grpone)))
return retval;
- if (!(type1 = nc4_rec_find_nc_type(grp1->nc4_info->root_grp,
+ if (!(type1 = nc4_rec_find_nc_type(grpone->nc4_info->root_grp,
typeid1)))
return NC_EBADTYPE;
- if ((retval = nc4_find_nc4_grp(ncid2, &grp2)))
+ if ((retval = nc4_find_nc4_grp(ncid2, &grptwo)))
return retval;
- if (!(type2 = nc4_rec_find_nc_type(grp2->nc4_info->root_grp,
+ if (!(type2 = nc4_rec_find_nc_type(grptwo->nc4_info->root_grp,
typeid2)))
return NC_EBADTYPE;
@@ -84,7 +84,8 @@ NC4_inq_type_equal(int ncid1, nc_type typeid1, int ncid2,
EXTERNL int
NC4_inq_typeid(int ncid, const char *name, nc_type *typeidp)
{
- NC_GRP_INFO_T *grp, *grp2;
+ NC_GRP_INFO_T *grp;
+ NC_GRP_INFO_T *grptwo;
NC_HDF5_FILE_INFO_T *h5;
NC_TYPE_INFO_T *type = NULL;
char *norm_name;
@@ -120,8 +121,8 @@ NC4_inq_typeid(int ncid, const char *name, nc_type *typeidp)
return retval;
}
/* Is the type in this group? If not, search parents. */
- for (grp2 = grp; grp2; grp2 = grp2->parent)
- for (type = grp2->type; type; type = type->l.next)
+ for (grptwo = grp; grptwo; grptwo = grptwo->parent)
+ for (type = grptwo->type; type; type = type->l.next)
if (!strcmp(norm_name, type->name))
{
if (typeidp)
diff --git a/libsrc4/nc4var.c b/libsrc4/nc4var.c
index ecdb60d..9616e56 100644
--- a/libsrc4/nc4var.c
+++ b/libsrc4/nc4var.c
@@ -413,7 +413,7 @@ nc_def_var_nc4(int ncid, const char *name, nc_type xtype,
strcpy(var->name, norm_name);
var->varid = grp->nvars++;
var->ndims = ndims;
- var->dirty = NC_TRUE;
+ var->is_new_var = NC_TRUE;
/* If this is a user-defined type, there is a type_info struct with
* all the type information. For atomic types, fake up a type_info
@@ -1175,7 +1175,7 @@ NC4_rename_var(int ncid, int varid, const char *name)
NC *nc;
NC_GRP_INFO_T *grp;
NC_HDF5_FILE_INFO_T *h5;
- NC_VAR_INFO_T *var;
+ NC_VAR_INFO_T *var, *tmp_var;
int retval = NC_NOERR;
LOG((2, "%s: ncid 0x%x varid %d name %s",
@@ -1206,17 +1206,18 @@ NC4_rename_var(int ncid, int varid, const char *name)
if ((retval = NC_check_name(name)))
return retval;
- /* Is name in use? */
+ /* Check if name is in use, and retain a pointer to the correct variable */
+ tmp_var = NULL;
for (var = grp->var; var; var = var->l.next)
+ {
if (!strncmp(var->name, name, NC_MAX_NAME))
return NC_ENAMEINUSE;
-
- /* Find the var. */
- for (var = grp->var; var; var = var->l.next)
if (var->varid == varid)
- break;
- if (!var)
+ tmp_var = var;
+ }
+ if (!tmp_var)
return NC_ENOTVAR;
+ var = tmp_var;
/* If we're not in define mode, new name must be of equal or
less size, if strict nc3 rules are in effect for this . */
diff --git a/libsrc5/Makefile.in b/libsrc5/Makefile.in
new file mode 100644
index 0000000..fbbdc06
--- /dev/null
+++ b/libsrc5/Makefile.in
@@ -0,0 +1,669 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This automake file is in charge of building the libsrc directory,
+# which contains the classic library code.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+
+# This is the code for a dispatch table for pnetcdf
+# (which has CDF5 as its magic number)
+
+# Turn on a pre-processor flag when building a DLL for windows.
+ at BUILD_DLL_TRUE@am__append_3 = -DDLL_EXPORT
+subdir = libsrc5
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libnetcdf5_la_LIBADD =
+am_libnetcdf5_la_OBJECTS = libnetcdf5_la-nc5dispatch.lo
+libnetcdf5_la_OBJECTS = $(am_libnetcdf5_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libnetcdf5_la_SOURCES)
+DIST_SOURCES = $(libnetcdf5_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libnetcdf5_la_CPPFLAGS = ${AM_CPPFLAGS} $(am__append_3)
+
+# These files comprise the pnetcdf dispatch library code.
+libnetcdf5_la_SOURCES = nc5dispatch.c
+noinst_LTLIBRARIES = libnetcdf5.la
+EXTRA_DIST = CMakeLists.txt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libsrc5/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libsrc5/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libnetcdf5.la: $(libnetcdf5_la_OBJECTS) $(libnetcdf5_la_DEPENDENCIES) $(EXTRA_libnetcdf5_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(libnetcdf5_la_OBJECTS) $(libnetcdf5_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libnetcdf5_la-nc5dispatch.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libnetcdf5_la-nc5dispatch.lo: nc5dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnetcdf5_la-nc5dispatch.lo -MD -MP -MF $(DEPDIR)/libnetcdf5_la-nc5dispatch.Tpo -c -o libnetcdf5_la-nc5dispatch.lo `test -f 'nc5dispatch.c' || echo '$(srcdir)/'`nc5dispatch.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnetcdf5_la-nc5dispatch.Tpo $(DEPDIR)/libnetcdf5_la-nc5dispatch.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nc5dispatch.c' object='libnetcdf5_la-nc5dispatch.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnetcdf5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnetcdf5_la-nc5dispatch.lo `test -f 'nc5dispatch.c' || echo '$(srcdir)/'`nc5dispatch.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libsrc5/nc5dispatch.c b/libsrc5/nc5dispatch.c
index 05a40a0..60c0f16 100644
--- a/libsrc5/nc5dispatch.c
+++ b/libsrc5/nc5dispatch.c
@@ -38,7 +38,7 @@ typedef struct NC5_INFO
static int
NC5_create(const char *path, int cmode,
- size_t initialsz, int basepe, size_t *chunksizehintp,
+ size_t initialsz, int basepe, size_t *chunksizehintp,
int use_parallel, void* mpidata,
struct NC_Dispatch* table, NC* nc)
{
@@ -59,8 +59,8 @@ NC5_create(const char *path, int cmode,
/* Cannot have 64 bit offset flag */
/*if(cmode & (NC_64BIT_OFFSET)) return NC_EINVAL;*/
- comm = ((NC_MPI_INFO *)mpidata)->comm;
- info = ((NC_MPI_INFO *)mpidata)->info;
+ comm = ((NC_MPI_INFO *)mpidata)->comm;
+ info = ((NC_MPI_INFO *)mpidata)->info;
/* Create our specific NC5_INFO instance */
nc5 = (NC5_INFO*)calloc(1,sizeof(NC5_INFO));
@@ -72,7 +72,11 @@ NC5_create(const char *path, int cmode,
/* Fix up the cmode by keeping only essential flags;
these are the flags that are the same in netcf.h and pnetcdf.h
*/
+#if 0
cmode &= (NC_WRITE | NC_NOCLOBBER | NC_LOCK | NC_SHARE | NC_64BIT_OFFSET);
+#else
+ cmode &= (NC_WRITE | NC_NOCLOBBER | NC_LOCK | NC_SHARE );
+#endif
/* It turns out that pnetcdf.h defines a flag called
NC_64BIT_DATA (not to be confused with NC_64BIT_OFFSET).
@@ -84,7 +88,7 @@ NC5_create(const char *path, int cmode,
In any case, this flag must be set.
*/
cmode |= (NC_NETCDF4);
- res = ncmpi_create(comm, path, cmode, info, &(nc->int_ncid));
+ res = ncmpi_create(comm, path, cmode, info, &(nc->int_ncid));
if(res && nc5 != NULL) free(nc5); /* reclaim allocated space */
return res;
@@ -114,8 +118,8 @@ NC5_open(const char *path, int cmode,
/* if(cmode & (NC_64BIT_OFFSET)) return NC_EINVAL; */
if(mpidata != NULL) {
- comm = ((NC_MPI_INFO *)mpidata)->comm;
- info = ((NC_MPI_INFO *)mpidata)->info;
+ comm = ((NC_MPI_INFO *)mpidata)->comm;
+ info = ((NC_MPI_INFO *)mpidata)->info;
} else {
comm = MPI_COMM_WORLD;
info = MPI_INFO_NULL;
@@ -234,7 +238,7 @@ NC5_set_fill(int ncid, int fillmode, int *old_mode_ptr)
return ncmpi_set_fill(nc->int_ncid,fillmode,old_mode_ptr);
}
-static int
+static int
NC5_inq_base_pe(int ncid, int* pep)
{
if(pep) *pep = 0;
@@ -288,8 +292,8 @@ static char
atomic_name[6][NC_MAX_NAME + 1] = {
"byte", "char", "short","int", "float", "double"
};
-
-static int
+
+static int
NC5_inq_type(int ncid, nc_type typeid, char* name, size_t* size)
{
if(typeid < NC_BYTE || typeid > NC_DOUBLE)
@@ -368,8 +372,8 @@ NC5_inq_att(int ncid, int varid, const char* name, nc_type* xtypep, size_t* lenp
NC* nc;
MPI_Offset mpilen;
int status = NC_check_id(ncid, &nc);
+ status = ncmpi_inq_att(nc->int_ncid,varid,name,xtypep,&mpilen);
if(status != NC_NOERR) return status;
- return ncmpi_inq_att(nc->int_ncid,varid,name,xtypep,&mpilen);
if(lenp) *lenp = mpilen;
return status;
}
@@ -473,7 +477,7 @@ NC5_put_att(
/* The length needs to be positive (cast needed for braindead
systems with signed size_t). */
- if(((unsigned long) len) > X_INT_MAX)
+ if(((unsigned long) len) > X_INT_MAX)
return NC_EINVAL;
status = NC_check_id(ncid, &nc);
@@ -505,7 +509,7 @@ NC5_put_att(
}
static int
-NC5_def_var(int ncid, const char *name, nc_type xtype,
+NC5_def_var(int ncid, const char *name, nc_type xtype,
int ndims, const int *dimidsp, int *varidp)
{
NC* nc;
@@ -556,14 +560,14 @@ NC5_get_vara(int ncid,
status = NC_check_id(ncid, &nc);
if(status != NC_NOERR) return status;
-
+
nc5 = NC5_DATA(nc);
assert(nc5);
/* No NC_LONG for parallel-netcdf library! */
if(memtype == NC_INT64)
return NC_EINVAL;
-
+
/* get variable's rank */
status= ncmpi_inq_varndims(nc->int_ncid, varid, &rank);
if(status) return status;
@@ -637,14 +641,14 @@ NC5_put_vara(int ncid,
status = NC_check_id(ncid, &nc);
if(status != NC_NOERR) return status;
-
+
nc5 = NC5_DATA(nc);
assert(nc5);
/* No NC_LONG for parallel-netcdf library! */
if(memtype == NC_INT64)
return NC_EINVAL;
-
+
/* get variable's rank */
status = ncmpi_inq_varndims(nc->int_ncid, varid, &rank);
if(status) return status;
@@ -702,11 +706,11 @@ NC5_put_vara(int ncid,
}
static int
-NC5_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep,
- int *ndimsp, int *dimidsp, int *nattsp,
+NC5_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep,
+ int *ndimsp, int *dimidsp, int *nattsp,
int *shufflep, int *deflatep, int *deflate_levelp,
- int *fletcher32p, int *contiguousp, size_t *chunksizesp,
- int *no_fill, void *fill_valuep, int *endiannessp,
+ int *fletcher32p, int *contiguousp, size_t *chunksizesp,
+ int *no_fill, void *fill_valuep, int *endiannessp,
int *options_maskp, int *pixels_per_blockp)
{
int status;
@@ -730,7 +734,7 @@ NC5_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep,
static int
NC5_var_par_access(int ncid, int varid, int par_access)
{
- NC *nc;
+ NC *nc;
NC5_INFO* nc5;
int status;
@@ -751,7 +755,7 @@ NC5_var_par_access(int ncid, int varid, int par_access)
else
return ncmpi_end_indep_data(nc->int_ncid);
}
-
+
#ifdef USE_NETCDF4
static int
@@ -782,19 +786,19 @@ NC5_inq_type_equal(int ncid1, nc_type typeid1, int ncid2, nc_type typeid2, int*
{
/* Check input. */
if(equalp == NULL) return NC_NOERR;
-
+
if (typeid1 <= NC_NAT || typeid2 <= NC_NAT)
return NC_EINVAL;
-
+
*equalp = 0; /* assume */
-
+
/* If one is atomic, and the other user-defined, the types are not equal */
if ((typeid1 <= NC_STRING && typeid2 > NC_STRING) ||
(typeid2 <= NC_STRING && typeid1 > NC_STRING)) {
if (equalp) *equalp = 0;
return NC_NOERR;
}
-
+
/* If both are atomic types, the answer is easy. */
if (typeid1 <= ATOMICTYPEMAX) {
if (equalp) {
@@ -944,7 +948,7 @@ NC5_insert_array_compound(int ncid, nc_type typeid, const char *name,
static int
NC5_inq_compound_field(int ncid, nc_type typeid, int fieldid, char *name,
- size_t *offsetp, nc_type *field_typeidp, int *ndimsp,
+ size_t *offsetp, nc_type *field_typeidp, int *ndimsp,
int *dim_sizesp)
{
return NC_ENOTNC4;
@@ -1157,4 +1161,3 @@ NC5_initialize(void)
NC5_dispatch_table = &NC5_dispatcher;
return NC_NOERR;
}
-
diff --git a/ltmain.sh b/ltmain.sh
new file mode 100644
index 0000000..5eca4ae
--- /dev/null
+++ b/ltmain.sh
@@ -0,0 +1,11088 @@
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+## by inline-source v2014-01-03.01
+
+# libtool (GNU libtool) 2.4.4
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION=2.4.4
+package_revision=2.4.4
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2014-01-03.01; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
+fi
+
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test set = \"\${$_G_var+set}\"; then
+ save_$_G_var=\$$_G_var
+ $_G_var=C
+ export $_G_var
+ _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+ _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
+ fi"
+done
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp $nl"
+
+# There are apparently some retarded systems that use ';' as a PATH separator!
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+
+## ------------------------- ##
+## Locate command utilities. ##
+## ------------------------- ##
+
+
+# func_executable_p FILE
+# ----------------------
+# Check that FILE is an executable regular file.
+func_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+}
+
+
+# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
+# --------------------------------------------
+# Search for either a program that responds to --version with output
+# containing "GNU", or else returned by CHECK_FUNC otherwise, by
+# trying all the directories in PATH with each of the elements of
+# PROGS_LIST.
+#
+# CHECK_FUNC should accept the path to a candidate program, and
+# set $func_check_prog_result if it truncates its output less than
+# $_G_path_prog_max characters.
+func_path_progs ()
+{
+ _G_progs_list=$1
+ _G_check_func=$2
+ _G_PATH=${3-"$PATH"}
+
+ _G_path_prog_max=0
+ _G_path_prog_found=false
+ _G_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for _G_dir in $_G_PATH; do
+ IFS=$_G_save_IFS
+ test -z "$_G_dir" && _G_dir=.
+ for _G_prog_name in $_G_progs_list; do
+ for _exeext in '' .EXE; do
+ _G_path_prog=$_G_dir/$_G_prog_name$_exeext
+ func_executable_p "$_G_path_prog" || continue
+ case `"$_G_path_prog" --version 2>&1` in
+ *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
+ *) $_G_check_func $_G_path_prog
+ func_path_progs_result=$func_check_prog_result
+ ;;
+ esac
+ $_G_path_prog_found && break 3
+ done
+ done
+ done
+ IFS=$_G_save_IFS
+ test -z "$func_path_progs_result" && {
+ echo "no acceptable sed could be found in \$PATH" >&2
+ exit 1
+ }
+}
+
+
+# We want to be able to use the functions in this file before configure
+# has figured out where the best binaries are kept, which means we have
+# to search for them ourselves - except when the results are already set
+# where we skip the searches.
+
+# Unless the user overrides by setting SED, search the path for either GNU
+# sed, or the sed that truncates its output the least.
+test -z "$SED" && {
+ _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for _G_i in 1 2 3 4 5 6 7; do
+ _G_sed_script=$_G_sed_script$nl$_G_sed_script
+ done
+ echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
+ _G_sed_script=
+
+ func_check_prog_sed ()
+ {
+ _G_path_prog=$1
+
+ _G_count=0
+ printf 0123456789 >conftest.in
+ while :
+ do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo '' >> conftest.nl
+ "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+ diff conftest.out conftest.nl >/dev/null 2>&1 || break
+ _G_count=`expr $_G_count + 1`
+ if test "$_G_count" -gt "$_G_path_prog_max"; then
+ # Best one so far, save it but keep looking for a better one
+ func_check_prog_result=$_G_path_prog
+ _G_path_prog_max=$_G_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test 10 -lt "$_G_count" && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out
+ }
+
+ func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+ rm -f conftest.sed
+ SED=$func_path_progs_result
+}
+
+
+# Unless the user overrides by setting GREP, search the path for either GNU
+# grep, or the grep that truncates its output the least.
+test -z "$GREP" && {
+ func_check_prog_grep ()
+ {
+ _G_path_prog=$1
+
+ _G_count=0
+ _G_path_prog_max=0
+ printf 0123456789 >conftest.in
+ while :
+ do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo 'GREP' >> conftest.nl
+ "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
+ diff conftest.out conftest.nl >/dev/null 2>&1 || break
+ _G_count=`expr $_G_count + 1`
+ if test "$_G_count" -gt "$_G_path_prog_max"; then
+ # Best one so far, save it but keep looking for a better one
+ func_check_prog_result=$_G_path_prog
+ _G_path_prog_max=$_G_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test 10 -lt "$_G_count" && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out
+ }
+
+ func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+ GREP=$func_path_progs_result
+}
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# All uppercase variable names are used for environment variables. These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
+
+: ${CP="cp -f"}
+: ${ECHO="printf %s\n"}
+: ${EGREP="$GREP -E"}
+: ${FGREP="$GREP -F"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+
+
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
+
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes. A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same. If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion. Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+ s/$_G_bs4/&\\
+/g
+ s/^$_G_bs2$_G_dollar/$_G_bs&/
+ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+ s/\n//g"
+
+
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
+
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
+
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
+
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
+
+# By convention, finish your script with:
+#
+# exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath=$0
+
+# The name of this program.
+progname=`$ECHO "$progpath" |$SED "$sed_basename"`
+
+# Make sure we have an absolute progpath for reexecution:
+case $progpath in
+ [\\/]*|[A-Za-z]:\\*) ;;
+ *[\\/]*)
+ progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
+ progdir=`cd "$progdir" && pwd`
+ progpath=$progdir/$progname
+ ;;
+ *)
+ _G_IFS=$IFS
+ IFS=${PATH_SEPARATOR-:}
+ for progdir in $PATH; do
+ IFS=$_G_IFS
+ test -x "$progdir/$progname" && break
+ done
+ IFS=$_G_IFS
+ test -n "$progdir" || progdir=`pwd`
+ progpath=$progdir/$progname
+ ;;
+esac
+
+
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
+
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
+
+opt_dry_run=false
+opt_quiet=false
+opt_verbose=false
+
+# Categories 'all' and 'none' are always available. Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'. Set
+# 'warning_func' to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
+{
+ $debug_cmd
+
+ test -t 1 && {
+ # COLORTERM and USE_ANSI_COLORS environment variables take
+ # precedence, because most terminfo databases neglect to describe
+ # whether color sequences are supported.
+ test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+ if test 1 = "$USE_ANSI_COLORS"; then
+ # Standard ANSI escape sequences
+ tc_reset='[0m'
+ tc_bold='[1m'; tc_standout='[7m'
+ tc_red='[31m'; tc_green='[32m'
+ tc_blue='[34m'; tc_cyan='[36m'
+ else
+ # Otherwise trust the terminfo database after all.
+ test -n "`tput sgr0 2>/dev/null`" && {
+ tc_reset=`tput sgr0`
+ test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+ tc_standout=$tc_bold
+ test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+ test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+ test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+ test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+ test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+ }
+ fi
+ }
+
+ require_term_colors=:
+}
+
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+ # We should try to minimise forks, especially on Windows where they are
+ # unreasonably slow, so skip the feature probes when bash or zsh are
+ # being used:
+ if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+ : ${_G_HAVE_ARITH_OP="yes"}
+ : ${_G_HAVE_XSI_OPS="yes"}
+ # The += operator was introduced in bash 3.1
+ case $BASH_VERSION in
+ [12].* | 3.0 | 3.0*) ;;
+ *)
+ : ${_G_HAVE_PLUSEQ_OP="yes"}
+ ;;
+ esac
+ fi
+
+ # _G_HAVE_PLUSEQ_OP
+ # Can be empty, in which case the shell is probed, "yes" if += is
+ # useable or anything else if it does not work.
+ test -z "$_G_HAVE_PLUSEQ_OP" \
+ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+ && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_append ()
+ {
+ $debug_cmd
+
+ eval "$1+=\$2"
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_append ()
+ {
+ $debug_cmd
+
+ eval "$1=\$$1\$2"
+ }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+ eval 'func_append_quoted ()
+ {
+ $debug_cmd
+
+ func_quote_for_eval "$2"
+ eval "$1+=\\ \$func_quote_for_eval_result"
+ }'
+else
+ func_append_quoted ()
+ {
+ $debug_cmd
+
+ func_quote_for_eval "$2"
+ eval "$1=\$$1\\ \$func_quote_for_eval_result"
+ }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE. For example:
+#
+# func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
+{
+ $debug_cmd
+
+ eval _G_current_value='`$ECHO $'$1'`'
+ _G_delim=`expr "$2" : '\(.\)'`
+
+ case $_G_delim$_G_current_value$_G_delim in
+ *"$2$_G_delim"*) ;;
+ *) func_append "$@" ;;
+ esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+ test -z "$_G_HAVE_ARITH_OP" \
+ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+ && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+ eval 'func_arith ()
+ {
+ $debug_cmd
+
+ func_arith_result=$(( $* ))
+ }'
+else
+ func_arith ()
+ {
+ $debug_cmd
+
+ func_arith_result=`expr "$@"`
+ }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ # If this shell supports suffix pattern removal, then use it to avoid
+ # forking. Hide the definitions single quotes in case the shell chokes
+ # on unsupported syntax...
+ _b='func_basename_result=${1##*/}'
+ _d='case $1 in
+ */*) func_dirname_result=${1%/*}$2 ;;
+ * ) func_dirname_result=$3 ;;
+ esac'
+
+else
+ # ...otherwise fall back to using sed.
+ _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+ _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"`
+ if test "X$func_dirname_result" = "X$1"; then
+ func_dirname_result=$3
+ else
+ func_append func_dirname_result "$2"
+ fi'
+fi
+
+eval 'func_basename ()
+{
+ $debug_cmd
+
+ '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+ $debug_cmd
+
+ '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+ $debug_cmd
+
+ '"$_b"'
+ '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+ $debug_cmd
+
+ _G_message=$*
+
+ func_echo_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_IFS
+ $ECHO "$progname: $_G_line"
+ done
+ IFS=$func_echo_IFS
+}
+
+
+# func_echo_all ARG...
+# --------------------
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
+{
+ $debug_cmd
+
+ $require_term_colors
+
+ _G_infix=$1; shift
+ _G_indent=$_G_infix
+ _G_prefix="$progname: $_G_infix: "
+ _G_message=$*
+
+ # Strip color escape sequences before counting printable length
+ for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+ do
+ test -n "$_G_tc" && {
+ _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
+ _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
+ }
+ done
+ _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes
+
+ func_echo_infix_1_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_infix_1_IFS
+ $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+ _G_prefix=$_G_indent
+ done
+ IFS=$func_echo_infix_1_IFS
+}
+
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+ $debug_cmd
+
+ $require_term_colors
+
+ func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2
+}
+
+
+# func_fatal_error ARG...
+# -----------------------
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+ $debug_cmd
+
+ func_error "$*"
+ exit $EXIT_FAILURE
+}
+
+
+# func_grep EXPRESSION FILENAME
+# -----------------------------
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+ $debug_cmd
+
+ $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+ test -z "$_G_HAVE_XSI_OPS" \
+ && (eval 'x=a/b/c;
+ test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+ && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_len ()
+ {
+ $debug_cmd
+
+ func_len_result=${#1}
+ }'
+else
+ func_len ()
+ {
+ $debug_cmd
+
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+ }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+ $debug_cmd
+
+ _G_directory_path=$1
+ _G_dir_list=
+
+ if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+ # Protect directory names starting with '-'
+ case $_G_directory_path in
+ -*) _G_directory_path=./$_G_directory_path ;;
+ esac
+
+ # While some portion of DIR does not yet exist...
+ while test ! -d "$_G_directory_path"; do
+ # ...make a list in topmost first order. Use a colon delimited
+ # list incase some portion of path contains whitespace.
+ _G_dir_list=$_G_directory_path:$_G_dir_list
+
+ # If the last portion added has no slash in it, the list is done
+ case $_G_directory_path in */*) ;; *) break ;; esac
+
+ # ...otherwise throw away the child directory and loop
+ _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+ done
+ _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+
+ func_mkdir_p_IFS=$IFS; IFS=:
+ for _G_dir in $_G_dir_list; do
+ IFS=$func_mkdir_p_IFS
+ # mkdir can fail with a 'File exist' error if two processes
+ # try to create one of the directories concurrently. Don't
+ # stop in that case!
+ $MKDIR "$_G_dir" 2>/dev/null || :
+ done
+ IFS=$func_mkdir_p_IFS
+
+ # Bail out if we (or some other process) failed to create a directory.
+ test -d "$_G_directory_path" || \
+ func_fatal_error "Failed to create '$1'"
+ fi
+}
+
+
+# func_mktempdir [BASENAME]
+# -------------------------
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, BASENAME is the basename for that directory.
+func_mktempdir ()
+{
+ $debug_cmd
+
+ _G_template=${TMPDIR-/tmp}/${1-$progname}
+
+ if test : = "$opt_dry_run"; then
+ # Return a directory name, but don't create it in dry-run mode
+ _G_tmpdir=$_G_template-$$
+ else
+
+ # If mktemp works, use that first and foremost
+ _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$_G_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ _G_tmpdir=$_G_template-${RANDOM-0}$$
+
+ func_mktempdir_umask=`umask`
+ umask 0077
+ $MKDIR "$_G_tmpdir"
+ umask $func_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$_G_tmpdir" || \
+ func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
+ fi
+
+ $ECHO "$_G_tmpdir"
+}
+
+
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
+{
+ $debug_cmd
+
+ # These SED scripts presuppose an absolute path with a trailing slash.
+ _G_pathcar='s|^/\([^/]*\).*$|\1|'
+ _G_pathcdr='s|^/[^/]*||'
+ _G_removedotparts=':dotsl
+ s|/\./|/|g
+ t dotsl
+ s|/\.$|/|'
+ _G_collapseslashes='s|/\{1,\}|/|g'
+ _G_finalslash='s|/*$|/|'
+
+ # Start from root dir and reassemble the path.
+ func_normal_abspath_result=
+ func_normal_abspath_tpath=$1
+ func_normal_abspath_altnamespace=
+ case $func_normal_abspath_tpath in
+ "")
+ # Empty path, that just means $cwd.
+ func_stripname '' '/' "`pwd`"
+ func_normal_abspath_result=$func_stripname_result
+ return
+ ;;
+ # The next three entries are used to spot a run of precisely
+ # two leading slashes without using negated character classes;
+ # we take advantage of case's first-match behaviour.
+ ///*)
+ # Unusual form of absolute path, do nothing.
+ ;;
+ //*)
+ # Not necessarily an ordinary path; POSIX reserves leading '//'
+ # and for example Cygwin uses it to access remote file shares
+ # over CIFS/SMB, so we conserve a leading double slash if found.
+ func_normal_abspath_altnamespace=/
+ ;;
+ /*)
+ # Absolute path, do nothing.
+ ;;
+ *)
+ # Relative path, prepend $cwd.
+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+ ;;
+ esac
+
+ # Cancel out all the simple stuff to save iterations. We also want
+ # the path to end with a slash for ease of parsing, so make sure
+ # there is one (and only one) here.
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+ while :; do
+ # Processed it all yet?
+ if test / = "$func_normal_abspath_tpath"; then
+ # If we ascended to the root using ".." the result may be empty now.
+ if test -z "$func_normal_abspath_result"; then
+ func_normal_abspath_result=/
+ fi
+ break
+ fi
+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_pathcar"`
+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+ -e "$_G_pathcdr"`
+ # Figure out what to do with it
+ case $func_normal_abspath_tcomponent in
+ "")
+ # Trailing empty path component, ignore it.
+ ;;
+ ..)
+ # Parent dir; strip last assembled component from result.
+ func_dirname "$func_normal_abspath_result"
+ func_normal_abspath_result=$func_dirname_result
+ ;;
+ *)
+ # Actual path component, append it.
+ func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+ ;;
+ esac
+ done
+ # Restore leading double-slash if one was found on entry.
+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+ $debug_cmd
+
+ $opt_quiet || func_echo ${1+"$@"}
+
+ # A bug in bash halts the script if the last line of a function
+ # fails when set -e is in force, so we need another command to
+ # work around that:
+ :
+}
+
+
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+ $debug_cmd
+
+ func_relative_path_result=
+ func_normal_abspath "$1"
+ func_relative_path_tlibdir=$func_normal_abspath_result
+ func_normal_abspath "$2"
+ func_relative_path_tbindir=$func_normal_abspath_result
+
+ # Ascend the tree starting from libdir
+ while :; do
+ # check if we have found a prefix of bindir
+ case $func_relative_path_tbindir in
+ $func_relative_path_tlibdir)
+ # found an exact match
+ func_relative_path_tcancelled=
+ break
+ ;;
+ $func_relative_path_tlibdir*)
+ # found a matching prefix
+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+ func_relative_path_tcancelled=$func_stripname_result
+ if test -z "$func_relative_path_result"; then
+ func_relative_path_result=.
+ fi
+ break
+ ;;
+ *)
+ func_dirname $func_relative_path_tlibdir
+ func_relative_path_tlibdir=$func_dirname_result
+ if test -z "$func_relative_path_tlibdir"; then
+ # Have to descend all the way to the root!
+ func_relative_path_result=../$func_relative_path_result
+ func_relative_path_tcancelled=$func_relative_path_tbindir
+ break
+ fi
+ func_relative_path_result=../$func_relative_path_result
+ ;;
+ esac
+ done
+
+ # Now calculate path; take care to avoid doubling-up slashes.
+ func_stripname '' '/' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ func_stripname '/' '/' "$func_relative_path_tcancelled"
+ if test -n "$func_stripname_result"; then
+ func_append func_relative_path_result "/$func_stripname_result"
+ fi
+
+ # Normalisation. If bindir is libdir, return '.' else relative path.
+ if test -n "$func_relative_path_result"; then
+ func_stripname './' '' "$func_relative_path_result"
+ func_relative_path_result=$func_stripname_result
+ fi
+
+ test -n "$func_relative_path_result" || func_relative_path_result=.
+
+ :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+# i) func_quote_for_eval_result
+# double-quoted, suitable for a subsequent eval
+# ii) func_quote_for_eval_unquoted_result
+# has all characters that are still active within double
+# quotes backslashified.
+func_quote_for_eval ()
+{
+ $debug_cmd
+
+ func_quote_for_eval_unquoted_result=
+ func_quote_for_eval_result=
+ while test 0 -lt $#; do
+ case $1 in
+ *[\\\`\"\$]*)
+ _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+ *)
+ _G_unquoted_arg=$1 ;;
+ esac
+ if test -n "$func_quote_for_eval_unquoted_result"; then
+ func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+ else
+ func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+ fi
+
+ case $_G_unquoted_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting, command substitution and variable expansion
+ # for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ _G_quoted_arg=\"$_G_unquoted_arg\"
+ ;;
+ *)
+ _G_quoted_arg=$_G_unquoted_arg
+ ;;
+ esac
+
+ if test -n "$func_quote_for_eval_result"; then
+ func_append func_quote_for_eval_result " $_G_quoted_arg"
+ else
+ func_append func_quote_for_eval_result "$_G_quoted_arg"
+ fi
+ shift
+ done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+ $debug_cmd
+
+ case $1 in
+ *[\\\`\"]*)
+ _G_arg=`$ECHO "$1" | $SED \
+ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
+ *)
+ _G_arg=$1 ;;
+ esac
+
+ case $_G_arg in
+ # Double-quote args containing shell metacharacters to delay
+ # word splitting and command substitution for a subsequent eval.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ _G_arg=\"$_G_arg\"
+ ;;
+ esac
+
+ func_quote_for_expand_result=$_G_arg
+}
+
+
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_stripname ()
+ {
+ $debug_cmd
+
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary variable first.
+ func_stripname_result=$3
+ func_stripname_result=${func_stripname_result#"$1"}
+ func_stripname_result=${func_stripname_result%"$2"}
+ }'
+else
+ func_stripname ()
+ {
+ $debug_cmd
+
+ case $2 in
+ .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+ *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+ esac
+ }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+ $debug_cmd
+
+ _G_cmd=$1
+ _G_fail_exp=${2-':'}
+
+ func_quote_for_expand "$_G_cmd"
+ eval "func_notquiet $func_quote_for_expand_result"
+
+ $opt_dry_run || {
+ eval "$_G_cmd"
+ _G_status=$?
+ if test 0 -ne "$_G_status"; then
+ eval "(exit $_G_status); $_G_fail_exp"
+ fi
+ }
+}
+
+
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it. Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+ $debug_cmd
+
+ _G_cmd=$1
+ _G_fail_exp=${2-':'}
+
+ $opt_quiet || {
+ func_quote_for_expand "$_G_cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+
+ $opt_dry_run || {
+ eval "$_G_user_locale
+ $_G_cmd"
+ _G_status=$?
+ eval "$_G_safe_locale"
+ if test 0 -ne "$_G_status"; then
+ eval "(exit $_G_status); $_G_fail_exp"
+ fi
+ }
+}
+
+
+# func_tr_sh
+# ----------
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result. All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+ $debug_cmd
+
+ case $1 in
+ [0-9]* | *[!a-zA-Z0-9_]*)
+ func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+ ;;
+ * )
+ func_tr_sh_result=$1
+ ;;
+ esac
+}
+
+
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+ $debug_cmd
+
+ $opt_verbose && func_echo "$*"
+
+ :
+}
+
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
+{
+ $debug_cmd
+
+ $require_term_colors
+
+ func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+ $debug_cmd
+
+ # CATEGORY must be in the warning_categories list!
+ case " $warning_categories " in
+ *" $1 "*) ;;
+ *) func_internal_error "invalid warning category '$1'" ;;
+ esac
+
+ _G_category=$1
+ shift
+
+ case " $opt_warning_types " in
+ *" $_G_category "*) $warning_func ${1+"$@"} ;;
+ esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+ $debug_cmd
+
+ printf '%s\n%s\n' "$1" "$2" \
+ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
+}
+
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false. Use it like this:
+#
+# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+ $debug_cmd
+
+ test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2014-01-07.03; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary at gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+# #!/bin/sh
+# . relative/path/to/funclib.sh
+# . relative/path/to/options-parser
+# scriptversion=1.0
+# func_options ${1+"$@"}
+# eval set dummy "$func_options_result"; shift
+# ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'. Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+ --debug enable verbose shell tracing
+ -W, --warnings=CATEGORY
+ report the warnings falling in CATEGORY [all]
+ -v, --verbose verbosely report processing
+ --version print version information and exit
+ -h, --help print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+ 'all' show all warnings
+ 'none' turn off all the warnings
+ 'error' warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code. A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+ $debug_cmd
+
+ func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+ $debug_cmd
+
+ case " $hookable_fns " in
+ *" $1 "*) ;;
+ *) func_fatal_error "'$1' does not accept hook functions." ;;
+ esac
+
+ eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+ $debug_cmd
+
+ eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+ $debug_cmd
+
+ case " $hookable_fns " in
+ *" $1 "*) ;;
+ *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+ esac
+
+ eval _G_hook_fns=\$$1_hooks; shift
+
+ for _G_hook in $_G_hook_fns; do
+ eval $_G_hook '"$@"'
+
+ # store returned options list back into positional
+ # parameters for next 'cmd' execution.
+ eval _G_hook_result=\$${_G_hook}_result
+ eval set dummy "$_G_hook_result"; shift
+ done
+
+ func_quote_for_eval ${1+"$@"}
+ func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'. Like this:
+#
+# my_options_prep ()
+# {
+# $debug_cmd
+#
+# # Extend the existing usage message.
+# usage_message=$usage_message'
+# -s, --silent don'\''t print informational messages
+# '
+#
+# func_quote_for_eval ${1+"$@"}
+# my_options_prep_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_options_prep my_options_prep
+#
+#
+# my_silent_option ()
+# {
+# $debug_cmd
+#
+# # Note that for efficiency, we parse as many options as we can
+# # recognise in a loop before passing the remainder back to the
+# # caller on the first unrecognised argument we encounter.
+# while test $# -gt 0; do
+# opt=$1; shift
+# case $opt in
+# --silent|-s) opt_silent=: ;;
+# # Separate non-argument short options:
+# -s*) func_split_short_opt "$_G_opt"
+# set dummy "$func_split_short_opt_name" \
+# "-$func_split_short_opt_arg" ${1+"$@"}
+# shift
+# ;;
+# *) set dummy "$_G_opt" "$*"; shift; break ;;
+# esac
+# done
+#
+# func_quote_for_eval ${1+"$@"}
+# my_silent_option_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_parse_options my_silent_option
+#
+#
+# my_option_validation ()
+# {
+# $debug_cmd
+#
+# $opt_silent && $opt_verbose && func_fatal_help "\
+# '--silent' and '--verbose' options are mutually exclusive."
+#
+# func_quote_for_eval ${1+"$@"}
+# my_option_validation_result=$func_quote_for_eval_result
+# }
+# func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse. It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+ $debug_cmd
+
+ func_options_prep ${1+"$@"}
+ eval func_parse_options \
+ ${func_options_prep_result+"$func_options_prep_result"}
+ eval func_validate_options \
+ ${func_parse_options_result+"$func_parse_options_result"}
+
+ eval func_run_hooks func_options \
+ ${func_validate_options_result+"$func_validate_options_result"}
+
+ # save modified positional parameters for caller
+ func_options_result=$func_run_hooks_result
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters. If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
+{
+ $debug_cmd
+
+ # Option defaults:
+ opt_verbose=false
+ opt_warning_types=
+
+ func_run_hooks func_options_prep ${1+"$@"}
+
+ # save modified positional parameters for caller
+ func_options_prep_result=$func_run_hooks_result
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+ $debug_cmd
+
+ func_parse_options_result=
+
+ # this just eases exit handling
+ while test $# -gt 0; do
+ # Defer to hook functions for initial option parsing, so they
+ # get priority in the event of reusing an option name.
+ func_run_hooks func_parse_options ${1+"$@"}
+
+ # Adjust func_parse_options positional parameters to match
+ eval set dummy "$func_run_hooks_result"; shift
+
+ # Break out of the loop if we already parsed every option.
+ test $# -gt 0 || break
+
+ _G_opt=$1
+ shift
+ case $_G_opt in
+ --debug|-x) debug_cmd='set -x'
+ func_echo "enabling shell trace mode"
+ $debug_cmd
+ ;;
+
+ --no-warnings|--no-warning|--no-warn)
+ set dummy --warnings none ${1+"$@"}
+ shift
+ ;;
+
+ --warnings|--warning|-W)
+ test $# = 0 && func_missing_arg $_G_opt && break
+ case " $warning_categories $1" in
+ *" $1 "*)
+ # trailing space prevents matching last $1 above
+ func_append_uniq opt_warning_types " $1"
+ ;;
+ *all)
+ opt_warning_types=$warning_categories
+ ;;
+ *none)
+ opt_warning_types=none
+ warning_func=:
+ ;;
+ *error)
+ opt_warning_types=$warning_categories
+ warning_func=func_fatal_error
+ ;;
+ *)
+ func_fatal_error \
+ "unsupported warning category: '$1'"
+ ;;
+ esac
+ shift
+ ;;
+
+ --verbose|-v) opt_verbose=: ;;
+ --version) func_version ;;
+ -\?|-h) func_usage ;;
+ --help) func_help ;;
+
+ # Separate optargs to long options (plugins may need this):
+ --*=*) func_split_equals "$_G_opt"
+ set dummy "$func_split_equals_lhs" \
+ "$func_split_equals_rhs" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate optargs to short options:
+ -W*)
+ func_split_short_opt "$_G_opt"
+ set dummy "$func_split_short_opt_name" \
+ "$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ # Separate non-argument short options:
+ -\?*|-h*|-v*|-x*)
+ func_split_short_opt "$_G_opt"
+ set dummy "$func_split_short_opt_name" \
+ "-$func_split_short_opt_arg" ${1+"$@"}
+ shift
+ ;;
+
+ --) break ;;
+ -*) func_fatal_help "unrecognised option: '$_G_opt'" ;;
+ *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
+ # save modified positional parameters for caller
+ func_quote_for_eval ${1+"$@"}
+ func_parse_options_result=$func_quote_for_eval_result
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+ $debug_cmd
+
+ # Display all warnings if -W was not given.
+ test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+ func_run_hooks func_validate_options ${1+"$@"}
+
+ # Bail if the options were screwed!
+ $exit_cmd $EXIT_FAILURE
+
+ # save modified positional parameters for caller
+ func_validate_options_result=$func_run_hooks_result
+}
+
+
+
+## ----------------- ##
+## Helper functions. ##
+## ----------------- ##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+ $debug_cmd
+
+ eval \$ECHO \""Usage: $usage"\"
+ eval \$ECHO \""$fatal_help"\"
+ func_error ${1+"$@"}
+ exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
+func_help ()
+{
+ $debug_cmd
+
+ func_usage_message
+ $ECHO "$long_help_message"
+ exit 0
+}
+
+
+# func_missing_arg ARGNAME
+# ------------------------
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+ $debug_cmd
+
+ func_error "Missing argument for '$1'."
+ exit_cmd=exit
+}
+
+
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+ && (eval 'x=a/b/c;
+ test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+ && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_split_equals ()
+ {
+ $debug_cmd
+
+ func_split_equals_lhs=${1%%=*}
+ func_split_equals_rhs=${1#*=}
+ test "x$func_split_equals_lhs" = "x$1" \
+ && func_split_equals_rhs=
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_split_equals ()
+ {
+ $debug_cmd
+
+ func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+ func_split_equals_rhs=
+ test "x$func_split_equals_lhs" = "x$1" \
+ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+ }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+ # This is an XSI compatible shell, allowing a faster implementation...
+ eval 'func_split_short_opt ()
+ {
+ $debug_cmd
+
+ func_split_short_opt_arg=${1#??}
+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+ }'
+else
+ # ...otherwise fall back to using expr, which is often a shell builtin.
+ func_split_short_opt ()
+ {
+ $debug_cmd
+
+ func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+ func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+ }
+fi #func_split_short_opt
+
+
+# func_usage
+# ----------
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+ $debug_cmd
+
+ func_usage_message
+ $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
+ exit 0
+}
+
+
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
+{
+ $debug_cmd
+
+ eval \$ECHO \""Usage: $usage"\"
+ echo
+ $SED -n 's|^# ||
+ /^Written by/{
+ x;p;x
+ }
+ h
+ /^Written by/q' < "$progpath"
+ echo
+ eval \$ECHO \""$usage_message"\"
+}
+
+
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
+{
+ $debug_cmd
+
+ printf '%s\n' "$progname $scriptversion"
+ $SED -n '
+ /(C)/!b go
+ :more
+ /\./!{
+ N
+ s|\n# | |
+ b more
+ }
+ :go
+ /^# Written by /,/# warranty; / {
+ s|^# ||
+ s|^# *$||
+ s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+ p
+ }
+ /^# Written by / {
+ s|^# ||
+ p
+ }
+ /^warranty; /q' < "$progpath"
+
+ exit $?
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.4'
+
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
+{
+ $debug_cmd
+
+ _G_message=$*
+
+ func_echo_IFS=$IFS
+ IFS=$nl
+ for _G_line in $_G_message; do
+ IFS=$func_echo_IFS
+ $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
+ done
+ IFS=$func_echo_IFS
+}
+
+
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
+{
+ $debug_cmd
+
+ $warning_func ${1+"$@"}
+}
+
+
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+ --config show all configuration variables
+ --debug enable verbose shell tracing
+ -n, --dry-run display commands without modifying any files
+ --features display basic configuration information and exit
+ --mode=MODE use operation mode MODE
+ --no-warnings equivalent to '-Wnone'
+ --preserve-dup-deps don't remove duplicate dependency libraries
+ --quiet, --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ -v, --verbose print more informational messages than default
+ --version print version information
+ -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all]
+ -h, --help, --help-all print short, long, or detailed help message
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message=$long_help_message"
+
+MODE must be one of the following:
+
+ clean remove files from the build directory
+ compile compile a source file into a libtool object
+ execute automatically set library path, then run a program
+ finish complete the installation of libtool libraries
+ install install libraries or executables
+ link create a library or an executable
+ uninstall remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE. When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+ host-triplet: $host
+ shell: $SHELL
+ compiler: $LTCC
+ compiler flags: $LTCFLAGS
+ linker: $LD (gnu? $with_gnu_ld)
+ version: $progname (GNU libtool) 2.4.4
+ automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+ autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool at gnu.org>.
+GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
+
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+ eval 'func_lo2o ()
+ {
+ case $1 in
+ *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+ * ) func_lo2o_result=$1 ;;
+ esac
+ }'
+
+ # func_xform LIBOBJ-OR-SOURCE
+ # ---------------------------
+ # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+ # suffix to a '.lo' libtool-object suffix.
+ eval 'func_xform ()
+ {
+ func_xform_result=${1%.*}.lo
+ }'
+else
+ # ...otherwise fall back to using sed.
+ func_lo2o ()
+ {
+ func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+ }
+
+ func_xform ()
+ {
+ func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+ }
+fi
+
+
+# func_fatal_configuration ARG...
+# -------------------------------
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+ func__fatal_error ${1+"$@"} \
+ "See the $PACKAGE documentation for more information." \
+ "Fatal configuration error."
+}
+
+
+# func_config
+# -----------
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+ re_begincf='^# ### BEGIN LIBTOOL'
+ re_endcf='^# ### END LIBTOOL'
+
+ # Default configuration.
+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+ done
+
+ exit $?
+}
+
+
+# func_features
+# -------------
+# Display the features supported by this script.
+func_features ()
+{
+ echo "host: $host"
+ if test yes = "$build_libtool_libs"; then
+ echo "enable shared libraries"
+ else
+ echo "disable shared libraries"
+ fi
+ if test yes = "$build_old_libs"; then
+ echo "enable static libraries"
+ else
+ echo "disable static libraries"
+ fi
+
+ exit $?
+}
+
+
+# func_enable_tag TAGNAME
+# -----------------------
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+ # Global variable:
+ tagname=$1
+
+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+ sed_extractcf=/$re_begincf/,/$re_endcf/p
+
+ # Validate tagname.
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ func_fatal_error "invalid tag name: $tagname"
+ ;;
+ esac
+
+ # Don't test for the "default" C tag, as we know it's
+ # there but not specially marked.
+ case $tagname in
+ CC) ;;
+ *)
+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+ taglist="$taglist $tagname"
+
+ # Evaluate the configuration. Be careful to quote the path
+ # and the sed script, to avoid splitting on whitespace, but
+ # also don't use non-portable quotes within backquotes within
+ # quotes we have to do it in 2 steps:
+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+ eval "$extractedcf"
+ else
+ func_error "ignoring unknown tag $tagname"
+ fi
+ ;;
+ esac
+}
+
+
+# func_check_version_match
+# ------------------------
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+ if test "$package_revision" != "$macro_revision"; then
+ if test "$VERSION" != "$macro_version"; then
+ if test -z "$macro_version"; then
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+ fi
+ else
+ cat >&2 <<_LT_EOF
+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+ fi
+
+ exit $EXIT_MISMATCH
+ fi
+}
+
+
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+ $debug_mode
+
+ # Option defaults:
+ opt_config=false
+ opt_dlopen=
+ opt_dry_run=false
+ opt_help=false
+ opt_mode=
+ opt_preserve_dup_deps=false
+ opt_quiet=false
+
+ nonopt=
+ preserve_args=
+
+ # Shorthand for --mode=foo, only valid as the first argument
+ case $1 in
+ clean|clea|cle|cl)
+ shift; set dummy --mode clean ${1+"$@"}; shift
+ ;;
+ compile|compil|compi|comp|com|co|c)
+ shift; set dummy --mode compile ${1+"$@"}; shift
+ ;;
+ execute|execut|execu|exec|exe|ex|e)
+ shift; set dummy --mode execute ${1+"$@"}; shift
+ ;;
+ finish|finis|fini|fin|fi|f)
+ shift; set dummy --mode finish ${1+"$@"}; shift
+ ;;
+ install|instal|insta|inst|ins|in|i)
+ shift; set dummy --mode install ${1+"$@"}; shift
+ ;;
+ link|lin|li|l)
+ shift; set dummy --mode link ${1+"$@"}; shift
+ ;;
+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+ shift; set dummy --mode uninstall ${1+"$@"}; shift
+ ;;
+ esac
+
+ # Pass back the list of options.
+ func_quote_for_eval ${1+"$@"}
+ libtool_options_prep_result=$func_quote_for_eval_result
+}
+func_add_hook func_options_prep libtool_options_prep
+
+
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
+{
+ $debug_cmd
+
+ # Perform our own loop to consume as many options as possible in
+ # each iteration.
+ while test $# -gt 0; do
+ _G_opt=$1
+ shift
+ case $_G_opt in
+ --dry-run|--dryrun|-n)
+ opt_dry_run=:
+ ;;
+
+ --config) func_config ;;
+
+ --dlopen|-dlopen)
+ opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+ shift
+ ;;
+
+ --preserve-dup-deps)
+ opt_preserve_dup_deps=: ;;
+
+ --features) func_features ;;
+
+ --finish) set dummy --mode finish ${1+"$@"}; shift ;;
+
+ --help) opt_help=: ;;
+
+ --help-all) opt_help=': help-all' ;;
+
+ --mode) test $# = 0 && func_missing_arg $_G_opt && break
+ opt_mode=$1
+ case $1 in
+ # Valid mode arguments:
+ clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+ # Catch anything else as an error
+ *) func_error "invalid argument for $_G_opt"
+ exit_cmd=exit
+ break
+ ;;
+ esac
+ shift
+ ;;
+
+ --no-silent|--no-quiet)
+ opt_quiet=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --no-warnings|--no-warning|--no-warn)
+ opt_warning=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --no-verbose)
+ opt_verbose=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --silent|--quiet)
+ opt_quiet=:
+ opt_verbose=false
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ --tag) test $# = 0 && func_missing_arg $_G_opt && break
+ opt_tag=$1
+ func_append preserve_args " $_G_opt $1"
+ func_enable_tag "$1"
+ shift
+ ;;
+
+ --verbose|-v) opt_quiet=false
+ opt_verbose=:
+ func_append preserve_args " $_G_opt"
+ ;;
+
+ # An option not handled by this hook function:
+ *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+ esac
+ done
+
+
+ # save modified positional parameters for caller
+ func_quote_for_eval ${1+"$@"}
+ libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
+
+
+
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+ # save first non-option argument
+ if test 0 -lt $#; then
+ nonopt=$1
+ shift
+ fi
+
+ # preserve --debug
+ test : = "$debug_cmd" || func_append preserve_args " --debug"
+
+ case $host in
+ # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+ # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+ *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+ # don't eliminate duplications in $postdeps and $predeps
+ opt_duplicate_compiler_generated_deps=:
+ ;;
+ *)
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+ ;;
+ esac
+
+ $opt_help || {
+ # Sanity checks first:
+ func_check_version_match
+
+ test yes != "$build_libtool_libs" \
+ && test yes != "$build_old_libs" \
+ && func_fatal_configuration "not configured to build any kind of library"
+
+ # Darwin sucks
+ eval std_shrext=\"$shrext_cmds\"
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+ func_error "unrecognized option '-dlopen'"
+ $ECHO "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help=$help
+ help="Try '$progname --help --mode=$opt_mode' for more information."
+ }
+
+ # Pass back the unparsed argument list
+ func_quote_for_eval ${1+"$@"}
+ libtool_validate_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_validate_options libtool_validate_options
+
+
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
+
+
+## ----------- ##
+## Main. ##
+## ----------- ##
+
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# func_generated_by_libtool
+# True iff stdin has been generated by Libtool. This function is only
+# a basic sanity check; it will hardly flush out determined imposters.
+func_generated_by_libtool_p ()
+{
+ $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+ test -f "$1" &&
+ $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs. To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway. Works if 'file' does not exist.
+func_lalib_unsafe_p ()
+{
+ lalib_p=no
+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+ for lalib_p_l in 1 2 3 4
+ do
+ read lalib_p_line
+ case $lalib_p_line in
+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+ esac
+ done
+ exec 0<&5 5<&-
+ fi
+ test yes = "$lalib_p"
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+ test -f "$1" &&
+ $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+ func_ltwrapper_exec_suffix=
+ case $1 in
+ *.exe) ;;
+ *) func_ltwrapper_exec_suffix=.exe ;;
+ esac
+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+ func_dirname_and_basename "$1" "" "."
+ func_stripname '' '.exe' "$func_basename_result"
+ func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+ $debug_cmd
+
+ save_ifs=$IFS; IFS='~'
+ for cmd in $1; do
+ IFS=$sp$nl
+ eval cmd=\"$cmd\"
+ IFS=$save_ifs
+ func_show_eval "$cmd" "${2-:}"
+ done
+ IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)! Also, sourcing
+# 'FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+ $debug_cmd
+
+ case $1 in
+ */* | *\\*) . "$1" ;;
+ *) . "./$1" ;;
+ esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot. Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+ func_resolve_sysroot_result=$1
+ case $func_resolve_sysroot_result in
+ =*)
+ func_stripname '=' '' "$func_resolve_sysroot_result"
+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+ ;;
+ esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+ case $lt_sysroot:$1 in
+ ?*:"$lt_sysroot"*)
+ func_stripname "$lt_sysroot" '' "$1"
+ func_replace_sysroot_result='='$func_stripname_result
+ ;;
+ *)
+ # Including no sysroot.
+ func_replace_sysroot_result=$1
+ ;;
+ esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ $debug_cmd
+
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ func_append_quoted CC_quoted "$arg"
+ done
+ CC_expanded=`func_echo_all $CC`
+ CC_quoted_expanded=`func_echo_all $CC_quoted`
+ case "$@ " in
+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ func_echo "unable to infer tagged configuration"
+ func_fatal_error "specify a tag with '--tag'"
+# else
+# func_verbose "using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+ write_libobj=$1
+ if test yes = "$build_libtool_libs"; then
+ write_lobj=\'$2\'
+ else
+ write_lobj=none
+ fi
+
+ if test yes = "$build_old_libs"; then
+ write_oldobj=\'$3\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "$write_libobj"
+ }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+ $debug_cmd
+
+ func_convert_core_file_wine_to_w32_result=$1
+ if test -n "$1"; then
+ # Unfortunately, winepath does not exit with a non-zero error code, so we
+ # are forced to check the contents of stdout. On the other hand, if the
+ # command is not found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both error code of
+ # zero AND non-empty stdout, which explains the odd construction:
+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+ if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+ $SED -e "$sed_naive_backslashify"`
+ else
+ func_convert_core_file_wine_to_w32_result=
+ fi
+ fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+ $debug_cmd
+
+ # unfortunately, winepath doesn't convert paths, only file names
+ func_convert_core_path_wine_to_w32_result=
+ if test -n "$1"; then
+ oldIFS=$IFS
+ IFS=:
+ for func_convert_core_path_wine_to_w32_f in $1; do
+ IFS=$oldIFS
+ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+ if test -n "$func_convert_core_file_wine_to_w32_result"; then
+ if test -z "$func_convert_core_path_wine_to_w32_result"; then
+ func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
+ else
+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+ fi
+ fi
+ done
+ IFS=$oldIFS
+ fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+ $debug_cmd
+
+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+ if test "$?" -ne 0; then
+ # on failure, ensure result is empty
+ func_cygpath_result=
+ fi
+ else
+ func_cygpath_result=
+ func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
+ fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format. Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+ $debug_cmd
+
+ # awkward: cmd appends spaces to result
+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+ $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+ $debug_cmd
+
+ if test -z "$2" && test -n "$1"; then
+ func_error "Could not determine host file name corresponding to"
+ func_error " '$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_file_result=$1
+ fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+ $debug_cmd
+
+ if test -z "$4" && test -n "$3"; then
+ func_error "Could not determine the host path corresponding to"
+ func_error " '$3'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback. This is a deliberately simplistic "conversion" and
+ # should not be "improved". See libtool.info.
+ if test "x$1" != "x$2"; then
+ lt_replace_pathsep_chars="s|$1|$2|g"
+ func_to_host_path_result=`echo "$3" |
+ $SED -e "$lt_replace_pathsep_chars"`
+ else
+ func_to_host_path_result=$3
+ fi
+ fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+ $debug_cmd
+
+ case $4 in
+ $1 ) func_to_host_path_result=$3$func_to_host_path_result
+ ;;
+ esac
+ case $4 in
+ $2 ) func_append func_to_host_path_result "$3"
+ ;;
+ esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via '$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+ $debug_cmd
+
+ $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result. If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+ $debug_cmd
+
+ case ,$2, in
+ *,"$to_tool_file_cmd",*)
+ func_to_tool_file_result=$1
+ ;;
+ *)
+ $to_tool_file_cmd "$1"
+ func_to_tool_file_result=$func_to_host_file_result
+ ;;
+ esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+ func_to_host_file_result=$1
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+ $debug_cmd
+
+ func_to_host_file_result=$1
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_to_host_file_result=$func_convert_core_msys_to_w32_result
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+ $debug_cmd
+
+ func_to_host_file_result=$1
+ if test -n "$1"; then
+ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+ # LT_CYGPATH in this case.
+ func_to_host_file_result=`cygpath -m "$1"`
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format. Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+ $debug_cmd
+
+ func_to_host_file_result=$1
+ if test -n "$1"; then
+ func_convert_core_file_wine_to_w32 "$1"
+ func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+ $debug_cmd
+
+ func_to_host_file_result=$1
+ if test -n "$1"; then
+ func_convert_core_msys_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_msys_to_w32_result"
+ func_to_host_file_result=$func_cygpath_result
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+ $debug_cmd
+
+ func_to_host_file_result=$1
+ if test -n "$1"; then
+ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+ func_convert_core_file_wine_to_w32 "$1"
+ func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+ func_to_host_file_result=$func_cygpath_result
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via '$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format. If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+# file name conversion function : func_convert_file_X_to_Y ()
+# path conversion function : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same. If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+ $debug_cmd
+
+ if test -z "$to_host_path_cmd"; then
+ func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+ to_host_path_cmd=func_convert_path_$func_stripname_result
+ fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+ $debug_cmd
+
+ func_init_to_host_path_cmd
+ $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+ func_to_host_path_result=$1
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+ $debug_cmd
+
+ func_to_host_path_result=$1
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from ARG. MSYS
+ # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+ # and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result=$func_convert_core_msys_to_w32_result
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+ $debug_cmd
+
+ func_to_host_path_result=$1
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format. Requires a wine environment and
+# a working winepath. Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+ $debug_cmd
+
+ func_to_host_path_result=$1
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+ $debug_cmd
+
+ func_to_host_path_result=$1
+ if test -n "$1"; then
+ # See func_convert_path_msys_to_w32:
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+ func_to_host_path_result=$func_cygpath_result
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+ $debug_cmd
+
+ func_to_host_path_result=$1
+ if test -n "$1"; then
+ # Remove leading and trailing path separator characters from
+ # ARG. msys behavior is inconsistent here, cygpath turns them
+ # into '.;' and ';.', and winepath ignores them completely.
+ func_stripname : : "$1"
+ func_to_host_path_tmp1=$func_stripname_result
+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+ func_to_host_path_result=$func_cygpath_result
+ func_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+ $debug_cmd
+
+ func_dll_def_p_tmp=`$SED -n \
+ -e 's/^[ ]*//' \
+ -e '/^\(;.*\)*$/d' \
+ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \
+ -e q \
+ "$1"`
+ test DEF = "$func_dll_def_p_tmp"
+}
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+ $debug_cmd
+
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile=$nonopt # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+ pie_flag=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg=$arg
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj=$arg
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ test -n "$libobj" && \
+ func_fatal_error "you cannot specify '-o' more than once"
+ arg_mode=target
+ continue
+ ;;
+
+ -pie | -fpie | -fPIE)
+ func_append pie_flag " $arg"
+ continue
+ ;;
+
+ -shared | -static | -prefer-pic | -prefer-non-pic)
+ func_append later " $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ lastarg=
+ save_ifs=$IFS; IFS=,
+ for arg in $args; do
+ IFS=$save_ifs
+ func_append_quoted lastarg "$arg"
+ done
+ IFS=$save_ifs
+ func_stripname ' ' '' "$lastarg"
+ lastarg=$func_stripname_result
+
+ # Add the arguments to base_compile.
+ func_append base_compile " $lastarg"
+ continue
+ ;;
+
+ *)
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg=$srcfile
+ srcfile=$arg
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ func_append_quoted base_compile "$lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ func_fatal_error "you must specify an argument for -Xcompile"
+ ;;
+ target)
+ func_fatal_error "you must specify a target with '-o'"
+ ;;
+ *)
+ # Get the name of the library object.
+ test -z "$libobj" && {
+ func_basename "$srcfile"
+ libobj=$func_basename_result
+ }
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ case $libobj in
+ *.[cCFSifmso] | \
+ *.ada | *.adb | *.ads | *.asm | \
+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+ func_xform "$libobj"
+ libobj=$func_xform_result
+ ;;
+ esac
+
+ case $libobj in
+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+ *)
+ func_fatal_error "cannot determine name of library object from '$libobj'"
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -shared)
+ test yes = "$build_libtool_libs" \
+ || func_fatal_configuration "cannot build a shared library"
+ build_old_libs=no
+ continue
+ ;;
+
+ -static)
+ build_libtool_libs=no
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ func_quote_for_eval "$libobj"
+ test "X$libobj" != "X$func_quote_for_eval_result" \
+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && func_warning "libobj name '$libobj' may not contain shell special characters."
+ func_dirname_and_basename "$obj" "/" ""
+ objname=$func_basename_result
+ xdir=$func_dirname_result
+ lobj=$xdir$objdir/$objname
+
+ test -z "$base_compile" && \
+ func_fatal_help "you must specify a compilation command"
+
+ # Delete any leftover library objects.
+ if test yes = "$build_old_libs"; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2* | cegcc*)
+ pic_mode=default
+ ;;
+ esac
+ if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test no = "$compiler_c_o"; then
+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+ lockfile=$output_obj.lock
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test yes = "$need_locks"; then
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test warn = "$need_locks"; then
+ if test -f "$lockfile"; then
+ $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+ func_append removelist " $output_obj"
+ $ECHO "$srcfile" > "$lockfile"
+ fi
+
+ $opt_dry_run || $RM $removelist
+ func_append removelist " $lockfile"
+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+ srcfile=$func_to_tool_file_result
+ func_quote_for_eval "$srcfile"
+ qsrcfile=$func_quote_for_eval_result
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test yes = "$build_libtool_libs"; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test no != "$pic_mode"; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ func_mkdir_p "$xdir$objdir"
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ func_append command " -o $lobj"
+ fi
+
+ func_show_eval_locale "$command" \
+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+ if test warn = "$need_locks" &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ func_show_eval '$MV "$output_obj" "$lobj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+
+ # Allow error messages only from the first compilation.
+ if test yes = "$suppress_opt"; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test yes = "$build_old_libs"; then
+ if test yes != "$pic_mode"; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile$pie_flag"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test yes = "$compiler_c_o"; then
+ func_append command " -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ func_append command "$suppress_output"
+ func_show_eval_locale "$command" \
+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+ if test warn = "$need_locks" &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $opt_dry_run || $RM $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ func_show_eval '$MV "$output_obj" "$obj"' \
+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+ fi
+ fi
+
+ $opt_dry_run || {
+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+ # Unlock the critical section if it was locked
+ if test no != "$need_locks"; then
+ removelist=$lockfile
+ $RM "$lockfile"
+ fi
+ }
+
+ exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+ test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+ # We need to display help for each of the modes.
+ case $opt_mode in
+ "")
+ # Generic help is extracted from the usage comments
+ # at the start of this file.
+ func_help
+ ;;
+
+ clean)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ compile)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -no-suppress do not suppress compiler output for multiple passes
+ -prefer-pic try to build PIC objects only
+ -prefer-non-pic try to build non-PIC objects only
+ -shared do not build a '.o' file suitable for static linking
+ -static only build a '.o' file suitable for static linking
+ -Wc,FLAG pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
+ ;;
+
+ execute)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to '-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+ finish)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the '--dry-run' option if you just want to see what would be executed."
+ ;;
+
+ install)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the 'install' or 'cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+ -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+ link)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -bindir BINDIR specify path to binaries directory (for systems where
+ libraries must be found in the PATH setting at runtime)
+ -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE use a list of object files found in FILE to specify objects
+ -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes)
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -shared only do dynamic linking of libtool libraries
+ -shrext SUFFIX override the standard shared library file extension
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+ -weak LIBNAME declare that the target provides the LIBNAME interface
+ -Wc,FLAG
+ -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
+ -Wl,FLAG
+ -Xlinker FLAG pass linker-specific FLAG directly to the linker
+ -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with '-') are ignored.
+
+Every other argument is treated as a filename. Files ending in '.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
+
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+ uninstall)
+ $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+ *)
+ func_fatal_help "invalid operation mode '$opt_mode'"
+ ;;
+ esac
+
+ echo
+ $ECHO "Try '$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+ if test : = "$opt_help"; then
+ func_mode_help
+ else
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ func_mode_help
+ done
+ } | $SED -n '1p; 2,$s/^Usage:/ or: /p'
+ {
+ func_help noexit
+ for opt_mode in compile link execute install finish uninstall clean; do
+ echo
+ func_mode_help
+ done
+ } |
+ $SED '1d
+ /^When reporting/,/^Report/{
+ H
+ d
+ }
+ $x
+ /information about other modes/d
+ /more detailed .*MODE/d
+ s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+ fi
+ exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+ $debug_cmd
+
+ # The first argument is the command name.
+ cmd=$nonopt
+ test -z "$cmd" && \
+ func_fatal_help "you must specify a COMMAND"
+
+ # Handle -dlopen flags immediately.
+ for file in $opt_dlopen; do
+ test -f "$file" \
+ || func_fatal_help "'$file' is not a file"
+
+ dir=
+ case $file in
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "'$lib' is not a valid libtool archive"
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+ func_source "$file"
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && \
+ func_warning "'$file' was not linked with '-export-dynamic'"
+ continue
+ fi
+
+ func_dirname "$file" "" "."
+ dir=$func_dirname_result
+
+ if test -f "$dir/$objdir/$dlname"; then
+ func_append dir "/$objdir"
+ else
+ if test ! -f "$dir/$dlname"; then
+ func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ func_dirname "$file" "" "."
+ dir=$func_dirname_result
+ ;;
+
+ *)
+ func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir=$absdir
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic=$magic
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -* | *.la | *.lo ) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if func_ltwrapper_script_p "$file"; then
+ func_source "$file"
+ # Transform arg to wrapped name.
+ file=$progdir/$program
+ elif func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ func_source "$func_ltwrapper_scriptname_result"
+ # Transform arg to wrapped name.
+ file=$progdir/$program
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ func_append_quoted args "$file"
+ done
+
+ if $opt_dry_run; then
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+ echo "export $shlibpath_var"
+ fi
+ $ECHO "$cmd$args"
+ exit $EXIT_SUCCESS
+ else
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ else
+ $lt_unset $lt_var
+ fi"
+ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd=\$cmd$args
+ fi
+}
+
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+ $debug_cmd
+
+ libs=
+ libdirs=
+ admincmds=
+
+ for opt in "$nonopt" ${1+"$@"}
+ do
+ if test -d "$opt"; then
+ func_append libdirs " $opt"
+
+ elif test -f "$opt"; then
+ if func_lalib_unsafe_p "$opt"; then
+ func_append libs " $opt"
+ else
+ func_warning "'$opt' is not a valid libtool archive"
+ fi
+
+ else
+ func_fatal_error "invalid argument '$opt'"
+ fi
+ done
+
+ if test -n "$libs"; then
+ if test -n "$lt_sysroot"; then
+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+ else
+ sysroot_cmd=
+ fi
+
+ # Remove sysroot references
+ if $opt_dry_run; then
+ for lib in $libs; do
+ echo "removing references to $lt_sysroot and '=' prefixes from $lib"
+ done
+ else
+ tmpdir=`func_mktempdir`
+ for lib in $libs; do
+ $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+ > $tmpdir/tmp-la
+ mv -f $tmpdir/tmp-la $lib
+ done
+ ${RM}r "$tmpdir"
+ fi
+ fi
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $opt_dry_run || eval "$cmds" || func_append admincmds "
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ $opt_quiet && exit $EXIT_SUCCESS
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ echo "----------------------------------------------------------------------"
+ echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $ECHO " $libdir"
+ done
+ echo
+ echo "If you ever happen to want to link against installed libraries"
+ echo "in a given directory, LIBDIR, you must either use libtool, and"
+ echo "specify the full pathname of the library, or use the '-LLIBDIR'"
+ echo "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ echo " - add LIBDIR to the '$shlibpath_var' environment variable"
+ echo " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ echo " - add LIBDIR to the '$runpath_var' environment variable"
+ echo " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $ECHO " - use the '$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $ECHO " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
+ fi
+ echo
+
+ echo "See any operating system documentation about shared libraries for"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ echo "pages."
+ ;;
+ *)
+ echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ echo "----------------------------------------------------------------------"
+ fi
+ exit $EXIT_SUCCESS
+}
+
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+ $debug_cmd
+
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
+ # Allow the use of GNU shtool's install command.
+ case $nonopt in *shtool*) :;; *) false;; esac
+ then
+ # Aesthetically quote it.
+ func_quote_for_eval "$nonopt"
+ install_prog="$func_quote_for_eval_result "
+ arg=$1
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ func_quote_for_eval "$arg"
+ func_append install_prog "$func_quote_for_eval_result"
+ install_shared_prog=$install_prog
+ case " $install_prog " in
+ *[\\\ /]cp\ *) install_cp=: ;;
+ *) install_cp=false ;;
+ esac
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=false
+ stripme=
+ no_mode=:
+ for arg
+ do
+ arg2=
+ if test -n "$dest"; then
+ func_append files " $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=: ;;
+ -f)
+ if $install_cp; then :; else
+ prev=$arg
+ fi
+ ;;
+ -g | -m | -o)
+ prev=$arg
+ ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ if test X-m = "X$prev" && test -n "$install_override_mode"; then
+ arg2=$install_override_mode
+ no_mode=false
+ fi
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ func_quote_for_eval "$arg"
+ func_append install_prog " $func_quote_for_eval_result"
+ if test -n "$arg2"; then
+ func_quote_for_eval "$arg2"
+ fi
+ func_append install_shared_prog " $func_quote_for_eval_result"
+ done
+
+ test -z "$install_prog" && \
+ func_fatal_help "you must specify an install program"
+
+ test -n "$prev" && \
+ func_fatal_help "the '$prev' option requires an argument"
+
+ if test -n "$install_override_mode" && $no_mode; then
+ if $install_cp; then :; else
+ func_quote_for_eval "$install_override_mode"
+ func_append install_shared_prog " -m $func_quote_for_eval_result"
+ fi
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ func_fatal_help "no file or destination specified"
+ else
+ func_fatal_help "you must specify a destination"
+ fi
+ fi
+
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$dest"
+ dest=$func_stripname_result
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=:
+ if $isdir; then
+ destdir=$dest
+ destname=
+ else
+ func_dirname_and_basename "$dest" "" "."
+ destdir=$func_dirname_result
+ destname=$func_basename_result
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files; shift
+ test "$#" -gt 1 && \
+ func_fatal_help "'$dest' is not a directory"
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ func_fatal_help "'$destdir' must be an absolute directory name"
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic=$magic
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ func_append staticlibs " $file"
+ ;;
+
+ *.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$file" \
+ || func_fatal_help "'$file' is not a valid libtool archive"
+
+ library_names=
+ old_library=
+ relink_command=
+ func_source "$file"
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append current_libdirs " $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) func_append future_libdirs " $libdir" ;;
+ esac
+ fi
+
+ func_dirname "$file" "/" ""
+ dir=$func_dirname_result
+ func_append dir "$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ test "$inst_prefix_dir" = "$destdir" && \
+ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+ fi
+
+ func_warning "relinking '$file'"
+ func_show_eval "$relink_command" \
+ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names; shift
+ if test -n "$1"; then
+ realname=$1
+ shift
+
+ srcname=$realname
+ test -n "$relink_command" && srcname=${realname}T
+
+ # Install the shared library and build the symlinks.
+ func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+ 'exit $?'
+ tstripme=$stripme
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $realname in
+ *.dll.a)
+ tstripme=
+ ;;
+ esac
+ ;;
+ os2*)
+ case $realname in
+ *_dll.a)
+ tstripme=
+ ;;
+ esac
+ ;;
+ esac
+ if test -n "$tstripme" && test -n "$striplib"; then
+ func_show_eval "$striplib $destdir/$realname" 'exit $?'
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try 'ln -sf' first, because the 'ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ test "$linkname" != "$realname" \
+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib=$destdir/$realname
+ func_execute_cmds "$postinstall_cmds" 'exit $?'
+ fi
+
+ # Install the pseudo-library for information purposes.
+ func_basename "$file"
+ name=$func_basename_result
+ instname=$dir/${name}i
+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile=$destdir/$destname
+ else
+ func_basename "$file"
+ destfile=$func_basename_result
+ destfile=$destdir/$destfile
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ func_lo2o "$destfile"
+ staticdest=$func_lo2o_result
+ ;;
+ *.$objext)
+ staticdest=$destfile
+ destfile=
+ ;;
+ *)
+ func_fatal_help "cannot copy a libtool object to '$destfile'"
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ test -n "$destfile" && \
+ func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+ # Install the old object if enabled.
+ if test yes = "$build_old_libs"; then
+ # Deduce the name of the old-style object file.
+ func_lo2o "$file"
+ staticobj=$func_lo2o_result
+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile=$destdir/$destname
+ else
+ func_basename "$file"
+ destfile=$func_basename_result
+ destfile=$destdir/$destfile
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ stripped_ext=.exe
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin* | *mingw*)
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ wrapper=$func_ltwrapper_scriptname_result
+ else
+ func_stripname '' '.exe' "$file"
+ wrapper=$func_stripname_result
+ fi
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if func_ltwrapper_script_p "$wrapper"; then
+ notinst_deplibs=
+ relink_command=
+
+ func_source "$wrapper"
+
+ # Check the variables that should have been set.
+ test -z "$generated_by_libtool_version" && \
+ func_fatal_error "invalid libtool wrapper script '$wrapper'"
+
+ finalize=:
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ func_source "$lib"
+ fi
+ libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ func_warning "'$lib' has not been installed in '$libdir'"
+ finalize=false
+ fi
+ done
+
+ relink_command=
+ func_source "$wrapper"
+
+ outputname=
+ if test no = "$fast_install" && test -n "$relink_command"; then
+ $opt_dry_run || {
+ if $finalize; then
+ tmpdir=`func_mktempdir`
+ func_basename "$file$stripped_ext"
+ file=$func_basename_result
+ outputname=$tmpdir/$file
+ # Replace the output file specification.
+ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $opt_quiet || {
+ func_quote_for_expand "$relink_command"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ if eval "$relink_command"; then :
+ else
+ func_error "error: relink '$file' with the above command before installing it"
+ $opt_dry_run || ${RM}r "$tmpdir"
+ continue
+ fi
+ file=$outputname
+ else
+ func_warning "cannot relink '$file'"
+ fi
+ }
+ else
+ # Install the binary that we compiled earlier.
+ file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ func_stripname '' '.exe' "$destfile"
+ destfile=$func_stripname_result
+ ;;
+ esac
+ ;;
+ esac
+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+ $opt_dry_run || if test -n "$outputname"; then
+ ${RM}r "$tmpdir"
+ fi
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ func_basename "$file"
+ name=$func_basename_result
+
+ # Set up the ranlib parameters.
+ oldlib=$destdir/$name
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
+
+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+ fi
+
+ # Do each command in the postinstall commands.
+ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+ done
+
+ test -n "$future_libdirs" && \
+ func_warning "remember to run '$progname --finish$future_libdirs'"
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ $opt_dry_run && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+}
+
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+ $debug_cmd
+
+ my_outputname=$1
+ my_originator=$2
+ my_pic_p=${3-false}
+ my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
+ my_dlsyms=
+
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ my_dlsyms=${my_outputname}S.c
+ else
+ func_error "not configured to extract global symbols from dlpreopened files"
+ fi
+ fi
+
+ if test -n "$my_dlsyms"; then
+ case $my_dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist=$output_objdir/$my_outputname.nm
+
+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+ # Parse the name list into a source file.
+ func_verbose "creating $output_objdir/$my_dlsyms"
+
+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test yes = "$dlself"; then
+ func_verbose "generating symbol list for '$output'"
+
+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ for progfile in $progfiles; do
+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+ func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $opt_dry_run || {
+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $opt_dry_run || {
+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ }
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols=$output_objdir/$outputname.exp
+ $opt_dry_run || {
+ $RM $export_symbols
+ eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ else
+ $opt_dry_run || {
+ eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ eval '$MV "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ }
+ fi
+ fi
+
+ for dlprefile in $dlprefiles; do
+ func_verbose "extracting global C symbols from '$dlprefile'"
+ func_basename "$dlprefile"
+ name=$func_basename_result
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ # if an import library, we need to obtain dlname
+ if func_win32_import_lib_p "$dlprefile"; then
+ func_tr_sh "$dlprefile"
+ eval "curr_lafile=\$libfile_$func_tr_sh_result"
+ dlprefile_dlbasename=
+ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+ # Use subshell, to avoid clobbering current variable values
+ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+ if test -n "$dlprefile_dlname"; then
+ func_basename "$dlprefile_dlname"
+ dlprefile_dlbasename=$func_basename_result
+ else
+ # no lafile. user explicitly requested -dlpreopen <import library>.
+ $sharedlib_from_linklib_cmd "$dlprefile"
+ dlprefile_dlbasename=$sharedlib_from_linklib_result
+ fi
+ fi
+ $opt_dry_run || {
+ if test -n "$dlprefile_dlbasename"; then
+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+ else
+ func_warning "Could not compute DLL name from $name"
+ eval '$ECHO ": $name " >> "$nlist"'
+ fi
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+ }
+ else # not an import lib
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ fi
+ ;;
+ *)
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ ;;
+ esac
+ done
+
+ $opt_dry_run || {
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $MV "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if $GREP -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ $GREP -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+ else
+ echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+ fi
+
+ func_show_eval '$RM "${nlist}I"'
+ if test -n "$global_symbol_to_import"; then
+ eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+ fi
+
+ echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols. */
+typedef struct {
+ const char *name;
+ void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+ if test -s "$nlist"I; then
+ echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+ LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+ for (; symbol->name; ++symbol)
+ {"
+ $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+ echo >> "$output_objdir/$my_dlsyms" "\
+ }
+}"
+ fi
+ echo >> "$output_objdir/$my_dlsyms" "\
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{ {\"$my_originator\", (void *) 0},"
+
+ if test -s "$nlist"I; then
+ echo >> "$output_objdir/$my_dlsyms" "\
+ {\"@INIT@\", (void *) <_syminit},"
+ fi
+
+ case $need_lib_prefix in
+ no)
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ *)
+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+ ;;
+ esac
+ echo >> "$output_objdir/$my_dlsyms" "\
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ } # !$opt_dry_run
+
+ pic_flag_for_symtable=
+ case "$compile_command " in
+ *" -static "*) ;;
+ *)
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+ *-*-hpux*)
+ pic_flag_for_symtable=" $pic_flag" ;;
+ *)
+ $my_pic_p && pic_flag_for_symtable=" $pic_flag"
+ ;;
+ esac
+ ;;
+ esac
+ symtab_cflags=
+ for arg in $LTCFLAGS; do
+ case $arg in
+ -pie | -fpie | -fPIE) ;;
+ *) func_append symtab_cflags " $arg" ;;
+ esac
+ done
+
+ # Now compile the dynamic symbol file.
+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+ # Clean up the generated files.
+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
+
+ # Transform the symbol file into the correct name.
+ symfileobj=$output_objdir/${my_outputname}S.$objext
+ case $host in
+ *cygwin* | *mingw* | *cegcc* )
+ if test -f "$output_objdir/$my_outputname.def"; then
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+ else
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ fi
+ ;;
+ *)
+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+ ;;
+ esac
+ ;;
+ *)
+ func_fatal_error "unknown suffix for '$my_dlsyms'"
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+ fi
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+ $debug_cmd
+
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+ test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+ $debug_cmd
+
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+ test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+ $debug_cmd
+
+ win32_libid_type=unknown
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+ case $nm_interface in
+ "MS dumpbin")
+ if func_cygming_ms_implib_p "$1" ||
+ func_cygming_gnu_implib_p "$1"
+ then
+ win32_nmres=import
+ else
+ win32_nmres=
+ fi
+ ;;
+ *)
+ func_to_tool_file "$1" func_convert_file_msys_to_w32
+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+ $SED -n -e '
+ 1,100{
+ / I /{
+ s|.*|import|
+ p
+ q
+ }
+ }'`
+ ;;
+ esac
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+ $debug_cmd
+
+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+ $debug_cmd
+
+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+ $SED '/^Contents of section '"$match_literal"':/{
+ # Place marker at beginning of archive member dllname section
+ s/.*/====MARK====/
+ p
+ d
+ }
+ # These lines can sometimes be longer than 43 characters, but
+ # are always uninteresting
+ /:[ ]*file format pe[i]\{,1\}-/d
+ /^In archive [^:]*:/d
+ # Ensure marker is printed
+ /^====MARK====/p
+ # Remove all lines with less than 43 characters
+ /^.\{43\}/!d
+ # From remaining lines, remove first 43 characters
+ s/^.\{43\}//' |
+ $SED -n '
+ # Join marker and all lines until next marker into a single line
+ /^====MARK====/ b para
+ H
+ $ b para
+ b
+ :para
+ x
+ s/\n//g
+ # Remove the marker
+ s/^====MARK====//
+ # Remove trailing dots and whitespace
+ s/[\. \t]*$//
+ # Print
+ /./p' |
+ # we now have a list, one entry per line, of the stringified
+ # contents of the appropriate section of all members of the
+ # archive that possess that section. Heuristic: eliminate
+ # all those that have a first or second character that is
+ # a '.' (that is, objdump's representation of an unprintable
+ # character.) This should work for all archives with less than
+ # 0x302f exports -- but will fail for DLLs whose name actually
+ # begins with a literal '.' or a single character followed by
+ # a '.'.
+ #
+ # Of those that remain, print the first one.
+ $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+ $debug_cmd
+
+ if func_cygming_gnu_implib_p "$1"; then
+ # binutils import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+ elif func_cygming_ms_implib_p "$1"; then
+ # ms-generated import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+ else
+ # unknown
+ sharedlib_from_linklib_result=
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ $debug_cmd
+
+ f_ex_an_ar_dir=$1; shift
+ f_ex_an_ar_oldlib=$1
+ if test yes = "$lock_old_archive_extraction"; then
+ lockfile=$f_ex_an_ar_oldlib.lock
+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+ func_echo "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ fi
+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+ 'stat=$?; rm -f "$lockfile"; exit $stat'
+ if test yes = "$lock_old_archive_extraction"; then
+ $opt_dry_run || rm -f "$lockfile"
+ fi
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+ fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ $debug_cmd
+
+ my_gentop=$1; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=
+ my_xlib=
+ my_xabs=
+ my_xdir=
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ func_basename "$my_xlib"
+ my_xlib=$func_basename_result
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ func_arith $extracted_serial + 1
+ extracted_serial=$func_arith_result
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir=$my_gentop/$my_xlib_u
+
+ func_mkdir_p "$my_xdir"
+
+ case $host in
+ *-darwin*)
+ func_verbose "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ $opt_dry_run || {
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ func_basename "$darwin_archive"
+ darwin_base_archive=$func_basename_result
+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches; do
+ func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+ $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+ cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+ func_extract_an_archive "`pwd`" "$darwin_base_archive"
+ cd "$darwin_curdir"
+ $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
+ done # $darwin_arches
+ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+ $LIPO -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ $RM -rf unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd $darwin_orig_dir
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ } # !$opt_dry_run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+ done
+
+ func_extract_archives_result=$my_oldobjs
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable. Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take. If 'yes', then the emitted script
+# will assume that the directory where it is stored is
+# the $objdir directory. This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+ func_emit_wrapper_arg1=${1-no}
+
+ $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='$macro_version'
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$ECHO are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ file=\"\$0\""
+
+ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+ $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+ ECHO=\"$qECHO\"
+ fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+ lt_script_arg0=\$0
+ shift
+ for lt_opt
+ do
+ case \"\$lt_opt\" in
+ --lt-debug) lt_option_debug=1 ;;
+ --lt-dump-script)
+ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+ cat \"\$lt_dump_D/\$lt_dump_F\"
+ exit 0
+ ;;
+ --lt-*)
+ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+ exit 1
+ ;;
+ esac
+ done
+
+ # Print the debug banner immediately:
+ if test -n \"\$lt_option_debug\"; then
+ echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
+ fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+ lt_dump_args_N=1;
+ for lt_arg
+ do
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
+ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+ done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2* | *-cegcc*)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $ECHO "\
+ if test -n \"\$lt_option_debug\"; then
+ \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
+ func_lt_dump_args \${1+\"\$@\"} 1>&2
+ fi
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $ECHO "\
+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+ exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+ case \" \$* \" in
+ *\\ --lt-*)
+ for lt_wr_arg
+ do
+ case \$lt_wr_arg in
+ --lt-*) ;;
+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+ esac
+ shift
+ done ;;
+ esac
+ func_exec_program_core \${1+\"\$@\"}
+}
+
+ # Parse options
+ func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+ done
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+ # special case for '.'
+ if test \"\$thisdir\" = \".\"; then
+ thisdir=\`pwd\`
+ fi
+ # remove .libs from thisdir
+ case \"\$thisdir\" in
+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+ $objdir ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test yes = "$fast_install"; then
+ $ECHO "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" ||
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $MKDIR \"\$progdir\"
+ else
+ $RM \"\$progdir/\$file\"
+ fi"
+
+ $ECHO "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ \$ECHO \"\$relink_command_output\" >&2
+ $RM \"\$progdir/\$file\"
+ exit 1
+ fi
+ fi
+
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $RM \"\$progdir/\$program\";
+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $RM \"\$progdir/\$file\"
+ fi"
+ else
+ $ECHO "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $ECHO "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # fixup the dll searchpath if we need to.
+ #
+ # Fix the DLL searchpath if we need to. Do this before prepending
+ # to shlibpath, because on Windows, both are PATH and uninstalled
+ # libraries must come first.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ # Export our shlibpath_var if we have one.
+ if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $ECHO "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ $ECHO "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+ func_exec_program \${1+\"\$@\"}
+ fi
+ else
+ # The program doesn't exist.
+ \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+ \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit 1
+ fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+ cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+*/
+EOF
+ cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+# include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* declarations of non-ANSI functions */
+#if defined __MINGW32__
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined __CYGWIN__
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined other_platform || defined ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined _MSC_VER
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+# define S_IXUSR _S_IEXEC
+#elif defined __MINGW32__
+# define setmode _setmode
+# define stat _stat
+# define chmod _chmod
+# define getcwd _getcwd
+# define putenv _putenv
+#elif defined __CYGWIN__
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined other platforms ... */
+#endif
+
+#if defined PATH_MAX
+# define LT_PATHMAX PATH_MAX
+#elif defined MAXPATHLEN
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+ defined __OS2__
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free (stale); stale = 0; } \
+} while (0)
+
+#if defined LT_DEBUGWRAPPER
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+ cat <<EOF
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+ if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ func_to_host_path "$temp_rpath"
+ cat <<EOF
+const char * LIB_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * LIB_PATH_VALUE = "";
+EOF
+ fi
+
+ if test -n "$dllsearchpath"; then
+ func_to_host_path "$dllsearchpath:"
+ cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE = "$func_to_host_path_result";
+EOF
+ else
+ cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE = "";
+EOF
+ fi
+
+ if test yes = "$fast_install"; then
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+ else
+ cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+ fi
+
+
+ cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int newargc;
+ char *tmp_pathspec;
+ char *actual_cwrapper_path;
+ char *actual_cwrapper_name;
+ char *target_name;
+ char *lt_argv_zero;
+ int rval = 127;
+
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ newargz = XMALLOC (char *, (size_t) argc + 1);
+
+ /* very simple arg parsing; don't want to rely on getopt
+ * also, copy all non cwrapper options to newargz, except
+ * argz[0], which is handled differently
+ */
+ newargc=0;
+ for (i = 1; i < argc; i++)
+ {
+ if (STREQ (argv[i], dumpscript_opt))
+ {
+EOF
+ case $host in
+ *mingw* | *cygwin* )
+ # make stdout use "unix" line endings
+ echo " setmode(1,_O_BINARY);"
+ ;;
+ esac
+
+ cat <<"EOF"
+ lt_dump_script (stdout);
+ return 0;
+ }
+ if (STREQ (argv[i], debug_opt))
+ {
+ lt_debug = 1;
+ continue;
+ }
+ if (STREQ (argv[i], ltwrapper_option_prefix))
+ {
+ /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+ namespace, but it is not one of the ones we know about and
+ have already dealt with, above (inluding dump-script), then
+ report an error. Otherwise, targets might begin to believe
+ they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+ namespace. The first time any user complains about this, we'll
+ need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+ or a configure.ac-settable value.
+ */
+ lt_fatal (__FILE__, __LINE__,
+ "unrecognized %s option: '%s'",
+ ltwrapper_option_prefix, argv[i]);
+ }
+ /* otherwise ... */
+ newargz[++newargc] = xstrdup (argv[i]);
+ }
+ newargz[++newargc] = NULL;
+
+EOF
+ cat <<EOF
+ /* The GNU banner must be the first non-error debug message */
+ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
+EOF
+ cat <<"EOF"
+ lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+ tmp_pathspec = find_executable (argv[0]);
+ if (tmp_pathspec == NULL)
+ lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (before symlink chase) at: %s\n",
+ tmp_pathspec);
+
+ actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) found exe (after symlink chase) at: %s\n",
+ actual_cwrapper_path);
+ XFREE (tmp_pathspec);
+
+ actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+ strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+ /* wrapper name transforms */
+ strendzap (actual_cwrapper_name, ".exe");
+ tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+ XFREE (actual_cwrapper_name);
+ actual_cwrapper_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ /* target_name transforms -- use actual target program name; might have lt- prefix */
+ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+ strendzap (target_name, ".exe");
+ tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+ XFREE (target_name);
+ target_name = tmp_pathspec;
+ tmp_pathspec = 0;
+
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) libtool target name: %s\n",
+ target_name);
+EOF
+
+ cat <<EOF
+ newargz[0] =
+ XMALLOC (char, (strlen (actual_cwrapper_path) +
+ strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+ strcpy (newargz[0], actual_cwrapper_path);
+ strcat (newargz[0], "$objdir");
+ strcat (newargz[0], "/");
+EOF
+
+ cat <<"EOF"
+ /* stop here, and copy so we don't have to do this twice */
+ tmp_pathspec = xstrdup (newargz[0]);
+
+ /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+ strcat (newargz[0], actual_cwrapper_name);
+
+ /* DO want the lt- prefix here if it exists, so use target_name */
+ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+ XFREE (tmp_pathspec);
+ tmp_pathspec = NULL;
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ {
+ char* p;
+ while ((p = strchr (newargz[0], '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+ {
+ *p = '/';
+ }
+ }
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+ XFREE (target_name);
+ XFREE (actual_cwrapper_path);
+ XFREE (actual_cwrapper_name);
+
+ lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+ lt_setenv ("DUALCASE", "1"); /* for MSK sh */
+ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
+ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+ because on Windows, both *_VARNAMEs are PATH but uninstalled
+ libraries must come first. */
+ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+ lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+ nonnull (lt_argv_zero));
+ for (i = 0; i < newargc; i++)
+ {
+ lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+ i, nonnull (newargz[i]));
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+ /* execv doesn't actually work on mingw as expected on unix */
+ newargz = prepare_spawn (newargz);
+ rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+ if (rval == -1)
+ {
+ /* failed to start process */
+ lt_debugprintf (__FILE__, __LINE__,
+ "(main) failed to launch target \"%s\": %s\n",
+ lt_argv_zero, nonnull (strerror (errno)));
+ return 127;
+ }
+ return rval;
+EOF
+ ;;
+ *)
+ cat <<"EOF"
+ execv (lt_argv_zero, newargz);
+ return rval; /* =127, but avoids unused variable warning */
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void *p = (void *) malloc (num);
+ if (!p)
+ lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+ string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable (const char *path)
+{
+ struct stat st;
+
+ lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0)
+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+ return 1;
+ else
+ return 0;
+}
+
+int
+make_executable (const char *path)
+{
+ int rval = 0;
+ struct stat st;
+
+ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+ nonempty (path));
+ if ((!path) || (!*path))
+ return 0;
+
+ if (stat (path, &st) >= 0)
+ {
+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+ }
+ return rval;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise
+ Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+ int has_slash = 0;
+ const char *p;
+ const char *p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ size_t tmp_len;
+ char *concat_name;
+
+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+ nonempty (wrapper));
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char *path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char *q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR (*q))
+ break;
+ p_len = (size_t) (q - p);
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name =
+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name =
+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+ nonnull (strerror (errno)));
+ tmp_len = strlen (tmp);
+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable (concat_name))
+ return concat_name;
+ XFREE (concat_name);
+ return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+ return xstrdup (pathspec);
+#else
+ char buf[LT_PATHMAX];
+ struct stat s;
+ char *tmp_pathspec = xstrdup (pathspec);
+ char *p;
+ int has_symlinks = 0;
+ while (strlen (tmp_pathspec) && !has_symlinks)
+ {
+ lt_debugprintf (__FILE__, __LINE__,
+ "checking path component for symlinks: %s\n",
+ tmp_pathspec);
+ if (lstat (tmp_pathspec, &s) == 0)
+ {
+ if (S_ISLNK (s.st_mode) != 0)
+ {
+ has_symlinks = 1;
+ break;
+ }
+
+ /* search backwards for last DIR_SEPARATOR */
+ p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ p--;
+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+ {
+ /* no more DIR_SEPARATORS left */
+ break;
+ }
+ *p = '\0';
+ }
+ else
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "error accessing file \"%s\": %s",
+ tmp_pathspec, nonnull (strerror (errno)));
+ }
+ }
+ XFREE (tmp_pathspec);
+
+ if (!has_symlinks)
+ {
+ return xstrdup (pathspec);
+ }
+
+ tmp_pathspec = realpath (pathspec, buf);
+ if (tmp_pathspec == 0)
+ {
+ lt_fatal (__FILE__, __LINE__,
+ "could not follow symlinks for %s", pathspec);
+ }
+ return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert (str != NULL);
+ assert (pat != NULL);
+
+ len = strlen (str);
+ patlen = strlen (pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (STREQ (str, pat))
+ *str = '\0';
+ }
+ return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+ va_list args;
+ if (lt_debug)
+ {
+ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+ va_start (args, fmt);
+ (void) vfprintf (stderr, fmt, args);
+ va_end (args);
+ }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+ int line, const char *mode,
+ const char *message, va_list ap)
+{
+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+ va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+ return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+ return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_setenv) setting '%s' to '%s'\n",
+ nonnull (name), nonnull (value));
+ {
+#ifdef HAVE_SETENV
+ /* always make a copy, for consistency with !HAVE_SETENV */
+ char *str = xstrdup (value);
+ setenv (name, str, 1);
+#else
+ size_t len = strlen (name) + 1 + strlen (value) + 1;
+ char *str = XMALLOC (char, len);
+ sprintf (str, "%s=%s", name, value);
+ if (putenv (str) != EXIT_SUCCESS)
+ {
+ XFREE (str);
+ }
+#endif
+ }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+ char *new_value;
+ if (orig_value && *orig_value)
+ {
+ size_t orig_value_len = strlen (orig_value);
+ size_t add_len = strlen (add);
+ new_value = XMALLOC (char, add_len + orig_value_len + 1);
+ if (to_end)
+ {
+ strcpy (new_value, orig_value);
+ strcpy (new_value + orig_value_len, add);
+ }
+ else
+ {
+ strcpy (new_value, add);
+ strcpy (new_value + add_len, orig_value);
+ }
+ }
+ else
+ {
+ new_value = xstrdup (add);
+ }
+ return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ /* some systems can't cope with a ':'-terminated path #' */
+ size_t len = strlen (new_value);
+ while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+ {
+ new_value[--len] = '\0';
+ }
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+ lt_debugprintf (__FILE__, __LINE__,
+ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+ nonnull (name), nonnull (value));
+
+ if (name && *name && value && *value)
+ {
+ char *new_value = lt_extend_str (getenv (name), value, 0);
+ lt_setenv (name, new_value);
+ XFREE (new_value);
+ }
+}
+
+EOF
+ case $host_os in
+ mingw*)
+ cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+ Note that spawn() does not by itself call the command interpreter
+ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&v);
+ v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+ }) ? "cmd.exe" : "command.com").
+ Instead it simply concatenates the arguments, separated by ' ', and calls
+ CreateProcess(). We must quote the arguments since Win32 CreateProcess()
+ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+ special way:
+ - Space and tab are interpreted as delimiters. They are not treated as
+ delimiters if they are surrounded by double quotes: "...".
+ - Unescaped double quotes are removed from the input. Their only effect is
+ that within double quotes, space and tab are treated like normal
+ characters.
+ - Backslashes not followed by double quotes are not special.
+ - But 2*n+1 backslashes followed by a double quote become
+ n backslashes followed by a double quote (n >= 0):
+ \" -> "
+ \\\" -> \"
+ \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+ size_t argc;
+ char **new_argv;
+ size_t i;
+
+ /* Count number of arguments. */
+ for (argc = 0; argv[argc] != NULL; argc++)
+ ;
+
+ /* Allocate new argument vector. */
+ new_argv = XMALLOC (char *, argc + 1);
+
+ /* Put quoted arguments into the new argument vector. */
+ for (i = 0; i < argc; i++)
+ {
+ const char *string = argv[i];
+
+ if (string[0] == '\0')
+ new_argv[i] = xstrdup ("\"\"");
+ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+ {
+ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+ size_t length;
+ unsigned int backslashes;
+ const char *s;
+ char *quoted_string;
+ char *p;
+
+ length = 0;
+ backslashes = 0;
+ if (quote_around)
+ length++;
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ length += backslashes + 1;
+ length++;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ length += backslashes + 1;
+
+ quoted_string = XMALLOC (char, length + 1);
+
+ p = quoted_string;
+ backslashes = 0;
+ if (quote_around)
+ *p++ = '"';
+ for (s = string; *s != '\0'; s++)
+ {
+ char c = *s;
+ if (c == '"')
+ {
+ unsigned int j;
+ for (j = backslashes + 1; j > 0; j--)
+ *p++ = '\\';
+ }
+ *p++ = c;
+ if (c == '\\')
+ backslashes++;
+ else
+ backslashes = 0;
+ }
+ if (quote_around)
+ {
+ unsigned int j;
+ for (j = backslashes; j > 0; j--)
+ *p++ = '\\';
+ *p++ = '"';
+ }
+ *p = '\0';
+
+ new_argv[i] = quoted_string;
+ }
+ else
+ new_argv[i] = (char *) string;
+ }
+ new_argv[argc] = NULL;
+
+ return new_argv;
+}
+EOF
+ ;;
+ esac
+
+ cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+ func_emit_wrapper yes |
+ $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/ fputs ("\1", f);/p
+g
+D'
+ cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+ $debug_cmd
+
+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+ *import*) : ;;
+ *) false ;;
+ esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+ $debug_cmd
+
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # what system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll that has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args=$nonopt
+ base_compile="$nonopt $@"
+ compile_command=$nonopt
+ finalize_command=$nonopt
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+ new_inherited_linker_flags=
+
+ avoid_version=no
+ bindir=
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ os2dllname=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=false
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+ weak_libs=
+ single_module=$wl-single_module
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -shared)
+ test yes != "$build_libtool_libs" \
+ && func_fatal_configuration "cannot build a shared library"
+ build_old_libs=no
+ break
+ ;;
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
+ func_warning "complete static linking is impossible in this configuration"
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg=$1
+ shift
+ func_quote_for_eval "$arg"
+ qarg=$func_quote_for_eval_unquoted_result
+ func_append libtool_args " $func_quote_for_eval_result"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ func_append compile_command " @OUTPUT@"
+ func_append finalize_command " @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ bindir)
+ bindir=$arg
+ prev=
+ continue
+ ;;
+ dlfiles|dlprefiles)
+ $preload || {
+ # Add the symbol object into the linking commands.
+ func_append compile_command " @SYMFILE@"
+ func_append finalize_command " @SYMFILE@"
+ preload=:
+ }
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test no = "$dlself"; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test dlprefiles = "$prev"; then
+ dlself=yes
+ elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test dlfiles = "$prev"; then
+ func_append dlfiles " $arg"
+ else
+ func_append dlprefiles " $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols=$arg
+ test -f "$arg" \
+ || func_fatal_error "symbol file '$arg' does not exist"
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex=$arg
+ prev=
+ continue
+ ;;
+ framework)
+ case $host in
+ *-*-darwin*)
+ case "$deplibs " in
+ *" $qarg.ltframework "*) ;;
+ *) func_append deplibs " $qarg.ltframework" # this is fixed later
+ ;;
+ esac
+ ;;
+ esac
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir=$arg
+ prev=
+ continue
+ ;;
+ mllvm)
+ # Clang does not use LLVM to link, so we can simply discard any
+ # '-mllvm $arg' options when doing the link step.
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat "$save_arg"`
+ do
+# func_append moreargs " $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test none = "$pic_object" &&
+ test none = "$non_pic_object"; then
+ func_fatal_error "cannot find name of object for '$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir=$func_dirname_result
+
+ if test none != "$pic_object"; then
+ # Prepend the subdirectory the object is found in.
+ pic_object=$xdir$pic_object
+
+ if test dlfiles = "$prev"; then
+ if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test dlprefiles = "$prev"; then
+ # Preload the old-style object.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg=$pic_object
+ fi
+
+ # Non-PIC object.
+ if test none != "$non_pic_object"; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object=$xdir$non_pic_object
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test none = "$pic_object"; then
+ arg=$non_pic_object
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object=$pic_object
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir=$func_dirname_result
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "'$arg' is not a valid libtool object"
+ fi
+ fi
+ done
+ else
+ func_fatal_error "link input file '$arg' does not exist"
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ os2dllname)
+ os2dllname=$arg
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex=$arg
+ prev=
+ continue
+ ;;
+ release)
+ release=-$arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ if test rpath = "$prev"; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) func_append rpath " $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) func_append xrpath " $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ shrext)
+ shrext_cmds=$arg
+ prev=
+ continue
+ ;;
+ weak)
+ func_append weak_libs " $arg"
+ prev=
+ continue
+ ;;
+ xcclinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xcompiler)
+ func_append compiler_flags " $qarg"
+ prev=
+ func_append compile_command " $qarg"
+ func_append finalize_command " $qarg"
+ continue
+ ;;
+ xlinker)
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $wl$qarg"
+ prev=
+ func_append compile_command " $wl$qarg"
+ func_append finalize_command " $wl$qarg"
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg=$arg
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ # See comment for -static flag below, for more details.
+ func_append compile_command " $link_static_flag"
+ func_append finalize_command " $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ func_fatal_error "'-allow-undefined' must not be used because it is the default"
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -bindir)
+ prev=bindir
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ func_fatal_error "more than one -exported-symbols argument is not allowed"
+ fi
+ if test X-export-symbols = "X$arg"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework)
+ prev=framework
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ func_stripname "-L" '' "$arg"
+ if test -z "$func_stripname_result"; then
+ if test "$#" -gt 0; then
+ func_fatal_error "require no space between '-L' and '$1'"
+ else
+ func_fatal_error "need path for '-L' option"
+ fi
+ fi
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
+ func_fatal_error "cannot determine absolute directory name of '$dir'"
+ dir=$absdir
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "* | *" $arg "*)
+ # Will only happen for absolute or sysroot arguments
+ ;;
+ *)
+ # Preserve sysroot, but never include relative directories
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+ *) func_append deplibs " -L$dir" ;;
+ esac
+ func_append lib_search_path " $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ ::) dllsearchpath=$dir;;
+ *) func_append dllsearchpath ":$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test X-lc = "X$arg" || test X-lm = "X$arg"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test X-lc = "X$arg" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+ # Do not include libc due to us having libc/libc_r.
+ test X-lc = "X$arg" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ func_append deplibs " System.ltframework"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test X-lc = "X$arg" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test X-lc = "X$arg" && continue
+ ;;
+ esac
+ elif test X-lc_r = "X$arg"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ func_append deplibs " $arg"
+ continue
+ ;;
+
+ -mllvm)
+ prev=mllvm
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ # Darwin uses the -arch flag to determine output architecture.
+ -model|-arch|-isysroot|--sysroot)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ func_append compiler_flags " $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case "$new_inherited_linker_flags " in
+ *" $arg "*) ;;
+ * ) func_append new_inherited_linker_flags " $arg" ;;
+ esac
+ continue
+ ;;
+
+ -multi_module)
+ single_module=$wl-multi_module
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # and Darwin in order for the loader to find any dlls it needs.
+ func_warning "'-no-install' is ignored for $host"
+ func_warning "assuming '-no-fast-install' instead"
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -os2dllname)
+ prev=os2dllname
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ func_stripname '-R' '' "$arg"
+ dir=$func_stripname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ =*)
+ func_stripname '=' '' "$dir"
+ dir=$lt_sysroot$func_stripname_result
+ ;;
+ *)
+ func_fatal_error "only absolute run-paths are allowed"
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ continue
+ ;;
+
+ -shared)
+ # The effects of -shared are defined in a previous loop.
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -weak)
+ prev=weak
+ continue
+ ;;
+
+ -Wc,*)
+ func_stripname '-Wc,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs=$IFS; IFS=,
+ for flag in $args; do
+ IFS=$save_ifs
+ func_quote_for_eval "$flag"
+ func_append arg " $func_quote_for_eval_result"
+ func_append compiler_flags " $func_quote_for_eval_result"
+ done
+ IFS=$save_ifs
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Wl,*)
+ func_stripname '-Wl,' '' "$arg"
+ args=$func_stripname_result
+ arg=
+ save_ifs=$IFS; IFS=,
+ for flag in $args; do
+ IFS=$save_ifs
+ func_quote_for_eval "$flag"
+ func_append arg " $wl$func_quote_for_eval_result"
+ func_append compiler_flags " $wl$func_quote_for_eval_result"
+ func_append linker_flags " $func_quote_for_eval_result"
+ done
+ IFS=$save_ifs
+ func_stripname ' ' '' "$arg"
+ arg=$func_stripname_result
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # -msg_* for osf cc
+ -msg_*)
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
+ ;;
+
+ # Flags to be passed through unchanged, with rationale:
+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
+ # -r[0-9][0-9]* specify processor for the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+ # +DA*, +DD* enable 64-bit mode for the HP compiler
+ # -q* compiler args for the IBM compiler
+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+ # -F/path path to uninstalled frameworks, gcc on darwin
+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
+ # -fstack-protector* stack protector flags for GCC
+ # @file GCC response files
+ # -tp=* Portland pgcc target processor selection
+ # --sysroot=* for sysroot support
+ # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ # -stdlib=* select c++ std lib with clang
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ func_append compiler_flags " $arg"
+ continue
+ ;;
+
+ -Z*)
+ if test os2 = "`expr $host : '.*\(os2\)'`"; then
+ # OS/2 uses -Zxxx to specify OS/2-specific options
+ compiler_flags="$compiler_flags $arg"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ case $arg in
+ -Zlinker | -Zstack)
+ prev=xcompiler
+ ;;
+ esac
+ continue
+ else
+ # Otherwise treat like 'Some other compiler flag' below
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
+ fi
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
+ ;;
+
+ *.$objext)
+ # A standard object.
+ func_append objs " $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if func_lalib_unsafe_p "$arg"; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ func_source "$arg"
+
+ if test -z "$pic_object" ||
+ test -z "$non_pic_object" ||
+ test none = "$pic_object" &&
+ test none = "$non_pic_object"; then
+ func_fatal_error "cannot find name of object for '$arg'"
+ fi
+
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir=$func_dirname_result
+
+ test none = "$pic_object" || {
+ # Prepend the subdirectory the object is found in.
+ pic_object=$xdir$pic_object
+
+ if test dlfiles = "$prev"; then
+ if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+ func_append dlfiles " $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test dlprefiles = "$prev"; then
+ # Preload the old-style object.
+ func_append dlprefiles " $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ func_append libobjs " $pic_object"
+ arg=$pic_object
+ }
+
+ # Non-PIC object.
+ if test none != "$non_pic_object"; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object=$xdir$non_pic_object
+
+ # A standard non-PIC object
+ func_append non_pic_objects " $non_pic_object"
+ if test -z "$pic_object" || test none = "$pic_object"; then
+ arg=$non_pic_object
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object=$pic_object
+ func_append non_pic_objects " $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if $opt_dry_run; then
+ # Extract subdirectory from the argument.
+ func_dirname "$arg" "/" ""
+ xdir=$func_dirname_result
+
+ func_lo2o "$arg"
+ pic_object=$xdir$objdir/$func_lo2o_result
+ non_pic_object=$xdir$func_lo2o_result
+ func_append libobjs " $pic_object"
+ func_append non_pic_objects " $non_pic_object"
+ else
+ func_fatal_error "'$arg' is not a valid libtool object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ func_append deplibs " $arg"
+ func_append old_deplibs " $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ func_resolve_sysroot "$arg"
+ if test dlfiles = "$prev"; then
+ # This library was specified with -dlopen.
+ func_append dlfiles " $func_resolve_sysroot_result"
+ prev=
+ elif test dlprefiles = "$prev"; then
+ # The library was specified with -dlpreopen.
+ func_append dlprefiles " $func_resolve_sysroot_result"
+ prev=
+ else
+ func_append deplibs " $func_resolve_sysroot_result"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+ done # argument parsing loop
+
+ test -n "$prev" && \
+ func_fatal_help "the '$prevarg' option requires an argument"
+
+ if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ func_append compile_command " $arg"
+ func_append finalize_command " $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ func_basename "$output"
+ outputname=$func_basename_result
+ libobjs_save=$libobjs
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ func_dirname "$output" "/" ""
+ output_objdir=$func_dirname_result$objdir
+ func_to_tool_file "$output_objdir/"
+ tool_output_objdir=$func_to_tool_file_result
+ # Create the object directory.
+ func_mkdir_p "$output_objdir"
+
+ # Determine the type of output
+ case $output in
+ "")
+ func_fatal_help "you must specify an output file"
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if $opt_preserve_dup_deps; then
+ case "$libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append libs " $deplib"
+ done
+
+ if test lib = "$linkmode"; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if $opt_duplicate_compiler_generated_deps; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+ esac
+ func_append pre_post_deps " $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ notinst_path= # paths that contain not-installed libtool libraries
+
+ case $linkmode in
+ lib)
+ passes="conv dlpreopen link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=false
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+
+ for pass in $passes; do
+ # The preopen pass in lib mode reverses $deplibs; put it back here
+ # so that -L comes before libs that need it for instance...
+ if test lib,link = "$linkmode,$pass"; then
+ ## FIXME: Find the place where the list is rebuilt in the wrong
+ ## order, and fix it there properly
+ tmp_deplibs=
+ for deplib in $deplibs; do
+ tmp_deplibs="$deplib $tmp_deplibs"
+ done
+ deplibs=$tmp_deplibs
+ fi
+
+ if test lib,link = "$linkmode,$pass" ||
+ test prog,scan = "$linkmode,$pass"; then
+ libs=$deplibs
+ deplibs=
+ fi
+ if test prog = "$linkmode"; then
+ case $pass in
+ dlopen) libs=$dlfiles ;;
+ dlpreopen) libs=$dlprefiles ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test lib,dlpreopen = "$linkmode,$pass"; then
+ # Collect and forward deplibs of preopened libtool libs
+ for lib in $dlprefiles; do
+ # Ignore non-libtool-libs
+ dependency_libs=
+ func_resolve_sysroot "$lib"
+ case $lib in
+ *.la) func_source "$func_resolve_sysroot_result" ;;
+ esac
+
+ # Collect preopened libtool deplibs, except any this library
+ # has declared as weak libs
+ for deplib in $dependency_libs; do
+ func_basename "$deplib"
+ deplib_base=$func_basename_result
+ case " $weak_libs " in
+ *" $deplib_base "*) ;;
+ *) func_append deplibs " $deplib" ;;
+ esac
+ done
+ done
+ libs=$dlprefiles
+ fi
+ if test dlopen = "$pass"; then
+ # Collect dlpreopened libraries
+ save_deplibs=$deplibs
+ deplibs=
+ fi
+
+ for deplib in $libs; do
+ lib=
+ found=false
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ if test prog,link = "$linkmode,$pass"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append compiler_flags " $deplib"
+ if test lib = "$linkmode"; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -l*)
+ if test lib != "$linkmode" && test prog != "$linkmode"; then
+ func_warning "'-l' is ignored for archives/objects"
+ continue
+ fi
+ func_stripname '-l' '' "$deplib"
+ name=$func_stripname_result
+ if test lib = "$linkmode"; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib=$searchdir/lib$name$search_ext
+ if test -f "$lib"; then
+ if test .la = "$search_ext"; then
+ found=:
+ else
+ found=false
+ fi
+ break 2
+ fi
+ done
+ done
+ if $found; then
+ # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if func_lalib_p "$lib"; then
+ library_names=
+ old_library=
+ func_source "$lib"
+ for l in $old_library $library_names; do
+ ll=$l
+ done
+ if test "X$ll" = "X$old_library"; then # only static version available
+ found=false
+ func_dirname "$lib" "" "."
+ ladir=$func_dirname_result
+ lib=$ladir/$old_library
+ if test prog,link = "$linkmode,$pass"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ else
+ # deplib doesn't seem to be a libtool library
+ if test prog,link = "$linkmode,$pass"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ ;; # -l
+ *.ltframework)
+ if test prog,link = "$linkmode,$pass"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ if test lib = "$linkmode"; then
+ case "$new_inherited_linker_flags " in
+ *" $deplib "*) ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
+ esac
+ fi
+ fi
+ continue
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test conv = "$pass" && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ prog)
+ if test conv = "$pass"; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test scan = "$pass"; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ *)
+ func_warning "'-L' is ignored for archives/objects"
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test link = "$pass"; then
+ func_stripname '-R' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) func_append xrpath " $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ lib=$func_resolve_sysroot_result
+ ;;
+ *.$libext)
+ if test conv = "$pass"; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ # Linking convenience modules into shared libraries is allowed,
+ # but linking other static libraries is non-portable.
+ case " $dlpreconveniencelibs " in
+ *" $deplib "*) ;;
+ *)
+ valid_a_lib=false
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=:
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=:
+ ;;
+ esac
+ if $valid_a_lib; then
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the"
+ $ECHO "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ else
+ echo
+ $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because the file extensions .$libext of this argument makes me believe"
+ echo "*** that it is just a static archive that I should not use here."
+ fi
+ ;;
+ esac
+ continue
+ ;;
+ prog)
+ if test link != "$pass"; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test conv = "$pass"; then
+ deplibs="$deplib $deplibs"
+ elif test prog = "$linkmode"; then
+ if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ func_append newdlprefiles " $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ func_append newdlfiles " $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=:
+ continue
+ ;;
+ esac # case $deplib
+
+ $found || test -f "$lib" \
+ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
+
+ # Check to see that this really is a libtool archive.
+ func_lalib_unsafe_p "$lib" \
+ || func_fatal_error "'$lib' is not a valid libtool archive"
+
+ func_dirname "$lib" "" "."
+ ladir=$func_dirname_result
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ inherited_linker_flags=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+ esac
+ done
+ fi
+ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ if test lib,link = "$linkmode,$pass" ||
+ test prog,scan = "$linkmode,$pass" ||
+ { test prog != "$linkmode" && test lib != "$linkmode"; }; then
+ test -n "$dlopen" && func_append dlfiles " $dlopen"
+ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+ fi
+
+ if test conv = "$pass"; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ func_fatal_error "cannot find name of link library for '$lib'"
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ func_append convenience " $ladir/$objdir/$old_library"
+ func_append old_convenience " $ladir/$objdir/$old_library"
+ elif test prog != "$linkmode" && test lib != "$linkmode"; then
+ func_fatal_error "'$lib' is not a convenience library"
+ fi
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if $opt_preserve_dup_deps; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ if test -n "$old_library" &&
+ { test yes = "$prefer_static_libs" ||
+ test built,no = "$prefer_static_libs,$installed"; }; then
+ linklib=$old_library
+ else
+ for l in $old_library $library_names; do
+ linklib=$l
+ done
+ fi
+ if test -z "$linklib"; then
+ func_fatal_error "cannot find name of link library for '$lib'"
+ fi
+
+ # This library was specified with -dlopen.
+ if test dlopen = "$pass"; then
+ test -z "$libdir" \
+ && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
+ if test -z "$dlname" ||
+ test yes != "$dlopen_support" ||
+ test no = "$build_libtool_libs"
+ then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ func_append dlprefiles " $lib $dependency_libs"
+ else
+ func_append newdlfiles " $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ func_warning "cannot determine absolute directory name of '$ladir'"
+ func_warning "passing it literally to the linker, although it might fail"
+ abs_ladir=$ladir
+ fi
+ ;;
+ esac
+ func_basename "$lib"
+ laname=$func_basename_result
+
+ # Find the relevant object directory and library name.
+ if test yes = "$installed"; then
+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ func_warning "library '$lib' was moved."
+ dir=$ladir
+ absdir=$abs_ladir
+ libdir=$abs_ladir
+ else
+ dir=$lt_sysroot$libdir
+ absdir=$lt_sysroot$libdir
+ fi
+ test yes = "$hardcode_automatic" && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir=$ladir
+ absdir=$abs_ladir
+ # Remove this search path later
+ func_append notinst_path " $abs_ladir"
+ else
+ dir=$ladir/$objdir
+ absdir=$abs_ladir/$objdir
+ # Remove this search path later
+ func_append notinst_path " $abs_ladir"
+ fi
+ fi # $installed = yes
+ func_stripname 'lib' '.la' "$laname"
+ name=$func_stripname_result
+
+ # This library was specified with -dlpreopen.
+ if test dlpreopen = "$pass"; then
+ if test -z "$libdir" && test prog = "$linkmode"; then
+ func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
+ fi
+ case $host in
+ # special handling for platforms with PE-DLLs.
+ *cygwin* | *mingw* | *cegcc* )
+ # Linker will automatically link against shared library if both
+ # static and shared are present. Therefore, ensure we extract
+ # symbols from the import library if a shared library is present
+ # (otherwise, the dlopen module name will be incorrect). We do
+ # this by putting the import library name into $newdlprefiles.
+ # We recover the dlopen module name by 'saving' the la file
+ # name in a special purpose variable, and (later) extracting the
+ # dlname from the la file.
+ if test -n "$dlname"; then
+ func_tr_sh "$dir/$linklib"
+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+ func_append newdlprefiles " $dir/$linklib"
+ else
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ fi
+ ;;
+ * )
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ func_append newdlprefiles " $dir/$dlname"
+ else
+ func_append newdlprefiles " $dir/$linklib"
+ fi
+ ;;
+ esac
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test lib = "$linkmode"; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test prog,link = "$linkmode,$pass"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test prog = "$linkmode" && test link != "$pass"; then
+ func_append newlib_search_path " $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=false
+ if test no != "$link_all_deplibs" || test -z "$library_names" ||
+ test no = "$build_libtool_libs"; then
+ linkalldeplibs=:
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
+ ;;
+ esac
+ # Need to link against all dependency_libs?
+ if $linkalldeplibs; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if $opt_preserve_dup_deps; then
+ case "$tmp_libs " in
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+ esac
+ fi
+ func_append tmp_libs " $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test prog,link = "$linkmode,$pass"; then
+ if test -n "$library_names" &&
+ { { test no = "$prefer_static_libs" ||
+ test built,yes = "$prefer_static_libs,$installed"; } ||
+ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
+ # Make sure the rpath contains only unique directories.
+ case $temp_rpath: in
+ *"$absdir:"*) ;;
+ *) func_append temp_rpath "$absdir:" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if $alldeplibs &&
+ { test pass_all = "$deplibs_check_method" ||
+ { test yes = "$build_libtool_libs" &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test built = "$use_static_libs" && test yes = "$installed"; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test no = "$use_static_libs" || test -z "$old_library"; }; then
+ case $host in
+ *cygwin* | *mingw* | *cegcc* | *os2*)
+ # No point in relinking DLLs because paths are not encoded
+ func_append notinst_deplibs " $lib"
+ need_relink=no
+ ;;
+ *)
+ if test no = "$installed"; then
+ func_append notinst_deplibs " $lib"
+ need_relink=yes
+ fi
+ ;;
+ esac
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on some
+ # systems (darwin). Don't bleat about dlopened modules though!
+ dlopenmodule=
+ for dlpremoduletest in $dlprefiles; do
+ if test "X$dlpremoduletest" = "X$lib"; then
+ dlopenmodule=$dlpremoduletest
+ break
+ fi
+ done
+ if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
+ echo
+ if test prog = "$linkmode"; then
+ $ECHO "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $ECHO "*** $linklib is not portable!"
+ fi
+ if test lib = "$linkmode" &&
+ test yes = "$hardcode_into_libs"; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) func_append compile_rpath " $absdir" ;;
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ shift
+ realname=$1
+ shift
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname=$dlname
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw* | *cegcc* | *os2*)
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix=-$major
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname=$realname
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot=$soname
+ func_basename "$soroot"
+ soname=$func_basename_result
+ func_stripname 'lib' '.dll' "$soname"
+ newlib=libimp-$func_stripname_result.a
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ func_verbose "extracting exported symbol list from '$soname'"
+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ func_verbose "generating import library for '$soname'"
+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test prog = "$linkmode" || test relink != "$opt_mode"; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test no = "$hardcode_direct"; then
+ add=$dir/$linklib
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+ *-*-sysv4*uw2*) add_dir=-L$dir ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir=-L$dir ;;
+ *-*-darwin* )
+ # if the lib is a (non-dlopened) module then we cannot
+ # link against it, someone is ignoring the earlier warnings
+ if /usr/bin/file -L $add 2> /dev/null |
+ $GREP ": [^:]* bundle" >/dev/null; then
+ if test "X$dlopenmodule" != "X$lib"; then
+ $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+ if test -z "$old_library"; then
+ echo
+ echo "*** And there doesn't seem to be a static archive available"
+ echo "*** The link will probably fail, sorry"
+ else
+ add=$dir/$old_library
+ fi
+ elif test -n "$old_library"; then
+ add=$dir/$old_library
+ fi
+ fi
+ esac
+ elif test no = "$hardcode_minus_L"; then
+ case $host in
+ *-*-sunos*) add_shlibpath=$dir ;;
+ esac
+ add_dir=-L$dir
+ add=-l$name
+ elif test no = "$hardcode_shlibpath_var"; then
+ add_shlibpath=$dir
+ add=-l$name
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test yes = "$hardcode_direct" &&
+ test no = "$hardcode_direct_absolute"; then
+ add=$dir/$linklib
+ elif test yes = "$hardcode_minus_L"; then
+ add_dir=-L$absdir
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add=-l$name
+ elif test yes = "$hardcode_shlibpath_var"; then
+ add_shlibpath=$dir
+ add=-l$name
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test yes != "$lib_linked"; then
+ func_fatal_configuration "unsupported hardcode properties"
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) func_append compile_shlibpath "$add_shlibpath:" ;;
+ esac
+ fi
+ if test prog = "$linkmode"; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test yes != "$hardcode_direct" &&
+ test yes != "$hardcode_minus_L" &&
+ test yes = "$hardcode_shlibpath_var"; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test prog = "$linkmode" || test relink = "$opt_mode"; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test yes = "$hardcode_direct" &&
+ test no = "$hardcode_direct_absolute"; then
+ add=$libdir/$linklib
+ elif test yes = "$hardcode_minus_L"; then
+ add_dir=-L$libdir
+ add=-l$name
+ elif test yes = "$hardcode_shlibpath_var"; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
+ esac
+ add=-l$name
+ elif test yes = "$hardcode_automatic"; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib"; then
+ add=$inst_prefix_dir$libdir/$linklib
+ else
+ add=$libdir/$linklib
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir=-L$libdir
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ func_append add_dir " -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add=-l$name
+ fi
+
+ if test prog = "$linkmode"; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test prog = "$linkmode"; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test unsupported != "$hardcode_direct"; then
+ test -n "$old_library" && linklib=$old_library
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test yes = "$build_libtool_libs"; then
+ # Not a shared library
+ if test pass_all != "$deplibs_check_method"; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ echo
+ $ECHO "*** Warning: This system cannot link to static lib archive $lib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have."
+ if test yes = "$module"; then
+ echo "*** But as you try to build a module library, libtool will still create "
+ echo "*** a static module, that should work as long as the dlopening application"
+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ echo
+ echo "*** However, this would only work if libtool was able to extract symbol"
+ echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+ echo "*** not find such a program. So, this module is probably useless."
+ echo "*** 'nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test no = "$build_old_libs"; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test lib = "$linkmode"; then
+ if test -n "$dependency_libs" &&
+ { test yes != "$hardcode_into_libs" ||
+ test yes = "$build_old_libs" ||
+ test yes = "$link_static"; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) func_stripname '-R' '' "$libdir"
+ temp_xrpath=$func_stripname_result
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) func_append xrpath " $temp_xrpath";;
+ esac;;
+ *) func_append temp_deplibs " $libdir";;
+ esac
+ done
+ dependency_libs=$temp_deplibs
+ fi
+
+ func_append newlib_search_path " $absdir"
+ # Link against this library
+ test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result";;
+ *) func_resolve_sysroot "$deplib" ;;
+ esac
+ if $opt_preserve_dup_deps; then
+ case "$tmp_libs " in
+ *" $func_resolve_sysroot_result "*)
+ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+ esac
+ fi
+ func_append tmp_libs " $func_resolve_sysroot_result"
+ done
+
+ if test no != "$link_all_deplibs"; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ path=
+ case $deplib in
+ -L*) path=$deplib ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ deplib=$func_resolve_sysroot_result
+ func_dirname "$deplib" "" "."
+ dir=$func_dirname_result
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ func_warning "cannot determine absolute directory name of '$dir'"
+ absdir=$dir
+ fi
+ ;;
+ esac
+ if $GREP "^installed=no" $deplib > /dev/null; then
+ case $host in
+ *-*-darwin*)
+ depdepl=
+ eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names"; then
+ for tmp in $deplibrary_names; do
+ depdepl=$tmp
+ done
+ if test -f "$absdir/$objdir/$depdepl"; then
+ depdepl=$absdir/$objdir/$depdepl
+ darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ if test -z "$darwin_install_name"; then
+ darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+ fi
+ func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+ func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
+ path=
+ fi
+ fi
+ ;;
+ *)
+ path=-L$absdir/$objdir
+ ;;
+ esac
+ else
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ test -z "$libdir" && \
+ func_fatal_error "'$deplib' is not a valid libtool archive"
+ test "$absdir" != "$libdir" && \
+ func_warning "'$deplib' seems to be moved"
+
+ path=-L$absdir
+ fi
+ ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ if test link = "$pass"; then
+ if test prog = "$linkmode"; then
+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ fi
+ fi
+ dependency_libs=$newdependency_libs
+ if test dlpreopen = "$pass"; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test dlopen != "$pass"; then
+ test conv = "$pass" || {
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) func_append lib_search_path " $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ }
+
+ if test prog,link = "$linkmode,$pass"; then
+ vars="compile_deplibs finalize_deplibs"
+ else
+ vars=deplibs
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) func_append tmp_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append tmp_libs " $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=
+ ;;
+ esac
+ if test -n "$i"; then
+ func_append tmp_libs " $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test prog = "$linkmode"; then
+ dlfiles=$newdlfiles
+ fi
+ if test prog = "$linkmode" || test lib = "$linkmode"; then
+ dlprefiles=$newdlprefiles
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+ func_warning "'-dlopen' is ignored for archives"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "'-l' and '-L' are ignored for archives" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "'-rpath' is ignored for archives"
+
+ test -n "$xrpath" && \
+ func_warning "'-R' is ignored for archives"
+
+ test -n "$vinfo" && \
+ func_warning "'-version-info/-version-number' is ignored for archives"
+
+ test -n "$release" && \
+ func_warning "'-release' is ignored for archives"
+
+ test -n "$export_symbols$export_symbols_regex" && \
+ func_warning "'-export-symbols' is ignored for archives"
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs=$output
+ func_append objs "$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form 'libNAME.la'.
+ case $outputname in
+ lib*)
+ func_stripname 'lib' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ test no = "$module" \
+ && func_fatal_help "libtool library '$output' must begin with 'lib'"
+
+ if test no != "$need_lib_prefix"; then
+ # Add the "lib" prefix for modules if required
+ func_stripname '' '.la' "$outputname"
+ name=$func_stripname_result
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ func_stripname '' '.la' "$outputname"
+ libname=$func_stripname_result
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test pass_all != "$deplibs_check_method"; then
+ func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
+ else
+ echo
+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+ $ECHO "*** objects $objs is not portable!"
+ func_append libobjs " $objs"
+ fi
+ fi
+
+ test no = "$dlself" \
+ || func_warning "'-dlopen self' is ignored for libtool libraries"
+
+ set dummy $rpath
+ shift
+ test 1 -lt "$#" \
+ && func_warning "ignoring multiple '-rpath's for a libtool library"
+
+ install_libdir=$1
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test yes = "$build_libtool_libs"; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a '.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ test -n "$vinfo" && \
+ func_warning "'-version-info/-version-number' is ignored for convenience libraries"
+
+ test -n "$release" && \
+ func_warning "'-release' is ignored for convenience libraries"
+ else
+
+ # Parse the version information argument.
+ save_ifs=$IFS; IFS=:
+ set dummy $vinfo 0 0 0
+ shift
+ IFS=$save_ifs
+
+ test -n "$7" && \
+ func_fatal_help "too many parameters to '-version-info'"
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major=$1
+ number_minor=$2
+ number_revision=$3
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # that has an extra 1 added just for fun
+ #
+ case $version_type in
+ # correct linux to gnu/linux during the next big refactor
+ darwin|freebsd-elf|linux|osf|windows|none)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age=$number_minor
+ revision=$number_revision
+ ;;
+ freebsd-aout|qnx|sunos)
+ current=$number_major
+ revision=$number_minor
+ age=0
+ ;;
+ irix|nonstopux)
+ func_arith $number_major + $number_minor
+ current=$func_arith_result
+ age=$number_minor
+ revision=$number_minor
+ lt_irix_increment=no
+ ;;
+ esac
+ ;;
+ no)
+ current=$1
+ revision=$2
+ age=$3
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "CURRENT '$current' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "REVISION '$revision' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ func_error "AGE '$age' must be a nonnegative integer"
+ func_fatal_error "'$vinfo' is not valid version information"
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ func_error "AGE '$age' is greater than the current interface number '$current'"
+ func_fatal_error "'$vinfo' is not valid version information"
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=$major.$age.$revision
+ # Darwin ld doesn't like 0 for these options...
+ func_arith $current + 1
+ minor_current=$func_arith_result
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+ case $CC in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+ *)
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+ esac
+ ;;
+
+ freebsd-aout)
+ major=.$current
+ versuffix=.$current.$revision
+ ;;
+
+ freebsd-elf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=$major.$age.$revision
+ ;;
+
+ irix | nonstopux)
+ if test no = "$lt_irix_increment"; then
+ func_arith $current - $age
+ else
+ func_arith $current - $age + 1
+ fi
+ major=$func_arith_result
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring=$verstring_prefix$major.$revision
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test 0 -ne "$loop"; do
+ func_arith $revision - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring=$verstring_prefix$major.$iface:$verstring
+ done
+
+ # Before this point, $major must not contain '.'.
+ major=.$major
+ versuffix=$major.$revision
+ ;;
+
+ linux) # correct to gnu/linux during the next big refactor
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=$major.$age.$revision
+ ;;
+
+ osf)
+ func_arith $current - $age
+ major=.$func_arith_result
+ versuffix=.$current.$age.$revision
+ verstring=$current.$age.$revision
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test 0 -ne "$loop"; do
+ func_arith $current - $loop
+ iface=$func_arith_result
+ func_arith $loop - 1
+ loop=$func_arith_result
+ verstring=$verstring:$iface.0
+ done
+
+ # Make executables depend on our current version.
+ func_append verstring ":$current.0"
+ ;;
+
+ qnx)
+ major=.$current
+ versuffix=.$current
+ ;;
+
+ sco)
+ major=.$current
+ versuffix=.$current
+ ;;
+
+ sunos)
+ major=.$current
+ versuffix=.$current.$revision
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 file systems.
+ func_arith $current - $age
+ major=$func_arith_result
+ versuffix=-$major
+ ;;
+
+ *)
+ func_fatal_configuration "unknown library version type '$version_type'"
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring=0.0
+ ;;
+ esac
+ if test no = "$need_version"; then
+ versuffix=
+ else
+ versuffix=.0.0
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test yes,no = "$avoid_version,$need_version"; then
+ major=
+ versuffix=
+ verstring=
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test yes = "$allow_undefined"; then
+ if test unsupported = "$allow_undefined_flag"; then
+ if test yes = "$build_old_libs"; then
+ func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+ build_libtool_libs=no
+ else
+ func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+ fi
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag=$no_undefined_flag
+ fi
+
+ fi
+
+ func_generate_dlsyms "$libname" "$libname" :
+ func_append libobjs " $symfileobj"
+ test " " = "$libobjs" && libobjs=
+
+ if test relink != "$opt_mode"; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$ECHO "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext | *.gcno)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+ if test -n "$precious_files_regex"; then
+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ func_append removelist " $p"
+ ;;
+ *) ;;
+ esac
+ done
+ test -n "$removelist" && \
+ func_show_eval "${RM}r \$removelist"
+ fi
+
+ # Now set the variables for building old libraries.
+ if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
+ func_append oldlibs " $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ #for path in $notinst_path; do
+ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+ # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+ #done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ func_replace_sysroot "$libdir"
+ func_append temp_xrpath " -R$func_replace_sysroot_result"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles=$dlfiles
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) func_append dlfiles " $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles=$dlprefiles
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) func_append dlprefiles " $lib" ;;
+ esac
+ done
+
+ if test yes = "$build_libtool_libs"; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ func_append deplibs " System.ltframework"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test yes = "$build_libtool_need_lc"; then
+ func_append deplibs " -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=
+ versuffix=
+ major=
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $opt_dry_run || $RM conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append newdeplibs " $i"
+ i=
+ ;;
+ esac
+ fi
+ if test -n "$i"; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which I believe you do not have"
+ echo "*** because a test_compile did reveal that the linker did not use it for"
+ echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ case $i in
+ -l*)
+ func_stripname -l '' "$i"
+ name=$func_stripname_result
+ $opt_dry_run || $RM conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ func_append newdeplibs " $i"
+ i=
+ ;;
+ esac
+ fi
+ if test -n "$i"; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+ set dummy $deplib_matches; shift
+ deplib_match=$1
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+ func_append newdeplibs " $i"
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because a test_compile did reveal that the linker did not use this one"
+ echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
+ echo "*** make it link in! You will probably need to install it or some"
+ echo "*** library that it depends on before this library will be fully"
+ echo "*** functional. Installing it before continuing would be even better."
+ fi
+ ;;
+ *)
+ func_append newdeplibs " $i"
+ ;;
+ esac
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method; shift
+ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append newdeplibs " $a_deplib"
+ a_deplib=
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib"; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ if test -n "$file_magic_glob"; then
+ libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+ else
+ libnameglob=$libname
+ fi
+ test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ if test yes = "$want_nocaseglob"; then
+ shopt -s nocaseglob
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ $nocaseglob
+ else
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ fi
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null |
+ $GREP " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib=$potent_lib
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+ *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+ $SED -e 10q |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ func_append newdeplibs " $a_deplib"
+ a_deplib=
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib"; then
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib"; then
+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method; shift
+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+ for a_deplib in $deplibs; do
+ case $a_deplib in
+ -l*)
+ func_stripname -l '' "$a_deplib"
+ name=$func_stripname_result
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ func_append newdeplibs " $a_deplib"
+ a_deplib=
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib"; then
+ libname=`eval "\\$ECHO \"$libname_spec\""`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib=$potent_lib # see symlink-check above in file_magic test
+ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+ $EGREP "$match_pattern_regex" > /dev/null; then
+ func_append newdeplibs " $a_deplib"
+ a_deplib=
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib"; then
+ droppeddeps=yes
+ echo
+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib"; then
+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $ECHO "*** with $libname and none of the candidates passed a file format test"
+ $ECHO "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ ;;
+ *)
+ # Add a -L argument.
+ func_append newdeplibs " $a_deplib"
+ ;;
+ esac
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=
+ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+ if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+ for i in $predeps $postdeps; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
+ done
+ fi
+ case $tmp_deplibs in
+ *[!\ \ ]*)
+ echo
+ if test none = "$deplibs_check_method"; then
+ echo "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ echo "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ echo "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ ;;
+ esac
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library with the System framework
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ if test yes = "$droppeddeps"; then
+ if test yes = "$module"; then
+ echo
+ echo "*** Warning: libtool could not satisfy all declared inter-library"
+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
+ echo "*** a static module, that should work as long as the dlopening"
+ echo "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ echo
+ echo "*** However, this would only work if libtool was able to extract symbol"
+ echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+ echo "*** not find such a program. So, this module is probably useless."
+ echo "*** 'nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test no = "$build_old_libs"; then
+ oldlibs=$output_objdir/$libname.$libext
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ echo "*** The inter-library dependencies that have been dropped here will be"
+ echo "*** automatically added whenever a program is linked with this library"
+ echo "*** or is declared to -dlopen it."
+
+ if test no = "$allow_undefined"; then
+ echo
+ echo "*** Since this library must not contain undefined symbols,"
+ echo "*** because either the platform does not support them or"
+ echo "*** it was explicitly requested with -no-undefined,"
+ echo "*** libtool will only create a static version of it."
+ if test no = "$build_old_libs"; then
+ oldlibs=$output_objdir/$libname.$libext
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ case $host in
+ *-*-darwin*)
+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ deplibs=$new_libs
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test yes = "$build_libtool_libs"; then
+ # Remove $wl instances when linking with ld.
+ # FIXME: should test the right _cmds variable.
+ case $archive_cmds in
+ *\$LD\ *) wl= ;;
+ esac
+ if test yes = "$hardcode_into_libs"; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath=$finalize_rpath
+ test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ func_replace_sysroot "$libdir"
+ libdir=$func_replace_sysroot_result
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append dep_rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir=$hardcode_libdirs
+ eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ func_append rpath "$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath=$finalize_shlibpath
+ test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ shift
+ realname=$1
+ shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname=$realname
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib=$output_objdir/$realname
+ linknames=
+ for link
+ do
+ func_append linknames " $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ test "X$libobjs" = "X " && libobjs=
+
+ delfiles=
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+ export_symbols=$output_objdir/$libname.uexp
+ func_append delfiles " $export_symbols"
+ fi
+
+ orig_export_symbols=
+ case $host_os in
+ cygwin* | mingw* | cegcc*)
+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+ # exporting using user supplied symfile
+ func_dll_def_p "$export_symbols" || {
+ # and it's NOT already a .def file. Must figure out
+ # which of the given symbols are data symbols and tag
+ # them as such. So, trigger use of export_symbols_cmds.
+ # export_symbols gets reassigned inside the "prepare
+ # the list of exported symbols" if statement, so the
+ # include_expsyms logic still works.
+ orig_export_symbols=$export_symbols
+ export_symbols=
+ always_export_symbols=yes
+ }
+ fi
+ ;;
+ esac
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+ func_verbose "generating symbol list for '$libname.la'"
+ export_symbols=$output_objdir/$libname.exp
+ $opt_dry_run || $RM $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs=$IFS; IFS='~'
+ for cmd1 in $cmds; do
+ IFS=$save_ifs
+ # Take the normal branch if the nm_file_list_spec branch
+ # doesn't work or if tool conversion is not needed.
+ case $nm_file_list_spec~$to_tool_file_cmd in
+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+ try_normal_branch=yes
+ eval cmd=\"$cmd1\"
+ func_len " $cmd"
+ len=$func_len_result
+ ;;
+ *)
+ try_normal_branch=no
+ ;;
+ esac
+ if test yes = "$try_normal_branch" \
+ && { test "$len" -lt "$max_cmd_len" \
+ || test "$max_cmd_len" -le -1; }
+ then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ elif test -n "$nm_file_list_spec"; then
+ func_basename "$output"
+ output_la=$func_basename_result
+ save_libobjs=$libobjs
+ save_output=$output
+ output=$output_objdir/$output_la.nm
+ func_to_tool_file "$output"
+ libobjs=$nm_file_list_spec$func_to_tool_file_result
+ func_append delfiles " $output"
+ func_verbose "creating $NM input file list: $output"
+ for obj in $save_libobjs; do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > "$output"
+ eval cmd=\"$cmd1\"
+ func_show_eval "$cmd" 'exit $?'
+ output=$save_output
+ libobjs=$save_libobjs
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ func_verbose "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS=$save_ifs
+ if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols=$export_symbols
+ test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands, which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ func_append tmp_deplibs " $test_deplib"
+ ;;
+ esac
+ done
+ deplibs=$tmp_deplibs
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec" &&
+ test yes = "$compiler_needs_object" &&
+ test -z "$libobjs"; then
+ # extract the archives, so we have objects to list.
+ # TODO: could optimize this to just extract one archive.
+ whole_archive_flag_spec=
+ fi
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ else
+ gentop=$output_objdir/${outputname}x
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ fi
+
+ if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ func_append linker_flags " $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test relink = "$opt_mode"; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test yes = "$module" && test -n "$module_cmds"; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test : != "$skipped_export" &&
+ func_len " $test_cmds" &&
+ len=$func_len_result &&
+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise
+ # or, if using GNU ld and skipped_export is not :, use a linker
+ # script.
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ func_basename "$output"
+ output_la=$func_basename_result
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ last_robj=
+ k=1
+
+ if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+ output=$output_objdir/$output_la.lnkscript
+ func_verbose "creating GNU ld script: $output"
+ echo 'INPUT (' > $output
+ for obj in $save_libobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ echo ')' >> $output
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$func_to_tool_file_result
+ elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+ output=$output_objdir/$output_la.lnk
+ func_verbose "creating linker input file list: $output"
+ : > $output
+ set x $save_libobjs
+ shift
+ firstobj=
+ if test yes = "$compiler_needs_object"; then
+ firstobj="$1 "
+ shift
+ fi
+ for obj
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
+ done
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+ else
+ if test -n "$save_libobjs"; then
+ func_verbose "creating reloadable object files..."
+ output=$output_objdir/$output_la-$k.$objext
+ eval test_cmds=\"$reload_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ if test -z "$objlist" ||
+ test "$len" -lt "$max_cmd_len"; then
+ func_append objlist " $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test 1 -eq "$k"; then
+ # The first file doesn't have a previous command to add.
+ reload_objs=$objlist
+ eval concat_cmds=\"$reload_cmds\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-$k.$objext
+ func_arith $k + 1
+ k=$func_arith_result
+ output=$output_objdir/$output_la-$k.$objext
+ objlist=" $obj"
+ func_len " $last_robj"
+ func_arith $len0 + $func_len_result
+ len=$func_arith_result
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ reload_objs="$objlist $last_robj"
+ eval concat_cmds=\"\$concat_cmds$reload_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ func_append delfiles " $output"
+
+ else
+ output=
+ fi
+
+ ${skipped_export-false} && {
+ func_verbose "generating symbol list for '$libname.la'"
+ export_symbols=$output_objdir/$libname.exp
+ $opt_dry_run || $RM $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+ if test -n "$last_robj"; then
+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+ fi
+ }
+
+ test -n "$save_libobjs" &&
+ func_verbose "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs=$IFS; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS=$save_ifs
+ $opt_quiet || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test relink = "$opt_mode"; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS=$save_ifs
+
+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+
+ ${skipped_export-false} && {
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ tmp_export_symbols=$export_symbols
+ test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+ fi
+
+ if test -n "$orig_export_symbols"; then
+ # The given exports_symbols file has to be filtered, so filter it.
+ func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+ # FIXME: $output_objdir/$libname.filter potentially contains lots of
+ # 's' commands, which not all seds can handle. GNU sed should be fine
+ # though. Also, the filter scales superlinearly with the number of
+ # global variables. join(1) would be nice here, but unfortunately
+ # isn't a blessed tool.
+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+ export_symbols=$output_objdir/$libname.def
+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+ fi
+ }
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test yes = "$module" && test -n "$module_cmds"; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+ fi
+
+ if test -n "$delfiles"; then
+ # Append the command to remove temporary files to $cmds.
+ eval cmds=\"\$cmds~\$RM $delfiles\"
+ fi
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop=$output_objdir/${outputname}x
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append libobjs " $func_extract_archives_result"
+ test "X$libobjs" = "X " && libobjs=
+ fi
+
+ save_ifs=$IFS; IFS='~'
+ for cmd in $cmds; do
+ IFS=$sp$nl
+ eval cmd=\"$cmd\"
+ IFS=$save_ifs
+ $opt_quiet || {
+ func_quote_for_expand "$cmd"
+ eval "func_echo $func_quote_for_expand_result"
+ }
+ $opt_dry_run || eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test relink = "$opt_mode"; then
+ ( cd "$output_objdir" && \
+ $RM "${realname}T" && \
+ $MV "${realname}U" "$realname" )
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS=$save_ifs
+
+ # Restore the uninstalled library and exit
+ if test relink = "$opt_mode"; then
+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test yes = "$module" || test yes = "$export_dynamic"; then
+ # On all known operating systems, these are identical.
+ dlname=$soname
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+ func_warning "'-dlopen' is ignored for objects"
+ fi
+
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ func_warning "'-l' and '-L' are ignored for objects" ;;
+ esac
+
+ test -n "$rpath" && \
+ func_warning "'-rpath' is ignored for objects"
+
+ test -n "$xrpath" && \
+ func_warning "'-R' is ignored for objects"
+
+ test -n "$vinfo" && \
+ func_warning "'-version-info' is ignored for objects"
+
+ test -n "$release" && \
+ func_warning "'-release' is ignored for objects"
+
+ case $output in
+ *.lo)
+ test -n "$objs$old_deplibs" && \
+ func_fatal_error "cannot build library object '$output' from non-libtool objects"
+
+ libobj=$output
+ func_lo2o "$libobj"
+ obj=$func_lo2o_result
+ ;;
+ *)
+ libobj=
+ obj=$output
+ ;;
+ esac
+
+ # Delete the old objects.
+ $opt_dry_run || $RM $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # if reload_cmds runs $LD directly, get rid of -Wl from
+ # whole_archive_flag_spec and hope we can get by with turning comma
+ # into space.
+ case $reload_cmds in
+ *\$LD[\ \$]*) wl= ;;
+ esac
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+ reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
+ else
+ gentop=$output_objdir/${obj}x
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # If we're not building shared, we need to use non_pic_objs
+ test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
+
+ # Create the old-style object.
+ reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
+
+ output=$obj
+ func_execute_cmds "$reload_cmds" 'exit $?'
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ test yes = "$build_libtool_libs" || {
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ }
+
+ if test -n "$pic_flag" || test default != "$pic_mode"; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output=$libobj
+ func_execute_cmds "$reload_cmds" 'exit $?'
+ fi
+
+ if test -n "$gentop"; then
+ func_show_eval '${RM}r "$gentop"'
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result.exe;;
+ esac
+ test -n "$vinfo" && \
+ func_warning "'-version-info' is ignored for programs"
+
+ test -n "$release" && \
+ func_warning "'-release' is ignored for programs"
+
+ $preload \
+ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+ ;;
+ esac
+
+ case $host in
+ *-*-darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ # But is supposedly fixed on 10.4 or later (yay!).
+ if test CXX = "$tagname"; then
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+ 10.[0123])
+ func_append compile_command " $wl-bind_at_load"
+ func_append finalize_command " $wl-bind_at_load"
+ ;;
+ esac
+ fi
+ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ func_append new_libs " -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ ;;
+ *) func_append new_libs " $deplib" ;;
+ esac
+ done
+ compile_deplibs=$new_libs
+
+
+ func_append compile_command " $compile_deplibs"
+ func_append finalize_command " $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_rpath " $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append perm_rpath " $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+ testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ ::) dllsearchpath=$libdir;;
+ *) func_append dllsearchpath ":$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ ::) dllsearchpath=$testbindir;;
+ *) func_append dllsearchpath ":$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir=$hardcode_libdirs
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath=$rpath
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ func_append rpath " $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) func_append finalize_perm_rpath " $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir=$hardcode_libdirs
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath=$rpath
+
+ if test -n "$libobjs" && test yes = "$build_old_libs"; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+ fi
+
+ func_generate_dlsyms "$outputname" "@PROGRAM@" false
+
+ # template prelinking step
+ if test -n "$prelink_cmds"; then
+ func_execute_cmds "$prelink_cmds" 'exit $?'
+ fi
+
+ wrappers_required=:
+ case $host in
+ *cegcc* | *mingw32ce*)
+ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+ wrappers_required=false
+ ;;
+ *cygwin* | *mingw* )
+ test yes = "$build_libtool_libs" || wrappers_required=false
+ ;;
+ *)
+ if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+ wrappers_required=false
+ fi
+ ;;
+ esac
+ $wrappers_required || {
+ # Replace the output file specification.
+ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ link_command=$compile_command$compile_rpath
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ exit_status=0
+ func_show_eval "$link_command" 'exit_status=$?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Delete the generated files.
+ if test -f "$output_objdir/${outputname}S.$objext"; then
+ func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
+ fi
+
+ exit $exit_status
+ }
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ func_append rpath "$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ func_append rpath "$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test yes = "$no_install"; then
+ # We don't need to create a wrapper script.
+ link_command=$compile_var$compile_command$compile_rpath
+ # Replace the output file specification.
+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $opt_dry_run || $RM $output
+ # Link the executable and exit
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ case $hardcode_action,$fast_install in
+ relink,*)
+ # Fast installation is not supported
+ link_command=$compile_var$compile_command$compile_rpath
+ relink_command=$finalize_var$finalize_command$finalize_rpath
+
+ func_warning "this platform does not like uninstalled shared libraries"
+ func_warning "'$output' will be relinked during installation"
+ ;;
+ *,yes)
+ link_command=$finalize_var$compile_command$finalize_rpath
+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+ ;;
+ *,no)
+ link_command=$compile_var$compile_command$compile_rpath
+ relink_command=$finalize_var$finalize_command$finalize_rpath
+ ;;
+ *,needless)
+ link_command=$finalize_var$compile_command$finalize_rpath
+ relink_command=
+ ;;
+ esac
+
+ # Replace the output file specification.
+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output_objdir/$outputname"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
+ # Now create the wrapper script.
+ func_verbose "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if not in dry run mode.
+ $opt_dry_run || {
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) func_stripname '' '.exe' "$output"
+ output=$func_stripname_result ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ func_stripname '' '.exe' "$outputname"
+ outputname=$func_stripname_result ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ func_dirname_and_basename "$output" "" "."
+ output_name=$func_basename_result
+ output_path=$func_dirname_result
+ cwrappersource=$output_path/$objdir/lt-$output_name.c
+ cwrapper=$output_path/$output_name.exe
+ $RM $cwrappersource $cwrapper
+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_cwrapperexe_src > $cwrappersource
+
+ # The wrapper executable is built using the $host compiler,
+ # because it contains $host paths and files. If cross-
+ # compiling, it, like the target executable, must be
+ # executed on the $host or under an emulation environment.
+ $opt_dry_run || {
+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+ $STRIP $cwrapper
+ }
+
+ # Now, create the wrapper script for func_source use:
+ func_ltwrapper_scriptname $cwrapper
+ $RM $func_ltwrapper_scriptname_result
+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+ $opt_dry_run || {
+ # note: this script will not be executed, so do not chmod.
+ if test "x$build" = "x$host"; then
+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+ else
+ func_emit_wrapper no > $func_ltwrapper_scriptname_result
+ fi
+ }
+ ;;
+ * )
+ $RM $output
+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+ func_emit_wrapper no > $output
+ chmod +x $output
+ ;;
+ esac
+ }
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ case $build_libtool_libs in
+ convenience)
+ oldobjs="$libobjs_save $symfileobj"
+ addlibs=$convenience
+ build_libtool_libs=no
+ ;;
+ module)
+ oldobjs=$libobjs_save
+ addlibs=$old_convenience
+ build_libtool_libs=no
+ ;;
+ *)
+ oldobjs="$old_deplibs $non_pic_objects"
+ $preload && test -f "$symfileobj" \
+ && func_append oldobjs " $symfileobj"
+ addlibs=$old_convenience
+ ;;
+ esac
+
+ if test -n "$addlibs"; then
+ gentop=$output_objdir/${outputname}x
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $addlibs
+ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
+ cmds=$old_archive_from_new_cmds
+ else
+
+ # Add any objects from preloaded convenience libraries
+ if test -n "$dlprefiles"; then
+ gentop=$output_objdir/${outputname}x
+ func_append generated " $gentop"
+
+ func_extract_archives $gentop $dlprefiles
+ func_append oldobjs " $func_extract_archives_result"
+ fi
+
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ func_basename "$obj"
+ $ECHO "$func_basename_result"
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ echo "copying selected object files to avoid basename conflicts..."
+ gentop=$output_objdir/${outputname}x
+ func_append generated " $gentop"
+ func_mkdir_p "$gentop"
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ func_basename "$obj"
+ objbase=$func_basename_result
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ func_arith $counter + 1
+ counter=$func_arith_result
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ func_append oldobjs " $gentop/$newobj"
+ ;;
+ *) func_append oldobjs " $obj" ;;
+ esac
+ done
+ fi
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
+ eval cmds=\"$old_archive_cmds\"
+
+ func_len " $cmds"
+ len=$func_len_result
+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ elif test -n "$archiver_list_spec"; then
+ func_verbose "using command file archive linking..."
+ for obj in $oldobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > $output_objdir/$libname.libcmd
+ func_to_tool_file "$output_objdir/$libname.libcmd"
+ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ func_verbose "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ oldobjs=
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ eval test_cmds=\"$old_archive_cmds\"
+ func_len " $test_cmds"
+ len0=$func_len_result
+ len=$len0
+ for obj in $save_oldobjs
+ do
+ func_len " $obj"
+ func_arith $len + $func_len_result
+ len=$func_arith_result
+ func_append objlist " $obj"
+ if test "$len" -lt "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj"; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
+ objlist=
+ len=$len0
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test -z "$oldobjs"; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ func_execute_cmds "$cmds" 'exit $?'
+ done
+
+ test -n "$generated" && \
+ func_show_eval "${RM}r$generated"
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test yes = "$build_old_libs" && old_library=$libname.$libext
+ func_verbose "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ func_quote_for_eval "$var_value"
+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+ if test yes = "$hardcode_automatic"; then
+ relink_command=
+ fi
+
+ # Only create the output if not a dry run.
+ $opt_dry_run || {
+ for installed in no yes; do
+ if test yes = "$installed"; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output=$output_objdir/${outputname}i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ func_basename "$deplib"
+ name=$func_basename_result
+ func_resolve_sysroot "$deplib"
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+ test -z "$libdir" && \
+ func_fatal_error "'$deplib' is not a valid libtool archive"
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ -L*)
+ func_stripname -L '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+ -R*)
+ func_stripname -R '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -R$func_replace_sysroot_result"
+ ;;
+ *) func_append newdependency_libs " $deplib" ;;
+ esac
+ done
+ dependency_libs=$newdependency_libs
+ newdlfiles=
+
+ for lib in $dlfiles; do
+ case $lib in
+ *.la)
+ func_basename "$lib"
+ name=$func_basename_result
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "'$lib' is not a valid libtool archive"
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ *) func_append newdlfiles " $lib" ;;
+ esac
+ done
+ dlfiles=$newdlfiles
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ *.la)
+ # Only pass preopened files to the pseudo-archive (for
+ # eventual linking with the app. that links it) if we
+ # didn't already link the preopened objects directly into
+ # the library:
+ func_basename "$lib"
+ name=$func_basename_result
+ eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ test -z "$libdir" && \
+ func_fatal_error "'$lib' is not a valid libtool archive"
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ esac
+ done
+ dlprefiles=$newdlprefiles
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlfiles " $abs"
+ done
+ dlfiles=$newdlfiles
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ func_append newdlprefiles " $abs"
+ done
+ dlprefiles=$newdlprefiles
+ fi
+ $RM $output
+ # place dlname in correct position for cygwin
+ # In fact, it would be nice if we could use this code for all target
+ # systems that can't hard-code library paths into their executables
+ # and that have no shared library path variable independent of PATH,
+ # but it turns out we can't easily determine that from inspecting
+ # libtool variables, so we have to hard-code the OSs to which it
+ # applies here; at the moment, that means platforms that use the PE
+ # object format with DLL files. See the long comment at the top of
+ # tests/bindir.at for full details.
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+ # If a -bindir argument was supplied, place the dll there.
+ if test -n "$bindir"; then
+ func_relative_path "$install_libdir" "$bindir"
+ tdlname=$func_relative_path_result/$dlname
+ else
+ # Otherwise fall back on heuristic.
+ tdlname=../bin/$dlname
+ fi
+ ;;
+ esac
+ $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test no,yes = "$installed,$need_relink"; then
+ $ECHO >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ }
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+}
+
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+ func_mode_link ${1+"$@"}
+fi
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+ $debug_cmd
+
+ RM=$nonopt
+ files=
+ rmforce=false
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic=$magic
+
+ for arg
+ do
+ case $arg in
+ -f) func_append RM " $arg"; rmforce=: ;;
+ -*) func_append RM " $arg" ;;
+ *) func_append files " $arg" ;;
+ esac
+ done
+
+ test -z "$RM" && \
+ func_fatal_help "you must specify an RM program"
+
+ rmdirs=
+
+ for file in $files; do
+ func_dirname "$file" "" "."
+ dir=$func_dirname_result
+ if test . = "$dir"; then
+ odir=$objdir
+ else
+ odir=$dir/$objdir
+ fi
+ func_basename "$file"
+ name=$func_basename_result
+ test uninstall = "$opt_mode" && odir=$dir
+
+ # Remember odir for removal later, being careful to avoid duplicates
+ if test clean = "$opt_mode"; then
+ case " $rmdirs " in
+ *" $odir "*) ;;
+ *) func_append rmdirs " $odir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if { test -L "$file"; } >/dev/null 2>&1 ||
+ { test -h "$file"; } >/dev/null 2>&1 ||
+ test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif $rmforce; then
+ continue
+ fi
+
+ rmfiles=$file
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if func_lalib_p "$file"; then
+ func_source $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ func_append rmfiles " $odir/$n"
+ done
+ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+ case $opt_mode in
+ clean)
+ case " $library_names " in
+ *" $dlname "*) ;;
+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+ esac
+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if func_lalib_p "$file"; then
+
+ # Read the .lo file
+ func_source $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" && test none != "$pic_object"; then
+ func_append rmfiles " $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" && test none != "$non_pic_object"; then
+ func_append rmfiles " $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test clean = "$opt_mode"; then
+ noexename=$name
+ case $file in
+ *.exe)
+ func_stripname '' '.exe' "$file"
+ file=$func_stripname_result
+ func_stripname '' '.exe' "$name"
+ noexename=$func_stripname_result
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ func_append rmfiles " $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if func_ltwrapper_p "$file"; then
+ if func_ltwrapper_executable_p "$file"; then
+ func_ltwrapper_scriptname "$file"
+ relink_command=
+ func_source $func_ltwrapper_scriptname_result
+ func_append rmfiles " $func_ltwrapper_scriptname_result"
+ else
+ relink_command=
+ func_source $dir/$noexename
+ fi
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+ if test yes = "$fast_install" && test -n "$relink_command"; then
+ func_append rmfiles " $odir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name"; then
+ func_append rmfiles " $odir/lt-$noexename.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ func_show_eval "$RM $rmfiles" 'exit_status=1'
+ done
+
+ # Try to remove the $objdir's in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ func_show_eval "rmdir $dir >/dev/null 2>&1"
+ fi
+ done
+
+ exit $exit_status
+}
+
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+ func_mode_uninstall ${1+"$@"}
+fi
+
+test -z "$opt_mode" && {
+ help=$generic_help
+ func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+ func_fatal_help "invalid operation mode '$opt_mode'"
+
+if test -n "$exec_cmd"; then
+ eval exec "$exec_cmd"
+ exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# where we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644
index 0000000..9c089e0
--- /dev/null
+++ b/m4/libtool.m4
@@ -0,0 +1,8318 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996-2001, 2003-2014 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the same
+# distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+])
+
+# serial 58 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS=$ltmain
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+m4_require([_LT_CMD_TRUNCATE])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options that allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}"; then
+ setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}"; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test set != "${COLLECT_NAMES+set}"; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a '.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+old_CC=$CC
+old_CFLAGS=$CFLAGS
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from 'configure', and 'config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain=$ac_aux_dir/ltmain.sh
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the 'libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to 'config.status' so that its
+# declaration there will have the same value as in 'configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags='_LT_TAGS'dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into 'config.status', and then the shell code to quote escape them in
+# for loops in 'config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable. If COMMENT is supplied, it is inserted after the
+# '#!' sequence but before initialization text begins. After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script. The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test 0 = "$lt_write_fail" && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+'$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test 0 != $[#]
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try '$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try '$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test yes = "$silent" &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars. Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # See if we are running on zsh, and set the options that allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}"; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile=${ofile}T
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+# Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test set != "${COLLECT_NAMES+set}"; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+ _LT_PROG_LTMAIN
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Go], [_LT_LANG(GO)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_GO. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC], [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+ fi
+fi
+if test -z "$GOC"; then
+ AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+ [LT_LANG(GO)],
+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "$LT_MULTI_MODULE"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS=$save_LDFLAGS
+ ])
+
+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+ [lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]][[,.]]*)
+ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test yes = "$lt_cv_apple_cc_single_mod"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test yes = "$lt_cv_ld_exported_symbols_list"; then
+ _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+ fi
+ if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ if test yes = "$lt_cv_ld_force_load"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
+ case $cc_basename in
+ ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test yes = "$_lt_dar_can_shared"; then
+ output_verbose_link_cmd=func_echo_all
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+ m4_if([$1], [CXX],
+[ if test yes != "$lt_cv_apple_cc_single_mod"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test set = "${lt_cv_aix_libpath+set}"; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+ lt_aix_libpath_sed='[
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }]'
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi],[])
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
+ fi
+ ])
+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script that will find a shell with a builtin
+# printf (that we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+case $ECHO in
+ printf*) AC_MSG_RESULT([printf]) ;;
+ print*) AC_MSG_RESULT([print -r]) ;;
+ *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test "X`printf %s $ECHO`" = "X$ECHO" \
+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
+ [Search for dependent libraries within DIR (or the compiler's sysroot
+ if not specified).])],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted. We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case $with_sysroot in #(
+ yes)
+ if test yes = "$GCC"; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ AC_MSG_RESULT([$with_sysroot])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
+ ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and where our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out what ABI is being produced by ac_compile, and set mode
+ # options accordingly.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE=32
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE=64
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test yes = "$lt_cv_prog_gnu_ld"; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+mips64*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ emul=elf
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ emul="${emul}32"
+ ;;
+ *64-bit*)
+ emul="${emul}64"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *MSB*)
+ emul="${emul}btsmip"
+ ;;
+ *LSB*)
+ emul="${emul}ltsmip"
+ ;;
+ esac
+ case `/usr/bin/file conftest.$ac_objext` in
+ *N32*)
+ emul="${emul}n32"
+ ;;
+ esac
+ LD="${LD-ld} -m $emul"
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly. Note that the listed cases only cover the
+ # situations where additional linker options are needed (such as when
+ # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+ # vice versa); the common cases where no linker options are needed do
+ # not appear in the list.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ case `/usr/bin/file conftest.o` in
+ *x86-64*)
+ LD="${LD-ld} -m elf32_x86_64"
+ ;;
+ *)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ esac
+ ;;
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test yes != "$lt_cv_cc_needs_belf"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS=$SAVE_CFLAGS
+ fi
+ ;;
+*-*solaris*)
+ # Find out what ABI is being produced by ac_compile, and set linker
+ # options accordingly.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*)
+ case $host in
+ i?86-*-solaris*|x86_64-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD=${LD-ld}_sol2
+ fi
+ ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks=$enable_libtool_lock
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+ [echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([lt_ar_try])
+ if test 0 -eq "$ac_status"; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ AC_TRY_EVAL([lt_ar_try])
+ if test 0 -ne "$ac_status"; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+ ])
+ ])
+
+if test no = "$lt_cv_ar_at_file"; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+ [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ bitrig* | openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+ [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test yes = "[$]$2"; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS=$save_LDFLAGS
+])
+
+if test yes = "[$]$2"; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring=ABCD
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len" && \
+ test undefined != "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test 17 != "$i" # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n "$lt_cv_sys_max_cmd_len"; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test yes = "$cross_compiling"; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisibility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_EOF
+ if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test yes != "$enable_dlopen"; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen=load_add_on
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen=LoadLibrary
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
+ lt_cv_dlopen=dyld
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ tpf*)
+ # Don't try to run any link tests for TPF. We know it's impossible
+ # because TPF is a cross-compiler, and we know how we open DSOs.
+ lt_cv_dlopen=dlopen
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=no
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen=shl_load],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen=dlopen],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test no = "$lt_cv_dlopen"; then
+ enable_dlopen=no
+ else
+ enable_dlopen=yes
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS=$CPPFLAGS
+ test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS=$LDFLAGS
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS=$LIBS
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test yes = "$lt_cv_dlopen_self"; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links=nottested
+if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test no = "$hard_links"; then
+ AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
+ [Define to the sub-directory where libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
+
+ # We can hardcode non-existent directories.
+ if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
+ test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
+ test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test yes = "$shlibpath_overrides_runpath" ||
+ test no = "$enable_shared"; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP"; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test yes = "$GCC"; then
+ case $host_os in
+ darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+ *) lt_awk_arg='/^libraries:/' ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+ *) lt_sed_strip_eq='s|=/|/|g' ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary...
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ # ...but if some path component already ends with the multilib dir we assume
+ # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+ case "$lt_multi_os_dir; $lt_search_path_spec " in
+ "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+ lt_multi_os_dir=
+ ;;
+ esac
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+ elif test -n "$lt_multi_os_dir"; then
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS = " "; FS = "/|\n";} {
+ lt_foo = "";
+ lt_count = 0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo = "/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=.so
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='$libname$release$shared_ext$major'
+ ;;
+
+aix[[4-9]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 supports IA64
+ library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line '#! .'. This would cause the generated library to
+ # depend on '.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # Using Import Files as archive members, it is possible to support
+ # filename-based versioning of shared library archives on AIX. While
+ # this would work for both with and without runtime linking, it will
+ # prevent static linking of such archives. So we do filename-based
+ # shared library versioning with .so extension only, which is used
+ # when both runtime linking and shared linking is enabled.
+ # Unfortunately, runtime linking may impact performance, so we do
+ # not want this to be the default eventually. Also, we use the
+ # versioned .so libs for executables only if there is the -brtl
+ # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+ # To allow for filename-based versioning support, we need to create
+ # libNAME.so.V as an archive file, containing:
+ # *) an Import File, referring to the versioned filename of the
+ # archive as well as the shared archive member, telling the
+ # bitwidth (32 or 64) of that shared object, and providing the
+ # list of exported symbols of that shared object, eventually
+ # decorated with the 'weak' keyword
+ # *) the shared object with the F_LOADONLY flag set, to really avoid
+ # it being seen by the linker.
+ # At run time we better use the real file rather than another symlink,
+ # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+ case $with_aix_soname,$aix_use_runtimelinking in
+ # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ aix,yes) # traditional libtool
+ dynamic_linker='AIX unversionable lib.so'
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ ;;
+ aix,no) # traditional AIX only
+ dynamic_linker='AIX lib.a[(]lib.so.V[)]'
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
+ ;;
+ svr4,*) # full svr4 only
+ dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]"
+ library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+ # We do not specify a path in Import Files, so LIBPATH fires.
+ shlibpath_overrides_runpath=yes
+ ;;
+ *,yes) # both, prefer svr4
+ dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]"
+ library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+ # unpreferred sharedlib libNAME.a needs extra handling
+ postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+ postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+ # We do not specify a path in Import Files, so LIBPATH fires.
+ shlibpath_overrides_runpath=yes
+ ;;
+ *,no) # both, prefer aix
+ dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]"
+ library_names_spec='$libname$release.a $libname.a'
+ soname_spec='$libname$release$shared_ext$major'
+ # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+ postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+ postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+ ;;
+ esac
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='$libname$shared_ext'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=.dll
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+ library_names_spec='$libname.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec=$LIB
+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$major$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[23]].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ if test 32 = "$HPUX_IA64_MODE"; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[[3-9]]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test yes = "$lt_cv_prog_gnu_ld"; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+ sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+linux*android*)
+ version_type=none # Android doesn't support versioned libraries.
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext'
+ soname_spec='$libname$release$shared_ext'
+ finish_cmds=
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ dynamic_linker='Android linker'
+ # Don't embed -rpath directories since the linker doesn't support them.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+ [lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [lt_cv_shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+ ])
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd* | bitrig*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec=/usr/lib
+ need_lib_prefix=no
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ need_version=no
+ else
+ need_version=yes
+ fi
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+os2*)
+ libname_spec='$name'
+ version_type=windows
+ shrext_cmds=.dll
+ need_version=no
+ need_lib_prefix=no
+ # OS/2 can only load a DLL with a base name of 8 characters or less.
+ soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+ v=$($ECHO $release$versuffix | tr -d .-);
+ n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+ $ECHO $n$v`$shared_ext'
+ library_names_spec='${libname}_dll.$libext'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=BEGINLIBPATH
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ postinstall_cmds='base_file=`basename \$file`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='$libname$release$shared_ext$major'
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test yes = "$with_gnu_ld"; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+ soname_spec='$libname$shared_ext.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=sco
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test yes = "$with_gnu_ld"; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+ soname_spec='$libname$release$shared_ext$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test no = "$dynamic_linker" && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test yes = "$GCC"; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+ sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+fi
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+ sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[List of archive names. First name is the real one, the rest are links.
+ The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+ [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program that can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD=$MAGIC_CMD
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="m4_if([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS=$lt_save_ifs
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$1"; then
+ lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS=$lt_save_ifs
+ MAGIC_CMD=$lt_save_MAGIC_CMD
+ ;;
+esac])
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program that can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test no = "$withval" || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test yes = "$GCC"; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return, which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD=$ac_prog
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test yes = "$with_gnu_ld"; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS=$lt_save_ifs
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD=$ac_dir/$ac_prog
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test no != "$with_gnu_ld" && break
+ ;;
+ *)
+ test yes != "$with_gnu_ld" && break
+ ;;
+ esac
+ fi
+ done
+ IFS=$lt_save_ifs
+else
+ lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi])
+LD=$lt_cv_path_LD
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test yes != "$GCC"; then
+ reload_cmds=false
+ fi
+ ;;
+ darwin*)
+ if test yes = "$GCC"; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_PATH_DD
+# -----------
+# find a working dd
+m4_defun([_LT_PATH_DD],
+[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd],
+[if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+ cmp -s conftest.i conftest.out \
+ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi])
+rm -f conftest.i conftest2.i conftest.out])
+])# _LT_PATH_DD
+
+
+# _LT_CMD_TRUNCATE
+# ----------------
+# find command to truncate a binary pipe
+m4_defun([_LT_CMD_TRUNCATE],
+[m4_require([_LT_PATH_DD])
+AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+ cmp -s conftest.i conftest.out \
+ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"])
+_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1],
+ [Command to truncate a binary pipe])
+])# _LT_CMD_TRUNCATE
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# 'unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[[3-9]]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd* | bitrig*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+os2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+ [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM=$NM
+else
+ lt_nm_to_check=${ac_tool_prefix}nm
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS=$lt_save_ifs
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm=$ac_dir/$lt_tmp_nm
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+ case $build_os in
+ mingw*) lt_bad_file=conftest.nm/nofile ;;
+ *) lt_bad_file=/dev/null ;;
+ esac
+ case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+ *$lt_bad_file* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break 2
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break 2
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS=$lt_save_ifs
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test no != "$lt_cv_path_NM"; then
+ NM=$lt_cv_path_NM
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols -headers"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+ AC_SUBST([DUMPBIN])
+ if test : != "$DUMPBIN"; then
+ NM=$DUMPBIN
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh;
+ # decide which one to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd=$ECHO
+ ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+ [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+ [lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*])
+if test yes != "$lt_cv_path_mainfest_tool"; then
+ MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# _LT_DLL_DEF_P([FILE])
+# ---------------------
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with func_dll_def_p in the libtool script
+AC_DEFUN([_LT_DLL_DEF_P],
+[dnl
+ test DEF = "`$SED -n dnl
+ -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace
+ -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments
+ -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl
+ -e q dnl Only consider the first "real" line
+ $1`" dnl
+])# _LT_DLL_DEF_P
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM=-lm)
+ ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test yes = "$GCC"; then
+ case $cc_basename in
+ nvcc*)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+ esac
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test ia64 = "$host_cpu"; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Gets list of data symbols to import.
+ lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+ # Adjust the below global symbol transforms to fixup imported variables.
+ lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+ lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'"
+ lt_c_name_lib_hook="\
+ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\
+ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'"
+else
+ # Disable hooks by default.
+ lt_cv_sys_global_symbol_to_import=
+ lt_cdecl_hook=
+ lt_c_name_hook=
+ lt_c_name_lib_hook=
+fi
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function,
+ # D for any global variable and I for any imported variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT@&t at _DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data. */
+# define LT@&t at _DLSYM_CONST
+#else
+# define LT@&t at _DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT@&t at _DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS=conftstm.$ac_objext
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
+ pipe_works=yes
+ fi
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test yes = "$pipe_works"; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
+ [Transform the output of nm into a list of symbols to manually relocate])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
+ [The name lister interface])
+_LT_DECL([], [nm_file_list_spec], [1],
+ [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test yes = "$GXX"; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ case $host_os in
+ os2*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+ if test ia64 != "$host_cpu"; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64, which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+ # IBM XL 8.0, 9.0 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the '-m68020' flag to GCC prevents building anything better,
+ # like '-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ case $host_os in
+ os2*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+ fi
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test ia64 = "$host_cpu"; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ case $cc_basename in
+ nagfor*)
+ # NAG Fortran compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ case $host_os in
+ os2*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+ ;;
+ esac
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ case $cc_basename in
+ # old Intel for x86_64, which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ *Sun\ F* | *Sun*Fortran*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Intel*\ [[CF]]*Compiler*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ *Portland\ Group*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms that do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+ # Without the "-l" option, or with the "-B" option, AIX nm treats
+ # weak defined symbols like other global defined symbols, whereas
+ # GNU nm marks them as "W".
+ # While the 'weak' keyword is ignored in the Export File, we need
+ # it in the Import File for the 'aix-soname' feature, so we have
+ # to replace the "-B" option with "-P" for AIX nm.
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
+ ;;
+ cygwin* | mingw* | cegcc*)
+ case $cc_basename in
+ cl*)
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+ ;;
+ esac
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ' (' and ')$', so one must not match beginning or
+ # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+ # as well as any symbol that contains 'd'.
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test yes != "$GCC"; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd* | bitrig*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test yes = "$with_gnu_ld"; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test yes = "$lt_use_gnu_ld_interface"; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='$wl'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test ia64 != "$host_cpu"; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ shrext_cmds=.dll
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ prefix_cmds="$SED"~
+ if test EXPORTS = "`$SED 1q $export_symbols`"; then
+ prefix_cmds="$prefix_cmds -e 1d";
+ fi~
+ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test linux-dietlibc = "$host_os"; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test no = "$tmp_diet"
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+
+ if test yes = "$supports_anon_versioning"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ tcc*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
+ ;;
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test yes = "$supports_anon_versioning"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test ia64 = "$host_cpu"; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+ # Without the "-l" option, or with the "-B" option, AIX nm treats
+ # weak defined symbols like other global defined symbols, whereas
+ # GNU nm marks them as "W".
+ # While the 'weak' keyword is ignored in the Export File, we need
+ # it in the Import File for the 'aix-soname' feature, so we have
+ # to replace the "-B" option with "-P" for AIX nm.
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # have runtime linking enabled, and use it for executables.
+ # For shared libraries, we enable/disable runtime linking
+ # depending on the kind of the shared library created -
+ # when "with_aix_soname,aix_use_runtimelinking" is:
+ # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables
+ # "aix,yes" lib.so shared, rtl:yes, for executables
+ # lib.a static archive
+ # "both,no" lib.so.V(shr.o) shared, rtl:yes
+ # lib.a(lib.so.V) shared, rtl:no, for executables
+ # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+ # lib.a(lib.so.V) shared, rtl:no
+ # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables
+ # lib.a static archive
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+ # With aix-soname=svr4, we create the lib.so.V shared archives only,
+ # so we don't have lib.a shared libs to link our executables.
+ # We have to force runtime linking in this case.
+ aix_use_runtimelinking=yes
+ LDFLAGS="$LDFLAGS -Wl,-brtl"
+ fi
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+ case $with_aix_soname,$aix_use_runtimelinking in
+ aix,*) ;; # traditional, no import file
+ svr4,* | *,yes) # use import file
+ # The Import File defines what to hardcode.
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ ;;
+ esac
+
+ if test yes = "$GCC"; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`$CC -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag="$shared_flag "'$wl-G'
+ fi
+ # Need to ensure runtime linking is disabled for the traditional
+ # shared library, or the linker may eventually find shared libraries
+ # /with/ Import File - we do not want to mix them.
+ shared_flag_aix='-shared'
+ shared_flag_svr4='-shared $wl-G'
+ else
+ # not using gcc
+ if test ia64 = "$host_cpu"; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
+ else
+ shared_flag='$wl-bM:SRE'
+ fi
+ shared_flag_aix='$wl-bM:SRE'
+ shared_flag_svr4='$wl-G'
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+ else
+ if test ia64 = "$host_cpu"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+ # -brtl affects multiple linker settings, -berok does not and is overridden later
+ compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+ if test svr4 != "$with_aix_soname"; then
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+ fi
+ if test aix != "$with_aix_soname"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 3 [...]
+ else
+ # used by -dlpreopen to get the symbols
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir'
+ fi
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=.dll
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=.dll
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ ;;
+
+ hpux10*)
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test yes,no = "$GCC,$with_gnu_ld"; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ m4_if($1, [], [
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ _LT_LINKER_OPTION([if $CC understands -b],
+ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+ ;;
+ esac
+ fi
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+ [lt_cv_irix_exported_symbol],
+ [save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+ [C++], [[int foo (void) { return 0; }]],
+ [Fortran 77], [[
+ subroutine foo
+ end]],
+ [Fortran], [[
+ subroutine foo
+ end]])])],
+ [lt_cv_irix_exported_symbol=yes],
+ [lt_cv_irix_exported_symbol=no])
+ LDFLAGS=$save_LDFLAGS])
+ if test yes = "$lt_cv_irix_exported_symbol"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+ fi
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ linux*)
+ case $cc_basename in
+ tcc*)
+ # Fabrice Bellard et al's Tiny C Compiler
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd* | bitrig*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ shrext_cmds=.dll
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ prefix_cmds="$SED"~
+ if test EXPORTS = "`$SED 1q $export_symbols`"; then
+ prefix_cmds="$prefix_cmds -e 1d";
+ fi~
+ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ osf3*)
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test yes = "$GCC"; then
+ wlarc='$wl'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='$wl'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands '-z linker_flag'. GCC discards it without '$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test sequent = "$host_vendor"; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We CANNOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test yes = "$GCC"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test sni = "$host_vendor"; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test yes,yes = "$GCC,$enable_shared"; then
+ case $_LT_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+ [$RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ ])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+ DIR into the resulting binary and the resulting library dependency is
+ "absolute", i.e impossible to change by setting $shlibpath_var if the
+ library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+ [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC=$CC
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # Report what library types will actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test no = "$can_build_shared" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test yes = "$enable_shared" && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test ia64 != "$host_cpu"; then
+ case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+ yes,aix,yes) ;; # shared object as lib.so file only
+ yes,svr4,*) ;; # shared object as lib.so archive member only
+ yes,*) enable_static=no ;; # shared object in lib.a archive as well
+ esac
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test yes = "$enable_shared" || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC=$lt_save_CC
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test no != "$CXX" &&
+ ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+ (test g++ != "$CXX"))); then
+ AC_PROG_CXXCPP
+else
+ _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_caught_CXX_error"; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_CFLAGS=$CFLAGS
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ CFLAGS=$CXXFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test yes = "$GXX"; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test yes = "$GXX"; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test yes = "$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='$wl'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ if test ia64 = "$host_cpu"; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # have runtime linking enabled, and use it for executables.
+ # For shared libraries, we enable/disable runtime linking
+ # depending on the kind of the shared library created -
+ # when "with_aix_soname,aix_use_runtimelinking" is:
+ # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables
+ # "aix,yes" lib.so shared, rtl:yes, for executables
+ # lib.a static archive
+ # "both,no" lib.so.V(shr.o) shared, rtl:yes
+ # lib.a(lib.so.V) shared, rtl:no, for executables
+ # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+ # lib.a(lib.so.V) shared, rtl:no
+ # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables
+ # lib.a static archive
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+ # With aix-soname=svr4, we create the lib.so.V shared archives only,
+ # so we don't have lib.a shared libs to link our executables.
+ # We have to force runtime linking in this case.
+ aix_use_runtimelinking=yes
+ LDFLAGS="$LDFLAGS -Wl,-brtl"
+ fi
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+ case $with_aix_soname,$aix_use_runtimelinking in
+ aix,*) ;; # no import file
+ svr4,* | *,yes) # use import file
+ # The Import File defines what to hardcode.
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ ;;
+ esac
+
+ if test yes = "$GXX"; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`$CC -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag=$shared_flag' $wl-G'
+ fi
+ # Need to ensure runtime linking is disabled for the traditional
+ # shared library, or the linker may eventually find shared libraries
+ # /with/ Import File - we do not want to mix them.
+ shared_flag_aix='-shared'
+ shared_flag_svr4='-shared $wl-G'
+ else
+ # not using gcc
+ if test ia64 = "$host_cpu"; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test yes = "$aix_use_runtimelinking"; then
+ shared_flag='$wl-G'
+ else
+ shared_flag='$wl-bM:SRE'
+ fi
+ shared_flag_aix='$wl-bM:SRE'
+ shared_flag_svr4='$wl-G'
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ # The "-G" linker flag allows undefined symbols.
+ _LT_TAGVAR(no_undefined_flag, $1)='-bernotok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+ else
+ if test ia64 = "$host_cpu"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX([$1])
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+ if test yes = "$with_gnu_ld"; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+ # -brtl affects multiple linker settings, -berok does not and is overridden later
+ compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+ if test svr4 != "$with_aix_soname"; then
+ # This is similar to how AIX traditionally builds its shared
+ # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+ fi
+ if test aix != "$with_aix_soname"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# [...]
+ else
+ # used by -dlpreopen to get the symbols
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir'
+ fi
+ _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ case $GXX,$cc_basename in
+ ,cl* | no,cl*)
+ # Native MSVC
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=.dll
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp "$export_symbols" "$output_objdir/$soname.def";
+ echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+ else
+ $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ # Don't use ranlib
+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile=$lt_outputfile.exe
+ lt_tool_outputfile=$lt_tool_outputfile.exe
+ ;;
+ esac~
+ func_to_tool_file "$lt_outputfile"~
+ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # g++
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file, use it as
+ # is; otherwise, prepend EXPORTS...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ shrext_cmds=.dll
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+ $ECHO EXPORTS >> $output_objdir/$libname.def~
+ prefix_cmds="$SED"~
+ if test EXPORTS = "`$SED 1q $export_symbols`"; then
+ prefix_cmds="$prefix_cmds -e 1d";
+ fi~
+ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+ emximp -o $lib $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd2.*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test yes = "$GXX"; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test yes = "$GXX"; then
+ if test no = "$with_gnu_ld"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 6 and above use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+ ;;
+ xl* | mpixl* | bgxl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+ if test yes = "$supports_anon_versioning"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='func_echo_all'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd* | bitrig*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=func_echo_all
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+ $RM $lib.exp'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+ case $host in
+ osf3*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands '-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='func_echo_all'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test yes,no = "$GXX,$with_gnu_ld"; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require '-G' NOT '-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We CANNOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+ '"$_LT_TAGVAR(old_archive_cmds, $1)"
+ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+ '"$_LT_TAGVAR(reload_cmds, $1)"
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)=$GXX
+ _LT_TAGVAR(LD, $1)=$LD
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ with_gnu_ld=$lt_save_with_gnu_ld
+ lt_cv_path_LDCXX=$lt_cv_path_LD
+ lt_cv_path_LD=$lt_save_path_LD
+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test yes != "$_lt_caught_CXX_error"
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+ case @S|@2 in
+ .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
+ *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
+ esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case $prev$p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test x-L = "$p" ||
+ test x-R = "$p"; then
+ prev=$p
+ continue
+ fi
+
+ # Expand the sysroot to ease extracting the directories later.
+ if test -z "$prev"; then
+ case $p in
+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+ esac
+ fi
+ case $p in
+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+ esac
+ if test no = "$pre_test_object_deps_done"; then
+ case $prev in
+ -L | -R)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)=$prev$p
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
+ fi
+ fi
+ prev=
+ ;;
+
+ *.lto.$objext) ;; # Ignore GCC LTO objects
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test no = "$pre_test_object_deps_done"; then
+ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)=$p
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)=$p
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test yes != "$solaris_use_stlport4"; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test yes != "$solaris_use_stlport4"; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test no = "$F77"; then
+ _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_disable_F77"; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${F77-"f77"}
+ CFLAGS=$FFLAGS
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test no = "$can_build_shared" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test yes = "$enable_shared" && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test ia64 != "$host_cpu"; then
+ case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+ yes,aix,yes) ;; # shared object as lib.so file only
+ yes,svr4,*) ;; # shared object as lib.so archive member only
+ yes,*) enable_static=no ;; # shared object in lib.a archive as well
+ esac
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test yes = "$enable_shared" || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)=$G77
+ _LT_TAGVAR(LD, $1)=$LD
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_F77"
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test no = "$FC"; then
+ _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test yes != "$_lt_disable_FC"; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
+ CC=${FC-"f95"}
+ CFLAGS=$FCFLAGS
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test no = "$can_build_shared" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test yes = "$enable_shared" && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test ia64 != "$host_cpu"; then
+ case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+ yes,aix,yes) ;; # shared object as lib.so file only
+ yes,svr4,*) ;; # shared object as lib.so archive member only
+ yes,*) enable_static=no ;; # shared object in lib.a archive as well
+ esac
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test yes = "$enable_shared" || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
+ _LT_TAGVAR(LD, $1)=$LD
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_FC"
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)=$LD
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)=$LD
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to 'libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=$lt_simple_compile_test_code
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f "$lt_ac_sed" && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test 10 -lt "$lt_ac_count" && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test "$lt_ac_count" -gt "$lt_ac_max"; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine what file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+ [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+ [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644
index 0000000..f51ec8c
--- /dev/null
+++ b/m4/ltoptions.m4
@@ -0,0 +1,437 @@
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004-2005, 2007-2009, 2011-2014 Free Software
+# Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 8 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option '$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
+ [_LT_WITH_AIX_SONAME([aix])])
+ ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for pkg in $enableval; do
+ IFS=$lt_save_ifs
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac],
+ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for pkg in $enableval; do
+ IFS=$lt_save_ifs
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac],
+ [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for pkg in $enableval; do
+ IFS=$lt_save_ifs
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac],
+ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the 'fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the 'disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_AIX_SONAME([DEFAULT])
+# ----------------------------------
+# implement the --with-aix-soname flag, and support the `aix-soname=aix'
+# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
+# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'.
+m4_define([_LT_WITH_AIX_SONAME],
+[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
+shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[[5-9]]*,yes)
+ AC_MSG_CHECKING([which variant of shared library versioning to provide])
+ AC_ARG_WITH([aix-soname],
+ [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+ [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
+ [case $withval in
+ aix|svr4|both)
+ ;;
+ *)
+ AC_MSG_ERROR([Unknown argument to --with-aix-soname])
+ ;;
+ esac
+ lt_cv_with_aix_soname=$with_aix_soname],
+ [AC_CACHE_VAL([lt_cv_with_aix_soname],
+ [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
+ with_aix_soname=$lt_cv_with_aix_soname])
+ AC_MSG_RESULT([$with_aix_soname])
+ if test aix != "$with_aix_soname"; then
+ # For the AIX way of multilib, we name the shared archive member
+ # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+ # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+ # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+ # the AIX toolchain works better with OBJECT_MODE set (default 32).
+ if test 64 = "${OBJECT_MODE-32}"; then
+ shared_archive_member_spec=shr_64
+ else
+ shared_archive_member_spec=shr
+ fi
+ fi
+ ;;
+*)
+ with_aix_soname=aix
+ ;;
+esac
+
+_LT_DECL([], [shared_archive_member_spec], [0],
+ [Shared archive member basename, for filename based shared library versioning on AIX])dnl
+])# _LT_WITH_AIX_SONAME
+
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
+# LT_INIT options.
+# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+ for lt_pkg in $withval; do
+ IFS=$lt_save_ifs
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS=$lt_save_ifs
+ ;;
+ esac],
+ [pic_mode=m4_default([$1], [default])])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the 'pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644
index 0000000..da4ac6b
--- /dev/null
+++ b/m4/ltsugar.m4
@@ -0,0 +1,124 @@
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004-2005, 2007-2008, 2011-2014 Free Software
+# Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59, which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644
index 0000000..cb6da68
--- /dev/null
+++ b/m4/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2011-2014 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# @configure_input@
+
+# serial 4151 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4.4])
+m4_define([LT_PACKAGE_REVISION], [2.4.4])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4.4'
+macro_revision='2.4.4'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644
index 0000000..6975098
--- /dev/null
+++ b/m4/lt~obsolete.m4
@@ -0,0 +1,99 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004-2005, 2007, 2009, 2011-2014 Free Software
+# Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/missing b/missing
new file mode 100755
index 0000000..f62bbae
--- /dev/null
+++ b/missing
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try '$0 --help' for more information"
+ exit 1
+fi
+
+case $1 in
+
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
+
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+
+Supported PROGRAM values:
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake at gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
+
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'autom4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
+ ;;
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/nc_test/CMakeLists.txt b/nc_test/CMakeLists.txt
index ba2203c..68b3851 100644
--- a/nc_test/CMakeLists.txt
+++ b/nc_test/CMakeLists.txt
@@ -1,14 +1,28 @@
+INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/include)
+
SET (nc_test_m4_SOURCES test_get test_put)
FOREACH (F ${nc_test_m4_SOURCES})
GEN_m4(${F})
ENDFOREACH()
-SET (nc_test_SRC nc_test.c error.c test_get.c test_put.c test_read.c test_write.c util.c)
+SET (nc_test_SRC
+ nc_test.c
+ error.c
+ test_get.c
+ test_put.c
+ test_read.c
+ test_write.c
+ util.c
+ )
ADD_EXECUTABLE(nc_test ${nc_test_SRC})
-TARGET_LINK_LIBRARIES(nc_test netcdf)
+TARGET_LINK_LIBRARIES(nc_test
+ netcdf
+ # util.c explicitly uses libm
+ ${HAVE_LIBM}
+ )
# Some extra tests
-SET(TESTS t_nc tst_small tst_misc tst_norm tst_names tst_nofill tst_nofill2 tst_nofill3)
+SET(TESTS t_nc tst_small tst_misc tst_norm tst_names tst_nofill tst_nofill2 tst_nofill3 tst_meta)
IF(NOT MSVC)
SET(TESTS ${TESTS} tst_atts3)
@@ -29,7 +43,7 @@ IF(LARGE_FILE_TESTS)
IF(NOT MSVC)
SET(TESTS ${TESTS} large_files)
ENDIF()
-
+
ENDIF()
IF(BUILD_DISKLESS)
@@ -52,7 +66,7 @@ ENDFOREACH()
ADD_TEST(nc_test ${EXECUTABLE_OUTPUT_PATH}/nc_test)
IF(BUILD_DISKLESS)
- add_sh_test(nc_test run_diskless)
+ add_sh_test(nc_test run_diskless)
IF(BUILD_MMAP)
add_sh_test(nc_test run_mmap)
ENDIF()
diff --git a/nc_test/Make0 b/nc_test/Make0
index 8c12d1a..51a9802 100644
--- a/nc_test/Make0
+++ b/nc_test/Make0
@@ -1,10 +1,9 @@
# Test c output
-T=tst_diskless3
+T=test_read
#VG=valgrind --leak-check=full
CFLAGS=-g -O0 -I.. -I../include
-LDFLAGS=../liblib/.libs/libnetcdf.a -L/share/ed/local/spock/lib -lhdf5_hl -lhdf5 -lz -lm -lcurl
-LD_RUN_PATH=/share/ed/local/spock/lib
+LDFLAGS=../liblib/.libs/libnetcdf.a -L/usr/local/lib -lhdf5_hl -lhdf5 -lz -lm -lcurl
# cd .. ; ${MAKE} all
diff --git a/nc_test/Makefile.am b/nc_test/Makefile.am
index 4f9a4d4..40b1324 100644
--- a/nc_test/Makefile.am
+++ b/nc_test/Makefile.am
@@ -16,7 +16,7 @@ tst_diskless4.cdl tst_diskless4.nc tst_formatx.nc
# These are the tests which are always run.
TESTPROGRAMS = t_nc tst_small nc_test tst_misc tst_norm tst_names \
-tst_nofill tst_nofill2 tst_nofill3 tst_atts3
+tst_nofill tst_nofill2 tst_nofill3 tst_atts3 tst_meta
if USE_NETCDF4
TESTPROGRAMS += tst_atts
@@ -27,16 +27,16 @@ TESTPROGRAMS += tst_parallel2 tst_pnetcdf tst_formatx_pnetcdf
endif
# if EXTRA_TESTS
-# TESTPROGRAMS +=
+# TESTPROGRAMS +=
# endif # EXTRA_TESTS
# These are the source files for the main workhorse test program,
# nc_test. If you pass nc_test, you are doing well.
nc_test_SOURCES = nc_test.c error.c test_get.c test_put.c \
-test_read.c test_write.c util.c error.h tests.h
+test_read.c test_write.c util.c error.h tests.h
-LDADD = ${top_builddir}/liblib/libnetcdf.la
-AM_CPPFLAGS += -I$(top_builddir)/liblib
+LDADD = ${top_builddir}/liblib/libnetcdf.la
+AM_CPPFLAGS += -I$(top_builddir)/liblib -I$(top_builddir)/include
# If the user asked for large file tests, then add them.
if LARGE_FILE_TESTS
@@ -94,14 +94,16 @@ endif # USE_VALGRIND_TESTS
EXTRA_DIST = test_get.m4 test_put.m4 run_valgrind_tests.sh \
run_diskless.sh run_diskless2.sh run_mmap.sh run_pnetcdf_test.sh
+
# ref_tst_diskless2.cdl is for diff comparison and to produce tst_diskless2.c
EXTRA_DIST += ref_tst_diskless2.cdl CMakeLists.txt
+#EXTRA_DIST += ${nc_test_SOURCES}
+
# Only clean these on mainatiner-clean, because they require m4 to
# regenerate.
#MAINTAINERCLEANFILES = test_get.c test_put.c
# This rule tells make how to turn our .m4 files into .c files.
.m4.c:
- m4 $(AM_M4FLAGS) $(M4FLAGS) $< >$@
-
+ m4 $(AM_M4FLAGS) $(M4FLAGS) -s $< >$@
diff --git a/nc_test/Makefile.in b/nc_test/Makefile.in
new file mode 100644
index 0000000..66e222c
--- /dev/null
+++ b/nc_test/Makefile.in
@@ -0,0 +1,1560 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This file builds and runs the nc_test program, which tests the
+# netCDF-3 API for all formats.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+ at USE_NETCDF4_TRUE@am__append_3 = tst_atts
+ at USE_PNETCDF_TRUE@am__append_4 = tst_parallel2 tst_pnetcdf tst_formatx_pnetcdf
+
+# If the user asked for large file tests, then add them.
+ at LARGE_FILE_TESTS_TRUE@am__append_5 = quick_large_files tst_big_var6 tst_big_var2 \
+ at LARGE_FILE_TESTS_TRUE@tst_big_rvar tst_big_var tst_large large_files
+
+ at BUILD_BENCHMARKS_TRUE@am__append_6 = testnc3perf
+ at BUILD_BENCHMARKS_TRUE@am__append_7 = benchmark.nc
+check_PROGRAMS = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7)
+
+# Build Diskless test helpers
+ at BUILD_DISKLESS_TRUE@am__append_8 = tst_diskless tst_diskless3 tst_diskless4
+ at BUILD_DISKLESS_TRUE@@USE_NETCDF4_TRUE at am__append_9 = tst_diskless2
+TESTS = $(am__EXEEXT_5) $(am__append_10) $(am__append_11) \
+ $(am__append_12) $(am__append_13) $(am__append_14)
+ at BUILD_DISKLESS_TRUE@am__append_10 = run_diskless.sh
+ at BUILD_DISKLESS_TRUE@@BUILD_MMAP_TRUE at am__append_11 = run_mmap.sh
+ at BUILD_DISKLESS_TRUE@@LARGE_FILE_TESTS_TRUE at am__append_12 = run_diskless2.sh
+ at USE_PNETCDF_TRUE@am__append_13 = run_pnetcdf_test.sh
+ at USE_VALGRIND_TESTS_TRUE@am__append_14 = run_valgrind_tests.sh
+subdir = nc_test
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+ at USE_NETCDF4_TRUE@am__EXEEXT_1 = tst_atts$(EXEEXT)
+ at USE_PNETCDF_TRUE@am__EXEEXT_2 = tst_parallel2$(EXEEXT) \
+ at USE_PNETCDF_TRUE@ tst_pnetcdf$(EXEEXT) \
+ at USE_PNETCDF_TRUE@ tst_formatx_pnetcdf$(EXEEXT)
+ at LARGE_FILE_TESTS_TRUE@am__EXEEXT_3 = quick_large_files$(EXEEXT) \
+ at LARGE_FILE_TESTS_TRUE@ tst_big_var6$(EXEEXT) \
+ at LARGE_FILE_TESTS_TRUE@ tst_big_var2$(EXEEXT) \
+ at LARGE_FILE_TESTS_TRUE@ tst_big_rvar$(EXEEXT) \
+ at LARGE_FILE_TESTS_TRUE@ tst_big_var$(EXEEXT) tst_large$(EXEEXT) \
+ at LARGE_FILE_TESTS_TRUE@ large_files$(EXEEXT)
+ at BUILD_BENCHMARKS_TRUE@am__EXEEXT_4 = testnc3perf$(EXEEXT)
+am__EXEEXT_5 = t_nc$(EXEEXT) tst_small$(EXEEXT) nc_test$(EXEEXT) \
+ tst_misc$(EXEEXT) tst_norm$(EXEEXT) tst_names$(EXEEXT) \
+ tst_nofill$(EXEEXT) tst_nofill2$(EXEEXT) tst_nofill3$(EXEEXT) \
+ tst_atts3$(EXEEXT) tst_meta$(EXEEXT) $(am__EXEEXT_1) \
+ $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4)
+ at BUILD_DISKLESS_TRUE@am__EXEEXT_6 = tst_diskless$(EXEEXT) \
+ at BUILD_DISKLESS_TRUE@ tst_diskless3$(EXEEXT) \
+ at BUILD_DISKLESS_TRUE@ tst_diskless4$(EXEEXT)
+ at BUILD_DISKLESS_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_7 = \
+ at BUILD_DISKLESS_TRUE@@USE_NETCDF4_TRUE@ tst_diskless2$(EXEEXT)
+large_files_SOURCES = large_files.c
+large_files_OBJECTS = large_files.$(OBJEXT)
+large_files_LDADD = $(LDADD)
+large_files_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+am_nc_test_OBJECTS = nc_test.$(OBJEXT) error.$(OBJEXT) \
+ test_get.$(OBJEXT) test_put.$(OBJEXT) test_read.$(OBJEXT) \
+ test_write.$(OBJEXT) util.$(OBJEXT)
+nc_test_OBJECTS = $(am_nc_test_OBJECTS)
+nc_test_LDADD = $(LDADD)
+nc_test_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+quick_large_files_SOURCES = quick_large_files.c
+quick_large_files_OBJECTS = quick_large_files.$(OBJEXT)
+quick_large_files_LDADD = $(LDADD)
+quick_large_files_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+t_nc_SOURCES = t_nc.c
+t_nc_OBJECTS = t_nc.$(OBJEXT)
+t_nc_LDADD = $(LDADD)
+t_nc_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+am__testnc3perf_SOURCES_DIST = testnc3perf.c
+ at BUILD_BENCHMARKS_TRUE@am_testnc3perf_OBJECTS = testnc3perf.$(OBJEXT)
+testnc3perf_OBJECTS = $(am_testnc3perf_OBJECTS)
+testnc3perf_LDADD = $(LDADD)
+testnc3perf_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_atts_SOURCES = tst_atts.c
+tst_atts_OBJECTS = tst_atts.$(OBJEXT)
+tst_atts_LDADD = $(LDADD)
+tst_atts_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_atts3_SOURCES = tst_atts3.c
+tst_atts3_OBJECTS = tst_atts3.$(OBJEXT)
+tst_atts3_LDADD = $(LDADD)
+tst_atts3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_big_rvar_SOURCES = tst_big_rvar.c
+tst_big_rvar_OBJECTS = tst_big_rvar.$(OBJEXT)
+tst_big_rvar_LDADD = $(LDADD)
+tst_big_rvar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_big_var_SOURCES = tst_big_var.c
+tst_big_var_OBJECTS = tst_big_var.$(OBJEXT)
+tst_big_var_LDADD = $(LDADD)
+tst_big_var_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_big_var2_SOURCES = tst_big_var2.c
+tst_big_var2_OBJECTS = tst_big_var2.$(OBJEXT)
+tst_big_var2_LDADD = $(LDADD)
+tst_big_var2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_big_var6_SOURCES = tst_big_var6.c
+tst_big_var6_OBJECTS = tst_big_var6.$(OBJEXT)
+tst_big_var6_LDADD = $(LDADD)
+tst_big_var6_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_diskless_SOURCES = tst_diskless.c
+tst_diskless_OBJECTS = tst_diskless.$(OBJEXT)
+tst_diskless_LDADD = $(LDADD)
+tst_diskless_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_diskless2_SOURCES = tst_diskless2.c
+tst_diskless2_OBJECTS = tst_diskless2.$(OBJEXT)
+tst_diskless2_LDADD = $(LDADD)
+tst_diskless2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_diskless3_SOURCES = tst_diskless3.c
+tst_diskless3_OBJECTS = tst_diskless3.$(OBJEXT)
+tst_diskless3_LDADD = $(LDADD)
+tst_diskless3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_diskless4_SOURCES = tst_diskless4.c
+tst_diskless4_OBJECTS = tst_diskless4.$(OBJEXT)
+tst_diskless4_LDADD = $(LDADD)
+tst_diskless4_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_formatx_pnetcdf_SOURCES = tst_formatx_pnetcdf.c
+tst_formatx_pnetcdf_OBJECTS = tst_formatx_pnetcdf.$(OBJEXT)
+tst_formatx_pnetcdf_LDADD = $(LDADD)
+tst_formatx_pnetcdf_DEPENDENCIES = \
+ ${top_builddir}/liblib/libnetcdf.la
+tst_large_SOURCES = tst_large.c
+tst_large_OBJECTS = tst_large.$(OBJEXT)
+tst_large_LDADD = $(LDADD)
+tst_large_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_meta_SOURCES = tst_meta.c
+tst_meta_OBJECTS = tst_meta.$(OBJEXT)
+tst_meta_LDADD = $(LDADD)
+tst_meta_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_misc_SOURCES = tst_misc.c
+tst_misc_OBJECTS = tst_misc.$(OBJEXT)
+tst_misc_LDADD = $(LDADD)
+tst_misc_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_names_SOURCES = tst_names.c
+tst_names_OBJECTS = tst_names.$(OBJEXT)
+tst_names_LDADD = $(LDADD)
+tst_names_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_nofill_SOURCES = tst_nofill.c
+tst_nofill_OBJECTS = tst_nofill.$(OBJEXT)
+tst_nofill_LDADD = $(LDADD)
+tst_nofill_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_nofill2_SOURCES = tst_nofill2.c
+tst_nofill2_OBJECTS = tst_nofill2.$(OBJEXT)
+tst_nofill2_LDADD = $(LDADD)
+tst_nofill2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_nofill3_SOURCES = tst_nofill3.c
+tst_nofill3_OBJECTS = tst_nofill3.$(OBJEXT)
+tst_nofill3_LDADD = $(LDADD)
+tst_nofill3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_norm_SOURCES = tst_norm.c
+tst_norm_OBJECTS = tst_norm.$(OBJEXT)
+tst_norm_LDADD = $(LDADD)
+tst_norm_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_parallel2_SOURCES = tst_parallel2.c
+tst_parallel2_OBJECTS = tst_parallel2.$(OBJEXT)
+tst_parallel2_LDADD = $(LDADD)
+tst_parallel2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_pnetcdf_SOURCES = tst_pnetcdf.c
+tst_pnetcdf_OBJECTS = tst_pnetcdf.$(OBJEXT)
+tst_pnetcdf_LDADD = $(LDADD)
+tst_pnetcdf_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_small_SOURCES = tst_small.c
+tst_small_OBJECTS = tst_small.$(OBJEXT)
+tst_small_LDADD = $(LDADD)
+tst_small_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = large_files.c $(nc_test_SOURCES) quick_large_files.c t_nc.c \
+ $(testnc3perf_SOURCES) tst_atts.c tst_atts3.c tst_big_rvar.c \
+ tst_big_var.c tst_big_var2.c tst_big_var6.c tst_diskless.c \
+ tst_diskless2.c tst_diskless3.c tst_diskless4.c \
+ tst_formatx_pnetcdf.c tst_large.c tst_meta.c tst_misc.c \
+ tst_names.c tst_nofill.c tst_nofill2.c tst_nofill3.c \
+ tst_norm.c tst_parallel2.c tst_pnetcdf.c tst_small.c
+DIST_SOURCES = large_files.c $(nc_test_SOURCES) quick_large_files.c \
+ t_nc.c $(am__testnc3perf_SOURCES_DIST) tst_atts.c tst_atts3.c \
+ tst_big_rvar.c tst_big_var.c tst_big_var2.c tst_big_var6.c \
+ tst_diskless.c tst_diskless2.c tst_diskless3.c tst_diskless4.c \
+ tst_formatx_pnetcdf.c tst_large.c tst_meta.c tst_misc.c \
+ tst_names.c tst_nofill.c tst_nofill2.c tst_nofill3.c \
+ tst_norm.c tst_parallel2.c tst_pnetcdf.c tst_small.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \
+ -I$(top_builddir)/liblib -I$(top_builddir)/include
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+
+# These files are created by the tests.
+CLEANFILES = nc_test_classic.nc nc_test_64bit.nc nc_test_netcdf4.nc \
+ tst_*.nc t_nc.nc large_files.nc quick_large_files.nc \
+ tst_diskless.nc tst_diskless2.nc tst_diskless3.nc \
+ tst_diskless3_file.cdl tst_diskless3_memory.cdl \
+ tst_diskless4.cdl tst_diskless4.nc tst_formatx.nc \
+ $(am__append_7)
+
+# These are the tests which are always run.
+TESTPROGRAMS = t_nc tst_small nc_test tst_misc tst_norm tst_names \
+ tst_nofill tst_nofill2 tst_nofill3 tst_atts3 tst_meta \
+ $(am__append_3) $(am__append_4) $(am__append_5) \
+ $(am__append_6)
+
+# if EXTRA_TESTS
+# TESTPROGRAMS +=
+# endif # EXTRA_TESTS
+
+# These are the source files for the main workhorse test program,
+# nc_test. If you pass nc_test, you are doing well.
+nc_test_SOURCES = nc_test.c error.c test_get.c test_put.c \
+test_read.c test_write.c util.c error.h tests.h
+
+LDADD = ${top_builddir}/liblib/libnetcdf.la
+ at BUILD_BENCHMARKS_TRUE@testnc3perf_SOURCES = testnc3perf.c
+ at USE_NETCDF4_FALSE@@USE_VALGRIND_TESTS_TRUE at TESTS_ENVIRONMENT = USE_NETCDF4=0
+
+# This will run a bunch of the test programs with valgrind, the memory
+# checking tool. (Valgrind must be present for this to work.)
+ at USE_NETCDF4_TRUE@@USE_VALGRIND_TESTS_TRUE at TESTS_ENVIRONMENT = USE_NETCDF4=1
+
+# Distribute the .c files so that m4 isn't required on the users
+# machine.
+
+# ref_tst_diskless2.cdl is for diff comparison and to produce tst_diskless2.c
+EXTRA_DIST = test_get.m4 test_put.m4 run_valgrind_tests.sh \
+ run_diskless.sh run_diskless2.sh run_mmap.sh \
+ run_pnetcdf_test.sh ref_tst_diskless2.cdl CMakeLists.txt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .m4 .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign nc_test/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign nc_test/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+large_files$(EXEEXT): $(large_files_OBJECTS) $(large_files_DEPENDENCIES) $(EXTRA_large_files_DEPENDENCIES)
+ @rm -f large_files$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(large_files_OBJECTS) $(large_files_LDADD) $(LIBS)
+
+nc_test$(EXEEXT): $(nc_test_OBJECTS) $(nc_test_DEPENDENCIES) $(EXTRA_nc_test_DEPENDENCIES)
+ @rm -f nc_test$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nc_test_OBJECTS) $(nc_test_LDADD) $(LIBS)
+
+quick_large_files$(EXEEXT): $(quick_large_files_OBJECTS) $(quick_large_files_DEPENDENCIES) $(EXTRA_quick_large_files_DEPENDENCIES)
+ @rm -f quick_large_files$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(quick_large_files_OBJECTS) $(quick_large_files_LDADD) $(LIBS)
+
+t_nc$(EXEEXT): $(t_nc_OBJECTS) $(t_nc_DEPENDENCIES) $(EXTRA_t_nc_DEPENDENCIES)
+ @rm -f t_nc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t_nc_OBJECTS) $(t_nc_LDADD) $(LIBS)
+
+testnc3perf$(EXEEXT): $(testnc3perf_OBJECTS) $(testnc3perf_DEPENDENCIES) $(EXTRA_testnc3perf_DEPENDENCIES)
+ @rm -f testnc3perf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(testnc3perf_OBJECTS) $(testnc3perf_LDADD) $(LIBS)
+
+tst_atts$(EXEEXT): $(tst_atts_OBJECTS) $(tst_atts_DEPENDENCIES) $(EXTRA_tst_atts_DEPENDENCIES)
+ @rm -f tst_atts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_atts_OBJECTS) $(tst_atts_LDADD) $(LIBS)
+
+tst_atts3$(EXEEXT): $(tst_atts3_OBJECTS) $(tst_atts3_DEPENDENCIES) $(EXTRA_tst_atts3_DEPENDENCIES)
+ @rm -f tst_atts3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_atts3_OBJECTS) $(tst_atts3_LDADD) $(LIBS)
+
+tst_big_rvar$(EXEEXT): $(tst_big_rvar_OBJECTS) $(tst_big_rvar_DEPENDENCIES) $(EXTRA_tst_big_rvar_DEPENDENCIES)
+ @rm -f tst_big_rvar$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_big_rvar_OBJECTS) $(tst_big_rvar_LDADD) $(LIBS)
+
+tst_big_var$(EXEEXT): $(tst_big_var_OBJECTS) $(tst_big_var_DEPENDENCIES) $(EXTRA_tst_big_var_DEPENDENCIES)
+ @rm -f tst_big_var$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_big_var_OBJECTS) $(tst_big_var_LDADD) $(LIBS)
+
+tst_big_var2$(EXEEXT): $(tst_big_var2_OBJECTS) $(tst_big_var2_DEPENDENCIES) $(EXTRA_tst_big_var2_DEPENDENCIES)
+ @rm -f tst_big_var2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_big_var2_OBJECTS) $(tst_big_var2_LDADD) $(LIBS)
+
+tst_big_var6$(EXEEXT): $(tst_big_var6_OBJECTS) $(tst_big_var6_DEPENDENCIES) $(EXTRA_tst_big_var6_DEPENDENCIES)
+ @rm -f tst_big_var6$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_big_var6_OBJECTS) $(tst_big_var6_LDADD) $(LIBS)
+
+tst_diskless$(EXEEXT): $(tst_diskless_OBJECTS) $(tst_diskless_DEPENDENCIES) $(EXTRA_tst_diskless_DEPENDENCIES)
+ @rm -f tst_diskless$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_diskless_OBJECTS) $(tst_diskless_LDADD) $(LIBS)
+
+tst_diskless2$(EXEEXT): $(tst_diskless2_OBJECTS) $(tst_diskless2_DEPENDENCIES) $(EXTRA_tst_diskless2_DEPENDENCIES)
+ @rm -f tst_diskless2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_diskless2_OBJECTS) $(tst_diskless2_LDADD) $(LIBS)
+
+tst_diskless3$(EXEEXT): $(tst_diskless3_OBJECTS) $(tst_diskless3_DEPENDENCIES) $(EXTRA_tst_diskless3_DEPENDENCIES)
+ @rm -f tst_diskless3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_diskless3_OBJECTS) $(tst_diskless3_LDADD) $(LIBS)
+
+tst_diskless4$(EXEEXT): $(tst_diskless4_OBJECTS) $(tst_diskless4_DEPENDENCIES) $(EXTRA_tst_diskless4_DEPENDENCIES)
+ @rm -f tst_diskless4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_diskless4_OBJECTS) $(tst_diskless4_LDADD) $(LIBS)
+
+tst_formatx_pnetcdf$(EXEEXT): $(tst_formatx_pnetcdf_OBJECTS) $(tst_formatx_pnetcdf_DEPENDENCIES) $(EXTRA_tst_formatx_pnetcdf_DEPENDENCIES)
+ @rm -f tst_formatx_pnetcdf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_formatx_pnetcdf_OBJECTS) $(tst_formatx_pnetcdf_LDADD) $(LIBS)
+
+tst_large$(EXEEXT): $(tst_large_OBJECTS) $(tst_large_DEPENDENCIES) $(EXTRA_tst_large_DEPENDENCIES)
+ @rm -f tst_large$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_large_OBJECTS) $(tst_large_LDADD) $(LIBS)
+
+tst_meta$(EXEEXT): $(tst_meta_OBJECTS) $(tst_meta_DEPENDENCIES) $(EXTRA_tst_meta_DEPENDENCIES)
+ @rm -f tst_meta$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_meta_OBJECTS) $(tst_meta_LDADD) $(LIBS)
+
+tst_misc$(EXEEXT): $(tst_misc_OBJECTS) $(tst_misc_DEPENDENCIES) $(EXTRA_tst_misc_DEPENDENCIES)
+ @rm -f tst_misc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_misc_OBJECTS) $(tst_misc_LDADD) $(LIBS)
+
+tst_names$(EXEEXT): $(tst_names_OBJECTS) $(tst_names_DEPENDENCIES) $(EXTRA_tst_names_DEPENDENCIES)
+ @rm -f tst_names$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_names_OBJECTS) $(tst_names_LDADD) $(LIBS)
+
+tst_nofill$(EXEEXT): $(tst_nofill_OBJECTS) $(tst_nofill_DEPENDENCIES) $(EXTRA_tst_nofill_DEPENDENCIES)
+ @rm -f tst_nofill$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_nofill_OBJECTS) $(tst_nofill_LDADD) $(LIBS)
+
+tst_nofill2$(EXEEXT): $(tst_nofill2_OBJECTS) $(tst_nofill2_DEPENDENCIES) $(EXTRA_tst_nofill2_DEPENDENCIES)
+ @rm -f tst_nofill2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_nofill2_OBJECTS) $(tst_nofill2_LDADD) $(LIBS)
+
+tst_nofill3$(EXEEXT): $(tst_nofill3_OBJECTS) $(tst_nofill3_DEPENDENCIES) $(EXTRA_tst_nofill3_DEPENDENCIES)
+ @rm -f tst_nofill3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_nofill3_OBJECTS) $(tst_nofill3_LDADD) $(LIBS)
+
+tst_norm$(EXEEXT): $(tst_norm_OBJECTS) $(tst_norm_DEPENDENCIES) $(EXTRA_tst_norm_DEPENDENCIES)
+ @rm -f tst_norm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_norm_OBJECTS) $(tst_norm_LDADD) $(LIBS)
+
+tst_parallel2$(EXEEXT): $(tst_parallel2_OBJECTS) $(tst_parallel2_DEPENDENCIES) $(EXTRA_tst_parallel2_DEPENDENCIES)
+ @rm -f tst_parallel2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_parallel2_OBJECTS) $(tst_parallel2_LDADD) $(LIBS)
+
+tst_pnetcdf$(EXEEXT): $(tst_pnetcdf_OBJECTS) $(tst_pnetcdf_DEPENDENCIES) $(EXTRA_tst_pnetcdf_DEPENDENCIES)
+ @rm -f tst_pnetcdf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_pnetcdf_OBJECTS) $(tst_pnetcdf_LDADD) $(LIBS)
+
+tst_small$(EXEEXT): $(tst_small_OBJECTS) $(tst_small_DEPENDENCIES) $(EXTRA_tst_small_DEPENDENCIES)
+ @rm -f tst_small$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_small_OBJECTS) $(tst_small_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/error.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/large_files.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nc_test.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/quick_large_files.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_nc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_get.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_put.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_read.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_write.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/testnc3perf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_atts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_atts3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_big_rvar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_big_var.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_big_var2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_big_var6.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_diskless.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_diskless2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_diskless3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_diskless4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_formatx_pnetcdf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_large.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_meta.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_misc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_names.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_nofill.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_nofill2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_nofill3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_norm.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_parallel2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_pnetcdf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_small.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/util.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+t_nc.log: t_nc$(EXEEXT)
+ @p='t_nc$(EXEEXT)'; \
+ b='t_nc'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_small.log: tst_small$(EXEEXT)
+ @p='tst_small$(EXEEXT)'; \
+ b='tst_small'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+nc_test.log: nc_test$(EXEEXT)
+ @p='nc_test$(EXEEXT)'; \
+ b='nc_test'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_misc.log: tst_misc$(EXEEXT)
+ @p='tst_misc$(EXEEXT)'; \
+ b='tst_misc'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_norm.log: tst_norm$(EXEEXT)
+ @p='tst_norm$(EXEEXT)'; \
+ b='tst_norm'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_names.log: tst_names$(EXEEXT)
+ @p='tst_names$(EXEEXT)'; \
+ b='tst_names'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_nofill.log: tst_nofill$(EXEEXT)
+ @p='tst_nofill$(EXEEXT)'; \
+ b='tst_nofill'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_nofill2.log: tst_nofill2$(EXEEXT)
+ @p='tst_nofill2$(EXEEXT)'; \
+ b='tst_nofill2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_nofill3.log: tst_nofill3$(EXEEXT)
+ @p='tst_nofill3$(EXEEXT)'; \
+ b='tst_nofill3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_atts3.log: tst_atts3$(EXEEXT)
+ @p='tst_atts3$(EXEEXT)'; \
+ b='tst_atts3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_meta.log: tst_meta$(EXEEXT)
+ @p='tst_meta$(EXEEXT)'; \
+ b='tst_meta'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_atts.log: tst_atts$(EXEEXT)
+ @p='tst_atts$(EXEEXT)'; \
+ b='tst_atts'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_parallel2.log: tst_parallel2$(EXEEXT)
+ @p='tst_parallel2$(EXEEXT)'; \
+ b='tst_parallel2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_pnetcdf.log: tst_pnetcdf$(EXEEXT)
+ @p='tst_pnetcdf$(EXEEXT)'; \
+ b='tst_pnetcdf'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_formatx_pnetcdf.log: tst_formatx_pnetcdf$(EXEEXT)
+ @p='tst_formatx_pnetcdf$(EXEEXT)'; \
+ b='tst_formatx_pnetcdf'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+quick_large_files.log: quick_large_files$(EXEEXT)
+ @p='quick_large_files$(EXEEXT)'; \
+ b='quick_large_files'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_big_var6.log: tst_big_var6$(EXEEXT)
+ @p='tst_big_var6$(EXEEXT)'; \
+ b='tst_big_var6'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_big_var2.log: tst_big_var2$(EXEEXT)
+ @p='tst_big_var2$(EXEEXT)'; \
+ b='tst_big_var2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_big_rvar.log: tst_big_rvar$(EXEEXT)
+ @p='tst_big_rvar$(EXEEXT)'; \
+ b='tst_big_rvar'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_big_var.log: tst_big_var$(EXEEXT)
+ @p='tst_big_var$(EXEEXT)'; \
+ b='tst_big_var'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_large.log: tst_large$(EXEEXT)
+ @p='tst_large$(EXEEXT)'; \
+ b='tst_large'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+large_files.log: large_files$(EXEEXT)
+ @p='large_files$(EXEEXT)'; \
+ b='large_files'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+testnc3perf.log: testnc3perf$(EXEEXT)
+ @p='testnc3perf$(EXEEXT)'; \
+ b='testnc3perf'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_diskless.sh.log: run_diskless.sh
+ @p='run_diskless.sh'; \
+ b='run_diskless.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_mmap.sh.log: run_mmap.sh
+ @p='run_mmap.sh'; \
+ b='run_mmap.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_diskless2.sh.log: run_diskless2.sh
+ @p='run_diskless2.sh'; \
+ b='run_diskless2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_pnetcdf_test.sh.log: run_pnetcdf_test.sh
+ @p='run_pnetcdf_test.sh'; \
+ b='run_pnetcdf_test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_valgrind_tests.sh.log: run_valgrind_tests.sh
+ @p='run_valgrind_tests.sh'; \
+ b='run_valgrind_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+#EXTRA_DIST += ${nc_test_SOURCES}
+
+# Only clean these on mainatiner-clean, because they require m4 to
+# regenerate.
+#MAINTAINERCLEANFILES = test_get.c test_put.c
+
+# This rule tells make how to turn our .m4 files into .c files.
+.m4.c:
+ m4 $(AM_M4FLAGS) $(M4FLAGS) -s $< >$@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/nc_test/large_files.c b/nc_test/large_files.c
index ce8ccf4..fe47421 100644
--- a/nc_test/large_files.c
+++ b/nc_test/large_files.c
@@ -119,6 +119,10 @@ main(int argc, char **argv) {
//static float var1[J_LEN];
static float *var1 = NULL;
var1 = malloc(sizeof(float)*J_LEN);
+ if(!var1) {
+ printf("Malloc failed. This may happen on systems with < 4GB. THIS TEST DID NOT PASS, but is returning 0.\n");
+ return 0;
+ }
static size_t var1_start[RANK_var1] = {0, 0, 0};
static size_t var1_count[RANK_var1] = {1, 1, J_LEN};
static size_t x_start[RANK_x] = {0, 0};
diff --git a/nc_test/run_diskless.sh b/nc_test/run_diskless.sh
index bdf6864..73d7bd5 100755
--- a/nc_test/run_diskless.sh
+++ b/nc_test/run_diskless.sh
@@ -69,7 +69,7 @@ if test -f $FILE2 ; then
echo "**** $FILE2 created"
# Do a cyle test
if ../ncdump/ncdump $FILE2 |sed -e s/tst_diskless2/tmp1/ > tmp1.cdl ; then
- if ../ncgen/ncgen -k3 -o tmp1.nc tmp1.cdl ;then
+ if ../ncgen/ncgen -k nc4 -o tmp1.nc tmp1.cdl ;then
if ../ncdump/ncdump tmp1.nc >tmp2.cdl ; then
if diff -wb tmp1.cdl tmp2.cdl ; then
ok=yes
diff --git a/nc_test/run_pnetcdf_test.sh b/nc_test/run_pnetcdf_test.sh
index cb71a07..dacd3b0 100755
--- a/nc_test/run_pnetcdf_test.sh
+++ b/nc_test/run_pnetcdf_test.sh
@@ -8,4 +8,5 @@ echo "Testing file created with pnetcdf is modifiable with netCDF..."
./tst_pnetcdf
set -x
-mpiexec -n 4 ./tst_parallel2
+# We assume a min of at least 2 processors is available
+mpiexec -n 2 ./tst_parallel2
diff --git a/nc_test/test_get.c b/nc_test/test_get.c
index 0c6239d..0395438 100644
--- a/nc_test/test_get.c
+++ b/nc_test/test_get.c
@@ -1,6251 +1,12388 @@
+#line 5 "test_get.m4"
/* Do not edit this file. It is produced from the corresponding .m4 source */
+#line 7
/*********************************************************************
* Copyright 1996, UCAR/Unidata
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
* $Id: test_get.m4,v 1.16 2005/03/08 03:04:19 ed Exp $
*********************************************************************/
+#line 31
#include "tests.h"
+#line 116
void
+#line 117
test_nc_get_var1_text(void)
+#line 117
{
+#line 117
int ncid;
+#line 117
int i;
+#line 117
int j;
+#line 117
int err;
+#line 117
int nok = 0; /* count of valid comparisons */
+#line 117
size_t index[MAX_RANK];
+#line 117
double expect;
+#line 117
int canConvert; /* Both text or both numeric */
+#line 117
text value;
+#line 117
+#line 117
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 117
IF (err)
+#line 117
error("nc_open: %s", nc_strerror(err));
+#line 117
for (i = 0; i < NVARS; i++) {
+#line 117
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 117
for (j = 0; j < var_rank[i]; j++)
+#line 117
index[j] = 0;
+#line 117
err = nc_get_var1_text(BAD_ID, i, index, &value);
+#line 117
IF (err != NC_EBADID)
+#line 117
error("bad ncid: status = %d", err);
+#line 117
err = nc_get_var1_text(ncid, BAD_VARID, index, &value);
+#line 117
IF (err != NC_ENOTVAR)
+#line 117
error("bad var id: status = %d", err);
+#line 117
for (j = 0; j < var_rank[i]; j++) {
+#line 117
index[j] = var_shape[i][j];
+#line 117
err = nc_get_var1_text(ncid, i, index, &value);
+#line 117
if(!canConvert) {
+#line 117
IF(err != NC_ECHAR)
+#line 117
error("conversion: status = %d", err);
+#line 117
} else IF (err != NC_EINVALCOORDS)
+#line 117
error("bad index: status = %d", err);
+#line 117
index[j] = 0;
+#line 117
}
+#line 117
for (j = 0; j < var_nels[i]; j++) {
+#line 117
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 117
IF (err)
+#line 117
error("error in toMixedBase 1");
+#line 117
expect = hash4( var_type[i], var_rank[i], index, NCT_TEXT );
+#line 117
if (var_rank[i] == 0 && i%2 )
+#line 117
err = nc_get_var1_text(ncid, i, NULL, &value);
+#line 117
else
+#line 117
err = nc_get_var1_text(ncid, i, index, &value);
+#line 117
if (canConvert) {
+#line 117
if (inRange3(expect,var_type[i], NCT_TEXT)) {
+#line 117
if (expect >= text_min && expect <= text_max) {
+#line 117
IF (err) {
+#line 117
error("%s", nc_strerror(err));
+#line 117
} else {
+#line 117
IF (!equal(value,expect,var_type[i],NCT_TEXT)) {
+#line 117
error("expected: %G, got: %G", expect,
+#line 117
(double) value);
+#line 117
} else {
+#line 117
nok++;
+#line 117
}
+#line 117
}
+#line 117
} else {
+#line 117
IF (err != NC_ERANGE)
+#line 117
error("Range error: status = %d", err);
+#line 117
}
+#line 117
} else {
+#line 117
IF (err != 0 && err != NC_ERANGE)
+#line 117
error("OK or Range error: status = %d", err);
+#line 117
}
+#line 117
} else {
+#line 117
IF (err != NC_ECHAR)
+#line 117
error("wrong type: status = %d", err);
+#line 117
}
+#line 117
}
+#line 117
}
+#line 117
err = nc_close(ncid);
+#line 117
IF (err)
+#line 117
error("nc_close: %s", nc_strerror(err));
+#line 117
print_nok(nok);
+#line 117
}
+#line 117
void
+#line 118
test_nc_get_var1_uchar(void)
+#line 118
{
+#line 118
int ncid;
+#line 118
int i;
+#line 118
int j;
+#line 118
int err;
+#line 118
int nok = 0; /* count of valid comparisons */
+#line 118
size_t index[MAX_RANK];
+#line 118
double expect;
+#line 118
int canConvert; /* Both text or both numeric */
+#line 118
uchar value;
+#line 118
+#line 118
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 118
IF (err)
+#line 118
error("nc_open: %s", nc_strerror(err));
+#line 118
for (i = 0; i < NVARS; i++) {
+#line 118
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 118
for (j = 0; j < var_rank[i]; j++)
+#line 118
index[j] = 0;
+#line 118
err = nc_get_var1_uchar(BAD_ID, i, index, &value);
+#line 118
IF (err != NC_EBADID)
+#line 118
error("bad ncid: status = %d", err);
+#line 118
err = nc_get_var1_uchar(ncid, BAD_VARID, index, &value);
+#line 118
IF (err != NC_ENOTVAR)
+#line 118
error("bad var id: status = %d", err);
+#line 118
for (j = 0; j < var_rank[i]; j++) {
+#line 118
index[j] = var_shape[i][j];
+#line 118
err = nc_get_var1_uchar(ncid, i, index, &value);
+#line 118
if(!canConvert) {
+#line 118
IF(err != NC_ECHAR)
+#line 118
error("conversion: status = %d", err);
+#line 118
} else IF (err != NC_EINVALCOORDS)
+#line 118
error("bad index: status = %d", err);
+#line 118
index[j] = 0;
+#line 118
}
+#line 118
for (j = 0; j < var_nels[i]; j++) {
+#line 118
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 118
IF (err)
+#line 118
error("error in toMixedBase 1");
+#line 118
expect = hash4( var_type[i], var_rank[i], index, NCT_UCHAR );
+#line 118
if (var_rank[i] == 0 && i%2 )
+#line 118
err = nc_get_var1_uchar(ncid, i, NULL, &value);
+#line 118
else
+#line 118
err = nc_get_var1_uchar(ncid, i, index, &value);
+#line 118
if (canConvert) {
+#line 118
if (inRange3(expect,var_type[i], NCT_UCHAR)) {
+#line 118
if (expect >= uchar_min && expect <= uchar_max) {
+#line 118
IF (err) {
+#line 118
error("%s", nc_strerror(err));
+#line 118
} else {
+#line 118
IF (!equal(value,expect,var_type[i],NCT_UCHAR)) {
+#line 118
error("expected: %G, got: %G", expect,
+#line 118
(double) value);
+#line 118
} else {
+#line 118
nok++;
+#line 118
}
+#line 118
}
+#line 118
} else {
+#line 118
IF (err != NC_ERANGE)
+#line 118
error("Range error: status = %d", err);
+#line 118
}
+#line 118
} else {
+#line 118
IF (err != 0 && err != NC_ERANGE)
+#line 118
error("OK or Range error: status = %d", err);
+#line 118
}
+#line 118
} else {
+#line 118
IF (err != NC_ECHAR)
+#line 118
error("wrong type: status = %d", err);
+#line 118
}
+#line 118
}
+#line 118
}
+#line 118
err = nc_close(ncid);
+#line 118
IF (err)
+#line 118
error("nc_close: %s", nc_strerror(err));
+#line 118
print_nok(nok);
+#line 118
}
+#line 118
void
+#line 119
test_nc_get_var1_schar(void)
+#line 119
{
+#line 119
int ncid;
+#line 119
int i;
+#line 119
int j;
+#line 119
int err;
+#line 119
int nok = 0; /* count of valid comparisons */
+#line 119
size_t index[MAX_RANK];
+#line 119
double expect;
+#line 119
int canConvert; /* Both text or both numeric */
+#line 119
schar value;
+#line 119
+#line 119
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 119
IF (err)
+#line 119
error("nc_open: %s", nc_strerror(err));
+#line 119
for (i = 0; i < NVARS; i++) {
+#line 119
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 119
for (j = 0; j < var_rank[i]; j++)
+#line 119
index[j] = 0;
+#line 119
err = nc_get_var1_schar(BAD_ID, i, index, &value);
+#line 119
IF (err != NC_EBADID)
+#line 119
error("bad ncid: status = %d", err);
+#line 119
err = nc_get_var1_schar(ncid, BAD_VARID, index, &value);
+#line 119
IF (err != NC_ENOTVAR)
+#line 119
error("bad var id: status = %d", err);
+#line 119
for (j = 0; j < var_rank[i]; j++) {
+#line 119
index[j] = var_shape[i][j];
+#line 119
err = nc_get_var1_schar(ncid, i, index, &value);
+#line 119
if(!canConvert) {
+#line 119
IF(err != NC_ECHAR)
+#line 119
error("conversion: status = %d", err);
+#line 119
} else IF (err != NC_EINVALCOORDS)
+#line 119
error("bad index: status = %d", err);
+#line 119
index[j] = 0;
+#line 119
}
+#line 119
for (j = 0; j < var_nels[i]; j++) {
+#line 119
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 119
IF (err)
+#line 119
error("error in toMixedBase 1");
+#line 119
expect = hash4( var_type[i], var_rank[i], index, NCT_SCHAR );
+#line 119
if (var_rank[i] == 0 && i%2 )
+#line 119
err = nc_get_var1_schar(ncid, i, NULL, &value);
+#line 119
else
+#line 119
err = nc_get_var1_schar(ncid, i, index, &value);
+#line 119
if (canConvert) {
+#line 119
if (inRange3(expect,var_type[i], NCT_SCHAR)) {
+#line 119
if (expect >= schar_min && expect <= schar_max) {
+#line 119
IF (err) {
+#line 119
error("%s", nc_strerror(err));
+#line 119
} else {
+#line 119
IF (!equal(value,expect,var_type[i],NCT_SCHAR)) {
+#line 119
error("expected: %G, got: %G", expect,
+#line 119
(double) value);
+#line 119
} else {
+#line 119
nok++;
+#line 119
}
+#line 119
}
+#line 119
} else {
+#line 119
IF (err != NC_ERANGE)
+#line 119
error("Range error: status = %d", err);
+#line 119
}
+#line 119
} else {
+#line 119
IF (err != 0 && err != NC_ERANGE)
+#line 119
error("OK or Range error: status = %d", err);
+#line 119
}
+#line 119
} else {
+#line 119
IF (err != NC_ECHAR)
+#line 119
error("wrong type: status = %d", err);
+#line 119
}
+#line 119
}
+#line 119
}
+#line 119
err = nc_close(ncid);
+#line 119
IF (err)
+#line 119
error("nc_close: %s", nc_strerror(err));
+#line 119
print_nok(nok);
+#line 119
}
+#line 119
void
+#line 120
test_nc_get_var1_short(void)
+#line 120
{
+#line 120
int ncid;
+#line 120
int i;
+#line 120
int j;
+#line 120
int err;
+#line 120
int nok = 0; /* count of valid comparisons */
+#line 120
size_t index[MAX_RANK];
+#line 120
double expect;
+#line 120
int canConvert; /* Both text or both numeric */
+#line 120
short value;
+#line 120
+#line 120
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 120
IF (err)
+#line 120
error("nc_open: %s", nc_strerror(err));
+#line 120
for (i = 0; i < NVARS; i++) {
+#line 120
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 120
for (j = 0; j < var_rank[i]; j++)
+#line 120
index[j] = 0;
+#line 120
err = nc_get_var1_short(BAD_ID, i, index, &value);
+#line 120
IF (err != NC_EBADID)
+#line 120
error("bad ncid: status = %d", err);
+#line 120
err = nc_get_var1_short(ncid, BAD_VARID, index, &value);
+#line 120
IF (err != NC_ENOTVAR)
+#line 120
error("bad var id: status = %d", err);
+#line 120
for (j = 0; j < var_rank[i]; j++) {
+#line 120
index[j] = var_shape[i][j];
+#line 120
err = nc_get_var1_short(ncid, i, index, &value);
+#line 120
if(!canConvert) {
+#line 120
IF(err != NC_ECHAR)
+#line 120
error("conversion: status = %d", err);
+#line 120
} else IF (err != NC_EINVALCOORDS)
+#line 120
error("bad index: status = %d", err);
+#line 120
index[j] = 0;
+#line 120
}
+#line 120
for (j = 0; j < var_nels[i]; j++) {
+#line 120
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 120
IF (err)
+#line 120
error("error in toMixedBase 1");
+#line 120
expect = hash4( var_type[i], var_rank[i], index, NCT_SHORT );
+#line 120
if (var_rank[i] == 0 && i%2 )
+#line 120
err = nc_get_var1_short(ncid, i, NULL, &value);
+#line 120
else
+#line 120
err = nc_get_var1_short(ncid, i, index, &value);
+#line 120
if (canConvert) {
+#line 120
if (inRange3(expect,var_type[i], NCT_SHORT)) {
+#line 120
if (expect >= short_min && expect <= short_max) {
+#line 120
IF (err) {
+#line 120
error("%s", nc_strerror(err));
+#line 120
} else {
+#line 120
IF (!equal(value,expect,var_type[i],NCT_SHORT)) {
+#line 120
error("expected: %G, got: %G", expect,
+#line 120
(double) value);
+#line 120
} else {
+#line 120
nok++;
+#line 120
}
+#line 120
}
+#line 120
} else {
+#line 120
IF (err != NC_ERANGE)
+#line 120
error("Range error: status = %d", err);
+#line 120
}
+#line 120
} else {
+#line 120
IF (err != 0 && err != NC_ERANGE)
+#line 120
error("OK or Range error: status = %d", err);
+#line 120
}
+#line 120
} else {
+#line 120
IF (err != NC_ECHAR)
+#line 120
error("wrong type: status = %d", err);
+#line 120
}
+#line 120
}
+#line 120
}
+#line 120
err = nc_close(ncid);
+#line 120
IF (err)
+#line 120
error("nc_close: %s", nc_strerror(err));
+#line 120
print_nok(nok);
+#line 120
}
+#line 120
void
+#line 121
test_nc_get_var1_int(void)
+#line 121
{
+#line 121
int ncid;
+#line 121
int i;
+#line 121
int j;
+#line 121
int err;
+#line 121
int nok = 0; /* count of valid comparisons */
+#line 121
size_t index[MAX_RANK];
+#line 121
double expect;
+#line 121
int canConvert; /* Both text or both numeric */
+#line 121
int value;
+#line 121
+#line 121
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 121
IF (err)
+#line 121
error("nc_open: %s", nc_strerror(err));
+#line 121
for (i = 0; i < NVARS; i++) {
+#line 121
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 121
for (j = 0; j < var_rank[i]; j++)
+#line 121
index[j] = 0;
+#line 121
err = nc_get_var1_int(BAD_ID, i, index, &value);
+#line 121
IF (err != NC_EBADID)
+#line 121
error("bad ncid: status = %d", err);
+#line 121
err = nc_get_var1_int(ncid, BAD_VARID, index, &value);
+#line 121
IF (err != NC_ENOTVAR)
+#line 121
error("bad var id: status = %d", err);
+#line 121
for (j = 0; j < var_rank[i]; j++) {
+#line 121
index[j] = var_shape[i][j];
+#line 121
err = nc_get_var1_int(ncid, i, index, &value);
+#line 121
if(!canConvert) {
+#line 121
IF(err != NC_ECHAR)
+#line 121
error("conversion: status = %d", err);
+#line 121
} else IF (err != NC_EINVALCOORDS)
+#line 121
error("bad index: status = %d", err);
+#line 121
index[j] = 0;
+#line 121
}
+#line 121
for (j = 0; j < var_nels[i]; j++) {
+#line 121
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 121
IF (err)
+#line 121
error("error in toMixedBase 1");
+#line 121
expect = hash4( var_type[i], var_rank[i], index, NCT_INT );
+#line 121
if (var_rank[i] == 0 && i%2 )
+#line 121
err = nc_get_var1_int(ncid, i, NULL, &value);
+#line 121
else
+#line 121
err = nc_get_var1_int(ncid, i, index, &value);
+#line 121
if (canConvert) {
+#line 121
if (inRange3(expect,var_type[i], NCT_INT)) {
+#line 121
if (expect >= int_min && expect <= int_max) {
+#line 121
IF (err) {
+#line 121
error("%s", nc_strerror(err));
+#line 121
} else {
+#line 121
IF (!equal(value,expect,var_type[i],NCT_INT)) {
+#line 121
error("expected: %G, got: %G", expect,
+#line 121
(double) value);
+#line 121
} else {
+#line 121
nok++;
+#line 121
}
+#line 121
}
+#line 121
} else {
+#line 121
IF (err != NC_ERANGE)
+#line 121
error("Range error: status = %d", err);
+#line 121
}
+#line 121
} else {
+#line 121
IF (err != 0 && err != NC_ERANGE)
+#line 121
error("OK or Range error: status = %d", err);
+#line 121
}
+#line 121
} else {
+#line 121
IF (err != NC_ECHAR)
+#line 121
error("wrong type: status = %d", err);
+#line 121
}
+#line 121
}
+#line 121
}
+#line 121
err = nc_close(ncid);
+#line 121
IF (err)
+#line 121
error("nc_close: %s", nc_strerror(err));
+#line 121
print_nok(nok);
+#line 121
}
+#line 121
void
+#line 122
test_nc_get_var1_long(void)
+#line 122
{
+#line 122
int ncid;
+#line 122
int i;
+#line 122
int j;
+#line 122
int err;
+#line 122
int nok = 0; /* count of valid comparisons */
+#line 122
size_t index[MAX_RANK];
+#line 122
double expect;
+#line 122
int canConvert; /* Both text or both numeric */
+#line 122
long value;
+#line 122
+#line 122
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 122
IF (err)
+#line 122
error("nc_open: %s", nc_strerror(err));
+#line 122
for (i = 0; i < NVARS; i++) {
+#line 122
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 122
for (j = 0; j < var_rank[i]; j++)
+#line 122
index[j] = 0;
+#line 122
err = nc_get_var1_long(BAD_ID, i, index, &value);
+#line 122
IF (err != NC_EBADID)
+#line 122
error("bad ncid: status = %d", err);
+#line 122
err = nc_get_var1_long(ncid, BAD_VARID, index, &value);
+#line 122
IF (err != NC_ENOTVAR)
+#line 122
error("bad var id: status = %d", err);
+#line 122
for (j = 0; j < var_rank[i]; j++) {
+#line 122
index[j] = var_shape[i][j];
+#line 122
err = nc_get_var1_long(ncid, i, index, &value);
+#line 122
if(!canConvert) {
+#line 122
IF(err != NC_ECHAR)
+#line 122
error("conversion: status = %d", err);
+#line 122
} else IF (err != NC_EINVALCOORDS)
+#line 122
error("bad index: status = %d", err);
+#line 122
index[j] = 0;
+#line 122
}
+#line 122
for (j = 0; j < var_nels[i]; j++) {
+#line 122
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 122
IF (err)
+#line 122
error("error in toMixedBase 1");
+#line 122
expect = hash4( var_type[i], var_rank[i], index, NCT_LONG );
+#line 122
if (var_rank[i] == 0 && i%2 )
+#line 122
err = nc_get_var1_long(ncid, i, NULL, &value);
+#line 122
else
+#line 122
err = nc_get_var1_long(ncid, i, index, &value);
+#line 122
if (canConvert) {
+#line 122
if (inRange3(expect,var_type[i], NCT_LONG)) {
+#line 122
if (expect >= long_min && expect <= long_max) {
+#line 122
IF (err) {
+#line 122
error("%s", nc_strerror(err));
+#line 122
} else {
+#line 122
IF (!equal(value,expect,var_type[i],NCT_LONG)) {
+#line 122
error("expected: %G, got: %G", expect,
+#line 122
(double) value);
+#line 122
} else {
+#line 122
nok++;
+#line 122
}
+#line 122
}
+#line 122
} else {
+#line 122
IF (err != NC_ERANGE)
+#line 122
error("Range error: status = %d", err);
+#line 122
}
+#line 122
} else {
+#line 122
IF (err != 0 && err != NC_ERANGE)
+#line 122
error("OK or Range error: status = %d", err);
+#line 122
}
+#line 122
} else {
+#line 122
IF (err != NC_ECHAR)
+#line 122
error("wrong type: status = %d", err);
+#line 122
}
+#line 122
}
+#line 122
}
+#line 122
err = nc_close(ncid);
+#line 122
IF (err)
+#line 122
error("nc_close: %s", nc_strerror(err));
+#line 122
print_nok(nok);
+#line 122
}
+#line 122
void
+#line 123
test_nc_get_var1_float(void)
+#line 123
{
+#line 123
int ncid;
+#line 123
int i;
+#line 123
int j;
+#line 123
int err;
+#line 123
int nok = 0; /* count of valid comparisons */
+#line 123
size_t index[MAX_RANK];
+#line 123
double expect;
+#line 123
int canConvert; /* Both text or both numeric */
+#line 123
float value;
+#line 123
+#line 123
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 123
IF (err)
+#line 123
error("nc_open: %s", nc_strerror(err));
+#line 123
for (i = 0; i < NVARS; i++) {
+#line 123
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 123
for (j = 0; j < var_rank[i]; j++)
+#line 123
index[j] = 0;
+#line 123
err = nc_get_var1_float(BAD_ID, i, index, &value);
+#line 123
IF (err != NC_EBADID)
+#line 123
error("bad ncid: status = %d", err);
+#line 123
err = nc_get_var1_float(ncid, BAD_VARID, index, &value);
+#line 123
IF (err != NC_ENOTVAR)
+#line 123
error("bad var id: status = %d", err);
+#line 123
for (j = 0; j < var_rank[i]; j++) {
+#line 123
index[j] = var_shape[i][j];
+#line 123
err = nc_get_var1_float(ncid, i, index, &value);
+#line 123
if(!canConvert) {
+#line 123
IF(err != NC_ECHAR)
+#line 123
error("conversion: status = %d", err);
+#line 123
} else IF (err != NC_EINVALCOORDS)
+#line 123
error("bad index: status = %d", err);
+#line 123
index[j] = 0;
+#line 123
}
+#line 123
for (j = 0; j < var_nels[i]; j++) {
+#line 123
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 123
IF (err)
+#line 123
error("error in toMixedBase 1");
+#line 123
expect = hash4( var_type[i], var_rank[i], index, NCT_FLOAT );
+#line 123
if (var_rank[i] == 0 && i%2 )
+#line 123
err = nc_get_var1_float(ncid, i, NULL, &value);
+#line 123
else
+#line 123
err = nc_get_var1_float(ncid, i, index, &value);
+#line 123
if (canConvert) {
+#line 123
if (inRange3(expect,var_type[i], NCT_FLOAT)) {
+#line 123
if (expect >= float_min && expect <= float_max) {
+#line 123
IF (err) {
+#line 123
error("%s", nc_strerror(err));
+#line 123
} else {
+#line 123
IF (!equal(value,expect,var_type[i],NCT_FLOAT)) {
+#line 123
error("expected: %G, got: %G", expect,
+#line 123
(double) value);
+#line 123
} else {
+#line 123
nok++;
+#line 123
}
+#line 123
}
+#line 123
} else {
+#line 123
IF (err != NC_ERANGE)
+#line 123
error("Range error: status = %d", err);
+#line 123
}
+#line 123
} else {
+#line 123
IF (err != 0 && err != NC_ERANGE)
+#line 123
error("OK or Range error: status = %d", err);
+#line 123
}
+#line 123
} else {
+#line 123
IF (err != NC_ECHAR)
+#line 123
error("wrong type: status = %d", err);
+#line 123
}
+#line 123
}
+#line 123
}
+#line 123
err = nc_close(ncid);
+#line 123
IF (err)
+#line 123
error("nc_close: %s", nc_strerror(err));
+#line 123
print_nok(nok);
+#line 123
}
+#line 123
void
+#line 124
test_nc_get_var1_double(void)
+#line 124
{
+#line 124
int ncid;
+#line 124
int i;
+#line 124
int j;
+#line 124
int err;
+#line 124
int nok = 0; /* count of valid comparisons */
+#line 124
size_t index[MAX_RANK];
+#line 124
double expect;
+#line 124
int canConvert; /* Both text or both numeric */
+#line 124
double value;
+#line 124
+#line 124
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 124
IF (err)
+#line 124
error("nc_open: %s", nc_strerror(err));
+#line 124
for (i = 0; i < NVARS; i++) {
+#line 124
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 124
for (j = 0; j < var_rank[i]; j++)
+#line 124
index[j] = 0;
+#line 124
err = nc_get_var1_double(BAD_ID, i, index, &value);
+#line 124
IF (err != NC_EBADID)
+#line 124
error("bad ncid: status = %d", err);
+#line 124
err = nc_get_var1_double(ncid, BAD_VARID, index, &value);
+#line 124
IF (err != NC_ENOTVAR)
+#line 124
error("bad var id: status = %d", err);
+#line 124
for (j = 0; j < var_rank[i]; j++) {
+#line 124
index[j] = var_shape[i][j];
+#line 124
err = nc_get_var1_double(ncid, i, index, &value);
+#line 124
if(!canConvert) {
+#line 124
IF(err != NC_ECHAR)
+#line 124
error("conversion: status = %d", err);
+#line 124
} else IF (err != NC_EINVALCOORDS)
+#line 124
error("bad index: status = %d", err);
+#line 124
index[j] = 0;
+#line 124
}
+#line 124
for (j = 0; j < var_nels[i]; j++) {
+#line 124
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 124
IF (err)
+#line 124
error("error in toMixedBase 1");
+#line 124
expect = hash4( var_type[i], var_rank[i], index, NCT_DOUBLE );
+#line 124
if (var_rank[i] == 0 && i%2 )
+#line 124
err = nc_get_var1_double(ncid, i, NULL, &value);
+#line 124
else
+#line 124
err = nc_get_var1_double(ncid, i, index, &value);
+#line 124
if (canConvert) {
+#line 124
if (inRange3(expect,var_type[i], NCT_DOUBLE)) {
+#line 124
if (expect >= double_min && expect <= double_max) {
+#line 124
IF (err) {
+#line 124
error("%s", nc_strerror(err));
+#line 124
} else {
+#line 124
IF (!equal(value,expect,var_type[i],NCT_DOUBLE)) {
+#line 124
error("expected: %G, got: %G", expect,
+#line 124
(double) value);
+#line 124
} else {
+#line 124
nok++;
+#line 124
}
+#line 124
}
+#line 124
} else {
+#line 124
IF (err != NC_ERANGE)
+#line 124
error("Range error: status = %d", err);
+#line 124
}
+#line 124
} else {
+#line 124
IF (err != 0 && err != NC_ERANGE)
+#line 124
error("OK or Range error: status = %d", err);
+#line 124
}
+#line 124
} else {
+#line 124
IF (err != NC_ECHAR)
+#line 124
error("wrong type: status = %d", err);
+#line 124
}
+#line 124
}
+#line 124
}
+#line 124
err = nc_close(ncid);
+#line 124
IF (err)
+#line 124
error("nc_close: %s", nc_strerror(err));
+#line 124
print_nok(nok);
+#line 124
}
+#line 124
+#line 221
void
+#line 222
test_nc_get_var_text(void)
+#line 222
{
+#line 222
int ncid;
+#line 222
int i;
+#line 222
int j;
+#line 222
int err;
+#line 222
int allInExtRange; /* all values within external range? */
+#line 222
int allInIntRange; /* all values within internal range? */
+#line 222
int nels;
+#line 222
int nok = 0; /* count of valid comparisons */
+#line 222
size_t index[MAX_RANK];
+#line 222
int canConvert; /* Both text or both numeric */
+#line 222
text value[MAX_NELS];
+#line 222
double expect[MAX_NELS];
+#line 222
+#line 222
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 222
IF (err)
+#line 222
error("nc_open: %s", nc_strerror(err));
+#line 222
for (i = 0; i < NVARS; i++) {
+#line 222
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 222
assert(var_rank[i] <= MAX_RANK);
+#line 222
assert(var_nels[i] <= MAX_NELS);
+#line 222
err = nc_get_var_text(BAD_ID, i, value);
+#line 222
IF (err != NC_EBADID)
+#line 222
error("bad ncid: status = %d", err);
+#line 222
err = nc_get_var_text(ncid, BAD_VARID, value);
+#line 222
IF (err != NC_ENOTVAR)
+#line 222
error("bad var id: status = %d", err);
+#line 222
+#line 222
nels = 1;
+#line 222
for (j = 0; j < var_rank[i]; j++) {
+#line 222
nels *= var_shape[i][j];
+#line 222
}
+#line 222
allInExtRange = allInIntRange = 1;
+#line 222
for (j = 0; j < nels; j++) {
+#line 222
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 222
IF (err)
+#line 222
error("error in toMixedBase 1");
+#line 222
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_TEXT);
+#line 222
if (inRange3(expect[j],var_type[i], NCT_TEXT)) {
+#line 222
allInIntRange = allInIntRange && expect[j] >= text_min
+#line 222
&& expect[j] <= text_max;
+#line 222
} else {
+#line 222
allInExtRange = 0;
+#line 222
}
+#line 222
}
+#line 222
err = nc_get_var_text(ncid, i, value);
+#line 222
if (canConvert) {
+#line 222
if (allInExtRange) {
+#line 222
if (allInIntRange) {
+#line 222
IF (err)
+#line 222
error("%s", nc_strerror(err));
+#line 222
} else {
+#line 222
IF (err != NC_ERANGE)
+#line 222
error("Range error: status = %d", err);
+#line 222
}
+#line 222
} else {
+#line 222
IF (err != 0 && err != NC_ERANGE)
+#line 222
error("OK or Range error: status = %d", err);
+#line 222
}
+#line 222
for (j = 0; j < nels; j++) {
+#line 222
if (inRange3(expect[j],var_type[i],NCT_TEXT)
+#line 222
&& expect[j] >= text_min && expect[j] <= text_max) {
+#line 222
IF (!equal(value[j],expect[j],var_type[i],NCT_TEXT)){
+#line 222
error("value read not that expected");
+#line 222
if (verbose) {
+#line 222
error("\n");
+#line 222
error("varid: %d, ", i);
+#line 222
error("var_name: %s, ", var_name[i]);
+#line 222
error("element number: %d ", j);
+#line 222
error("expect: %g", expect[j]);
+#line 222
error("got: %g", (double) value[j]);
+#line 222
}
+#line 222
} else {
+#line 222
nok++;
+#line 222
}
+#line 222
}
+#line 222
}
+#line 222
} else {
+#line 222
IF (nels > 0 && err != NC_ECHAR)
+#line 222
error("wrong type: status = %d", err);
+#line 222
}
+#line 222
}
+#line 222
err = nc_close(ncid);
+#line 222
IF (err)
+#line 222
error("nc_close: %s", nc_strerror(err));
+#line 222
print_nok(nok);
+#line 222
}
+#line 222
void
+#line 223
test_nc_get_var_uchar(void)
+#line 223
{
+#line 223
int ncid;
+#line 223
int i;
+#line 223
int j;
+#line 223
int err;
+#line 223
int allInExtRange; /* all values within external range? */
+#line 223
int allInIntRange; /* all values within internal range? */
+#line 223
int nels;
+#line 223
int nok = 0; /* count of valid comparisons */
+#line 223
size_t index[MAX_RANK];
+#line 223
int canConvert; /* Both text or both numeric */
+#line 223
uchar value[MAX_NELS];
+#line 223
double expect[MAX_NELS];
+#line 223
+#line 223
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 223
IF (err)
+#line 223
error("nc_open: %s", nc_strerror(err));
+#line 223
for (i = 0; i < NVARS; i++) {
+#line 223
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 223
assert(var_rank[i] <= MAX_RANK);
+#line 223
assert(var_nels[i] <= MAX_NELS);
+#line 223
err = nc_get_var_uchar(BAD_ID, i, value);
+#line 223
IF (err != NC_EBADID)
+#line 223
error("bad ncid: status = %d", err);
+#line 223
err = nc_get_var_uchar(ncid, BAD_VARID, value);
+#line 223
IF (err != NC_ENOTVAR)
+#line 223
error("bad var id: status = %d", err);
+#line 223
+#line 223
nels = 1;
+#line 223
for (j = 0; j < var_rank[i]; j++) {
+#line 223
nels *= var_shape[i][j];
+#line 223
}
+#line 223
allInExtRange = allInIntRange = 1;
+#line 223
for (j = 0; j < nels; j++) {
+#line 223
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 223
IF (err)
+#line 223
error("error in toMixedBase 1");
+#line 223
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_UCHAR);
+#line 223
if (inRange3(expect[j],var_type[i], NCT_UCHAR)) {
+#line 223
allInIntRange = allInIntRange && expect[j] >= uchar_min
+#line 223
&& expect[j] <= uchar_max;
+#line 223
} else {
+#line 223
allInExtRange = 0;
+#line 223
}
+#line 223
}
+#line 223
err = nc_get_var_uchar(ncid, i, value);
+#line 223
if (canConvert) {
+#line 223
if (allInExtRange) {
+#line 223
if (allInIntRange) {
+#line 223
IF (err)
+#line 223
error("%s", nc_strerror(err));
+#line 223
} else {
+#line 223
IF (err != NC_ERANGE)
+#line 223
error("Range error: status = %d", err);
+#line 223
}
+#line 223
} else {
+#line 223
IF (err != 0 && err != NC_ERANGE)
+#line 223
error("OK or Range error: status = %d", err);
+#line 223
}
+#line 223
for (j = 0; j < nels; j++) {
+#line 223
if (inRange3(expect[j],var_type[i],NCT_UCHAR)
+#line 223
&& expect[j] >= uchar_min && expect[j] <= uchar_max) {
+#line 223
IF (!equal(value[j],expect[j],var_type[i],NCT_UCHAR)){
+#line 223
error("value read not that expected");
+#line 223
if (verbose) {
+#line 223
error("\n");
+#line 223
error("varid: %d, ", i);
+#line 223
error("var_name: %s, ", var_name[i]);
+#line 223
error("element number: %d ", j);
+#line 223
error("expect: %g", expect[j]);
+#line 223
error("got: %g", (double) value[j]);
+#line 223
}
+#line 223
} else {
+#line 223
nok++;
+#line 223
}
+#line 223
}
+#line 223
}
+#line 223
} else {
+#line 223
IF (nels > 0 && err != NC_ECHAR)
+#line 223
error("wrong type: status = %d", err);
+#line 223
}
+#line 223
}
+#line 223
err = nc_close(ncid);
+#line 223
IF (err)
+#line 223
error("nc_close: %s", nc_strerror(err));
+#line 223
print_nok(nok);
+#line 223
}
+#line 223
void
+#line 224
test_nc_get_var_schar(void)
+#line 224
{
+#line 224
int ncid;
+#line 224
int i;
+#line 224
int j;
+#line 224
int err;
+#line 224
int allInExtRange; /* all values within external range? */
+#line 224
int allInIntRange; /* all values within internal range? */
+#line 224
int nels;
+#line 224
int nok = 0; /* count of valid comparisons */
+#line 224
size_t index[MAX_RANK];
+#line 224
int canConvert; /* Both text or both numeric */
+#line 224
schar value[MAX_NELS];
+#line 224
double expect[MAX_NELS];
+#line 224
+#line 224
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 224
IF (err)
+#line 224
error("nc_open: %s", nc_strerror(err));
+#line 224
for (i = 0; i < NVARS; i++) {
+#line 224
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 224
assert(var_rank[i] <= MAX_RANK);
+#line 224
assert(var_nels[i] <= MAX_NELS);
+#line 224
err = nc_get_var_schar(BAD_ID, i, value);
+#line 224
IF (err != NC_EBADID)
+#line 224
error("bad ncid: status = %d", err);
+#line 224
err = nc_get_var_schar(ncid, BAD_VARID, value);
+#line 224
IF (err != NC_ENOTVAR)
+#line 224
error("bad var id: status = %d", err);
+#line 224
+#line 224
nels = 1;
+#line 224
for (j = 0; j < var_rank[i]; j++) {
+#line 224
nels *= var_shape[i][j];
+#line 224
}
+#line 224
allInExtRange = allInIntRange = 1;
+#line 224
for (j = 0; j < nels; j++) {
+#line 224
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 224
IF (err)
+#line 224
error("error in toMixedBase 1");
+#line 224
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SCHAR);
+#line 224
if (inRange3(expect[j],var_type[i], NCT_SCHAR)) {
+#line 224
allInIntRange = allInIntRange && expect[j] >= schar_min
+#line 224
&& expect[j] <= schar_max;
+#line 224
} else {
+#line 224
allInExtRange = 0;
+#line 224
}
+#line 224
}
+#line 224
err = nc_get_var_schar(ncid, i, value);
+#line 224
if (canConvert) {
+#line 224
if (allInExtRange) {
+#line 224
if (allInIntRange) {
+#line 224
IF (err)
+#line 224
error("%s", nc_strerror(err));
+#line 224
} else {
+#line 224
IF (err != NC_ERANGE)
+#line 224
error("Range error: status = %d", err);
+#line 224
}
+#line 224
} else {
+#line 224
IF (err != 0 && err != NC_ERANGE)
+#line 224
error("OK or Range error: status = %d", err);
+#line 224
}
+#line 224
for (j = 0; j < nels; j++) {
+#line 224
if (inRange3(expect[j],var_type[i],NCT_SCHAR)
+#line 224
&& expect[j] >= schar_min && expect[j] <= schar_max) {
+#line 224
IF (!equal(value[j],expect[j],var_type[i],NCT_SCHAR)){
+#line 224
error("value read not that expected");
+#line 224
if (verbose) {
+#line 224
error("\n");
+#line 224
error("varid: %d, ", i);
+#line 224
error("var_name: %s, ", var_name[i]);
+#line 224
error("element number: %d ", j);
+#line 224
error("expect: %g", expect[j]);
+#line 224
error("got: %g", (double) value[j]);
+#line 224
}
+#line 224
} else {
+#line 224
nok++;
+#line 224
}
+#line 224
}
+#line 224
}
+#line 224
} else {
+#line 224
IF (nels > 0 && err != NC_ECHAR)
+#line 224
error("wrong type: status = %d", err);
+#line 224
}
+#line 224
}
+#line 224
err = nc_close(ncid);
+#line 224
IF (err)
+#line 224
error("nc_close: %s", nc_strerror(err));
+#line 224
print_nok(nok);
+#line 224
}
+#line 224
void
+#line 225
test_nc_get_var_short(void)
+#line 225
{
+#line 225
int ncid;
+#line 225
int i;
+#line 225
int j;
+#line 225
int err;
+#line 225
int allInExtRange; /* all values within external range? */
+#line 225
int allInIntRange; /* all values within internal range? */
+#line 225
int nels;
+#line 225
int nok = 0; /* count of valid comparisons */
+#line 225
size_t index[MAX_RANK];
+#line 225
int canConvert; /* Both text or both numeric */
+#line 225
short value[MAX_NELS];
+#line 225
double expect[MAX_NELS];
+#line 225
+#line 225
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 225
IF (err)
+#line 225
error("nc_open: %s", nc_strerror(err));
+#line 225
for (i = 0; i < NVARS; i++) {
+#line 225
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 225
assert(var_rank[i] <= MAX_RANK);
+#line 225
assert(var_nels[i] <= MAX_NELS);
+#line 225
err = nc_get_var_short(BAD_ID, i, value);
+#line 225
IF (err != NC_EBADID)
+#line 225
error("bad ncid: status = %d", err);
+#line 225
err = nc_get_var_short(ncid, BAD_VARID, value);
+#line 225
IF (err != NC_ENOTVAR)
+#line 225
error("bad var id: status = %d", err);
+#line 225
+#line 225
nels = 1;
+#line 225
for (j = 0; j < var_rank[i]; j++) {
+#line 225
nels *= var_shape[i][j];
+#line 225
}
+#line 225
allInExtRange = allInIntRange = 1;
+#line 225
for (j = 0; j < nels; j++) {
+#line 225
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 225
IF (err)
+#line 225
error("error in toMixedBase 1");
+#line 225
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SHORT);
+#line 225
if (inRange3(expect[j],var_type[i], NCT_SHORT)) {
+#line 225
allInIntRange = allInIntRange && expect[j] >= short_min
+#line 225
&& expect[j] <= short_max;
+#line 225
} else {
+#line 225
allInExtRange = 0;
+#line 225
}
+#line 225
}
+#line 225
err = nc_get_var_short(ncid, i, value);
+#line 225
if (canConvert) {
+#line 225
if (allInExtRange) {
+#line 225
if (allInIntRange) {
+#line 225
IF (err)
+#line 225
error("%s", nc_strerror(err));
+#line 225
} else {
+#line 225
IF (err != NC_ERANGE)
+#line 225
error("Range error: status = %d", err);
+#line 225
}
+#line 225
} else {
+#line 225
IF (err != 0 && err != NC_ERANGE)
+#line 225
error("OK or Range error: status = %d", err);
+#line 225
}
+#line 225
for (j = 0; j < nels; j++) {
+#line 225
if (inRange3(expect[j],var_type[i],NCT_SHORT)
+#line 225
&& expect[j] >= short_min && expect[j] <= short_max) {
+#line 225
IF (!equal(value[j],expect[j],var_type[i],NCT_SHORT)){
+#line 225
error("value read not that expected");
+#line 225
if (verbose) {
+#line 225
error("\n");
+#line 225
error("varid: %d, ", i);
+#line 225
error("var_name: %s, ", var_name[i]);
+#line 225
error("element number: %d ", j);
+#line 225
error("expect: %g", expect[j]);
+#line 225
error("got: %g", (double) value[j]);
+#line 225
}
+#line 225
} else {
+#line 225
nok++;
+#line 225
}
+#line 225
}
+#line 225
}
+#line 225
} else {
+#line 225
IF (nels > 0 && err != NC_ECHAR)
+#line 225
error("wrong type: status = %d", err);
+#line 225
}
+#line 225
}
+#line 225
err = nc_close(ncid);
+#line 225
IF (err)
+#line 225
error("nc_close: %s", nc_strerror(err));
+#line 225
print_nok(nok);
+#line 225
}
+#line 225
void
+#line 226
test_nc_get_var_int(void)
+#line 226
{
+#line 226
int ncid;
+#line 226
int i;
+#line 226
int j;
+#line 226
int err;
+#line 226
int allInExtRange; /* all values within external range? */
+#line 226
int allInIntRange; /* all values within internal range? */
+#line 226
int nels;
+#line 226
int nok = 0; /* count of valid comparisons */
+#line 226
size_t index[MAX_RANK];
+#line 226
int canConvert; /* Both text or both numeric */
+#line 226
int value[MAX_NELS];
+#line 226
double expect[MAX_NELS];
+#line 226
+#line 226
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 226
IF (err)
+#line 226
error("nc_open: %s", nc_strerror(err));
+#line 226
for (i = 0; i < NVARS; i++) {
+#line 226
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 226
assert(var_rank[i] <= MAX_RANK);
+#line 226
assert(var_nels[i] <= MAX_NELS);
+#line 226
err = nc_get_var_int(BAD_ID, i, value);
+#line 226
IF (err != NC_EBADID)
+#line 226
error("bad ncid: status = %d", err);
+#line 226
err = nc_get_var_int(ncid, BAD_VARID, value);
+#line 226
IF (err != NC_ENOTVAR)
+#line 226
error("bad var id: status = %d", err);
+#line 226
+#line 226
nels = 1;
+#line 226
for (j = 0; j < var_rank[i]; j++) {
+#line 226
nels *= var_shape[i][j];
+#line 226
}
+#line 226
allInExtRange = allInIntRange = 1;
+#line 226
for (j = 0; j < nels; j++) {
+#line 226
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 226
IF (err)
+#line 226
error("error in toMixedBase 1");
+#line 226
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_INT);
+#line 226
if (inRange3(expect[j],var_type[i], NCT_INT)) {
+#line 226
allInIntRange = allInIntRange && expect[j] >= int_min
+#line 226
&& expect[j] <= int_max;
+#line 226
} else {
+#line 226
allInExtRange = 0;
+#line 226
}
+#line 226
}
+#line 226
err = nc_get_var_int(ncid, i, value);
+#line 226
if (canConvert) {
+#line 226
if (allInExtRange) {
+#line 226
if (allInIntRange) {
+#line 226
IF (err)
+#line 226
error("%s", nc_strerror(err));
+#line 226
} else {
+#line 226
IF (err != NC_ERANGE)
+#line 226
error("Range error: status = %d", err);
+#line 226
}
+#line 226
} else {
+#line 226
IF (err != 0 && err != NC_ERANGE)
+#line 226
error("OK or Range error: status = %d", err);
+#line 226
}
+#line 226
for (j = 0; j < nels; j++) {
+#line 226
if (inRange3(expect[j],var_type[i],NCT_INT)
+#line 226
&& expect[j] >= int_min && expect[j] <= int_max) {
+#line 226
IF (!equal(value[j],expect[j],var_type[i],NCT_INT)){
+#line 226
error("value read not that expected");
+#line 226
if (verbose) {
+#line 226
error("\n");
+#line 226
error("varid: %d, ", i);
+#line 226
error("var_name: %s, ", var_name[i]);
+#line 226
error("element number: %d ", j);
+#line 226
error("expect: %g", expect[j]);
+#line 226
error("got: %g", (double) value[j]);
+#line 226
}
+#line 226
} else {
+#line 226
nok++;
+#line 226
}
+#line 226
}
+#line 226
}
+#line 226
} else {
+#line 226
IF (nels > 0 && err != NC_ECHAR)
+#line 226
error("wrong type: status = %d", err);
+#line 226
}
+#line 226
}
+#line 226
err = nc_close(ncid);
+#line 226
IF (err)
+#line 226
error("nc_close: %s", nc_strerror(err));
+#line 226
print_nok(nok);
+#line 226
}
+#line 226
void
+#line 227
test_nc_get_var_long(void)
+#line 227
{
+#line 227
int ncid;
+#line 227
int i;
+#line 227
int j;
+#line 227
int err;
+#line 227
int allInExtRange; /* all values within external range? */
+#line 227
int allInIntRange; /* all values within internal range? */
+#line 227
int nels;
+#line 227
int nok = 0; /* count of valid comparisons */
+#line 227
size_t index[MAX_RANK];
+#line 227
int canConvert; /* Both text or both numeric */
+#line 227
long value[MAX_NELS];
+#line 227
double expect[MAX_NELS];
+#line 227
+#line 227
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 227
IF (err)
+#line 227
error("nc_open: %s", nc_strerror(err));
+#line 227
for (i = 0; i < NVARS; i++) {
+#line 227
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 227
assert(var_rank[i] <= MAX_RANK);
+#line 227
assert(var_nels[i] <= MAX_NELS);
+#line 227
err = nc_get_var_long(BAD_ID, i, value);
+#line 227
IF (err != NC_EBADID)
+#line 227
error("bad ncid: status = %d", err);
+#line 227
err = nc_get_var_long(ncid, BAD_VARID, value);
+#line 227
IF (err != NC_ENOTVAR)
+#line 227
error("bad var id: status = %d", err);
+#line 227
+#line 227
nels = 1;
+#line 227
for (j = 0; j < var_rank[i]; j++) {
+#line 227
nels *= var_shape[i][j];
+#line 227
}
+#line 227
allInExtRange = allInIntRange = 1;
+#line 227
for (j = 0; j < nels; j++) {
+#line 227
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 227
IF (err)
+#line 227
error("error in toMixedBase 1");
+#line 227
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_LONG);
+#line 227
if (inRange3(expect[j],var_type[i], NCT_LONG)) {
+#line 227
allInIntRange = allInIntRange && expect[j] >= long_min
+#line 227
&& expect[j] <= long_max;
+#line 227
} else {
+#line 227
allInExtRange = 0;
+#line 227
}
+#line 227
}
+#line 227
err = nc_get_var_long(ncid, i, value);
+#line 227
if (canConvert) {
+#line 227
if (allInExtRange) {
+#line 227
if (allInIntRange) {
+#line 227
IF (err)
+#line 227
error("%s", nc_strerror(err));
+#line 227
} else {
+#line 227
IF (err != NC_ERANGE)
+#line 227
error("Range error: status = %d", err);
+#line 227
}
+#line 227
} else {
+#line 227
IF (err != 0 && err != NC_ERANGE)
+#line 227
error("OK or Range error: status = %d", err);
+#line 227
}
+#line 227
for (j = 0; j < nels; j++) {
+#line 227
if (inRange3(expect[j],var_type[i],NCT_LONG)
+#line 227
&& expect[j] >= long_min && expect[j] <= long_max) {
+#line 227
IF (!equal(value[j],expect[j],var_type[i],NCT_LONG)){
+#line 227
error("value read not that expected");
+#line 227
if (verbose) {
+#line 227
error("\n");
+#line 227
error("varid: %d, ", i);
+#line 227
error("var_name: %s, ", var_name[i]);
+#line 227
error("element number: %d ", j);
+#line 227
error("expect: %g", expect[j]);
+#line 227
error("got: %g", (double) value[j]);
+#line 227
}
+#line 227
} else {
+#line 227
nok++;
+#line 227
}
+#line 227
}
+#line 227
}
+#line 227
} else {
+#line 227
IF (nels > 0 && err != NC_ECHAR)
+#line 227
error("wrong type: status = %d", err);
+#line 227
}
+#line 227
}
+#line 227
err = nc_close(ncid);
+#line 227
IF (err)
+#line 227
error("nc_close: %s", nc_strerror(err));
+#line 227
print_nok(nok);
+#line 227
}
+#line 227
void
+#line 228
test_nc_get_var_float(void)
+#line 228
{
+#line 228
int ncid;
+#line 228
int i;
+#line 228
int j;
+#line 228
int err;
+#line 228
int allInExtRange; /* all values within external range? */
+#line 228
int allInIntRange; /* all values within internal range? */
+#line 228
int nels;
+#line 228
int nok = 0; /* count of valid comparisons */
+#line 228
size_t index[MAX_RANK];
+#line 228
int canConvert; /* Both text or both numeric */
+#line 228
float value[MAX_NELS];
+#line 228
double expect[MAX_NELS];
+#line 228
+#line 228
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 228
IF (err)
+#line 228
error("nc_open: %s", nc_strerror(err));
+#line 228
for (i = 0; i < NVARS; i++) {
+#line 228
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 228
assert(var_rank[i] <= MAX_RANK);
+#line 228
assert(var_nels[i] <= MAX_NELS);
+#line 228
err = nc_get_var_float(BAD_ID, i, value);
+#line 228
IF (err != NC_EBADID)
+#line 228
error("bad ncid: status = %d", err);
+#line 228
err = nc_get_var_float(ncid, BAD_VARID, value);
+#line 228
IF (err != NC_ENOTVAR)
+#line 228
error("bad var id: status = %d", err);
+#line 228
+#line 228
nels = 1;
+#line 228
for (j = 0; j < var_rank[i]; j++) {
+#line 228
nels *= var_shape[i][j];
+#line 228
}
+#line 228
allInExtRange = allInIntRange = 1;
+#line 228
for (j = 0; j < nels; j++) {
+#line 228
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 228
IF (err)
+#line 228
error("error in toMixedBase 1");
+#line 228
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_FLOAT);
+#line 228
if (inRange3(expect[j],var_type[i], NCT_FLOAT)) {
+#line 228
allInIntRange = allInIntRange && expect[j] >= float_min
+#line 228
&& expect[j] <= float_max;
+#line 228
} else {
+#line 228
allInExtRange = 0;
+#line 228
}
+#line 228
}
+#line 228
err = nc_get_var_float(ncid, i, value);
+#line 228
if (canConvert) {
+#line 228
if (allInExtRange) {
+#line 228
if (allInIntRange) {
+#line 228
IF (err)
+#line 228
error("%s", nc_strerror(err));
+#line 228
} else {
+#line 228
IF (err != NC_ERANGE)
+#line 228
error("Range error: status = %d", err);
+#line 228
}
+#line 228
} else {
+#line 228
IF (err != 0 && err != NC_ERANGE)
+#line 228
error("OK or Range error: status = %d", err);
+#line 228
}
+#line 228
for (j = 0; j < nels; j++) {
+#line 228
if (inRange3(expect[j],var_type[i],NCT_FLOAT)
+#line 228
&& expect[j] >= float_min && expect[j] <= float_max) {
+#line 228
IF (!equal(value[j],expect[j],var_type[i],NCT_FLOAT)){
+#line 228
error("value read not that expected");
+#line 228
if (verbose) {
+#line 228
error("\n");
+#line 228
error("varid: %d, ", i);
+#line 228
error("var_name: %s, ", var_name[i]);
+#line 228
error("element number: %d ", j);
+#line 228
error("expect: %g", expect[j]);
+#line 228
error("got: %g", (double) value[j]);
+#line 228
}
+#line 228
} else {
+#line 228
nok++;
+#line 228
}
+#line 228
}
+#line 228
}
+#line 228
} else {
+#line 228
IF (nels > 0 && err != NC_ECHAR)
+#line 228
error("wrong type: status = %d", err);
+#line 228
}
+#line 228
}
+#line 228
err = nc_close(ncid);
+#line 228
IF (err)
+#line 228
error("nc_close: %s", nc_strerror(err));
+#line 228
print_nok(nok);
+#line 228
}
+#line 228
void
+#line 229
test_nc_get_var_double(void)
+#line 229
{
+#line 229
int ncid;
+#line 229
int i;
+#line 229
int j;
+#line 229
int err;
+#line 229
int allInExtRange; /* all values within external range? */
+#line 229
int allInIntRange; /* all values within internal range? */
+#line 229
int nels;
+#line 229
int nok = 0; /* count of valid comparisons */
+#line 229
size_t index[MAX_RANK];
+#line 229
int canConvert; /* Both text or both numeric */
+#line 229
double value[MAX_NELS];
+#line 229
double expect[MAX_NELS];
+#line 229
+#line 229
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 229
IF (err)
+#line 229
error("nc_open: %s", nc_strerror(err));
+#line 229
for (i = 0; i < NVARS; i++) {
+#line 229
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 229
assert(var_rank[i] <= MAX_RANK);
+#line 229
assert(var_nels[i] <= MAX_NELS);
+#line 229
err = nc_get_var_double(BAD_ID, i, value);
+#line 229
IF (err != NC_EBADID)
+#line 229
error("bad ncid: status = %d", err);
+#line 229
err = nc_get_var_double(ncid, BAD_VARID, value);
+#line 229
IF (err != NC_ENOTVAR)
+#line 229
error("bad var id: status = %d", err);
+#line 229
+#line 229
nels = 1;
+#line 229
for (j = 0; j < var_rank[i]; j++) {
+#line 229
nels *= var_shape[i][j];
+#line 229
}
+#line 229
allInExtRange = allInIntRange = 1;
+#line 229
for (j = 0; j < nels; j++) {
+#line 229
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 229
IF (err)
+#line 229
error("error in toMixedBase 1");
+#line 229
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_DOUBLE);
+#line 229
if (inRange3(expect[j],var_type[i], NCT_DOUBLE)) {
+#line 229
allInIntRange = allInIntRange && expect[j] >= double_min
+#line 229
&& expect[j] <= double_max;
+#line 229
} else {
+#line 229
allInExtRange = 0;
+#line 229
}
+#line 229
}
+#line 229
err = nc_get_var_double(ncid, i, value);
+#line 229
if (canConvert) {
+#line 229
if (allInExtRange) {
+#line 229
if (allInIntRange) {
+#line 229
IF (err)
+#line 229
error("%s", nc_strerror(err));
+#line 229
} else {
+#line 229
IF (err != NC_ERANGE)
+#line 229
error("Range error: status = %d", err);
+#line 229
}
+#line 229
} else {
+#line 229
IF (err != 0 && err != NC_ERANGE)
+#line 229
error("OK or Range error: status = %d", err);
+#line 229
}
+#line 229
for (j = 0; j < nels; j++) {
+#line 229
if (inRange3(expect[j],var_type[i],NCT_DOUBLE)
+#line 229
&& expect[j] >= double_min && expect[j] <= double_max) {
+#line 229
IF (!equal(value[j],expect[j],var_type[i],NCT_DOUBLE)){
+#line 229
error("value read not that expected");
+#line 229
if (verbose) {
+#line 229
error("\n");
+#line 229
error("varid: %d, ", i);
+#line 229
error("var_name: %s, ", var_name[i]);
+#line 229
error("element number: %d ", j);
+#line 229
error("expect: %g", expect[j]);
+#line 229
error("got: %g", (double) value[j]);
+#line 229
}
+#line 229
} else {
+#line 229
nok++;
+#line 229
}
+#line 229
}
+#line 229
}
+#line 229
} else {
+#line 229
IF (nels > 0 && err != NC_ECHAR)
+#line 229
error("wrong type: status = %d", err);
+#line 229
}
+#line 229
}
+#line 229
err = nc_close(ncid);
+#line 229
IF (err)
+#line 229
error("nc_close: %s", nc_strerror(err));
+#line 229
print_nok(nok);
+#line 229
}
+#line 229
+#line 401
void
+#line 402
test_nc_get_vara_text(void)
+#line 402
{
+#line 402
int ncid;
+#line 402
int d;
+#line 402
int i;
+#line 402
int j;
+#line 402
int k;
+#line 402
int err;
+#line 402
int allInExtRange; /* all values within external range? */
+#line 402
int allInIntRange; /* all values within internal range? */
+#line 402
int nels;
+#line 402
int nslabs;
+#line 402
int nok = 0; /* count of valid comparisons */
+#line 402
size_t start[MAX_RANK];
+#line 402
size_t edge[MAX_RANK];
+#line 402
size_t index[MAX_RANK];
+#line 402
size_t mid[MAX_RANK];
+#line 402
int canConvert; /* Both text or both numeric */
+#line 402
text value[MAX_NELS];
+#line 402
double expect[MAX_NELS];
+#line 402
+#line 402
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 402
IF (err)
+#line 402
error("nc_open: %s", nc_strerror(err));
+#line 402
for (i = 0; i < NVARS; i++) {
+#line 402
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 402
assert(var_rank[i] <= MAX_RANK);
+#line 402
assert(var_nels[i] <= MAX_NELS);
+#line 402
for (j = 0; j < var_rank[i]; j++) {
+#line 402
start[j] = 0;
+#line 402
edge[j] = 1;
+#line 402
}
+#line 402
err = nc_get_vara_text(BAD_ID, i, start, edge, value);
+#line 402
IF (err != NC_EBADID)
+#line 402
error("bad ncid: status = %d", err);
+#line 402
err = nc_get_vara_text(ncid, BAD_VARID, start, edge, value);
+#line 402
IF (err != NC_ENOTVAR)
+#line 402
error("bad var id: status = %d", err);
+#line 402
for (j = 0; j < var_rank[i]; j++) {
+#line 402
start[j] = var_shape[i][j];
+#line 402
err = nc_get_vara_text(ncid, i, start, edge, value);
+#line 402
IF (canConvert && err != NC_EINVALCOORDS)
+#line 402
error("bad index: status = %d", err);
+#line 402
start[j] = 0;
+#line 402
edge[j] = var_shape[i][j] + 1;
+#line 402
err = nc_get_vara_text(ncid, i, start, edge, value);
+#line 402
IF (canConvert && err != NC_EEDGE)
+#line 402
error("bad edge: status = %d", err);
+#line 402
edge[j] = 1;
+#line 402
}
+#line 402
/* Check non-scalars for correct error returned even when */
+#line 402
/* there is nothing to get (edge[j]==0) */
+#line 402
if(var_rank[i] > 0) {
+#line 402
for (j = 0; j < var_rank[i]; j++) {
+#line 402
edge[j] = 0;
+#line 402
}
+#line 402
err = nc_get_vara_text(BAD_ID, i, start, edge, value);
+#line 402
IF (err != NC_EBADID)
+#line 402
error("bad ncid: status = %d", err);
+#line 402
err = nc_get_vara_text(ncid, BAD_VARID, start, edge, value);
+#line 402
IF (err != NC_ENOTVAR)
+#line 402
error("bad var id: status = %d", err);
+#line 402
for (j = 0; j < var_rank[i]; j++) {
+#line 402
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 402
start[j] = var_shape[i][j];
+#line 402
err = nc_get_vara_text(ncid, i, start, edge, value);
+#line 402
IF (canConvert && err != NC_EINVALCOORDS)
+#line 402
error("bad start: status = %d", err);
+#line 402
start[j] = 0;
+#line 402
}
+#line 402
}
+#line 402
err = nc_get_vara_text(ncid, i, start, edge, value);
+#line 402
if (canConvert) {
+#line 402
IF (err)
+#line 402
error("%s", nc_strerror(err));
+#line 402
} else {
+#line 402
IF (err != NC_ECHAR)
+#line 402
error("wrong type: status = %d", err);
+#line 402
}
+#line 402
for (j = 0; j < var_rank[i]; j++) {
+#line 402
edge[j] = 1;
+#line 402
}
+#line 402
} /* Choose a random point dividing each dim into 2 parts */
+#line 402
/* get 2^rank (nslabs) slabs so defined */
+#line 402
nslabs = 1;
+#line 402
for (j = 0; j < var_rank[i]; j++) {
+#line 402
mid[j] = roll( var_shape[i][j] );
+#line 402
nslabs *= 2;
+#line 402
}
+#line 402
/* bits of k determine whether to get lower or upper part of dim */
+#line 402
for (k = 0; k < nslabs; k++) {
+#line 402
nels = 1;
+#line 402
for (j = 0; j < var_rank[i]; j++) {
+#line 402
if ((k >> j) & 1) {
+#line 402
start[j] = 0;
+#line 402
edge[j] = mid[j];
+#line 402
}else{
+#line 402
start[j] = mid[j];
+#line 402
edge[j] = var_shape[i][j] - mid[j];
+#line 402
}
+#line 402
nels *= edge[j];
+#line 402
}
+#line 402
allInExtRange = allInIntRange = 1;
+#line 402
for (j = 0; j < nels; j++) {
+#line 402
err = toMixedBase(j, var_rank[i], edge, index);
+#line 402
IF (err)
+#line 402
error("error in toMixedBase 1");
+#line 402
for (d = 0; d < var_rank[i]; d++)
+#line 402
index[d] += start[d];
+#line 402
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_TEXT);
+#line 402
if (inRange3(expect[j],var_type[i], NCT_TEXT)) {
+#line 402
allInIntRange = allInIntRange && expect[j] >= text_min
+#line 402
&& expect[j] <= text_max;
+#line 402
} else {
+#line 402
allInExtRange = 0;
+#line 402
}
+#line 402
}
+#line 402
if (var_rank[i] == 0 && i%2)
+#line 402
err = nc_get_vara_text(ncid, i, NULL, NULL, value);
+#line 402
else
+#line 402
err = nc_get_vara_text(ncid, i, start, edge, value);
+#line 402
if (canConvert) {
+#line 402
if (allInExtRange) {
+#line 402
if (allInIntRange) {
+#line 402
IF (err)
+#line 402
error("%s", nc_strerror(err));
+#line 402
} else {
+#line 402
IF (err != NC_ERANGE)
+#line 402
error("Range error: status = %d", err);
+#line 402
}
+#line 402
} else {
+#line 402
IF (err != 0 && err != NC_ERANGE)
+#line 402
error("OK or Range error: status = %d", err);
+#line 402
}
+#line 402
for (j = 0; j < nels; j++) {
+#line 402
if (inRange3(expect[j],var_type[i],NCT_TEXT)
+#line 402
&& expect[j] >= text_min && expect[j] <= text_max) {
+#line 402
IF (!equal(value[j],expect[j],var_type[i],NCT_TEXT)){
+#line 402
error("value read not that expected");
+#line 402
if (verbose) {
+#line 402
error("\n");
+#line 402
error("varid: %d, ", i);
+#line 402
error("var_name: %s, ", var_name[i]);
+#line 402
error("element number: %d ", j);
+#line 402
error("expect: %g", expect[j]);
+#line 402
error("got: %g", (double) value[j]);
+#line 402
}
+#line 402
} else {
+#line 402
nok++;
+#line 402
}
+#line 402
}
+#line 402
}
+#line 402
} else {
+#line 402
IF (nels > 0 && err != NC_ECHAR)
+#line 402
error("wrong type: status = %d", err);
+#line 402
}
+#line 402
}
+#line 402
}
+#line 402
err = nc_close(ncid);
+#line 402
IF (err)
+#line 402
error("nc_close: %s", nc_strerror(err));
+#line 402
print_nok(nok);
+#line 402
}
+#line 402
void
+#line 403
test_nc_get_vara_uchar(void)
+#line 403
{
+#line 403
int ncid;
+#line 403
int d;
+#line 403
int i;
+#line 403
int j;
+#line 403
int k;
+#line 403
int err;
+#line 403
int allInExtRange; /* all values within external range? */
+#line 403
int allInIntRange; /* all values within internal range? */
+#line 403
int nels;
+#line 403
int nslabs;
+#line 403
int nok = 0; /* count of valid comparisons */
+#line 403
size_t start[MAX_RANK];
+#line 403
size_t edge[MAX_RANK];
+#line 403
size_t index[MAX_RANK];
+#line 403
size_t mid[MAX_RANK];
+#line 403
int canConvert; /* Both text or both numeric */
+#line 403
uchar value[MAX_NELS];
+#line 403
double expect[MAX_NELS];
+#line 403
+#line 403
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 403
IF (err)
+#line 403
error("nc_open: %s", nc_strerror(err));
+#line 403
for (i = 0; i < NVARS; i++) {
+#line 403
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 403
assert(var_rank[i] <= MAX_RANK);
+#line 403
assert(var_nels[i] <= MAX_NELS);
+#line 403
for (j = 0; j < var_rank[i]; j++) {
+#line 403
start[j] = 0;
+#line 403
edge[j] = 1;
+#line 403
}
+#line 403
err = nc_get_vara_uchar(BAD_ID, i, start, edge, value);
+#line 403
IF (err != NC_EBADID)
+#line 403
error("bad ncid: status = %d", err);
+#line 403
err = nc_get_vara_uchar(ncid, BAD_VARID, start, edge, value);
+#line 403
IF (err != NC_ENOTVAR)
+#line 403
error("bad var id: status = %d", err);
+#line 403
for (j = 0; j < var_rank[i]; j++) {
+#line 403
start[j] = var_shape[i][j];
+#line 403
err = nc_get_vara_uchar(ncid, i, start, edge, value);
+#line 403
IF (canConvert && err != NC_EINVALCOORDS)
+#line 403
error("bad index: status = %d", err);
+#line 403
start[j] = 0;
+#line 403
edge[j] = var_shape[i][j] + 1;
+#line 403
err = nc_get_vara_uchar(ncid, i, start, edge, value);
+#line 403
IF (canConvert && err != NC_EEDGE)
+#line 403
error("bad edge: status = %d", err);
+#line 403
edge[j] = 1;
+#line 403
}
+#line 403
/* Check non-scalars for correct error returned even when */
+#line 403
/* there is nothing to get (edge[j]==0) */
+#line 403
if(var_rank[i] > 0) {
+#line 403
for (j = 0; j < var_rank[i]; j++) {
+#line 403
edge[j] = 0;
+#line 403
}
+#line 403
err = nc_get_vara_uchar(BAD_ID, i, start, edge, value);
+#line 403
IF (err != NC_EBADID)
+#line 403
error("bad ncid: status = %d", err);
+#line 403
err = nc_get_vara_uchar(ncid, BAD_VARID, start, edge, value);
+#line 403
IF (err != NC_ENOTVAR)
+#line 403
error("bad var id: status = %d", err);
+#line 403
for (j = 0; j < var_rank[i]; j++) {
+#line 403
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 403
start[j] = var_shape[i][j];
+#line 403
err = nc_get_vara_uchar(ncid, i, start, edge, value);
+#line 403
IF (canConvert && err != NC_EINVALCOORDS)
+#line 403
error("bad start: status = %d", err);
+#line 403
start[j] = 0;
+#line 403
}
+#line 403
}
+#line 403
err = nc_get_vara_uchar(ncid, i, start, edge, value);
+#line 403
if (canConvert) {
+#line 403
IF (err)
+#line 403
error("%s", nc_strerror(err));
+#line 403
} else {
+#line 403
IF (err != NC_ECHAR)
+#line 403
error("wrong type: status = %d", err);
+#line 403
}
+#line 403
for (j = 0; j < var_rank[i]; j++) {
+#line 403
edge[j] = 1;
+#line 403
}
+#line 403
} /* Choose a random point dividing each dim into 2 parts */
+#line 403
/* get 2^rank (nslabs) slabs so defined */
+#line 403
nslabs = 1;
+#line 403
for (j = 0; j < var_rank[i]; j++) {
+#line 403
mid[j] = roll( var_shape[i][j] );
+#line 403
nslabs *= 2;
+#line 403
}
+#line 403
/* bits of k determine whether to get lower or upper part of dim */
+#line 403
for (k = 0; k < nslabs; k++) {
+#line 403
nels = 1;
+#line 403
for (j = 0; j < var_rank[i]; j++) {
+#line 403
if ((k >> j) & 1) {
+#line 403
start[j] = 0;
+#line 403
edge[j] = mid[j];
+#line 403
}else{
+#line 403
start[j] = mid[j];
+#line 403
edge[j] = var_shape[i][j] - mid[j];
+#line 403
}
+#line 403
nels *= edge[j];
+#line 403
}
+#line 403
allInExtRange = allInIntRange = 1;
+#line 403
for (j = 0; j < nels; j++) {
+#line 403
err = toMixedBase(j, var_rank[i], edge, index);
+#line 403
IF (err)
+#line 403
error("error in toMixedBase 1");
+#line 403
for (d = 0; d < var_rank[i]; d++)
+#line 403
index[d] += start[d];
+#line 403
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_UCHAR);
+#line 403
if (inRange3(expect[j],var_type[i], NCT_UCHAR)) {
+#line 403
allInIntRange = allInIntRange && expect[j] >= uchar_min
+#line 403
&& expect[j] <= uchar_max;
+#line 403
} else {
+#line 403
allInExtRange = 0;
+#line 403
}
+#line 403
}
+#line 403
if (var_rank[i] == 0 && i%2)
+#line 403
err = nc_get_vara_uchar(ncid, i, NULL, NULL, value);
+#line 403
else
+#line 403
err = nc_get_vara_uchar(ncid, i, start, edge, value);
+#line 403
if (canConvert) {
+#line 403
if (allInExtRange) {
+#line 403
if (allInIntRange) {
+#line 403
IF (err)
+#line 403
error("%s", nc_strerror(err));
+#line 403
} else {
+#line 403
IF (err != NC_ERANGE)
+#line 403
error("Range error: status = %d", err);
+#line 403
}
+#line 403
} else {
+#line 403
IF (err != 0 && err != NC_ERANGE)
+#line 403
error("OK or Range error: status = %d", err);
+#line 403
}
+#line 403
for (j = 0; j < nels; j++) {
+#line 403
if (inRange3(expect[j],var_type[i],NCT_UCHAR)
+#line 403
&& expect[j] >= uchar_min && expect[j] <= uchar_max) {
+#line 403
IF (!equal(value[j],expect[j],var_type[i],NCT_UCHAR)){
+#line 403
error("value read not that expected");
+#line 403
if (verbose) {
+#line 403
error("\n");
+#line 403
error("varid: %d, ", i);
+#line 403
error("var_name: %s, ", var_name[i]);
+#line 403
error("element number: %d ", j);
+#line 403
error("expect: %g", expect[j]);
+#line 403
error("got: %g", (double) value[j]);
+#line 403
}
+#line 403
} else {
+#line 403
nok++;
+#line 403
}
+#line 403
}
+#line 403
}
+#line 403
} else {
+#line 403
IF (nels > 0 && err != NC_ECHAR)
+#line 403
error("wrong type: status = %d", err);
+#line 403
}
+#line 403
}
+#line 403
}
+#line 403
err = nc_close(ncid);
+#line 403
IF (err)
+#line 403
error("nc_close: %s", nc_strerror(err));
+#line 403
print_nok(nok);
+#line 403
}
+#line 403
void
+#line 404
test_nc_get_vara_schar(void)
+#line 404
{
+#line 404
int ncid;
+#line 404
int d;
+#line 404
int i;
+#line 404
int j;
+#line 404
int k;
+#line 404
int err;
+#line 404
int allInExtRange; /* all values within external range? */
+#line 404
int allInIntRange; /* all values within internal range? */
+#line 404
int nels;
+#line 404
int nslabs;
+#line 404
int nok = 0; /* count of valid comparisons */
+#line 404
size_t start[MAX_RANK];
+#line 404
size_t edge[MAX_RANK];
+#line 404
size_t index[MAX_RANK];
+#line 404
size_t mid[MAX_RANK];
+#line 404
int canConvert; /* Both text or both numeric */
+#line 404
schar value[MAX_NELS];
+#line 404
double expect[MAX_NELS];
+#line 404
+#line 404
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 404
IF (err)
+#line 404
error("nc_open: %s", nc_strerror(err));
+#line 404
for (i = 0; i < NVARS; i++) {
+#line 404
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 404
assert(var_rank[i] <= MAX_RANK);
+#line 404
assert(var_nels[i] <= MAX_NELS);
+#line 404
for (j = 0; j < var_rank[i]; j++) {
+#line 404
start[j] = 0;
+#line 404
edge[j] = 1;
+#line 404
}
+#line 404
err = nc_get_vara_schar(BAD_ID, i, start, edge, value);
+#line 404
IF (err != NC_EBADID)
+#line 404
error("bad ncid: status = %d", err);
+#line 404
err = nc_get_vara_schar(ncid, BAD_VARID, start, edge, value);
+#line 404
IF (err != NC_ENOTVAR)
+#line 404
error("bad var id: status = %d", err);
+#line 404
for (j = 0; j < var_rank[i]; j++) {
+#line 404
start[j] = var_shape[i][j];
+#line 404
err = nc_get_vara_schar(ncid, i, start, edge, value);
+#line 404
IF (canConvert && err != NC_EINVALCOORDS)
+#line 404
error("bad index: status = %d", err);
+#line 404
start[j] = 0;
+#line 404
edge[j] = var_shape[i][j] + 1;
+#line 404
err = nc_get_vara_schar(ncid, i, start, edge, value);
+#line 404
IF (canConvert && err != NC_EEDGE)
+#line 404
error("bad edge: status = %d", err);
+#line 404
edge[j] = 1;
+#line 404
}
+#line 404
/* Check non-scalars for correct error returned even when */
+#line 404
/* there is nothing to get (edge[j]==0) */
+#line 404
if(var_rank[i] > 0) {
+#line 404
for (j = 0; j < var_rank[i]; j++) {
+#line 404
edge[j] = 0;
+#line 404
}
+#line 404
err = nc_get_vara_schar(BAD_ID, i, start, edge, value);
+#line 404
IF (err != NC_EBADID)
+#line 404
error("bad ncid: status = %d", err);
+#line 404
err = nc_get_vara_schar(ncid, BAD_VARID, start, edge, value);
+#line 404
IF (err != NC_ENOTVAR)
+#line 404
error("bad var id: status = %d", err);
+#line 404
for (j = 0; j < var_rank[i]; j++) {
+#line 404
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 404
start[j] = var_shape[i][j];
+#line 404
err = nc_get_vara_schar(ncid, i, start, edge, value);
+#line 404
IF (canConvert && err != NC_EINVALCOORDS)
+#line 404
error("bad start: status = %d", err);
+#line 404
start[j] = 0;
+#line 404
}
+#line 404
}
+#line 404
err = nc_get_vara_schar(ncid, i, start, edge, value);
+#line 404
if (canConvert) {
+#line 404
IF (err)
+#line 404
error("%s", nc_strerror(err));
+#line 404
} else {
+#line 404
IF (err != NC_ECHAR)
+#line 404
error("wrong type: status = %d", err);
+#line 404
}
+#line 404
for (j = 0; j < var_rank[i]; j++) {
+#line 404
edge[j] = 1;
+#line 404
}
+#line 404
} /* Choose a random point dividing each dim into 2 parts */
+#line 404
/* get 2^rank (nslabs) slabs so defined */
+#line 404
nslabs = 1;
+#line 404
for (j = 0; j < var_rank[i]; j++) {
+#line 404
mid[j] = roll( var_shape[i][j] );
+#line 404
nslabs *= 2;
+#line 404
}
+#line 404
/* bits of k determine whether to get lower or upper part of dim */
+#line 404
for (k = 0; k < nslabs; k++) {
+#line 404
nels = 1;
+#line 404
for (j = 0; j < var_rank[i]; j++) {
+#line 404
if ((k >> j) & 1) {
+#line 404
start[j] = 0;
+#line 404
edge[j] = mid[j];
+#line 404
}else{
+#line 404
start[j] = mid[j];
+#line 404
edge[j] = var_shape[i][j] - mid[j];
+#line 404
}
+#line 404
nels *= edge[j];
+#line 404
}
+#line 404
allInExtRange = allInIntRange = 1;
+#line 404
for (j = 0; j < nels; j++) {
+#line 404
err = toMixedBase(j, var_rank[i], edge, index);
+#line 404
IF (err)
+#line 404
error("error in toMixedBase 1");
+#line 404
for (d = 0; d < var_rank[i]; d++)
+#line 404
index[d] += start[d];
+#line 404
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SCHAR);
+#line 404
if (inRange3(expect[j],var_type[i], NCT_SCHAR)) {
+#line 404
allInIntRange = allInIntRange && expect[j] >= schar_min
+#line 404
&& expect[j] <= schar_max;
+#line 404
} else {
+#line 404
allInExtRange = 0;
+#line 404
}
+#line 404
}
+#line 404
if (var_rank[i] == 0 && i%2)
+#line 404
err = nc_get_vara_schar(ncid, i, NULL, NULL, value);
+#line 404
else
+#line 404
err = nc_get_vara_schar(ncid, i, start, edge, value);
+#line 404
if (canConvert) {
+#line 404
if (allInExtRange) {
+#line 404
if (allInIntRange) {
+#line 404
IF (err)
+#line 404
error("%s", nc_strerror(err));
+#line 404
} else {
+#line 404
IF (err != NC_ERANGE)
+#line 404
error("Range error: status = %d", err);
+#line 404
}
+#line 404
} else {
+#line 404
IF (err != 0 && err != NC_ERANGE)
+#line 404
error("OK or Range error: status = %d", err);
+#line 404
}
+#line 404
for (j = 0; j < nels; j++) {
+#line 404
if (inRange3(expect[j],var_type[i],NCT_SCHAR)
+#line 404
&& expect[j] >= schar_min && expect[j] <= schar_max) {
+#line 404
IF (!equal(value[j],expect[j],var_type[i],NCT_SCHAR)){
+#line 404
error("value read not that expected");
+#line 404
if (verbose) {
+#line 404
error("\n");
+#line 404
error("varid: %d, ", i);
+#line 404
error("var_name: %s, ", var_name[i]);
+#line 404
error("element number: %d ", j);
+#line 404
error("expect: %g", expect[j]);
+#line 404
error("got: %g", (double) value[j]);
+#line 404
}
+#line 404
} else {
+#line 404
nok++;
+#line 404
}
+#line 404
}
+#line 404
}
+#line 404
} else {
+#line 404
IF (nels > 0 && err != NC_ECHAR)
+#line 404
error("wrong type: status = %d", err);
+#line 404
}
+#line 404
}
+#line 404
}
+#line 404
err = nc_close(ncid);
+#line 404
IF (err)
+#line 404
error("nc_close: %s", nc_strerror(err));
+#line 404
print_nok(nok);
+#line 404
}
+#line 404
void
+#line 405
test_nc_get_vara_short(void)
+#line 405
{
+#line 405
int ncid;
+#line 405
int d;
+#line 405
int i;
+#line 405
int j;
+#line 405
int k;
+#line 405
int err;
+#line 405
int allInExtRange; /* all values within external range? */
+#line 405
int allInIntRange; /* all values within internal range? */
+#line 405
int nels;
+#line 405
int nslabs;
+#line 405
int nok = 0; /* count of valid comparisons */
+#line 405
size_t start[MAX_RANK];
+#line 405
size_t edge[MAX_RANK];
+#line 405
size_t index[MAX_RANK];
+#line 405
size_t mid[MAX_RANK];
+#line 405
int canConvert; /* Both text or both numeric */
+#line 405
short value[MAX_NELS];
+#line 405
double expect[MAX_NELS];
+#line 405
+#line 405
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 405
IF (err)
+#line 405
error("nc_open: %s", nc_strerror(err));
+#line 405
for (i = 0; i < NVARS; i++) {
+#line 405
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 405
assert(var_rank[i] <= MAX_RANK);
+#line 405
assert(var_nels[i] <= MAX_NELS);
+#line 405
for (j = 0; j < var_rank[i]; j++) {
+#line 405
start[j] = 0;
+#line 405
edge[j] = 1;
+#line 405
}
+#line 405
err = nc_get_vara_short(BAD_ID, i, start, edge, value);
+#line 405
IF (err != NC_EBADID)
+#line 405
error("bad ncid: status = %d", err);
+#line 405
err = nc_get_vara_short(ncid, BAD_VARID, start, edge, value);
+#line 405
IF (err != NC_ENOTVAR)
+#line 405
error("bad var id: status = %d", err);
+#line 405
for (j = 0; j < var_rank[i]; j++) {
+#line 405
start[j] = var_shape[i][j];
+#line 405
err = nc_get_vara_short(ncid, i, start, edge, value);
+#line 405
IF (canConvert && err != NC_EINVALCOORDS)
+#line 405
error("bad index: status = %d", err);
+#line 405
start[j] = 0;
+#line 405
edge[j] = var_shape[i][j] + 1;
+#line 405
err = nc_get_vara_short(ncid, i, start, edge, value);
+#line 405
IF (canConvert && err != NC_EEDGE)
+#line 405
error("bad edge: status = %d", err);
+#line 405
edge[j] = 1;
+#line 405
}
+#line 405
/* Check non-scalars for correct error returned even when */
+#line 405
/* there is nothing to get (edge[j]==0) */
+#line 405
if(var_rank[i] > 0) {
+#line 405
for (j = 0; j < var_rank[i]; j++) {
+#line 405
edge[j] = 0;
+#line 405
}
+#line 405
err = nc_get_vara_short(BAD_ID, i, start, edge, value);
+#line 405
IF (err != NC_EBADID)
+#line 405
error("bad ncid: status = %d", err);
+#line 405
err = nc_get_vara_short(ncid, BAD_VARID, start, edge, value);
+#line 405
IF (err != NC_ENOTVAR)
+#line 405
error("bad var id: status = %d", err);
+#line 405
for (j = 0; j < var_rank[i]; j++) {
+#line 405
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 405
start[j] = var_shape[i][j];
+#line 405
err = nc_get_vara_short(ncid, i, start, edge, value);
+#line 405
IF (canConvert && err != NC_EINVALCOORDS)
+#line 405
error("bad start: status = %d", err);
+#line 405
start[j] = 0;
+#line 405
}
+#line 405
}
+#line 405
err = nc_get_vara_short(ncid, i, start, edge, value);
+#line 405
if (canConvert) {
+#line 405
IF (err)
+#line 405
error("%s", nc_strerror(err));
+#line 405
} else {
+#line 405
IF (err != NC_ECHAR)
+#line 405
error("wrong type: status = %d", err);
+#line 405
}
+#line 405
for (j = 0; j < var_rank[i]; j++) {
+#line 405
edge[j] = 1;
+#line 405
}
+#line 405
} /* Choose a random point dividing each dim into 2 parts */
+#line 405
/* get 2^rank (nslabs) slabs so defined */
+#line 405
nslabs = 1;
+#line 405
for (j = 0; j < var_rank[i]; j++) {
+#line 405
mid[j] = roll( var_shape[i][j] );
+#line 405
nslabs *= 2;
+#line 405
}
+#line 405
/* bits of k determine whether to get lower or upper part of dim */
+#line 405
for (k = 0; k < nslabs; k++) {
+#line 405
nels = 1;
+#line 405
for (j = 0; j < var_rank[i]; j++) {
+#line 405
if ((k >> j) & 1) {
+#line 405
start[j] = 0;
+#line 405
edge[j] = mid[j];
+#line 405
}else{
+#line 405
start[j] = mid[j];
+#line 405
edge[j] = var_shape[i][j] - mid[j];
+#line 405
}
+#line 405
nels *= edge[j];
+#line 405
}
+#line 405
allInExtRange = allInIntRange = 1;
+#line 405
for (j = 0; j < nels; j++) {
+#line 405
err = toMixedBase(j, var_rank[i], edge, index);
+#line 405
IF (err)
+#line 405
error("error in toMixedBase 1");
+#line 405
for (d = 0; d < var_rank[i]; d++)
+#line 405
index[d] += start[d];
+#line 405
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_SHORT);
+#line 405
if (inRange3(expect[j],var_type[i], NCT_SHORT)) {
+#line 405
allInIntRange = allInIntRange && expect[j] >= short_min
+#line 405
&& expect[j] <= short_max;
+#line 405
} else {
+#line 405
allInExtRange = 0;
+#line 405
}
+#line 405
}
+#line 405
if (var_rank[i] == 0 && i%2)
+#line 405
err = nc_get_vara_short(ncid, i, NULL, NULL, value);
+#line 405
else
+#line 405
err = nc_get_vara_short(ncid, i, start, edge, value);
+#line 405
if (canConvert) {
+#line 405
if (allInExtRange) {
+#line 405
if (allInIntRange) {
+#line 405
IF (err)
+#line 405
error("%s", nc_strerror(err));
+#line 405
} else {
+#line 405
IF (err != NC_ERANGE)
+#line 405
error("Range error: status = %d", err);
+#line 405
}
+#line 405
} else {
+#line 405
IF (err != 0 && err != NC_ERANGE)
+#line 405
error("OK or Range error: status = %d", err);
+#line 405
}
+#line 405
for (j = 0; j < nels; j++) {
+#line 405
if (inRange3(expect[j],var_type[i],NCT_SHORT)
+#line 405
&& expect[j] >= short_min && expect[j] <= short_max) {
+#line 405
IF (!equal(value[j],expect[j],var_type[i],NCT_SHORT)){
+#line 405
error("value read not that expected");
+#line 405
if (verbose) {
+#line 405
error("\n");
+#line 405
error("varid: %d, ", i);
+#line 405
error("var_name: %s, ", var_name[i]);
+#line 405
error("element number: %d ", j);
+#line 405
error("expect: %g", expect[j]);
+#line 405
error("got: %g", (double) value[j]);
+#line 405
}
+#line 405
} else {
+#line 405
nok++;
+#line 405
}
+#line 405
}
+#line 405
}
+#line 405
} else {
+#line 405
IF (nels > 0 && err != NC_ECHAR)
+#line 405
error("wrong type: status = %d", err);
+#line 405
}
+#line 405
}
+#line 405
}
+#line 405
err = nc_close(ncid);
+#line 405
IF (err)
+#line 405
error("nc_close: %s", nc_strerror(err));
+#line 405
print_nok(nok);
+#line 405
}
+#line 405
void
+#line 406
test_nc_get_vara_int(void)
+#line 406
{
+#line 406
int ncid;
+#line 406
int d;
+#line 406
int i;
+#line 406
int j;
+#line 406
int k;
+#line 406
int err;
+#line 406
int allInExtRange; /* all values within external range? */
+#line 406
int allInIntRange; /* all values within internal range? */
+#line 406
int nels;
+#line 406
int nslabs;
+#line 406
int nok = 0; /* count of valid comparisons */
+#line 406
size_t start[MAX_RANK];
+#line 406
size_t edge[MAX_RANK];
+#line 406
size_t index[MAX_RANK];
+#line 406
size_t mid[MAX_RANK];
+#line 406
int canConvert; /* Both text or both numeric */
+#line 406
int value[MAX_NELS];
+#line 406
double expect[MAX_NELS];
+#line 406
+#line 406
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 406
IF (err)
+#line 406
error("nc_open: %s", nc_strerror(err));
+#line 406
for (i = 0; i < NVARS; i++) {
+#line 406
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 406
assert(var_rank[i] <= MAX_RANK);
+#line 406
assert(var_nels[i] <= MAX_NELS);
+#line 406
for (j = 0; j < var_rank[i]; j++) {
+#line 406
start[j] = 0;
+#line 406
edge[j] = 1;
+#line 406
}
+#line 406
err = nc_get_vara_int(BAD_ID, i, start, edge, value);
+#line 406
IF (err != NC_EBADID)
+#line 406
error("bad ncid: status = %d", err);
+#line 406
err = nc_get_vara_int(ncid, BAD_VARID, start, edge, value);
+#line 406
IF (err != NC_ENOTVAR)
+#line 406
error("bad var id: status = %d", err);
+#line 406
for (j = 0; j < var_rank[i]; j++) {
+#line 406
start[j] = var_shape[i][j];
+#line 406
err = nc_get_vara_int(ncid, i, start, edge, value);
+#line 406
IF (canConvert && err != NC_EINVALCOORDS)
+#line 406
error("bad index: status = %d", err);
+#line 406
start[j] = 0;
+#line 406
edge[j] = var_shape[i][j] + 1;
+#line 406
err = nc_get_vara_int(ncid, i, start, edge, value);
+#line 406
IF (canConvert && err != NC_EEDGE)
+#line 406
error("bad edge: status = %d", err);
+#line 406
edge[j] = 1;
+#line 406
}
+#line 406
/* Check non-scalars for correct error returned even when */
+#line 406
/* there is nothing to get (edge[j]==0) */
+#line 406
if(var_rank[i] > 0) {
+#line 406
for (j = 0; j < var_rank[i]; j++) {
+#line 406
edge[j] = 0;
+#line 406
}
+#line 406
err = nc_get_vara_int(BAD_ID, i, start, edge, value);
+#line 406
IF (err != NC_EBADID)
+#line 406
error("bad ncid: status = %d", err);
+#line 406
err = nc_get_vara_int(ncid, BAD_VARID, start, edge, value);
+#line 406
IF (err != NC_ENOTVAR)
+#line 406
error("bad var id: status = %d", err);
+#line 406
for (j = 0; j < var_rank[i]; j++) {
+#line 406
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 406
start[j] = var_shape[i][j];
+#line 406
err = nc_get_vara_int(ncid, i, start, edge, value);
+#line 406
IF (canConvert && err != NC_EINVALCOORDS)
+#line 406
error("bad start: status = %d", err);
+#line 406
start[j] = 0;
+#line 406
}
+#line 406
}
+#line 406
err = nc_get_vara_int(ncid, i, start, edge, value);
+#line 406
if (canConvert) {
+#line 406
IF (err)
+#line 406
error("%s", nc_strerror(err));
+#line 406
} else {
+#line 406
IF (err != NC_ECHAR)
+#line 406
error("wrong type: status = %d", err);
+#line 406
}
+#line 406
for (j = 0; j < var_rank[i]; j++) {
+#line 406
edge[j] = 1;
+#line 406
}
+#line 406
} /* Choose a random point dividing each dim into 2 parts */
+#line 406
/* get 2^rank (nslabs) slabs so defined */
+#line 406
nslabs = 1;
+#line 406
for (j = 0; j < var_rank[i]; j++) {
+#line 406
mid[j] = roll( var_shape[i][j] );
+#line 406
nslabs *= 2;
+#line 406
}
+#line 406
/* bits of k determine whether to get lower or upper part of dim */
+#line 406
for (k = 0; k < nslabs; k++) {
+#line 406
nels = 1;
+#line 406
for (j = 0; j < var_rank[i]; j++) {
+#line 406
if ((k >> j) & 1) {
+#line 406
start[j] = 0;
+#line 406
edge[j] = mid[j];
+#line 406
}else{
+#line 406
start[j] = mid[j];
+#line 406
edge[j] = var_shape[i][j] - mid[j];
+#line 406
}
+#line 406
nels *= edge[j];
+#line 406
}
+#line 406
allInExtRange = allInIntRange = 1;
+#line 406
for (j = 0; j < nels; j++) {
+#line 406
err = toMixedBase(j, var_rank[i], edge, index);
+#line 406
IF (err)
+#line 406
error("error in toMixedBase 1");
+#line 406
for (d = 0; d < var_rank[i]; d++)
+#line 406
index[d] += start[d];
+#line 406
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_INT);
+#line 406
if (inRange3(expect[j],var_type[i], NCT_INT)) {
+#line 406
allInIntRange = allInIntRange && expect[j] >= int_min
+#line 406
&& expect[j] <= int_max;
+#line 406
} else {
+#line 406
allInExtRange = 0;
+#line 406
}
+#line 406
}
+#line 406
if (var_rank[i] == 0 && i%2)
+#line 406
err = nc_get_vara_int(ncid, i, NULL, NULL, value);
+#line 406
else
+#line 406
err = nc_get_vara_int(ncid, i, start, edge, value);
+#line 406
if (canConvert) {
+#line 406
if (allInExtRange) {
+#line 406
if (allInIntRange) {
+#line 406
IF (err)
+#line 406
error("%s", nc_strerror(err));
+#line 406
} else {
+#line 406
IF (err != NC_ERANGE)
+#line 406
error("Range error: status = %d", err);
+#line 406
}
+#line 406
} else {
+#line 406
IF (err != 0 && err != NC_ERANGE)
+#line 406
error("OK or Range error: status = %d", err);
+#line 406
}
+#line 406
for (j = 0; j < nels; j++) {
+#line 406
if (inRange3(expect[j],var_type[i],NCT_INT)
+#line 406
&& expect[j] >= int_min && expect[j] <= int_max) {
+#line 406
IF (!equal(value[j],expect[j],var_type[i],NCT_INT)){
+#line 406
error("value read not that expected");
+#line 406
if (verbose) {
+#line 406
error("\n");
+#line 406
error("varid: %d, ", i);
+#line 406
error("var_name: %s, ", var_name[i]);
+#line 406
error("element number: %d ", j);
+#line 406
error("expect: %g", expect[j]);
+#line 406
error("got: %g", (double) value[j]);
+#line 406
}
+#line 406
} else {
+#line 406
nok++;
+#line 406
}
+#line 406
}
+#line 406
}
+#line 406
} else {
+#line 406
IF (nels > 0 && err != NC_ECHAR)
+#line 406
error("wrong type: status = %d", err);
+#line 406
}
+#line 406
}
+#line 406
}
+#line 406
err = nc_close(ncid);
+#line 406
IF (err)
+#line 406
error("nc_close: %s", nc_strerror(err));
+#line 406
print_nok(nok);
+#line 406
}
+#line 406
void
+#line 407
test_nc_get_vara_long(void)
+#line 407
{
+#line 407
int ncid;
+#line 407
int d;
+#line 407
int i;
+#line 407
int j;
+#line 407
int k;
+#line 407
int err;
+#line 407
int allInExtRange; /* all values within external range? */
+#line 407
int allInIntRange; /* all values within internal range? */
+#line 407
int nels;
+#line 407
int nslabs;
+#line 407
int nok = 0; /* count of valid comparisons */
+#line 407
size_t start[MAX_RANK];
+#line 407
size_t edge[MAX_RANK];
+#line 407
size_t index[MAX_RANK];
+#line 407
size_t mid[MAX_RANK];
+#line 407
int canConvert; /* Both text or both numeric */
+#line 407
long value[MAX_NELS];
+#line 407
double expect[MAX_NELS];
+#line 407
+#line 407
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 407
IF (err)
+#line 407
error("nc_open: %s", nc_strerror(err));
+#line 407
for (i = 0; i < NVARS; i++) {
+#line 407
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 407
assert(var_rank[i] <= MAX_RANK);
+#line 407
assert(var_nels[i] <= MAX_NELS);
+#line 407
for (j = 0; j < var_rank[i]; j++) {
+#line 407
start[j] = 0;
+#line 407
edge[j] = 1;
+#line 407
}
+#line 407
err = nc_get_vara_long(BAD_ID, i, start, edge, value);
+#line 407
IF (err != NC_EBADID)
+#line 407
error("bad ncid: status = %d", err);
+#line 407
err = nc_get_vara_long(ncid, BAD_VARID, start, edge, value);
+#line 407
IF (err != NC_ENOTVAR)
+#line 407
error("bad var id: status = %d", err);
+#line 407
for (j = 0; j < var_rank[i]; j++) {
+#line 407
start[j] = var_shape[i][j];
+#line 407
err = nc_get_vara_long(ncid, i, start, edge, value);
+#line 407
IF (canConvert && err != NC_EINVALCOORDS)
+#line 407
error("bad index: status = %d", err);
+#line 407
start[j] = 0;
+#line 407
edge[j] = var_shape[i][j] + 1;
+#line 407
err = nc_get_vara_long(ncid, i, start, edge, value);
+#line 407
IF (canConvert && err != NC_EEDGE)
+#line 407
error("bad edge: status = %d", err);
+#line 407
edge[j] = 1;
+#line 407
}
+#line 407
/* Check non-scalars for correct error returned even when */
+#line 407
/* there is nothing to get (edge[j]==0) */
+#line 407
if(var_rank[i] > 0) {
+#line 407
for (j = 0; j < var_rank[i]; j++) {
+#line 407
edge[j] = 0;
+#line 407
}
+#line 407
err = nc_get_vara_long(BAD_ID, i, start, edge, value);
+#line 407
IF (err != NC_EBADID)
+#line 407
error("bad ncid: status = %d", err);
+#line 407
err = nc_get_vara_long(ncid, BAD_VARID, start, edge, value);
+#line 407
IF (err != NC_ENOTVAR)
+#line 407
error("bad var id: status = %d", err);
+#line 407
for (j = 0; j < var_rank[i]; j++) {
+#line 407
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 407
start[j] = var_shape[i][j];
+#line 407
err = nc_get_vara_long(ncid, i, start, edge, value);
+#line 407
IF (canConvert && err != NC_EINVALCOORDS)
+#line 407
error("bad start: status = %d", err);
+#line 407
start[j] = 0;
+#line 407
}
+#line 407
}
+#line 407
err = nc_get_vara_long(ncid, i, start, edge, value);
+#line 407
if (canConvert) {
+#line 407
IF (err)
+#line 407
error("%s", nc_strerror(err));
+#line 407
} else {
+#line 407
IF (err != NC_ECHAR)
+#line 407
error("wrong type: status = %d", err);
+#line 407
}
+#line 407
for (j = 0; j < var_rank[i]; j++) {
+#line 407
edge[j] = 1;
+#line 407
}
+#line 407
} /* Choose a random point dividing each dim into 2 parts */
+#line 407
/* get 2^rank (nslabs) slabs so defined */
+#line 407
nslabs = 1;
+#line 407
for (j = 0; j < var_rank[i]; j++) {
+#line 407
mid[j] = roll( var_shape[i][j] );
+#line 407
nslabs *= 2;
+#line 407
}
+#line 407
/* bits of k determine whether to get lower or upper part of dim */
+#line 407
for (k = 0; k < nslabs; k++) {
+#line 407
nels = 1;
+#line 407
for (j = 0; j < var_rank[i]; j++) {
+#line 407
if ((k >> j) & 1) {
+#line 407
start[j] = 0;
+#line 407
edge[j] = mid[j];
+#line 407
}else{
+#line 407
start[j] = mid[j];
+#line 407
edge[j] = var_shape[i][j] - mid[j];
+#line 407
}
+#line 407
nels *= edge[j];
+#line 407
}
+#line 407
allInExtRange = allInIntRange = 1;
+#line 407
for (j = 0; j < nels; j++) {
+#line 407
err = toMixedBase(j, var_rank[i], edge, index);
+#line 407
IF (err)
+#line 407
error("error in toMixedBase 1");
+#line 407
for (d = 0; d < var_rank[i]; d++)
+#line 407
index[d] += start[d];
+#line 407
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_LONG);
+#line 407
if (inRange3(expect[j],var_type[i], NCT_LONG)) {
+#line 407
allInIntRange = allInIntRange && expect[j] >= long_min
+#line 407
&& expect[j] <= long_max;
+#line 407
} else {
+#line 407
allInExtRange = 0;
+#line 407
}
+#line 407
}
+#line 407
if (var_rank[i] == 0 && i%2)
+#line 407
err = nc_get_vara_long(ncid, i, NULL, NULL, value);
+#line 407
else
+#line 407
err = nc_get_vara_long(ncid, i, start, edge, value);
+#line 407
if (canConvert) {
+#line 407
if (allInExtRange) {
+#line 407
if (allInIntRange) {
+#line 407
IF (err)
+#line 407
error("%s", nc_strerror(err));
+#line 407
} else {
+#line 407
IF (err != NC_ERANGE)
+#line 407
error("Range error: status = %d", err);
+#line 407
}
+#line 407
} else {
+#line 407
IF (err != 0 && err != NC_ERANGE)
+#line 407
error("OK or Range error: status = %d", err);
+#line 407
}
+#line 407
for (j = 0; j < nels; j++) {
+#line 407
if (inRange3(expect[j],var_type[i],NCT_LONG)
+#line 407
&& expect[j] >= long_min && expect[j] <= long_max) {
+#line 407
IF (!equal(value[j],expect[j],var_type[i],NCT_LONG)){
+#line 407
error("value read not that expected");
+#line 407
if (verbose) {
+#line 407
error("\n");
+#line 407
error("varid: %d, ", i);
+#line 407
error("var_name: %s, ", var_name[i]);
+#line 407
error("element number: %d ", j);
+#line 407
error("expect: %g", expect[j]);
+#line 407
error("got: %g", (double) value[j]);
+#line 407
}
+#line 407
} else {
+#line 407
nok++;
+#line 407
}
+#line 407
}
+#line 407
}
+#line 407
} else {
+#line 407
IF (nels > 0 && err != NC_ECHAR)
+#line 407
error("wrong type: status = %d", err);
+#line 407
}
+#line 407
}
+#line 407
}
+#line 407
err = nc_close(ncid);
+#line 407
IF (err)
+#line 407
error("nc_close: %s", nc_strerror(err));
+#line 407
print_nok(nok);
+#line 407
}
+#line 407
void
+#line 408
test_nc_get_vara_float(void)
+#line 408
{
+#line 408
int ncid;
+#line 408
int d;
+#line 408
int i;
+#line 408
int j;
+#line 408
int k;
+#line 408
int err;
+#line 408
int allInExtRange; /* all values within external range? */
+#line 408
int allInIntRange; /* all values within internal range? */
+#line 408
int nels;
+#line 408
int nslabs;
+#line 408
int nok = 0; /* count of valid comparisons */
+#line 408
size_t start[MAX_RANK];
+#line 408
size_t edge[MAX_RANK];
+#line 408
size_t index[MAX_RANK];
+#line 408
size_t mid[MAX_RANK];
+#line 408
int canConvert; /* Both text or both numeric */
+#line 408
float value[MAX_NELS];
+#line 408
double expect[MAX_NELS];
+#line 408
+#line 408
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 408
IF (err)
+#line 408
error("nc_open: %s", nc_strerror(err));
+#line 408
for (i = 0; i < NVARS; i++) {
+#line 408
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 408
assert(var_rank[i] <= MAX_RANK);
+#line 408
assert(var_nels[i] <= MAX_NELS);
+#line 408
for (j = 0; j < var_rank[i]; j++) {
+#line 408
start[j] = 0;
+#line 408
edge[j] = 1;
+#line 408
}
+#line 408
err = nc_get_vara_float(BAD_ID, i, start, edge, value);
+#line 408
IF (err != NC_EBADID)
+#line 408
error("bad ncid: status = %d", err);
+#line 408
err = nc_get_vara_float(ncid, BAD_VARID, start, edge, value);
+#line 408
IF (err != NC_ENOTVAR)
+#line 408
error("bad var id: status = %d", err);
+#line 408
for (j = 0; j < var_rank[i]; j++) {
+#line 408
start[j] = var_shape[i][j];
+#line 408
err = nc_get_vara_float(ncid, i, start, edge, value);
+#line 408
IF (canConvert && err != NC_EINVALCOORDS)
+#line 408
error("bad index: status = %d", err);
+#line 408
start[j] = 0;
+#line 408
edge[j] = var_shape[i][j] + 1;
+#line 408
err = nc_get_vara_float(ncid, i, start, edge, value);
+#line 408
IF (canConvert && err != NC_EEDGE)
+#line 408
error("bad edge: status = %d", err);
+#line 408
edge[j] = 1;
+#line 408
}
+#line 408
/* Check non-scalars for correct error returned even when */
+#line 408
/* there is nothing to get (edge[j]==0) */
+#line 408
if(var_rank[i] > 0) {
+#line 408
for (j = 0; j < var_rank[i]; j++) {
+#line 408
edge[j] = 0;
+#line 408
}
+#line 408
err = nc_get_vara_float(BAD_ID, i, start, edge, value);
+#line 408
IF (err != NC_EBADID)
+#line 408
error("bad ncid: status = %d", err);
+#line 408
err = nc_get_vara_float(ncid, BAD_VARID, start, edge, value);
+#line 408
IF (err != NC_ENOTVAR)
+#line 408
error("bad var id: status = %d", err);
+#line 408
for (j = 0; j < var_rank[i]; j++) {
+#line 408
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 408
start[j] = var_shape[i][j];
+#line 408
err = nc_get_vara_float(ncid, i, start, edge, value);
+#line 408
IF (canConvert && err != NC_EINVALCOORDS)
+#line 408
error("bad start: status = %d", err);
+#line 408
start[j] = 0;
+#line 408
}
+#line 408
}
+#line 408
err = nc_get_vara_float(ncid, i, start, edge, value);
+#line 408
if (canConvert) {
+#line 408
IF (err)
+#line 408
error("%s", nc_strerror(err));
+#line 408
} else {
+#line 408
IF (err != NC_ECHAR)
+#line 408
error("wrong type: status = %d", err);
+#line 408
}
+#line 408
for (j = 0; j < var_rank[i]; j++) {
+#line 408
edge[j] = 1;
+#line 408
}
+#line 408
} /* Choose a random point dividing each dim into 2 parts */
+#line 408
/* get 2^rank (nslabs) slabs so defined */
+#line 408
nslabs = 1;
+#line 408
for (j = 0; j < var_rank[i]; j++) {
+#line 408
mid[j] = roll( var_shape[i][j] );
+#line 408
nslabs *= 2;
+#line 408
}
+#line 408
/* bits of k determine whether to get lower or upper part of dim */
+#line 408
for (k = 0; k < nslabs; k++) {
+#line 408
nels = 1;
+#line 408
for (j = 0; j < var_rank[i]; j++) {
+#line 408
if ((k >> j) & 1) {
+#line 408
start[j] = 0;
+#line 408
edge[j] = mid[j];
+#line 408
}else{
+#line 408
start[j] = mid[j];
+#line 408
edge[j] = var_shape[i][j] - mid[j];
+#line 408
}
+#line 408
nels *= edge[j];
+#line 408
}
+#line 408
allInExtRange = allInIntRange = 1;
+#line 408
for (j = 0; j < nels; j++) {
+#line 408
err = toMixedBase(j, var_rank[i], edge, index);
+#line 408
IF (err)
+#line 408
error("error in toMixedBase 1");
+#line 408
for (d = 0; d < var_rank[i]; d++)
+#line 408
index[d] += start[d];
+#line 408
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_FLOAT);
+#line 408
if (inRange3(expect[j],var_type[i], NCT_FLOAT)) {
+#line 408
allInIntRange = allInIntRange && expect[j] >= float_min
+#line 408
&& expect[j] <= float_max;
+#line 408
} else {
+#line 408
allInExtRange = 0;
+#line 408
}
+#line 408
}
+#line 408
if (var_rank[i] == 0 && i%2)
+#line 408
err = nc_get_vara_float(ncid, i, NULL, NULL, value);
+#line 408
else
+#line 408
err = nc_get_vara_float(ncid, i, start, edge, value);
+#line 408
if (canConvert) {
+#line 408
if (allInExtRange) {
+#line 408
if (allInIntRange) {
+#line 408
IF (err)
+#line 408
error("%s", nc_strerror(err));
+#line 408
} else {
+#line 408
IF (err != NC_ERANGE)
+#line 408
error("Range error: status = %d", err);
+#line 408
}
+#line 408
} else {
+#line 408
IF (err != 0 && err != NC_ERANGE)
+#line 408
error("OK or Range error: status = %d", err);
+#line 408
}
+#line 408
for (j = 0; j < nels; j++) {
+#line 408
if (inRange3(expect[j],var_type[i],NCT_FLOAT)
+#line 408
&& expect[j] >= float_min && expect[j] <= float_max) {
+#line 408
IF (!equal(value[j],expect[j],var_type[i],NCT_FLOAT)){
+#line 408
error("value read not that expected");
+#line 408
if (verbose) {
+#line 408
error("\n");
+#line 408
error("varid: %d, ", i);
+#line 408
error("var_name: %s, ", var_name[i]);
+#line 408
error("element number: %d ", j);
+#line 408
error("expect: %g", expect[j]);
+#line 408
error("got: %g", (double) value[j]);
+#line 408
}
+#line 408
} else {
+#line 408
nok++;
+#line 408
}
+#line 408
}
+#line 408
}
+#line 408
} else {
+#line 408
IF (nels > 0 && err != NC_ECHAR)
+#line 408
error("wrong type: status = %d", err);
+#line 408
}
+#line 408
}
+#line 408
}
+#line 408
err = nc_close(ncid);
+#line 408
IF (err)
+#line 408
error("nc_close: %s", nc_strerror(err));
+#line 408
print_nok(nok);
+#line 408
}
+#line 408
void
+#line 409
test_nc_get_vara_double(void)
+#line 409
{
+#line 409
int ncid;
+#line 409
int d;
+#line 409
int i;
+#line 409
int j;
+#line 409
int k;
+#line 409
int err;
+#line 409
int allInExtRange; /* all values within external range? */
+#line 409
int allInIntRange; /* all values within internal range? */
+#line 409
int nels;
+#line 409
int nslabs;
+#line 409
int nok = 0; /* count of valid comparisons */
+#line 409
size_t start[MAX_RANK];
+#line 409
size_t edge[MAX_RANK];
+#line 409
size_t index[MAX_RANK];
+#line 409
size_t mid[MAX_RANK];
+#line 409
int canConvert; /* Both text or both numeric */
+#line 409
double value[MAX_NELS];
+#line 409
double expect[MAX_NELS];
+#line 409
+#line 409
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 409
IF (err)
+#line 409
error("nc_open: %s", nc_strerror(err));
+#line 409
for (i = 0; i < NVARS; i++) {
+#line 409
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 409
assert(var_rank[i] <= MAX_RANK);
+#line 409
assert(var_nels[i] <= MAX_NELS);
+#line 409
for (j = 0; j < var_rank[i]; j++) {
+#line 409
start[j] = 0;
+#line 409
edge[j] = 1;
+#line 409
}
+#line 409
err = nc_get_vara_double(BAD_ID, i, start, edge, value);
+#line 409
IF (err != NC_EBADID)
+#line 409
error("bad ncid: status = %d", err);
+#line 409
err = nc_get_vara_double(ncid, BAD_VARID, start, edge, value);
+#line 409
IF (err != NC_ENOTVAR)
+#line 409
error("bad var id: status = %d", err);
+#line 409
for (j = 0; j < var_rank[i]; j++) {
+#line 409
start[j] = var_shape[i][j];
+#line 409
err = nc_get_vara_double(ncid, i, start, edge, value);
+#line 409
IF (canConvert && err != NC_EINVALCOORDS)
+#line 409
error("bad index: status = %d", err);
+#line 409
start[j] = 0;
+#line 409
edge[j] = var_shape[i][j] + 1;
+#line 409
err = nc_get_vara_double(ncid, i, start, edge, value);
+#line 409
IF (canConvert && err != NC_EEDGE)
+#line 409
error("bad edge: status = %d", err);
+#line 409
edge[j] = 1;
+#line 409
}
+#line 409
/* Check non-scalars for correct error returned even when */
+#line 409
/* there is nothing to get (edge[j]==0) */
+#line 409
if(var_rank[i] > 0) {
+#line 409
for (j = 0; j < var_rank[i]; j++) {
+#line 409
edge[j] = 0;
+#line 409
}
+#line 409
err = nc_get_vara_double(BAD_ID, i, start, edge, value);
+#line 409
IF (err != NC_EBADID)
+#line 409
error("bad ncid: status = %d", err);
+#line 409
err = nc_get_vara_double(ncid, BAD_VARID, start, edge, value);
+#line 409
IF (err != NC_ENOTVAR)
+#line 409
error("bad var id: status = %d", err);
+#line 409
for (j = 0; j < var_rank[i]; j++) {
+#line 409
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 409
start[j] = var_shape[i][j];
+#line 409
err = nc_get_vara_double(ncid, i, start, edge, value);
+#line 409
IF (canConvert && err != NC_EINVALCOORDS)
+#line 409
error("bad start: status = %d", err);
+#line 409
start[j] = 0;
+#line 409
}
+#line 409
}
+#line 409
err = nc_get_vara_double(ncid, i, start, edge, value);
+#line 409
if (canConvert) {
+#line 409
IF (err)
+#line 409
error("%s", nc_strerror(err));
+#line 409
} else {
+#line 409
IF (err != NC_ECHAR)
+#line 409
error("wrong type: status = %d", err);
+#line 409
}
+#line 409
for (j = 0; j < var_rank[i]; j++) {
+#line 409
edge[j] = 1;
+#line 409
}
+#line 409
} /* Choose a random point dividing each dim into 2 parts */
+#line 409
/* get 2^rank (nslabs) slabs so defined */
+#line 409
nslabs = 1;
+#line 409
for (j = 0; j < var_rank[i]; j++) {
+#line 409
mid[j] = roll( var_shape[i][j] );
+#line 409
nslabs *= 2;
+#line 409
}
+#line 409
/* bits of k determine whether to get lower or upper part of dim */
+#line 409
for (k = 0; k < nslabs; k++) {
+#line 409
nels = 1;
+#line 409
for (j = 0; j < var_rank[i]; j++) {
+#line 409
if ((k >> j) & 1) {
+#line 409
start[j] = 0;
+#line 409
edge[j] = mid[j];
+#line 409
}else{
+#line 409
start[j] = mid[j];
+#line 409
edge[j] = var_shape[i][j] - mid[j];
+#line 409
}
+#line 409
nels *= edge[j];
+#line 409
}
+#line 409
allInExtRange = allInIntRange = 1;
+#line 409
for (j = 0; j < nels; j++) {
+#line 409
err = toMixedBase(j, var_rank[i], edge, index);
+#line 409
IF (err)
+#line 409
error("error in toMixedBase 1");
+#line 409
for (d = 0; d < var_rank[i]; d++)
+#line 409
index[d] += start[d];
+#line 409
expect[j] = hash4(var_type[i], var_rank[i], index, NCT_DOUBLE);
+#line 409
if (inRange3(expect[j],var_type[i], NCT_DOUBLE)) {
+#line 409
allInIntRange = allInIntRange && expect[j] >= double_min
+#line 409
&& expect[j] <= double_max;
+#line 409
} else {
+#line 409
allInExtRange = 0;
+#line 409
}
+#line 409
}
+#line 409
if (var_rank[i] == 0 && i%2)
+#line 409
err = nc_get_vara_double(ncid, i, NULL, NULL, value);
+#line 409
else
+#line 409
err = nc_get_vara_double(ncid, i, start, edge, value);
+#line 409
if (canConvert) {
+#line 409
if (allInExtRange) {
+#line 409
if (allInIntRange) {
+#line 409
IF (err)
+#line 409
error("%s", nc_strerror(err));
+#line 409
} else {
+#line 409
IF (err != NC_ERANGE)
+#line 409
error("Range error: status = %d", err);
+#line 409
}
+#line 409
} else {
+#line 409
IF (err != 0 && err != NC_ERANGE)
+#line 409
error("OK or Range error: status = %d", err);
+#line 409
}
+#line 409
for (j = 0; j < nels; j++) {
+#line 409
if (inRange3(expect[j],var_type[i],NCT_DOUBLE)
+#line 409
&& expect[j] >= double_min && expect[j] <= double_max) {
+#line 409
IF (!equal(value[j],expect[j],var_type[i],NCT_DOUBLE)){
+#line 409
error("value read not that expected");
+#line 409
if (verbose) {
+#line 409
error("\n");
+#line 409
error("varid: %d, ", i);
+#line 409
error("var_name: %s, ", var_name[i]);
+#line 409
error("element number: %d ", j);
+#line 409
error("expect: %g", expect[j]);
+#line 409
error("got: %g", (double) value[j]);
+#line 409
}
+#line 409
} else {
+#line 409
nok++;
+#line 409
}
+#line 409
}
+#line 409
}
+#line 409
} else {
+#line 409
IF (nels > 0 && err != NC_ECHAR)
+#line 409
error("wrong type: status = %d", err);
+#line 409
}
+#line 409
}
+#line 409
}
+#line 409
err = nc_close(ncid);
+#line 409
IF (err)
+#line 409
error("nc_close: %s", nc_strerror(err));
+#line 409
print_nok(nok);
+#line 409
}
+#line 409
+#line 590
void
+#line 591
test_nc_get_vars_text(void)
+#line 591
{
+#line 591
int ncid;
+#line 591
int d;
+#line 591
int i;
+#line 591
int j;
+#line 591
int k;
+#line 591
int m;
+#line 591
int err;
+#line 591
int allInExtRange; /* all values within external range? */
+#line 591
int allInIntRange; /* all values within internal range? */
+#line 591
int nels;
+#line 591
int nslabs;
+#line 591
int nstarts; /* number of different starts */
+#line 591
int nok = 0; /* count of valid comparisons */
+#line 591
size_t start[MAX_RANK];
+#line 591
size_t edge[MAX_RANK];
+#line 591
size_t index[MAX_RANK];
+#line 591
size_t index2[MAX_RANK];
+#line 591
size_t mid[MAX_RANK];
+#line 591
size_t count[MAX_RANK];
+#line 591
size_t sstride[MAX_RANK];
+#line 591
ptrdiff_t stride[MAX_RANK];
+#line 591
int canConvert; /* Both text or both numeric */
+#line 591
text value[MAX_NELS];
+#line 591
double expect[MAX_NELS];
+#line 591
+#line 591
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 591
IF (err)
+#line 591
error("nc_open: %s", nc_strerror(err));
+#line 591
for (i = 0; i < NVARS; i++) {
+#line 591
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 591
assert(var_rank[i] <= MAX_RANK);
+#line 591
assert(var_nels[i] <= MAX_NELS);
+#line 591
for (j = 0; j < var_rank[i]; j++) {
+#line 591
start[j] = 0;
+#line 591
edge[j] = 1;
+#line 591
stride[j] = 1;
+#line 591
}
+#line 591
err = nc_get_vars_text(BAD_ID, i, start, edge, stride, value);
+#line 591
IF (err != NC_EBADID)
+#line 591
error("bad ncid: status = %d", err);
+#line 591
err = nc_get_vars_text(ncid, BAD_VARID, start, edge, stride, value);
+#line 591
IF (err != NC_ENOTVAR)
+#line 591
error("bad var id: status = %d", err);
+#line 591
for (j = 0; j < var_rank[i]; j++) {
+#line 591
start[j] = var_shape[i][j];
+#line 591
err = nc_get_vars_text(ncid, i, start, edge, stride, value);
+#line 591
if(!canConvert) {
+#line 591
IF (err != NC_ECHAR)
+#line 591
error("conversion: status = %d", err);
+#line 591
} else {
+#line 591
IF (err != NC_EINVALCOORDS)
+#line 591
error("bad index: status = %d", err);
+#line 591
start[j] = 0;
+#line 591
edge[j] = var_shape[i][j] + 1;
+#line 591
err = nc_get_vars_text(ncid, i, start, edge, stride, value);
+#line 591
IF (err != NC_EEDGE)
+#line 591
error("bad edge: status = %d", err);
+#line 591
edge[j] = 1;
+#line 591
stride[j] = 0;
+#line 591
err = nc_get_vars_text(ncid, i, start, edge, stride, value);
+#line 591
IF (err != NC_ESTRIDE)
+#line 591
error("bad stride: status = %d", err);
+#line 591
stride[j] = 1;
+#line 591
}
+#line 591
}
+#line 591
/* Choose a random point dividing each dim into 2 parts */
+#line 591
/* get 2^rank (nslabs) slabs so defined */
+#line 591
nslabs = 1;
+#line 591
for (j = 0; j < var_rank[i]; j++) {
+#line 591
mid[j] = roll( var_shape[i][j] );
+#line 591
nslabs *= 2;
+#line 591
}
+#line 591
/* bits of k determine whether to get lower or upper part of dim */
+#line 591
/* choose random stride from 1 to edge */
+#line 591
for (k = 0; k < nslabs; k++) {
+#line 591
nstarts = 1;
+#line 591
for (j = 0; j < var_rank[i]; j++) {
+#line 591
if ((k >> j) & 1) {
+#line 591
start[j] = 0;
+#line 591
edge[j] = mid[j];
+#line 591
}else{
+#line 591
start[j] = mid[j];
+#line 591
edge[j] = var_shape[i][j] - mid[j];
+#line 591
}
+#line 591
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 591
nstarts *= stride[j];
+#line 591
}
+#line 591
for (m = 0; m < nstarts; m++) {
+#line 591
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 591
IF (err)
+#line 591
error("error in toMixedBase");
+#line 591
nels = 1;
+#line 591
for (j = 0; j < var_rank[i]; j++) {
+#line 591
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 591
nels *= count[j];
+#line 591
index[j] += start[j];
+#line 591
}
+#line 591
/* Random choice of forward or backward */
+#line 591
/* TODO
+#line 591
if ( roll(2) ) {
+#line 591
for (j = 0; j < var_rank[i]; j++) {
+#line 591
index[j] += (count[j] - 1) * stride[j];
+#line 591
stride[j] = -stride[j];
+#line 591
}
+#line 591
}
+#line 591
*/
+#line 591
allInExtRange = allInIntRange = 1;
+#line 591
for (j = 0; j < nels; j++) {
+#line 591
err = toMixedBase(j, var_rank[i], count, index2);
+#line 591
IF (err)
+#line 591
error("error in toMixedBase 1");
+#line 591
for (d = 0; d < var_rank[i]; d++)
+#line 591
index2[d] = index[d] + index2[d] * stride[d];
+#line 591
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 591
NCT_TEXT);
+#line 591
if (inRange3(expect[j],var_type[i],NCT_TEXT)) {
+#line 591
allInIntRange = allInIntRange && expect[j] >= text_min
+#line 591
&& expect[j] <= text_max;
+#line 591
} else {
+#line 591
allInExtRange = 0;
+#line 591
}
+#line 591
}
+#line 591
if (var_rank[i] == 0 && i%2 )
+#line 591
err = nc_get_vars_text(ncid, i, NULL, NULL, NULL, value);
+#line 591
else
+#line 591
err = nc_get_vars_text(ncid, i, index, count, stride, value);
+#line 591
if (canConvert) {
+#line 591
if (allInExtRange) {
+#line 591
if (allInIntRange) {
+#line 591
IF (err)
+#line 591
error("%s", nc_strerror(err));
+#line 591
} else {
+#line 591
IF (err != NC_ERANGE)
+#line 591
error("Range error: status = %d", err);
+#line 591
}
+#line 591
} else {
+#line 591
IF (err != 0 && err != NC_ERANGE)
+#line 591
error("OK or Range error: status = %d", err);
+#line 591
}
+#line 591
for (j = 0; j < nels; j++) {
+#line 591
if (inRange3(expect[j],var_type[i],NCT_TEXT)
+#line 591
&& expect[j] >= text_min && expect[j] <= text_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_TEXT)){
+#line 591
+ IF (!equal(value[j],expect[j],var_type[i], NCT_TEXT)){
+#line 591
error("value read not that expected");
+#line 591
if (verbose) {
+#line 591
error("\n");
+#line 591
error("varid: %d, ", i);
+#line 591
error("var_name: %s, ", var_name[i]);
+#line 591
error("element number: %d ", j);
+#line 591
error("expect: %g, ", expect[j]);
+#line 591
error("got: %g", (double) value[j]);
+#line 591
}
+#line 591
} else {
+#line 591
nok++;
+#line 591
}
+#line 591
}
+#line 591
}
+#line 591
} else {
+#line 591
IF (nels > 0 && err != NC_ECHAR)
+#line 591
error("wrong type: status = %d", err);
+#line 591
}
+#line 591
}
+#line 591
}
+#line 591
+#line 591
}
+#line 591
err = nc_close(ncid);
+#line 591
IF (err)
+#line 591
error("nc_close: %s", nc_strerror(err));
+#line 591
print_nok(nok);
+#line 591
}
+#line 591
void
+#line 592
test_nc_get_vars_uchar(void)
+#line 592
{
+#line 592
int ncid;
+#line 592
int d;
+#line 592
int i;
+#line 592
int j;
+#line 592
int k;
+#line 592
int m;
+#line 592
int err;
+#line 592
int allInExtRange; /* all values within external range? */
+#line 592
int allInIntRange; /* all values within internal range? */
+#line 592
int nels;
+#line 592
int nslabs;
+#line 592
int nstarts; /* number of different starts */
+#line 592
int nok = 0; /* count of valid comparisons */
+#line 592
size_t start[MAX_RANK];
+#line 592
size_t edge[MAX_RANK];
+#line 592
size_t index[MAX_RANK];
+#line 592
size_t index2[MAX_RANK];
+#line 592
size_t mid[MAX_RANK];
+#line 592
size_t count[MAX_RANK];
+#line 592
size_t sstride[MAX_RANK];
+#line 592
ptrdiff_t stride[MAX_RANK];
+#line 592
int canConvert; /* Both text or both numeric */
+#line 592
uchar value[MAX_NELS];
+#line 592
double expect[MAX_NELS];
+#line 592
+#line 592
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 592
IF (err)
+#line 592
error("nc_open: %s", nc_strerror(err));
+#line 592
for (i = 0; i < NVARS; i++) {
+#line 592
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 592
assert(var_rank[i] <= MAX_RANK);
+#line 592
assert(var_nels[i] <= MAX_NELS);
+#line 592
for (j = 0; j < var_rank[i]; j++) {
+#line 592
start[j] = 0;
+#line 592
edge[j] = 1;
+#line 592
stride[j] = 1;
+#line 592
}
+#line 592
err = nc_get_vars_uchar(BAD_ID, i, start, edge, stride, value);
+#line 592
IF (err != NC_EBADID)
+#line 592
error("bad ncid: status = %d", err);
+#line 592
err = nc_get_vars_uchar(ncid, BAD_VARID, start, edge, stride, value);
+#line 592
IF (err != NC_ENOTVAR)
+#line 592
error("bad var id: status = %d", err);
+#line 592
for (j = 0; j < var_rank[i]; j++) {
+#line 592
start[j] = var_shape[i][j];
+#line 592
err = nc_get_vars_uchar(ncid, i, start, edge, stride, value);
+#line 592
if(!canConvert) {
+#line 592
IF (err != NC_ECHAR)
+#line 592
error("conversion: status = %d", err);
+#line 592
} else {
+#line 592
IF (err != NC_EINVALCOORDS)
+#line 592
error("bad index: status = %d", err);
+#line 592
start[j] = 0;
+#line 592
edge[j] = var_shape[i][j] + 1;
+#line 592
err = nc_get_vars_uchar(ncid, i, start, edge, stride, value);
+#line 592
IF (err != NC_EEDGE)
+#line 592
error("bad edge: status = %d", err);
+#line 592
edge[j] = 1;
+#line 592
stride[j] = 0;
+#line 592
err = nc_get_vars_uchar(ncid, i, start, edge, stride, value);
+#line 592
IF (err != NC_ESTRIDE)
+#line 592
error("bad stride: status = %d", err);
+#line 592
stride[j] = 1;
+#line 592
}
+#line 592
}
+#line 592
/* Choose a random point dividing each dim into 2 parts */
+#line 592
/* get 2^rank (nslabs) slabs so defined */
+#line 592
nslabs = 1;
+#line 592
for (j = 0; j < var_rank[i]; j++) {
+#line 592
mid[j] = roll( var_shape[i][j] );
+#line 592
nslabs *= 2;
+#line 592
}
+#line 592
/* bits of k determine whether to get lower or upper part of dim */
+#line 592
/* choose random stride from 1 to edge */
+#line 592
for (k = 0; k < nslabs; k++) {
+#line 592
nstarts = 1;
+#line 592
for (j = 0; j < var_rank[i]; j++) {
+#line 592
if ((k >> j) & 1) {
+#line 592
start[j] = 0;
+#line 592
edge[j] = mid[j];
+#line 592
}else{
+#line 592
start[j] = mid[j];
+#line 592
edge[j] = var_shape[i][j] - mid[j];
+#line 592
}
+#line 592
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 592
nstarts *= stride[j];
+#line 592
}
+#line 592
for (m = 0; m < nstarts; m++) {
+#line 592
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 592
IF (err)
+#line 592
error("error in toMixedBase");
+#line 592
nels = 1;
+#line 592
for (j = 0; j < var_rank[i]; j++) {
+#line 592
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 592
nels *= count[j];
+#line 592
index[j] += start[j];
+#line 592
}
+#line 592
/* Random choice of forward or backward */
+#line 592
/* TODO
+#line 592
if ( roll(2) ) {
+#line 592
for (j = 0; j < var_rank[i]; j++) {
+#line 592
index[j] += (count[j] - 1) * stride[j];
+#line 592
stride[j] = -stride[j];
+#line 592
}
+#line 592
}
+#line 592
*/
+#line 592
allInExtRange = allInIntRange = 1;
+#line 592
for (j = 0; j < nels; j++) {
+#line 592
err = toMixedBase(j, var_rank[i], count, index2);
+#line 592
IF (err)
+#line 592
error("error in toMixedBase 1");
+#line 592
for (d = 0; d < var_rank[i]; d++)
+#line 592
index2[d] = index[d] + index2[d] * stride[d];
+#line 592
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 592
NCT_UCHAR);
+#line 592
if (inRange3(expect[j],var_type[i],NCT_UCHAR)) {
+#line 592
allInIntRange = allInIntRange && expect[j] >= uchar_min
+#line 592
&& expect[j] <= uchar_max;
+#line 592
} else {
+#line 592
allInExtRange = 0;
+#line 592
}
+#line 592
}
+#line 592
if (var_rank[i] == 0 && i%2 )
+#line 592
err = nc_get_vars_uchar(ncid, i, NULL, NULL, NULL, value);
+#line 592
else
+#line 592
err = nc_get_vars_uchar(ncid, i, index, count, stride, value);
+#line 592
if (canConvert) {
+#line 592
if (allInExtRange) {
+#line 592
if (allInIntRange) {
+#line 592
IF (err)
+#line 592
error("%s", nc_strerror(err));
+#line 592
} else {
+#line 592
IF (err != NC_ERANGE)
+#line 592
error("Range error: status = %d", err);
+#line 592
}
+#line 592
} else {
+#line 592
IF (err != 0 && err != NC_ERANGE)
+#line 592
error("OK or Range error: status = %d", err);
+#line 592
}
+#line 592
for (j = 0; j < nels; j++) {
+#line 592
if (inRange3(expect[j],var_type[i],NCT_UCHAR)
+#line 592
&& expect[j] >= uchar_min && expect[j] <= uchar_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_UCHAR)){
+#line 592
+ IF (!equal(value[j],expect[j],var_type[i], NCT_UCHAR)){
+#line 592
error("value read not that expected");
+#line 592
if (verbose) {
+#line 592
error("\n");
+#line 592
error("varid: %d, ", i);
+#line 592
error("var_name: %s, ", var_name[i]);
+#line 592
error("element number: %d ", j);
+#line 592
error("expect: %g, ", expect[j]);
+#line 592
error("got: %g", (double) value[j]);
+#line 592
}
+#line 592
} else {
+#line 592
nok++;
+#line 592
}
+#line 592
}
+#line 592
}
+#line 592
} else {
+#line 592
IF (nels > 0 && err != NC_ECHAR)
+#line 592
error("wrong type: status = %d", err);
+#line 592
}
+#line 592
}
+#line 592
}
+#line 592
+#line 592
}
+#line 592
err = nc_close(ncid);
+#line 592
IF (err)
+#line 592
error("nc_close: %s", nc_strerror(err));
+#line 592
print_nok(nok);
+#line 592
}
+#line 592
void
+#line 593
test_nc_get_vars_schar(void)
+#line 593
{
+#line 593
int ncid;
+#line 593
int d;
+#line 593
int i;
+#line 593
int j;
+#line 593
int k;
+#line 593
int m;
+#line 593
int err;
+#line 593
int allInExtRange; /* all values within external range? */
+#line 593
int allInIntRange; /* all values within internal range? */
+#line 593
int nels;
+#line 593
int nslabs;
+#line 593
int nstarts; /* number of different starts */
+#line 593
int nok = 0; /* count of valid comparisons */
+#line 593
size_t start[MAX_RANK];
+#line 593
size_t edge[MAX_RANK];
+#line 593
size_t index[MAX_RANK];
+#line 593
size_t index2[MAX_RANK];
+#line 593
size_t mid[MAX_RANK];
+#line 593
size_t count[MAX_RANK];
+#line 593
size_t sstride[MAX_RANK];
+#line 593
ptrdiff_t stride[MAX_RANK];
+#line 593
int canConvert; /* Both text or both numeric */
+#line 593
schar value[MAX_NELS];
+#line 593
double expect[MAX_NELS];
+#line 593
+#line 593
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 593
IF (err)
+#line 593
error("nc_open: %s", nc_strerror(err));
+#line 593
for (i = 0; i < NVARS; i++) {
+#line 593
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 593
assert(var_rank[i] <= MAX_RANK);
+#line 593
assert(var_nels[i] <= MAX_NELS);
+#line 593
for (j = 0; j < var_rank[i]; j++) {
+#line 593
start[j] = 0;
+#line 593
edge[j] = 1;
+#line 593
stride[j] = 1;
+#line 593
}
+#line 593
err = nc_get_vars_schar(BAD_ID, i, start, edge, stride, value);
+#line 593
IF (err != NC_EBADID)
+#line 593
error("bad ncid: status = %d", err);
+#line 593
err = nc_get_vars_schar(ncid, BAD_VARID, start, edge, stride, value);
+#line 593
IF (err != NC_ENOTVAR)
+#line 593
error("bad var id: status = %d", err);
+#line 593
for (j = 0; j < var_rank[i]; j++) {
+#line 593
start[j] = var_shape[i][j];
+#line 593
err = nc_get_vars_schar(ncid, i, start, edge, stride, value);
+#line 593
if(!canConvert) {
+#line 593
IF (err != NC_ECHAR)
+#line 593
error("conversion: status = %d", err);
+#line 593
} else {
+#line 593
IF (err != NC_EINVALCOORDS)
+#line 593
error("bad index: status = %d", err);
+#line 593
start[j] = 0;
+#line 593
edge[j] = var_shape[i][j] + 1;
+#line 593
err = nc_get_vars_schar(ncid, i, start, edge, stride, value);
+#line 593
IF (err != NC_EEDGE)
+#line 593
error("bad edge: status = %d", err);
+#line 593
edge[j] = 1;
+#line 593
stride[j] = 0;
+#line 593
err = nc_get_vars_schar(ncid, i, start, edge, stride, value);
+#line 593
IF (err != NC_ESTRIDE)
+#line 593
error("bad stride: status = %d", err);
+#line 593
stride[j] = 1;
+#line 593
}
+#line 593
}
+#line 593
/* Choose a random point dividing each dim into 2 parts */
+#line 593
/* get 2^rank (nslabs) slabs so defined */
+#line 593
nslabs = 1;
+#line 593
for (j = 0; j < var_rank[i]; j++) {
+#line 593
mid[j] = roll( var_shape[i][j] );
+#line 593
nslabs *= 2;
+#line 593
}
+#line 593
/* bits of k determine whether to get lower or upper part of dim */
+#line 593
/* choose random stride from 1 to edge */
+#line 593
for (k = 0; k < nslabs; k++) {
+#line 593
nstarts = 1;
+#line 593
for (j = 0; j < var_rank[i]; j++) {
+#line 593
if ((k >> j) & 1) {
+#line 593
start[j] = 0;
+#line 593
edge[j] = mid[j];
+#line 593
}else{
+#line 593
start[j] = mid[j];
+#line 593
edge[j] = var_shape[i][j] - mid[j];
+#line 593
}
+#line 593
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 593
nstarts *= stride[j];
+#line 593
}
+#line 593
for (m = 0; m < nstarts; m++) {
+#line 593
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 593
IF (err)
+#line 593
error("error in toMixedBase");
+#line 593
nels = 1;
+#line 593
for (j = 0; j < var_rank[i]; j++) {
+#line 593
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 593
nels *= count[j];
+#line 593
index[j] += start[j];
+#line 593
}
+#line 593
/* Random choice of forward or backward */
+#line 593
/* TODO
+#line 593
if ( roll(2) ) {
+#line 593
for (j = 0; j < var_rank[i]; j++) {
+#line 593
index[j] += (count[j] - 1) * stride[j];
+#line 593
stride[j] = -stride[j];
+#line 593
}
+#line 593
}
+#line 593
*/
+#line 593
allInExtRange = allInIntRange = 1;
+#line 593
for (j = 0; j < nels; j++) {
+#line 593
err = toMixedBase(j, var_rank[i], count, index2);
+#line 593
IF (err)
+#line 593
error("error in toMixedBase 1");
+#line 593
for (d = 0; d < var_rank[i]; d++)
+#line 593
index2[d] = index[d] + index2[d] * stride[d];
+#line 593
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 593
NCT_SCHAR);
+#line 593
if (inRange3(expect[j],var_type[i],NCT_SCHAR)) {
+#line 593
allInIntRange = allInIntRange && expect[j] >= schar_min
+#line 593
&& expect[j] <= schar_max;
+#line 593
} else {
+#line 593
allInExtRange = 0;
+#line 593
}
+#line 593
}
+#line 593
if (var_rank[i] == 0 && i%2 )
+#line 593
err = nc_get_vars_schar(ncid, i, NULL, NULL, NULL, value);
+#line 593
else
+#line 593
err = nc_get_vars_schar(ncid, i, index, count, stride, value);
+#line 593
if (canConvert) {
+#line 593
if (allInExtRange) {
+#line 593
if (allInIntRange) {
+#line 593
IF (err)
+#line 593
error("%s", nc_strerror(err));
+#line 593
} else {
+#line 593
IF (err != NC_ERANGE)
+#line 593
error("Range error: status = %d", err);
+#line 593
}
+#line 593
} else {
+#line 593
IF (err != 0 && err != NC_ERANGE)
+#line 593
error("OK or Range error: status = %d", err);
+#line 593
}
+#line 593
for (j = 0; j < nels; j++) {
+#line 593
if (inRange3(expect[j],var_type[i],NCT_SCHAR)
+#line 593
&& expect[j] >= schar_min && expect[j] <= schar_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_SCHAR)){
+#line 593
+ IF (!equal(value[j],expect[j],var_type[i], NCT_SCHAR)){
+#line 593
error("value read not that expected");
+#line 593
if (verbose) {
+#line 593
error("\n");
+#line 593
error("varid: %d, ", i);
+#line 593
error("var_name: %s, ", var_name[i]);
+#line 593
error("element number: %d ", j);
+#line 593
error("expect: %g, ", expect[j]);
+#line 593
error("got: %g", (double) value[j]);
+#line 593
}
+#line 593
} else {
+#line 593
nok++;
+#line 593
}
+#line 593
}
+#line 593
}
+#line 593
} else {
+#line 593
IF (nels > 0 && err != NC_ECHAR)
+#line 593
error("wrong type: status = %d", err);
+#line 593
}
+#line 593
}
+#line 593
}
+#line 593
+#line 593
}
+#line 593
err = nc_close(ncid);
+#line 593
IF (err)
+#line 593
error("nc_close: %s", nc_strerror(err));
+#line 593
print_nok(nok);
+#line 593
}
+#line 593
void
+#line 594
test_nc_get_vars_short(void)
+#line 594
{
+#line 594
int ncid;
+#line 594
int d;
+#line 594
int i;
+#line 594
int j;
+#line 594
int k;
+#line 594
int m;
+#line 594
int err;
+#line 594
int allInExtRange; /* all values within external range? */
+#line 594
int allInIntRange; /* all values within internal range? */
+#line 594
int nels;
+#line 594
int nslabs;
+#line 594
int nstarts; /* number of different starts */
+#line 594
int nok = 0; /* count of valid comparisons */
+#line 594
size_t start[MAX_RANK];
+#line 594
size_t edge[MAX_RANK];
+#line 594
size_t index[MAX_RANK];
+#line 594
size_t index2[MAX_RANK];
+#line 594
size_t mid[MAX_RANK];
+#line 594
size_t count[MAX_RANK];
+#line 594
size_t sstride[MAX_RANK];
+#line 594
ptrdiff_t stride[MAX_RANK];
+#line 594
int canConvert; /* Both text or both numeric */
+#line 594
short value[MAX_NELS];
+#line 594
double expect[MAX_NELS];
+#line 594
+#line 594
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 594
IF (err)
+#line 594
error("nc_open: %s", nc_strerror(err));
+#line 594
for (i = 0; i < NVARS; i++) {
+#line 594
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 594
assert(var_rank[i] <= MAX_RANK);
+#line 594
assert(var_nels[i] <= MAX_NELS);
+#line 594
for (j = 0; j < var_rank[i]; j++) {
+#line 594
start[j] = 0;
+#line 594
edge[j] = 1;
+#line 594
stride[j] = 1;
+#line 594
}
+#line 594
err = nc_get_vars_short(BAD_ID, i, start, edge, stride, value);
+#line 594
IF (err != NC_EBADID)
+#line 594
error("bad ncid: status = %d", err);
+#line 594
err = nc_get_vars_short(ncid, BAD_VARID, start, edge, stride, value);
+#line 594
IF (err != NC_ENOTVAR)
+#line 594
error("bad var id: status = %d", err);
+#line 594
for (j = 0; j < var_rank[i]; j++) {
+#line 594
start[j] = var_shape[i][j];
+#line 594
err = nc_get_vars_short(ncid, i, start, edge, stride, value);
+#line 594
if(!canConvert) {
+#line 594
IF (err != NC_ECHAR)
+#line 594
error("conversion: status = %d", err);
+#line 594
} else {
+#line 594
IF (err != NC_EINVALCOORDS)
+#line 594
error("bad index: status = %d", err);
+#line 594
start[j] = 0;
+#line 594
edge[j] = var_shape[i][j] + 1;
+#line 594
err = nc_get_vars_short(ncid, i, start, edge, stride, value);
+#line 594
IF (err != NC_EEDGE)
+#line 594
error("bad edge: status = %d", err);
+#line 594
edge[j] = 1;
+#line 594
stride[j] = 0;
+#line 594
err = nc_get_vars_short(ncid, i, start, edge, stride, value);
+#line 594
IF (err != NC_ESTRIDE)
+#line 594
error("bad stride: status = %d", err);
+#line 594
stride[j] = 1;
+#line 594
}
+#line 594
}
+#line 594
/* Choose a random point dividing each dim into 2 parts */
+#line 594
/* get 2^rank (nslabs) slabs so defined */
+#line 594
nslabs = 1;
+#line 594
for (j = 0; j < var_rank[i]; j++) {
+#line 594
mid[j] = roll( var_shape[i][j] );
+#line 594
nslabs *= 2;
+#line 594
}
+#line 594
/* bits of k determine whether to get lower or upper part of dim */
+#line 594
/* choose random stride from 1 to edge */
+#line 594
for (k = 0; k < nslabs; k++) {
+#line 594
nstarts = 1;
+#line 594
for (j = 0; j < var_rank[i]; j++) {
+#line 594
if ((k >> j) & 1) {
+#line 594
start[j] = 0;
+#line 594
edge[j] = mid[j];
+#line 594
}else{
+#line 594
start[j] = mid[j];
+#line 594
edge[j] = var_shape[i][j] - mid[j];
+#line 594
}
+#line 594
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 594
nstarts *= stride[j];
+#line 594
}
+#line 594
for (m = 0; m < nstarts; m++) {
+#line 594
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 594
IF (err)
+#line 594
error("error in toMixedBase");
+#line 594
nels = 1;
+#line 594
for (j = 0; j < var_rank[i]; j++) {
+#line 594
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 594
nels *= count[j];
+#line 594
index[j] += start[j];
+#line 594
}
+#line 594
/* Random choice of forward or backward */
+#line 594
/* TODO
+#line 594
if ( roll(2) ) {
+#line 594
for (j = 0; j < var_rank[i]; j++) {
+#line 594
index[j] += (count[j] - 1) * stride[j];
+#line 594
stride[j] = -stride[j];
+#line 594
}
+#line 594
}
+#line 594
*/
+#line 594
allInExtRange = allInIntRange = 1;
+#line 594
for (j = 0; j < nels; j++) {
+#line 594
err = toMixedBase(j, var_rank[i], count, index2);
+#line 594
IF (err)
+#line 594
error("error in toMixedBase 1");
+#line 594
for (d = 0; d < var_rank[i]; d++)
+#line 594
index2[d] = index[d] + index2[d] * stride[d];
+#line 594
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 594
NCT_SHORT);
+#line 594
if (inRange3(expect[j],var_type[i],NCT_SHORT)) {
+#line 594
allInIntRange = allInIntRange && expect[j] >= short_min
+#line 594
&& expect[j] <= short_max;
+#line 594
} else {
+#line 594
allInExtRange = 0;
+#line 594
}
+#line 594
}
+#line 594
if (var_rank[i] == 0 && i%2 )
+#line 594
err = nc_get_vars_short(ncid, i, NULL, NULL, NULL, value);
+#line 594
else
+#line 594
err = nc_get_vars_short(ncid, i, index, count, stride, value);
+#line 594
if (canConvert) {
+#line 594
if (allInExtRange) {
+#line 594
if (allInIntRange) {
+#line 594
IF (err)
+#line 594
error("%s", nc_strerror(err));
+#line 594
} else {
+#line 594
IF (err != NC_ERANGE)
+#line 594
error("Range error: status = %d", err);
+#line 594
}
+#line 594
} else {
+#line 594
IF (err != 0 && err != NC_ERANGE)
+#line 594
error("OK or Range error: status = %d", err);
+#line 594
}
+#line 594
for (j = 0; j < nels; j++) {
+#line 594
if (inRange3(expect[j],var_type[i],NCT_SHORT)
+#line 594
&& expect[j] >= short_min && expect[j] <= short_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_SHORT)){
+#line 594
+ IF (!equal(value[j],expect[j],var_type[i], NCT_SHORT)){
+#line 594
error("value read not that expected");
+#line 594
if (verbose) {
+#line 594
error("\n");
+#line 594
error("varid: %d, ", i);
+#line 594
error("var_name: %s, ", var_name[i]);
+#line 594
error("element number: %d ", j);
+#line 594
error("expect: %g, ", expect[j]);
+#line 594
error("got: %g", (double) value[j]);
+#line 594
}
+#line 594
} else {
+#line 594
nok++;
+#line 594
}
+#line 594
}
+#line 594
}
+#line 594
} else {
+#line 594
IF (nels > 0 && err != NC_ECHAR)
+#line 594
error("wrong type: status = %d", err);
+#line 594
}
+#line 594
}
+#line 594
}
+#line 594
+#line 594
}
+#line 594
err = nc_close(ncid);
+#line 594
IF (err)
+#line 594
error("nc_close: %s", nc_strerror(err));
+#line 594
print_nok(nok);
+#line 594
}
+#line 594
void
+#line 595
test_nc_get_vars_int(void)
+#line 595
{
+#line 595
int ncid;
+#line 595
int d;
+#line 595
int i;
+#line 595
int j;
+#line 595
int k;
+#line 595
int m;
+#line 595
int err;
+#line 595
int allInExtRange; /* all values within external range? */
+#line 595
int allInIntRange; /* all values within internal range? */
+#line 595
int nels;
+#line 595
int nslabs;
+#line 595
int nstarts; /* number of different starts */
+#line 595
int nok = 0; /* count of valid comparisons */
+#line 595
size_t start[MAX_RANK];
+#line 595
size_t edge[MAX_RANK];
+#line 595
size_t index[MAX_RANK];
+#line 595
size_t index2[MAX_RANK];
+#line 595
size_t mid[MAX_RANK];
+#line 595
size_t count[MAX_RANK];
+#line 595
size_t sstride[MAX_RANK];
+#line 595
ptrdiff_t stride[MAX_RANK];
+#line 595
int canConvert; /* Both text or both numeric */
+#line 595
int value[MAX_NELS];
+#line 595
double expect[MAX_NELS];
+#line 595
+#line 595
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 595
IF (err)
+#line 595
error("nc_open: %s", nc_strerror(err));
+#line 595
for (i = 0; i < NVARS; i++) {
+#line 595
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 595
assert(var_rank[i] <= MAX_RANK);
+#line 595
assert(var_nels[i] <= MAX_NELS);
+#line 595
for (j = 0; j < var_rank[i]; j++) {
+#line 595
start[j] = 0;
+#line 595
edge[j] = 1;
+#line 595
stride[j] = 1;
+#line 595
}
+#line 595
err = nc_get_vars_int(BAD_ID, i, start, edge, stride, value);
+#line 595
IF (err != NC_EBADID)
+#line 595
error("bad ncid: status = %d", err);
+#line 595
err = nc_get_vars_int(ncid, BAD_VARID, start, edge, stride, value);
+#line 595
IF (err != NC_ENOTVAR)
+#line 595
error("bad var id: status = %d", err);
+#line 595
for (j = 0; j < var_rank[i]; j++) {
+#line 595
start[j] = var_shape[i][j];
+#line 595
err = nc_get_vars_int(ncid, i, start, edge, stride, value);
+#line 595
if(!canConvert) {
+#line 595
IF (err != NC_ECHAR)
+#line 595
error("conversion: status = %d", err);
+#line 595
} else {
+#line 595
IF (err != NC_EINVALCOORDS)
+#line 595
error("bad index: status = %d", err);
+#line 595
start[j] = 0;
+#line 595
edge[j] = var_shape[i][j] + 1;
+#line 595
err = nc_get_vars_int(ncid, i, start, edge, stride, value);
+#line 595
IF (err != NC_EEDGE)
+#line 595
error("bad edge: status = %d", err);
+#line 595
edge[j] = 1;
+#line 595
stride[j] = 0;
+#line 595
err = nc_get_vars_int(ncid, i, start, edge, stride, value);
+#line 595
IF (err != NC_ESTRIDE)
+#line 595
error("bad stride: status = %d", err);
+#line 595
stride[j] = 1;
+#line 595
}
+#line 595
}
+#line 595
/* Choose a random point dividing each dim into 2 parts */
+#line 595
/* get 2^rank (nslabs) slabs so defined */
+#line 595
nslabs = 1;
+#line 595
for (j = 0; j < var_rank[i]; j++) {
+#line 595
mid[j] = roll( var_shape[i][j] );
+#line 595
nslabs *= 2;
+#line 595
}
+#line 595
/* bits of k determine whether to get lower or upper part of dim */
+#line 595
/* choose random stride from 1 to edge */
+#line 595
for (k = 0; k < nslabs; k++) {
+#line 595
nstarts = 1;
+#line 595
for (j = 0; j < var_rank[i]; j++) {
+#line 595
if ((k >> j) & 1) {
+#line 595
start[j] = 0;
+#line 595
edge[j] = mid[j];
+#line 595
}else{
+#line 595
start[j] = mid[j];
+#line 595
edge[j] = var_shape[i][j] - mid[j];
+#line 595
}
+#line 595
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 595
nstarts *= stride[j];
+#line 595
}
+#line 595
for (m = 0; m < nstarts; m++) {
+#line 595
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 595
IF (err)
+#line 595
error("error in toMixedBase");
+#line 595
nels = 1;
+#line 595
for (j = 0; j < var_rank[i]; j++) {
+#line 595
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 595
nels *= count[j];
+#line 595
index[j] += start[j];
+#line 595
}
+#line 595
/* Random choice of forward or backward */
+#line 595
/* TODO
+#line 595
if ( roll(2) ) {
+#line 595
for (j = 0; j < var_rank[i]; j++) {
+#line 595
index[j] += (count[j] - 1) * stride[j];
+#line 595
stride[j] = -stride[j];
+#line 595
}
+#line 595
}
+#line 595
*/
+#line 595
allInExtRange = allInIntRange = 1;
+#line 595
for (j = 0; j < nels; j++) {
+#line 595
err = toMixedBase(j, var_rank[i], count, index2);
+#line 595
IF (err)
+#line 595
error("error in toMixedBase 1");
+#line 595
for (d = 0; d < var_rank[i]; d++)
+#line 595
index2[d] = index[d] + index2[d] * stride[d];
+#line 595
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 595
NCT_INT);
+#line 595
if (inRange3(expect[j],var_type[i],NCT_INT)) {
+#line 595
allInIntRange = allInIntRange && expect[j] >= int_min
+#line 595
&& expect[j] <= int_max;
+#line 595
} else {
+#line 595
allInExtRange = 0;
+#line 595
}
+#line 595
}
+#line 595
if (var_rank[i] == 0 && i%2 )
+#line 595
err = nc_get_vars_int(ncid, i, NULL, NULL, NULL, value);
+#line 595
else
+#line 595
err = nc_get_vars_int(ncid, i, index, count, stride, value);
+#line 595
if (canConvert) {
+#line 595
if (allInExtRange) {
+#line 595
if (allInIntRange) {
+#line 595
IF (err)
+#line 595
error("%s", nc_strerror(err));
+#line 595
} else {
+#line 595
IF (err != NC_ERANGE)
+#line 595
error("Range error: status = %d", err);
+#line 595
}
+#line 595
} else {
+#line 595
IF (err != 0 && err != NC_ERANGE)
+#line 595
error("OK or Range error: status = %d", err);
+#line 595
}
+#line 595
for (j = 0; j < nels; j++) {
+#line 595
if (inRange3(expect[j],var_type[i],NCT_INT)
+#line 595
&& expect[j] >= int_min && expect[j] <= int_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_INT)){
+#line 595
+ IF (!equal(value[j],expect[j],var_type[i], NCT_INT)){
+#line 595
error("value read not that expected");
+#line 595
if (verbose) {
+#line 595
error("\n");
+#line 595
error("varid: %d, ", i);
+#line 595
error("var_name: %s, ", var_name[i]);
+#line 595
error("element number: %d ", j);
+#line 595
error("expect: %g, ", expect[j]);
+#line 595
error("got: %g", (double) value[j]);
+#line 595
}
+#line 595
} else {
+#line 595
nok++;
+#line 595
}
+#line 595
}
+#line 595
}
+#line 595
} else {
+#line 595
IF (nels > 0 && err != NC_ECHAR)
+#line 595
error("wrong type: status = %d", err);
+#line 595
}
+#line 595
}
+#line 595
}
+#line 595
+#line 595
}
+#line 595
err = nc_close(ncid);
+#line 595
IF (err)
+#line 595
error("nc_close: %s", nc_strerror(err));
+#line 595
print_nok(nok);
+#line 595
}
+#line 595
void
+#line 596
test_nc_get_vars_long(void)
+#line 596
{
+#line 596
int ncid;
+#line 596
int d;
+#line 596
int i;
+#line 596
int j;
+#line 596
int k;
+#line 596
int m;
+#line 596
int err;
+#line 596
int allInExtRange; /* all values within external range? */
+#line 596
int allInIntRange; /* all values within internal range? */
+#line 596
int nels;
+#line 596
int nslabs;
+#line 596
int nstarts; /* number of different starts */
+#line 596
int nok = 0; /* count of valid comparisons */
+#line 596
size_t start[MAX_RANK];
+#line 596
size_t edge[MAX_RANK];
+#line 596
size_t index[MAX_RANK];
+#line 596
size_t index2[MAX_RANK];
+#line 596
size_t mid[MAX_RANK];
+#line 596
size_t count[MAX_RANK];
+#line 596
size_t sstride[MAX_RANK];
+#line 596
ptrdiff_t stride[MAX_RANK];
+#line 596
int canConvert; /* Both text or both numeric */
+#line 596
long value[MAX_NELS];
+#line 596
double expect[MAX_NELS];
+#line 596
+#line 596
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 596
IF (err)
+#line 596
error("nc_open: %s", nc_strerror(err));
+#line 596
for (i = 0; i < NVARS; i++) {
+#line 596
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 596
assert(var_rank[i] <= MAX_RANK);
+#line 596
assert(var_nels[i] <= MAX_NELS);
+#line 596
for (j = 0; j < var_rank[i]; j++) {
+#line 596
start[j] = 0;
+#line 596
edge[j] = 1;
+#line 596
stride[j] = 1;
+#line 596
}
+#line 596
err = nc_get_vars_long(BAD_ID, i, start, edge, stride, value);
+#line 596
IF (err != NC_EBADID)
+#line 596
error("bad ncid: status = %d", err);
+#line 596
err = nc_get_vars_long(ncid, BAD_VARID, start, edge, stride, value);
+#line 596
IF (err != NC_ENOTVAR)
+#line 596
error("bad var id: status = %d", err);
+#line 596
for (j = 0; j < var_rank[i]; j++) {
+#line 596
start[j] = var_shape[i][j];
+#line 596
err = nc_get_vars_long(ncid, i, start, edge, stride, value);
+#line 596
if(!canConvert) {
+#line 596
IF (err != NC_ECHAR)
+#line 596
error("conversion: status = %d", err);
+#line 596
} else {
+#line 596
IF (err != NC_EINVALCOORDS)
+#line 596
error("bad index: status = %d", err);
+#line 596
start[j] = 0;
+#line 596
edge[j] = var_shape[i][j] + 1;
+#line 596
err = nc_get_vars_long(ncid, i, start, edge, stride, value);
+#line 596
IF (err != NC_EEDGE)
+#line 596
error("bad edge: status = %d", err);
+#line 596
edge[j] = 1;
+#line 596
stride[j] = 0;
+#line 596
err = nc_get_vars_long(ncid, i, start, edge, stride, value);
+#line 596
IF (err != NC_ESTRIDE)
+#line 596
error("bad stride: status = %d", err);
+#line 596
stride[j] = 1;
+#line 596
}
+#line 596
}
+#line 596
/* Choose a random point dividing each dim into 2 parts */
+#line 596
/* get 2^rank (nslabs) slabs so defined */
+#line 596
nslabs = 1;
+#line 596
for (j = 0; j < var_rank[i]; j++) {
+#line 596
mid[j] = roll( var_shape[i][j] );
+#line 596
nslabs *= 2;
+#line 596
}
+#line 596
/* bits of k determine whether to get lower or upper part of dim */
+#line 596
/* choose random stride from 1 to edge */
+#line 596
for (k = 0; k < nslabs; k++) {
+#line 596
nstarts = 1;
+#line 596
for (j = 0; j < var_rank[i]; j++) {
+#line 596
if ((k >> j) & 1) {
+#line 596
start[j] = 0;
+#line 596
edge[j] = mid[j];
+#line 596
}else{
+#line 596
start[j] = mid[j];
+#line 596
edge[j] = var_shape[i][j] - mid[j];
+#line 596
}
+#line 596
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 596
nstarts *= stride[j];
+#line 596
}
+#line 596
for (m = 0; m < nstarts; m++) {
+#line 596
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 596
IF (err)
+#line 596
error("error in toMixedBase");
+#line 596
nels = 1;
+#line 596
for (j = 0; j < var_rank[i]; j++) {
+#line 596
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 596
nels *= count[j];
+#line 596
index[j] += start[j];
+#line 596
}
+#line 596
/* Random choice of forward or backward */
+#line 596
/* TODO
+#line 596
if ( roll(2) ) {
+#line 596
for (j = 0; j < var_rank[i]; j++) {
+#line 596
index[j] += (count[j] - 1) * stride[j];
+#line 596
stride[j] = -stride[j];
+#line 596
}
+#line 596
}
+#line 596
*/
+#line 596
allInExtRange = allInIntRange = 1;
+#line 596
for (j = 0; j < nels; j++) {
+#line 596
err = toMixedBase(j, var_rank[i], count, index2);
+#line 596
IF (err)
+#line 596
error("error in toMixedBase 1");
+#line 596
for (d = 0; d < var_rank[i]; d++)
+#line 596
index2[d] = index[d] + index2[d] * stride[d];
+#line 596
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 596
NCT_LONG);
+#line 596
if (inRange3(expect[j],var_type[i],NCT_LONG)) {
+#line 596
allInIntRange = allInIntRange && expect[j] >= long_min
+#line 596
&& expect[j] <= long_max;
+#line 596
} else {
+#line 596
allInExtRange = 0;
+#line 596
}
+#line 596
}
+#line 596
if (var_rank[i] == 0 && i%2 )
+#line 596
err = nc_get_vars_long(ncid, i, NULL, NULL, NULL, value);
+#line 596
else
+#line 596
err = nc_get_vars_long(ncid, i, index, count, stride, value);
+#line 596
if (canConvert) {
+#line 596
if (allInExtRange) {
+#line 596
if (allInIntRange) {
+#line 596
IF (err)
+#line 596
error("%s", nc_strerror(err));
+#line 596
} else {
+#line 596
IF (err != NC_ERANGE)
+#line 596
error("Range error: status = %d", err);
+#line 596
}
+#line 596
} else {
+#line 596
IF (err != 0 && err != NC_ERANGE)
+#line 596
error("OK or Range error: status = %d", err);
+#line 596
}
+#line 596
for (j = 0; j < nels; j++) {
+#line 596
if (inRange3(expect[j],var_type[i],NCT_LONG)
+#line 596
&& expect[j] >= long_min && expect[j] <= long_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_LONG)){
+#line 596
+ IF (!equal(value[j],expect[j],var_type[i], NCT_LONG)){
+#line 596
error("value read not that expected");
+#line 596
if (verbose) {
+#line 596
error("\n");
+#line 596
error("varid: %d, ", i);
+#line 596
error("var_name: %s, ", var_name[i]);
+#line 596
error("element number: %d ", j);
+#line 596
error("expect: %g, ", expect[j]);
+#line 596
error("got: %g", (double) value[j]);
+#line 596
}
+#line 596
} else {
+#line 596
nok++;
+#line 596
}
+#line 596
}
+#line 596
}
+#line 596
} else {
+#line 596
IF (nels > 0 && err != NC_ECHAR)
+#line 596
error("wrong type: status = %d", err);
+#line 596
}
+#line 596
}
+#line 596
}
+#line 596
+#line 596
}
+#line 596
err = nc_close(ncid);
+#line 596
IF (err)
+#line 596
error("nc_close: %s", nc_strerror(err));
+#line 596
print_nok(nok);
+#line 596
}
+#line 596
void
+#line 597
test_nc_get_vars_float(void)
+#line 597
{
+#line 597
int ncid;
+#line 597
int d;
+#line 597
int i;
+#line 597
int j;
+#line 597
int k;
+#line 597
int m;
+#line 597
int err;
+#line 597
int allInExtRange; /* all values within external range? */
+#line 597
int allInIntRange; /* all values within internal range? */
+#line 597
int nels;
+#line 597
int nslabs;
+#line 597
int nstarts; /* number of different starts */
+#line 597
int nok = 0; /* count of valid comparisons */
+#line 597
size_t start[MAX_RANK];
+#line 597
size_t edge[MAX_RANK];
+#line 597
size_t index[MAX_RANK];
+#line 597
size_t index2[MAX_RANK];
+#line 597
size_t mid[MAX_RANK];
+#line 597
size_t count[MAX_RANK];
+#line 597
size_t sstride[MAX_RANK];
+#line 597
ptrdiff_t stride[MAX_RANK];
+#line 597
int canConvert; /* Both text or both numeric */
+#line 597
float value[MAX_NELS];
+#line 597
double expect[MAX_NELS];
+#line 597
+#line 597
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 597
IF (err)
+#line 597
error("nc_open: %s", nc_strerror(err));
+#line 597
for (i = 0; i < NVARS; i++) {
+#line 597
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 597
assert(var_rank[i] <= MAX_RANK);
+#line 597
assert(var_nels[i] <= MAX_NELS);
+#line 597
for (j = 0; j < var_rank[i]; j++) {
+#line 597
start[j] = 0;
+#line 597
edge[j] = 1;
+#line 597
stride[j] = 1;
+#line 597
}
+#line 597
err = nc_get_vars_float(BAD_ID, i, start, edge, stride, value);
+#line 597
IF (err != NC_EBADID)
+#line 597
error("bad ncid: status = %d", err);
+#line 597
err = nc_get_vars_float(ncid, BAD_VARID, start, edge, stride, value);
+#line 597
IF (err != NC_ENOTVAR)
+#line 597
error("bad var id: status = %d", err);
+#line 597
for (j = 0; j < var_rank[i]; j++) {
+#line 597
start[j] = var_shape[i][j];
+#line 597
err = nc_get_vars_float(ncid, i, start, edge, stride, value);
+#line 597
if(!canConvert) {
+#line 597
IF (err != NC_ECHAR)
+#line 597
error("conversion: status = %d", err);
+#line 597
} else {
+#line 597
IF (err != NC_EINVALCOORDS)
+#line 597
error("bad index: status = %d", err);
+#line 597
start[j] = 0;
+#line 597
edge[j] = var_shape[i][j] + 1;
+#line 597
err = nc_get_vars_float(ncid, i, start, edge, stride, value);
+#line 597
IF (err != NC_EEDGE)
+#line 597
error("bad edge: status = %d", err);
+#line 597
edge[j] = 1;
+#line 597
stride[j] = 0;
+#line 597
err = nc_get_vars_float(ncid, i, start, edge, stride, value);
+#line 597
IF (err != NC_ESTRIDE)
+#line 597
error("bad stride: status = %d", err);
+#line 597
stride[j] = 1;
+#line 597
}
+#line 597
}
+#line 597
/* Choose a random point dividing each dim into 2 parts */
+#line 597
/* get 2^rank (nslabs) slabs so defined */
+#line 597
nslabs = 1;
+#line 597
for (j = 0; j < var_rank[i]; j++) {
+#line 597
mid[j] = roll( var_shape[i][j] );
+#line 597
nslabs *= 2;
+#line 597
}
+#line 597
/* bits of k determine whether to get lower or upper part of dim */
+#line 597
/* choose random stride from 1 to edge */
+#line 597
for (k = 0; k < nslabs; k++) {
+#line 597
nstarts = 1;
+#line 597
for (j = 0; j < var_rank[i]; j++) {
+#line 597
if ((k >> j) & 1) {
+#line 597
start[j] = 0;
+#line 597
edge[j] = mid[j];
+#line 597
}else{
+#line 597
start[j] = mid[j];
+#line 597
edge[j] = var_shape[i][j] - mid[j];
+#line 597
}
+#line 597
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 597
nstarts *= stride[j];
+#line 597
}
+#line 597
for (m = 0; m < nstarts; m++) {
+#line 597
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 597
IF (err)
+#line 597
error("error in toMixedBase");
+#line 597
nels = 1;
+#line 597
for (j = 0; j < var_rank[i]; j++) {
+#line 597
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 597
nels *= count[j];
+#line 597
index[j] += start[j];
+#line 597
}
+#line 597
/* Random choice of forward or backward */
+#line 597
/* TODO
+#line 597
if ( roll(2) ) {
+#line 597
for (j = 0; j < var_rank[i]; j++) {
+#line 597
index[j] += (count[j] - 1) * stride[j];
+#line 597
stride[j] = -stride[j];
+#line 597
}
+#line 597
}
+#line 597
*/
+#line 597
allInExtRange = allInIntRange = 1;
+#line 597
for (j = 0; j < nels; j++) {
+#line 597
err = toMixedBase(j, var_rank[i], count, index2);
+#line 597
IF (err)
+#line 597
error("error in toMixedBase 1");
+#line 597
for (d = 0; d < var_rank[i]; d++)
+#line 597
index2[d] = index[d] + index2[d] * stride[d];
+#line 597
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 597
NCT_FLOAT);
+#line 597
if (inRange3(expect[j],var_type[i],NCT_FLOAT)) {
+#line 597
allInIntRange = allInIntRange && expect[j] >= float_min
+#line 597
&& expect[j] <= float_max;
+#line 597
} else {
+#line 597
allInExtRange = 0;
+#line 597
}
+#line 597
}
+#line 597
if (var_rank[i] == 0 && i%2 )
+#line 597
err = nc_get_vars_float(ncid, i, NULL, NULL, NULL, value);
+#line 597
else
+#line 597
err = nc_get_vars_float(ncid, i, index, count, stride, value);
+#line 597
if (canConvert) {
+#line 597
if (allInExtRange) {
+#line 597
if (allInIntRange) {
+#line 597
IF (err)
+#line 597
error("%s", nc_strerror(err));
+#line 597
} else {
+#line 597
IF (err != NC_ERANGE)
+#line 597
error("Range error: status = %d", err);
+#line 597
}
+#line 597
} else {
+#line 597
IF (err != 0 && err != NC_ERANGE)
+#line 597
error("OK or Range error: status = %d", err);
+#line 597
}
+#line 597
for (j = 0; j < nels; j++) {
+#line 597
if (inRange3(expect[j],var_type[i],NCT_FLOAT)
+#line 597
&& expect[j] >= float_min && expect[j] <= float_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_FLOAT)){
+#line 597
+ IF (!equal(value[j],expect[j],var_type[i], NCT_FLOAT)){
+#line 597
error("value read not that expected");
+#line 597
if (verbose) {
+#line 597
error("\n");
+#line 597
error("varid: %d, ", i);
+#line 597
error("var_name: %s, ", var_name[i]);
+#line 597
error("element number: %d ", j);
+#line 597
error("expect: %g, ", expect[j]);
+#line 597
error("got: %g", (double) value[j]);
+#line 597
}
+#line 597
} else {
+#line 597
nok++;
+#line 597
}
+#line 597
}
+#line 597
}
+#line 597
} else {
+#line 597
IF (nels > 0 && err != NC_ECHAR)
+#line 597
error("wrong type: status = %d", err);
+#line 597
}
+#line 597
}
+#line 597
}
+#line 597
+#line 597
}
+#line 597
err = nc_close(ncid);
+#line 597
IF (err)
+#line 597
error("nc_close: %s", nc_strerror(err));
+#line 597
print_nok(nok);
+#line 597
}
+#line 597
void
+#line 598
test_nc_get_vars_double(void)
+#line 598
{
+#line 598
int ncid;
+#line 598
int d;
+#line 598
int i;
+#line 598
int j;
+#line 598
int k;
+#line 598
int m;
+#line 598
int err;
+#line 598
int allInExtRange; /* all values within external range? */
+#line 598
int allInIntRange; /* all values within internal range? */
+#line 598
int nels;
+#line 598
int nslabs;
+#line 598
int nstarts; /* number of different starts */
+#line 598
int nok = 0; /* count of valid comparisons */
+#line 598
size_t start[MAX_RANK];
+#line 598
size_t edge[MAX_RANK];
+#line 598
size_t index[MAX_RANK];
+#line 598
size_t index2[MAX_RANK];
+#line 598
size_t mid[MAX_RANK];
+#line 598
size_t count[MAX_RANK];
+#line 598
size_t sstride[MAX_RANK];
+#line 598
ptrdiff_t stride[MAX_RANK];
+#line 598
int canConvert; /* Both text or both numeric */
+#line 598
double value[MAX_NELS];
+#line 598
double expect[MAX_NELS];
+#line 598
+#line 598
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 598
IF (err)
+#line 598
error("nc_open: %s", nc_strerror(err));
+#line 598
for (i = 0; i < NVARS; i++) {
+#line 598
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 598
assert(var_rank[i] <= MAX_RANK);
+#line 598
assert(var_nels[i] <= MAX_NELS);
+#line 598
for (j = 0; j < var_rank[i]; j++) {
+#line 598
start[j] = 0;
+#line 598
edge[j] = 1;
+#line 598
stride[j] = 1;
+#line 598
}
+#line 598
err = nc_get_vars_double(BAD_ID, i, start, edge, stride, value);
+#line 598
IF (err != NC_EBADID)
+#line 598
error("bad ncid: status = %d", err);
+#line 598
err = nc_get_vars_double(ncid, BAD_VARID, start, edge, stride, value);
+#line 598
IF (err != NC_ENOTVAR)
+#line 598
error("bad var id: status = %d", err);
+#line 598
for (j = 0; j < var_rank[i]; j++) {
+#line 598
start[j] = var_shape[i][j];
+#line 598
err = nc_get_vars_double(ncid, i, start, edge, stride, value);
+#line 598
if(!canConvert) {
+#line 598
IF (err != NC_ECHAR)
+#line 598
error("conversion: status = %d", err);
+#line 598
} else {
+#line 598
IF (err != NC_EINVALCOORDS)
+#line 598
error("bad index: status = %d", err);
+#line 598
start[j] = 0;
+#line 598
edge[j] = var_shape[i][j] + 1;
+#line 598
err = nc_get_vars_double(ncid, i, start, edge, stride, value);
+#line 598
IF (err != NC_EEDGE)
+#line 598
error("bad edge: status = %d", err);
+#line 598
edge[j] = 1;
+#line 598
stride[j] = 0;
+#line 598
err = nc_get_vars_double(ncid, i, start, edge, stride, value);
+#line 598
IF (err != NC_ESTRIDE)
+#line 598
error("bad stride: status = %d", err);
+#line 598
stride[j] = 1;
+#line 598
}
+#line 598
}
+#line 598
/* Choose a random point dividing each dim into 2 parts */
+#line 598
/* get 2^rank (nslabs) slabs so defined */
+#line 598
nslabs = 1;
+#line 598
for (j = 0; j < var_rank[i]; j++) {
+#line 598
mid[j] = roll( var_shape[i][j] );
+#line 598
nslabs *= 2;
+#line 598
}
+#line 598
/* bits of k determine whether to get lower or upper part of dim */
+#line 598
/* choose random stride from 1 to edge */
+#line 598
for (k = 0; k < nslabs; k++) {
+#line 598
nstarts = 1;
+#line 598
for (j = 0; j < var_rank[i]; j++) {
+#line 598
if ((k >> j) & 1) {
+#line 598
start[j] = 0;
+#line 598
edge[j] = mid[j];
+#line 598
}else{
+#line 598
start[j] = mid[j];
+#line 598
edge[j] = var_shape[i][j] - mid[j];
+#line 598
}
+#line 598
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 598
nstarts *= stride[j];
+#line 598
}
+#line 598
for (m = 0; m < nstarts; m++) {
+#line 598
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 598
IF (err)
+#line 598
error("error in toMixedBase");
+#line 598
nels = 1;
+#line 598
for (j = 0; j < var_rank[i]; j++) {
+#line 598
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 598
nels *= count[j];
+#line 598
index[j] += start[j];
+#line 598
}
+#line 598
/* Random choice of forward or backward */
+#line 598
/* TODO
+#line 598
if ( roll(2) ) {
+#line 598
for (j = 0; j < var_rank[i]; j++) {
+#line 598
index[j] += (count[j] - 1) * stride[j];
+#line 598
stride[j] = -stride[j];
+#line 598
}
+#line 598
}
+#line 598
*/
+#line 598
allInExtRange = allInIntRange = 1;
+#line 598
for (j = 0; j < nels; j++) {
+#line 598
err = toMixedBase(j, var_rank[i], count, index2);
+#line 598
IF (err)
+#line 598
error("error in toMixedBase 1");
+#line 598
for (d = 0; d < var_rank[i]; d++)
+#line 598
index2[d] = index[d] + index2[d] * stride[d];
+#line 598
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 598
NCT_DOUBLE);
+#line 598
if (inRange3(expect[j],var_type[i],NCT_DOUBLE)) {
+#line 598
allInIntRange = allInIntRange && expect[j] >= double_min
+#line 598
&& expect[j] <= double_max;
+#line 598
} else {
+#line 598
allInExtRange = 0;
+#line 598
}
+#line 598
}
+#line 598
if (var_rank[i] == 0 && i%2 )
+#line 598
err = nc_get_vars_double(ncid, i, NULL, NULL, NULL, value);
+#line 598
else
+#line 598
err = nc_get_vars_double(ncid, i, index, count, stride, value);
+#line 598
if (canConvert) {
+#line 598
if (allInExtRange) {
+#line 598
if (allInIntRange) {
+#line 598
IF (err)
+#line 598
error("%s", nc_strerror(err));
+#line 598
} else {
+#line 598
IF (err != NC_ERANGE)
+#line 598
error("Range error: status = %d", err);
+#line 598
}
+#line 598
} else {
+#line 598
IF (err != 0 && err != NC_ERANGE)
+#line 598
error("OK or Range error: status = %d", err);
+#line 598
}
+#line 598
for (j = 0; j < nels; j++) {
+#line 598
if (inRange3(expect[j],var_type[i],NCT_DOUBLE)
+#line 598
&& expect[j] >= double_min && expect[j] <= double_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_DOUBLE)){
+#line 598
+ IF (!equal(value[j],expect[j],var_type[i], NCT_DOUBLE)){
+#line 598
error("value read not that expected");
+#line 598
if (verbose) {
+#line 598
error("\n");
+#line 598
error("varid: %d, ", i);
+#line 598
error("var_name: %s, ", var_name[i]);
+#line 598
error("element number: %d ", j);
+#line 598
error("expect: %g, ", expect[j]);
+#line 598
error("got: %g", (double) value[j]);
+#line 598
}
+#line 598
} else {
+#line 598
nok++;
+#line 598
}
+#line 598
}
+#line 598
}
+#line 598
} else {
+#line 598
IF (nels > 0 && err != NC_ECHAR)
+#line 598
error("wrong type: status = %d", err);
+#line 598
}
+#line 598
}
+#line 598
}
+#line 598
+#line 598
}
+#line 598
err = nc_close(ncid);
+#line 598
IF (err)
+#line 598
error("nc_close: %s", nc_strerror(err));
+#line 598
print_nok(nok);
+#line 598
}
+#line 598
+#line 787
void
+#line 788
test_nc_get_varm_text(void)
+#line 788
{
+#line 788
int ncid;
+#line 788
int d;
+#line 788
int i;
+#line 788
int j;
+#line 788
int k;
+#line 788
int m;
+#line 788
int err;
+#line 788
int allInExtRange; /* all values within external range? */
+#line 788
int allInIntRange; /* all values within internal range? */
+#line 788
int nels;
+#line 788
int nslabs;
+#line 788
int nstarts; /* number of different starts */
+#line 788
int nok = 0; /* count of valid comparisons */
+#line 788
size_t start[MAX_RANK];
+#line 788
size_t edge[MAX_RANK];
+#line 788
size_t index[MAX_RANK];
+#line 788
size_t index2[MAX_RANK];
+#line 788
size_t mid[MAX_RANK];
+#line 788
size_t count[MAX_RANK];
+#line 788
size_t sstride[MAX_RANK];
+#line 788
ptrdiff_t stride[MAX_RANK];
+#line 788
ptrdiff_t imap[MAX_RANK];
+#line 788
int canConvert; /* Both text or both numeric */
+#line 788
text value[MAX_NELS];
+#line 788
double expect[MAX_NELS];
+#line 788
+#line 788
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 788
IF (err)
+#line 788
error("nc_open: %s", nc_strerror(err));
+#line 788
for (i = 0; i < NVARS; i++) {
+#line 788
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 788
assert(var_rank[i] <= MAX_RANK);
+#line 788
assert(var_nels[i] <= MAX_NELS);
+#line 788
for (j = 0; j < var_rank[i]; j++) {
+#line 788
start[j] = 0;
+#line 788
edge[j] = 1;
+#line 788
stride[j] = 1;
+#line 788
imap[j] = 1;
+#line 788
}
+#line 788
err = nc_get_varm_text(BAD_ID, i, start, edge, stride, imap, value);
+#line 788
IF (err != NC_EBADID)
+#line 788
error("bad ncid: status = %d", err);
+#line 788
err = nc_get_varm_text(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 788
IF (err != NC_ENOTVAR)
+#line 788
error("bad var id: status = %d", err);
+#line 788
for (j = 0; j < var_rank[i]; j++) {
+#line 788
start[j] = var_shape[i][j];
+#line 788
err = nc_get_varm_text(ncid, i, start, edge, stride, imap, value);
+#line 788
if(!canConvert) {
+#line 788
IF (err != NC_ECHAR)
+#line 788
error("conversion: status = %d", err);
+#line 788
} else {
+#line 788
IF (err != NC_EINVALCOORDS)
+#line 788
error("bad index: status = %d", err);
+#line 788
start[j] = 0;
+#line 788
edge[j] = var_shape[i][j] + 1;
+#line 788
err = nc_get_varm_text(ncid, i, start, edge, stride, imap, value);
+#line 788
IF (err != NC_EEDGE)
+#line 788
error("bad edge: status = %d", err);
+#line 788
edge[j] = 1;
+#line 788
stride[j] = 0;
+#line 788
err = nc_get_varm_text(ncid, i, start, edge, stride, imap, value);
+#line 788
IF (err != NC_ESTRIDE)
+#line 788
error("bad stride: status = %d", err);
+#line 788
stride[j] = 1;
+#line 788
}
+#line 788
}
+#line 788
/* Choose a random point dividing each dim into 2 parts */
+#line 788
/* get 2^rank (nslabs) slabs so defined */
+#line 788
nslabs = 1;
+#line 788
for (j = 0; j < var_rank[i]; j++) {
+#line 788
mid[j] = roll( var_shape[i][j] );
+#line 788
nslabs *= 2;
+#line 788
}
+#line 788
/* bits of k determine whether to get lower or upper part of dim */
+#line 788
/* choose random stride from 1 to edge */
+#line 788
for (k = 0; k < nslabs; k++) {
+#line 788
nstarts = 1;
+#line 788
for (j = 0; j < var_rank[i]; j++) {
+#line 788
if ((k >> j) & 1) {
+#line 788
start[j] = 0;
+#line 788
edge[j] = mid[j];
+#line 788
}else{
+#line 788
start[j] = mid[j];
+#line 788
edge[j] = var_shape[i][j] - mid[j];
+#line 788
}
+#line 788
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 788
nstarts *= stride[j];
+#line 788
}
+#line 788
for (m = 0; m < nstarts; m++) {
+#line 788
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 788
IF (err)
+#line 788
error("error in toMixedBase");
+#line 788
nels = 1;
+#line 788
for (j = 0; j < var_rank[i]; j++) {
+#line 788
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 788
nels *= count[j];
+#line 788
index[j] += start[j];
+#line 788
}
+#line 788
/* Random choice of forward or backward */
+#line 788
/* TODO
+#line 788
if ( roll(2) ) {
+#line 788
for (j = 0; j < var_rank[i]; j++) {
+#line 788
index[j] += (count[j] - 1) * stride[j];
+#line 788
stride[j] = -stride[j];
+#line 788
}
+#line 788
}
+#line 788
*/
+#line 788
if (var_rank[i] > 0) {
+#line 788
j = var_rank[i] - 1;
+#line 788
imap[j] = 1;
+#line 788
for (; j > 0; j--)
+#line 788
imap[j-1] = imap[j] * count[j];
+#line 788
}
+#line 788
allInExtRange = allInIntRange = 1;
+#line 788
for (j = 0; j < nels; j++) {
+#line 788
err = toMixedBase(j, var_rank[i], count, index2);
+#line 788
IF (err)
+#line 788
error("error in toMixedBase 1");
+#line 788
for (d = 0; d < var_rank[i]; d++)
+#line 788
index2[d] = index[d] + index2[d] * stride[d];
+#line 788
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 788
NCT_TEXT);
+#line 788
if (inRange3(expect[j],var_type[i],NCT_TEXT)) {
+#line 788
allInIntRange = allInIntRange && expect[j] >= text_min
+#line 788
&& expect[j] <= text_max;
+#line 788
} else {
+#line 788
allInExtRange = 0;
+#line 788
}
+#line 788
}
+#line 788
if (var_rank[i] == 0 && i%2 )
+#line 788
err = nc_get_varm_text(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 788
else
+#line 788
err = nc_get_varm_text(ncid,i,index,count,stride,imap,value);
+#line 788
if (canConvert) {
+#line 788
if (allInExtRange) {
+#line 788
if (allInIntRange) {
+#line 788
IF (err)
+#line 788
error("%s", nc_strerror(err));
+#line 788
} else {
+#line 788
IF (err != NC_ERANGE)
+#line 788
error("Range error: status = %d", err);
+#line 788
}
+#line 788
} else {
+#line 788
IF (err != 0 && err != NC_ERANGE)
+#line 788
error("OK or Range error: status = %d", err);
+#line 788
}
+#line 788
for (j = 0; j < nels; j++) {
+#line 788
if (inRange3(expect[j],var_type[i],NCT_TEXT)
+#line 788
&& expect[j] >= text_min
+#line 788
&& expect[j] <= text_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_TEXT)){
+#line 788
+ IF (!equal(value[j],expect[j],var_type[i], NCT_TEXT)){
+#line 788
error("value read not that expected");
+#line 788
if (verbose) {
+#line 788
error("\n");
+#line 788
error("varid: %d, ", i);
+#line 788
error("var_name: %s, ", var_name[i]);
+#line 788
error("element number: %d ", j);
+#line 788
error("expect: %g, ", expect[j]);
+#line 788
error("got: %g", (double) value[j]);
+#line 788
}
+#line 788
} else {
+#line 788
nok++;
+#line 788
}
+#line 788
}
+#line 788
}
+#line 788
} else {
+#line 788
IF (nels > 0 && err != NC_ECHAR)
+#line 788
error("wrong type: status = %d", err);
+#line 788
}
+#line 788
}
+#line 788
}
+#line 788
}
+#line 788
err = nc_close(ncid);
+#line 788
IF (err)
+#line 788
error("nc_close: %s", nc_strerror(err));
+#line 788
print_nok(nok);
+#line 788
}
+#line 788
void
+#line 789
test_nc_get_varm_uchar(void)
+#line 789
{
+#line 789
int ncid;
+#line 789
int d;
+#line 789
int i;
+#line 789
int j;
+#line 789
int k;
+#line 789
int m;
+#line 789
int err;
+#line 789
int allInExtRange; /* all values within external range? */
+#line 789
int allInIntRange; /* all values within internal range? */
+#line 789
int nels;
+#line 789
int nslabs;
+#line 789
int nstarts; /* number of different starts */
+#line 789
int nok = 0; /* count of valid comparisons */
+#line 789
size_t start[MAX_RANK];
+#line 789
size_t edge[MAX_RANK];
+#line 789
size_t index[MAX_RANK];
+#line 789
size_t index2[MAX_RANK];
+#line 789
size_t mid[MAX_RANK];
+#line 789
size_t count[MAX_RANK];
+#line 789
size_t sstride[MAX_RANK];
+#line 789
ptrdiff_t stride[MAX_RANK];
+#line 789
ptrdiff_t imap[MAX_RANK];
+#line 789
int canConvert; /* Both text or both numeric */
+#line 789
uchar value[MAX_NELS];
+#line 789
double expect[MAX_NELS];
+#line 789
+#line 789
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 789
IF (err)
+#line 789
error("nc_open: %s", nc_strerror(err));
+#line 789
for (i = 0; i < NVARS; i++) {
+#line 789
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 789
assert(var_rank[i] <= MAX_RANK);
+#line 789
assert(var_nels[i] <= MAX_NELS);
+#line 789
for (j = 0; j < var_rank[i]; j++) {
+#line 789
start[j] = 0;
+#line 789
edge[j] = 1;
+#line 789
stride[j] = 1;
+#line 789
imap[j] = 1;
+#line 789
}
+#line 789
err = nc_get_varm_uchar(BAD_ID, i, start, edge, stride, imap, value);
+#line 789
IF (err != NC_EBADID)
+#line 789
error("bad ncid: status = %d", err);
+#line 789
err = nc_get_varm_uchar(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 789
IF (err != NC_ENOTVAR)
+#line 789
error("bad var id: status = %d", err);
+#line 789
for (j = 0; j < var_rank[i]; j++) {
+#line 789
start[j] = var_shape[i][j];
+#line 789
err = nc_get_varm_uchar(ncid, i, start, edge, stride, imap, value);
+#line 789
if(!canConvert) {
+#line 789
IF (err != NC_ECHAR)
+#line 789
error("conversion: status = %d", err);
+#line 789
} else {
+#line 789
IF (err != NC_EINVALCOORDS)
+#line 789
error("bad index: status = %d", err);
+#line 789
start[j] = 0;
+#line 789
edge[j] = var_shape[i][j] + 1;
+#line 789
err = nc_get_varm_uchar(ncid, i, start, edge, stride, imap, value);
+#line 789
IF (err != NC_EEDGE)
+#line 789
error("bad edge: status = %d", err);
+#line 789
edge[j] = 1;
+#line 789
stride[j] = 0;
+#line 789
err = nc_get_varm_uchar(ncid, i, start, edge, stride, imap, value);
+#line 789
IF (err != NC_ESTRIDE)
+#line 789
error("bad stride: status = %d", err);
+#line 789
stride[j] = 1;
+#line 789
}
+#line 789
}
+#line 789
/* Choose a random point dividing each dim into 2 parts */
+#line 789
/* get 2^rank (nslabs) slabs so defined */
+#line 789
nslabs = 1;
+#line 789
for (j = 0; j < var_rank[i]; j++) {
+#line 789
mid[j] = roll( var_shape[i][j] );
+#line 789
nslabs *= 2;
+#line 789
}
+#line 789
/* bits of k determine whether to get lower or upper part of dim */
+#line 789
/* choose random stride from 1 to edge */
+#line 789
for (k = 0; k < nslabs; k++) {
+#line 789
nstarts = 1;
+#line 789
for (j = 0; j < var_rank[i]; j++) {
+#line 789
if ((k >> j) & 1) {
+#line 789
start[j] = 0;
+#line 789
edge[j] = mid[j];
+#line 789
}else{
+#line 789
start[j] = mid[j];
+#line 789
edge[j] = var_shape[i][j] - mid[j];
+#line 789
}
+#line 789
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 789
nstarts *= stride[j];
+#line 789
}
+#line 789
for (m = 0; m < nstarts; m++) {
+#line 789
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 789
IF (err)
+#line 789
error("error in toMixedBase");
+#line 789
nels = 1;
+#line 789
for (j = 0; j < var_rank[i]; j++) {
+#line 789
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 789
nels *= count[j];
+#line 789
index[j] += start[j];
+#line 789
}
+#line 789
/* Random choice of forward or backward */
+#line 789
/* TODO
+#line 789
if ( roll(2) ) {
+#line 789
for (j = 0; j < var_rank[i]; j++) {
+#line 789
index[j] += (count[j] - 1) * stride[j];
+#line 789
stride[j] = -stride[j];
+#line 789
}
+#line 789
}
+#line 789
*/
+#line 789
if (var_rank[i] > 0) {
+#line 789
j = var_rank[i] - 1;
+#line 789
imap[j] = 1;
+#line 789
for (; j > 0; j--)
+#line 789
imap[j-1] = imap[j] * count[j];
+#line 789
}
+#line 789
allInExtRange = allInIntRange = 1;
+#line 789
for (j = 0; j < nels; j++) {
+#line 789
err = toMixedBase(j, var_rank[i], count, index2);
+#line 789
IF (err)
+#line 789
error("error in toMixedBase 1");
+#line 789
for (d = 0; d < var_rank[i]; d++)
+#line 789
index2[d] = index[d] + index2[d] * stride[d];
+#line 789
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 789
NCT_UCHAR);
+#line 789
if (inRange3(expect[j],var_type[i],NCT_UCHAR)) {
+#line 789
allInIntRange = allInIntRange && expect[j] >= uchar_min
+#line 789
&& expect[j] <= uchar_max;
+#line 789
} else {
+#line 789
allInExtRange = 0;
+#line 789
}
+#line 789
}
+#line 789
if (var_rank[i] == 0 && i%2 )
+#line 789
err = nc_get_varm_uchar(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 789
else
+#line 789
err = nc_get_varm_uchar(ncid,i,index,count,stride,imap,value);
+#line 789
if (canConvert) {
+#line 789
if (allInExtRange) {
+#line 789
if (allInIntRange) {
+#line 789
IF (err)
+#line 789
error("%s", nc_strerror(err));
+#line 789
} else {
+#line 789
IF (err != NC_ERANGE)
+#line 789
error("Range error: status = %d", err);
+#line 789
}
+#line 789
} else {
+#line 789
IF (err != 0 && err != NC_ERANGE)
+#line 789
error("OK or Range error: status = %d", err);
+#line 789
}
+#line 789
for (j = 0; j < nels; j++) {
+#line 789
if (inRange3(expect[j],var_type[i],NCT_UCHAR)
+#line 789
&& expect[j] >= uchar_min
+#line 789
&& expect[j] <= uchar_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_UCHAR)){
+#line 789
+ IF (!equal(value[j],expect[j],var_type[i], NCT_UCHAR)){
+#line 789
error("value read not that expected");
+#line 789
if (verbose) {
+#line 789
error("\n");
+#line 789
error("varid: %d, ", i);
+#line 789
error("var_name: %s, ", var_name[i]);
+#line 789
error("element number: %d ", j);
+#line 789
error("expect: %g, ", expect[j]);
+#line 789
error("got: %g", (double) value[j]);
+#line 789
}
+#line 789
} else {
+#line 789
nok++;
+#line 789
}
+#line 789
}
+#line 789
}
+#line 789
} else {
+#line 789
IF (nels > 0 && err != NC_ECHAR)
+#line 789
error("wrong type: status = %d", err);
+#line 789
}
+#line 789
}
+#line 789
}
+#line 789
}
+#line 789
err = nc_close(ncid);
+#line 789
IF (err)
+#line 789
error("nc_close: %s", nc_strerror(err));
+#line 789
print_nok(nok);
+#line 789
}
+#line 789
void
+#line 790
test_nc_get_varm_schar(void)
+#line 790
{
+#line 790
int ncid;
+#line 790
int d;
+#line 790
int i;
+#line 790
int j;
+#line 790
int k;
+#line 790
int m;
+#line 790
int err;
+#line 790
int allInExtRange; /* all values within external range? */
+#line 790
int allInIntRange; /* all values within internal range? */
+#line 790
int nels;
+#line 790
int nslabs;
+#line 790
int nstarts; /* number of different starts */
+#line 790
int nok = 0; /* count of valid comparisons */
+#line 790
size_t start[MAX_RANK];
+#line 790
size_t edge[MAX_RANK];
+#line 790
size_t index[MAX_RANK];
+#line 790
size_t index2[MAX_RANK];
+#line 790
size_t mid[MAX_RANK];
+#line 790
size_t count[MAX_RANK];
+#line 790
size_t sstride[MAX_RANK];
+#line 790
ptrdiff_t stride[MAX_RANK];
+#line 790
ptrdiff_t imap[MAX_RANK];
+#line 790
int canConvert; /* Both text or both numeric */
+#line 790
schar value[MAX_NELS];
+#line 790
double expect[MAX_NELS];
+#line 790
+#line 790
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 790
IF (err)
+#line 790
error("nc_open: %s", nc_strerror(err));
+#line 790
for (i = 0; i < NVARS; i++) {
+#line 790
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 790
assert(var_rank[i] <= MAX_RANK);
+#line 790
assert(var_nels[i] <= MAX_NELS);
+#line 790
for (j = 0; j < var_rank[i]; j++) {
+#line 790
start[j] = 0;
+#line 790
edge[j] = 1;
+#line 790
stride[j] = 1;
+#line 790
imap[j] = 1;
+#line 790
}
+#line 790
err = nc_get_varm_schar(BAD_ID, i, start, edge, stride, imap, value);
+#line 790
IF (err != NC_EBADID)
+#line 790
error("bad ncid: status = %d", err);
+#line 790
err = nc_get_varm_schar(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 790
IF (err != NC_ENOTVAR)
+#line 790
error("bad var id: status = %d", err);
+#line 790
for (j = 0; j < var_rank[i]; j++) {
+#line 790
start[j] = var_shape[i][j];
+#line 790
err = nc_get_varm_schar(ncid, i, start, edge, stride, imap, value);
+#line 790
if(!canConvert) {
+#line 790
IF (err != NC_ECHAR)
+#line 790
error("conversion: status = %d", err);
+#line 790
} else {
+#line 790
IF (err != NC_EINVALCOORDS)
+#line 790
error("bad index: status = %d", err);
+#line 790
start[j] = 0;
+#line 790
edge[j] = var_shape[i][j] + 1;
+#line 790
err = nc_get_varm_schar(ncid, i, start, edge, stride, imap, value);
+#line 790
IF (err != NC_EEDGE)
+#line 790
error("bad edge: status = %d", err);
+#line 790
edge[j] = 1;
+#line 790
stride[j] = 0;
+#line 790
err = nc_get_varm_schar(ncid, i, start, edge, stride, imap, value);
+#line 790
IF (err != NC_ESTRIDE)
+#line 790
error("bad stride: status = %d", err);
+#line 790
stride[j] = 1;
+#line 790
}
+#line 790
}
+#line 790
/* Choose a random point dividing each dim into 2 parts */
+#line 790
/* get 2^rank (nslabs) slabs so defined */
+#line 790
nslabs = 1;
+#line 790
for (j = 0; j < var_rank[i]; j++) {
+#line 790
mid[j] = roll( var_shape[i][j] );
+#line 790
nslabs *= 2;
+#line 790
}
+#line 790
/* bits of k determine whether to get lower or upper part of dim */
+#line 790
/* choose random stride from 1 to edge */
+#line 790
for (k = 0; k < nslabs; k++) {
+#line 790
nstarts = 1;
+#line 790
for (j = 0; j < var_rank[i]; j++) {
+#line 790
if ((k >> j) & 1) {
+#line 790
start[j] = 0;
+#line 790
edge[j] = mid[j];
+#line 790
}else{
+#line 790
start[j] = mid[j];
+#line 790
edge[j] = var_shape[i][j] - mid[j];
+#line 790
}
+#line 790
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 790
nstarts *= stride[j];
+#line 790
}
+#line 790
for (m = 0; m < nstarts; m++) {
+#line 790
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 790
IF (err)
+#line 790
error("error in toMixedBase");
+#line 790
nels = 1;
+#line 790
for (j = 0; j < var_rank[i]; j++) {
+#line 790
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 790
nels *= count[j];
+#line 790
index[j] += start[j];
+#line 790
}
+#line 790
/* Random choice of forward or backward */
+#line 790
/* TODO
+#line 790
if ( roll(2) ) {
+#line 790
for (j = 0; j < var_rank[i]; j++) {
+#line 790
index[j] += (count[j] - 1) * stride[j];
+#line 790
stride[j] = -stride[j];
+#line 790
}
+#line 790
}
+#line 790
*/
+#line 790
if (var_rank[i] > 0) {
+#line 790
j = var_rank[i] - 1;
+#line 790
imap[j] = 1;
+#line 790
for (; j > 0; j--)
+#line 790
imap[j-1] = imap[j] * count[j];
+#line 790
}
+#line 790
allInExtRange = allInIntRange = 1;
+#line 790
for (j = 0; j < nels; j++) {
+#line 790
err = toMixedBase(j, var_rank[i], count, index2);
+#line 790
IF (err)
+#line 790
error("error in toMixedBase 1");
+#line 790
for (d = 0; d < var_rank[i]; d++)
+#line 790
index2[d] = index[d] + index2[d] * stride[d];
+#line 790
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 790
NCT_SCHAR);
+#line 790
if (inRange3(expect[j],var_type[i],NCT_SCHAR)) {
+#line 790
allInIntRange = allInIntRange && expect[j] >= schar_min
+#line 790
&& expect[j] <= schar_max;
+#line 790
} else {
+#line 790
allInExtRange = 0;
+#line 790
}
+#line 790
}
+#line 790
if (var_rank[i] == 0 && i%2 )
+#line 790
err = nc_get_varm_schar(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 790
else
+#line 790
err = nc_get_varm_schar(ncid,i,index,count,stride,imap,value);
+#line 790
if (canConvert) {
+#line 790
if (allInExtRange) {
+#line 790
if (allInIntRange) {
+#line 790
IF (err)
+#line 790
error("%s", nc_strerror(err));
+#line 790
} else {
+#line 790
IF (err != NC_ERANGE)
+#line 790
error("Range error: status = %d", err);
+#line 790
}
+#line 790
} else {
+#line 790
IF (err != 0 && err != NC_ERANGE)
+#line 790
error("OK or Range error: status = %d", err);
+#line 790
}
+#line 790
for (j = 0; j < nels; j++) {
+#line 790
if (inRange3(expect[j],var_type[i],NCT_SCHAR)
+#line 790
&& expect[j] >= schar_min
+#line 790
&& expect[j] <= schar_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_SCHAR)){
+#line 790
+ IF (!equal(value[j],expect[j],var_type[i], NCT_SCHAR)){
+#line 790
error("value read not that expected");
+#line 790
if (verbose) {
+#line 790
error("\n");
+#line 790
error("varid: %d, ", i);
+#line 790
error("var_name: %s, ", var_name[i]);
+#line 790
error("element number: %d ", j);
+#line 790
error("expect: %g, ", expect[j]);
+#line 790
error("got: %g", (double) value[j]);
+#line 790
}
+#line 790
} else {
+#line 790
nok++;
+#line 790
}
+#line 790
}
+#line 790
}
+#line 790
} else {
+#line 790
IF (nels > 0 && err != NC_ECHAR)
+#line 790
error("wrong type: status = %d", err);
+#line 790
}
+#line 790
}
+#line 790
}
+#line 790
}
+#line 790
err = nc_close(ncid);
+#line 790
IF (err)
+#line 790
error("nc_close: %s", nc_strerror(err));
+#line 790
print_nok(nok);
+#line 790
}
+#line 790
void
+#line 791
test_nc_get_varm_short(void)
+#line 791
{
+#line 791
int ncid;
+#line 791
int d;
+#line 791
int i;
+#line 791
int j;
+#line 791
int k;
+#line 791
int m;
+#line 791
int err;
+#line 791
int allInExtRange; /* all values within external range? */
+#line 791
int allInIntRange; /* all values within internal range? */
+#line 791
int nels;
+#line 791
int nslabs;
+#line 791
int nstarts; /* number of different starts */
+#line 791
int nok = 0; /* count of valid comparisons */
+#line 791
size_t start[MAX_RANK];
+#line 791
size_t edge[MAX_RANK];
+#line 791
size_t index[MAX_RANK];
+#line 791
size_t index2[MAX_RANK];
+#line 791
size_t mid[MAX_RANK];
+#line 791
size_t count[MAX_RANK];
+#line 791
size_t sstride[MAX_RANK];
+#line 791
ptrdiff_t stride[MAX_RANK];
+#line 791
ptrdiff_t imap[MAX_RANK];
+#line 791
int canConvert; /* Both text or both numeric */
+#line 791
short value[MAX_NELS];
+#line 791
double expect[MAX_NELS];
+#line 791
+#line 791
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 791
IF (err)
+#line 791
error("nc_open: %s", nc_strerror(err));
+#line 791
for (i = 0; i < NVARS; i++) {
+#line 791
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 791
assert(var_rank[i] <= MAX_RANK);
+#line 791
assert(var_nels[i] <= MAX_NELS);
+#line 791
for (j = 0; j < var_rank[i]; j++) {
+#line 791
start[j] = 0;
+#line 791
edge[j] = 1;
+#line 791
stride[j] = 1;
+#line 791
imap[j] = 1;
+#line 791
}
+#line 791
err = nc_get_varm_short(BAD_ID, i, start, edge, stride, imap, value);
+#line 791
IF (err != NC_EBADID)
+#line 791
error("bad ncid: status = %d", err);
+#line 791
err = nc_get_varm_short(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 791
IF (err != NC_ENOTVAR)
+#line 791
error("bad var id: status = %d", err);
+#line 791
for (j = 0; j < var_rank[i]; j++) {
+#line 791
start[j] = var_shape[i][j];
+#line 791
err = nc_get_varm_short(ncid, i, start, edge, stride, imap, value);
+#line 791
if(!canConvert) {
+#line 791
IF (err != NC_ECHAR)
+#line 791
error("conversion: status = %d", err);
+#line 791
} else {
+#line 791
IF (err != NC_EINVALCOORDS)
+#line 791
error("bad index: status = %d", err);
+#line 791
start[j] = 0;
+#line 791
edge[j] = var_shape[i][j] + 1;
+#line 791
err = nc_get_varm_short(ncid, i, start, edge, stride, imap, value);
+#line 791
IF (err != NC_EEDGE)
+#line 791
error("bad edge: status = %d", err);
+#line 791
edge[j] = 1;
+#line 791
stride[j] = 0;
+#line 791
err = nc_get_varm_short(ncid, i, start, edge, stride, imap, value);
+#line 791
IF (err != NC_ESTRIDE)
+#line 791
error("bad stride: status = %d", err);
+#line 791
stride[j] = 1;
+#line 791
}
+#line 791
}
+#line 791
/* Choose a random point dividing each dim into 2 parts */
+#line 791
/* get 2^rank (nslabs) slabs so defined */
+#line 791
nslabs = 1;
+#line 791
for (j = 0; j < var_rank[i]; j++) {
+#line 791
mid[j] = roll( var_shape[i][j] );
+#line 791
nslabs *= 2;
+#line 791
}
+#line 791
/* bits of k determine whether to get lower or upper part of dim */
+#line 791
/* choose random stride from 1 to edge */
+#line 791
for (k = 0; k < nslabs; k++) {
+#line 791
nstarts = 1;
+#line 791
for (j = 0; j < var_rank[i]; j++) {
+#line 791
if ((k >> j) & 1) {
+#line 791
start[j] = 0;
+#line 791
edge[j] = mid[j];
+#line 791
}else{
+#line 791
start[j] = mid[j];
+#line 791
edge[j] = var_shape[i][j] - mid[j];
+#line 791
}
+#line 791
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 791
nstarts *= stride[j];
+#line 791
}
+#line 791
for (m = 0; m < nstarts; m++) {
+#line 791
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 791
IF (err)
+#line 791
error("error in toMixedBase");
+#line 791
nels = 1;
+#line 791
for (j = 0; j < var_rank[i]; j++) {
+#line 791
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 791
nels *= count[j];
+#line 791
index[j] += start[j];
+#line 791
}
+#line 791
/* Random choice of forward or backward */
+#line 791
/* TODO
+#line 791
if ( roll(2) ) {
+#line 791
for (j = 0; j < var_rank[i]; j++) {
+#line 791
index[j] += (count[j] - 1) * stride[j];
+#line 791
stride[j] = -stride[j];
+#line 791
}
+#line 791
}
+#line 791
*/
+#line 791
if (var_rank[i] > 0) {
+#line 791
j = var_rank[i] - 1;
+#line 791
imap[j] = 1;
+#line 791
for (; j > 0; j--)
+#line 791
imap[j-1] = imap[j] * count[j];
+#line 791
}
+#line 791
allInExtRange = allInIntRange = 1;
+#line 791
for (j = 0; j < nels; j++) {
+#line 791
err = toMixedBase(j, var_rank[i], count, index2);
+#line 791
IF (err)
+#line 791
error("error in toMixedBase 1");
+#line 791
for (d = 0; d < var_rank[i]; d++)
+#line 791
index2[d] = index[d] + index2[d] * stride[d];
+#line 791
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 791
NCT_SHORT);
+#line 791
if (inRange3(expect[j],var_type[i],NCT_SHORT)) {
+#line 791
allInIntRange = allInIntRange && expect[j] >= short_min
+#line 791
&& expect[j] <= short_max;
+#line 791
} else {
+#line 791
allInExtRange = 0;
+#line 791
}
+#line 791
}
+#line 791
if (var_rank[i] == 0 && i%2 )
+#line 791
err = nc_get_varm_short(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 791
else
+#line 791
err = nc_get_varm_short(ncid,i,index,count,stride,imap,value);
+#line 791
if (canConvert) {
+#line 791
if (allInExtRange) {
+#line 791
if (allInIntRange) {
+#line 791
IF (err)
+#line 791
error("%s", nc_strerror(err));
+#line 791
} else {
+#line 791
IF (err != NC_ERANGE)
+#line 791
error("Range error: status = %d", err);
+#line 791
}
+#line 791
} else {
+#line 791
IF (err != 0 && err != NC_ERANGE)
+#line 791
error("OK or Range error: status = %d", err);
+#line 791
}
+#line 791
for (j = 0; j < nels; j++) {
+#line 791
if (inRange3(expect[j],var_type[i],NCT_SHORT)
+#line 791
&& expect[j] >= short_min
+#line 791
&& expect[j] <= short_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_SHORT)){
+#line 791
+ IF (!equal(value[j],expect[j],var_type[i], NCT_SHORT)){
+#line 791
error("value read not that expected");
+#line 791
if (verbose) {
+#line 791
error("\n");
+#line 791
error("varid: %d, ", i);
+#line 791
error("var_name: %s, ", var_name[i]);
+#line 791
error("element number: %d ", j);
+#line 791
error("expect: %g, ", expect[j]);
+#line 791
error("got: %g", (double) value[j]);
+#line 791
}
+#line 791
} else {
+#line 791
nok++;
+#line 791
}
+#line 791
}
+#line 791
}
+#line 791
} else {
+#line 791
IF (nels > 0 && err != NC_ECHAR)
+#line 791
error("wrong type: status = %d", err);
+#line 791
}
+#line 791
}
+#line 791
}
+#line 791
}
+#line 791
err = nc_close(ncid);
+#line 791
IF (err)
+#line 791
error("nc_close: %s", nc_strerror(err));
+#line 791
print_nok(nok);
+#line 791
}
+#line 791
void
+#line 792
test_nc_get_varm_int(void)
+#line 792
{
+#line 792
int ncid;
+#line 792
int d;
+#line 792
int i;
+#line 792
int j;
+#line 792
int k;
+#line 792
int m;
+#line 792
int err;
+#line 792
int allInExtRange; /* all values within external range? */
+#line 792
int allInIntRange; /* all values within internal range? */
+#line 792
int nels;
+#line 792
int nslabs;
+#line 792
int nstarts; /* number of different starts */
+#line 792
int nok = 0; /* count of valid comparisons */
+#line 792
size_t start[MAX_RANK];
+#line 792
size_t edge[MAX_RANK];
+#line 792
size_t index[MAX_RANK];
+#line 792
size_t index2[MAX_RANK];
+#line 792
size_t mid[MAX_RANK];
+#line 792
size_t count[MAX_RANK];
+#line 792
size_t sstride[MAX_RANK];
+#line 792
ptrdiff_t stride[MAX_RANK];
+#line 792
ptrdiff_t imap[MAX_RANK];
+#line 792
int canConvert; /* Both text or both numeric */
+#line 792
int value[MAX_NELS];
+#line 792
double expect[MAX_NELS];
+#line 792
+#line 792
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 792
IF (err)
+#line 792
error("nc_open: %s", nc_strerror(err));
+#line 792
for (i = 0; i < NVARS; i++) {
+#line 792
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 792
assert(var_rank[i] <= MAX_RANK);
+#line 792
assert(var_nels[i] <= MAX_NELS);
+#line 792
for (j = 0; j < var_rank[i]; j++) {
+#line 792
start[j] = 0;
+#line 792
edge[j] = 1;
+#line 792
stride[j] = 1;
+#line 792
imap[j] = 1;
+#line 792
}
+#line 792
err = nc_get_varm_int(BAD_ID, i, start, edge, stride, imap, value);
+#line 792
IF (err != NC_EBADID)
+#line 792
error("bad ncid: status = %d", err);
+#line 792
err = nc_get_varm_int(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 792
IF (err != NC_ENOTVAR)
+#line 792
error("bad var id: status = %d", err);
+#line 792
for (j = 0; j < var_rank[i]; j++) {
+#line 792
start[j] = var_shape[i][j];
+#line 792
err = nc_get_varm_int(ncid, i, start, edge, stride, imap, value);
+#line 792
if(!canConvert) {
+#line 792
IF (err != NC_ECHAR)
+#line 792
error("conversion: status = %d", err);
+#line 792
} else {
+#line 792
IF (err != NC_EINVALCOORDS)
+#line 792
error("bad index: status = %d", err);
+#line 792
start[j] = 0;
+#line 792
edge[j] = var_shape[i][j] + 1;
+#line 792
err = nc_get_varm_int(ncid, i, start, edge, stride, imap, value);
+#line 792
IF (err != NC_EEDGE)
+#line 792
error("bad edge: status = %d", err);
+#line 792
edge[j] = 1;
+#line 792
stride[j] = 0;
+#line 792
err = nc_get_varm_int(ncid, i, start, edge, stride, imap, value);
+#line 792
IF (err != NC_ESTRIDE)
+#line 792
error("bad stride: status = %d", err);
+#line 792
stride[j] = 1;
+#line 792
}
+#line 792
}
+#line 792
/* Choose a random point dividing each dim into 2 parts */
+#line 792
/* get 2^rank (nslabs) slabs so defined */
+#line 792
nslabs = 1;
+#line 792
for (j = 0; j < var_rank[i]; j++) {
+#line 792
mid[j] = roll( var_shape[i][j] );
+#line 792
nslabs *= 2;
+#line 792
}
+#line 792
/* bits of k determine whether to get lower or upper part of dim */
+#line 792
/* choose random stride from 1 to edge */
+#line 792
for (k = 0; k < nslabs; k++) {
+#line 792
nstarts = 1;
+#line 792
for (j = 0; j < var_rank[i]; j++) {
+#line 792
if ((k >> j) & 1) {
+#line 792
start[j] = 0;
+#line 792
edge[j] = mid[j];
+#line 792
}else{
+#line 792
start[j] = mid[j];
+#line 792
edge[j] = var_shape[i][j] - mid[j];
+#line 792
}
+#line 792
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 792
nstarts *= stride[j];
+#line 792
}
+#line 792
for (m = 0; m < nstarts; m++) {
+#line 792
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 792
IF (err)
+#line 792
error("error in toMixedBase");
+#line 792
nels = 1;
+#line 792
for (j = 0; j < var_rank[i]; j++) {
+#line 792
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 792
nels *= count[j];
+#line 792
index[j] += start[j];
+#line 792
}
+#line 792
/* Random choice of forward or backward */
+#line 792
/* TODO
+#line 792
if ( roll(2) ) {
+#line 792
for (j = 0; j < var_rank[i]; j++) {
+#line 792
index[j] += (count[j] - 1) * stride[j];
+#line 792
stride[j] = -stride[j];
+#line 792
}
+#line 792
}
+#line 792
*/
+#line 792
if (var_rank[i] > 0) {
+#line 792
j = var_rank[i] - 1;
+#line 792
imap[j] = 1;
+#line 792
for (; j > 0; j--)
+#line 792
imap[j-1] = imap[j] * count[j];
+#line 792
}
+#line 792
allInExtRange = allInIntRange = 1;
+#line 792
for (j = 0; j < nels; j++) {
+#line 792
err = toMixedBase(j, var_rank[i], count, index2);
+#line 792
IF (err)
+#line 792
error("error in toMixedBase 1");
+#line 792
for (d = 0; d < var_rank[i]; d++)
+#line 792
index2[d] = index[d] + index2[d] * stride[d];
+#line 792
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 792
NCT_INT);
+#line 792
if (inRange3(expect[j],var_type[i],NCT_INT)) {
+#line 792
allInIntRange = allInIntRange && expect[j] >= int_min
+#line 792
&& expect[j] <= int_max;
+#line 792
} else {
+#line 792
allInExtRange = 0;
+#line 792
}
+#line 792
}
+#line 792
if (var_rank[i] == 0 && i%2 )
+#line 792
err = nc_get_varm_int(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 792
else
+#line 792
err = nc_get_varm_int(ncid,i,index,count,stride,imap,value);
+#line 792
if (canConvert) {
+#line 792
if (allInExtRange) {
+#line 792
if (allInIntRange) {
+#line 792
IF (err)
+#line 792
error("%s", nc_strerror(err));
+#line 792
} else {
+#line 792
IF (err != NC_ERANGE)
+#line 792
error("Range error: status = %d", err);
+#line 792
}
+#line 792
} else {
+#line 792
IF (err != 0 && err != NC_ERANGE)
+#line 792
error("OK or Range error: status = %d", err);
+#line 792
}
+#line 792
for (j = 0; j < nels; j++) {
+#line 792
if (inRange3(expect[j],var_type[i],NCT_INT)
+#line 792
&& expect[j] >= int_min
+#line 792
&& expect[j] <= int_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_INT)){
+#line 792
+ IF (!equal(value[j],expect[j],var_type[i], NCT_INT)){
+#line 792
error("value read not that expected");
+#line 792
if (verbose) {
+#line 792
error("\n");
+#line 792
error("varid: %d, ", i);
+#line 792
error("var_name: %s, ", var_name[i]);
+#line 792
error("element number: %d ", j);
+#line 792
error("expect: %g, ", expect[j]);
+#line 792
error("got: %g", (double) value[j]);
+#line 792
}
+#line 792
} else {
+#line 792
nok++;
+#line 792
}
+#line 792
}
+#line 792
}
+#line 792
} else {
+#line 792
IF (nels > 0 && err != NC_ECHAR)
+#line 792
error("wrong type: status = %d", err);
+#line 792
}
+#line 792
}
+#line 792
}
+#line 792
}
+#line 792
err = nc_close(ncid);
+#line 792
IF (err)
+#line 792
error("nc_close: %s", nc_strerror(err));
+#line 792
print_nok(nok);
+#line 792
}
+#line 792
void
+#line 793
test_nc_get_varm_long(void)
+#line 793
{
+#line 793
int ncid;
+#line 793
int d;
+#line 793
int i;
+#line 793
int j;
+#line 793
int k;
+#line 793
int m;
+#line 793
int err;
+#line 793
int allInExtRange; /* all values within external range? */
+#line 793
int allInIntRange; /* all values within internal range? */
+#line 793
int nels;
+#line 793
int nslabs;
+#line 793
int nstarts; /* number of different starts */
+#line 793
int nok = 0; /* count of valid comparisons */
+#line 793
size_t start[MAX_RANK];
+#line 793
size_t edge[MAX_RANK];
+#line 793
size_t index[MAX_RANK];
+#line 793
size_t index2[MAX_RANK];
+#line 793
size_t mid[MAX_RANK];
+#line 793
size_t count[MAX_RANK];
+#line 793
size_t sstride[MAX_RANK];
+#line 793
ptrdiff_t stride[MAX_RANK];
+#line 793
ptrdiff_t imap[MAX_RANK];
+#line 793
int canConvert; /* Both text or both numeric */
+#line 793
long value[MAX_NELS];
+#line 793
double expect[MAX_NELS];
+#line 793
+#line 793
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 793
IF (err)
+#line 793
error("nc_open: %s", nc_strerror(err));
+#line 793
for (i = 0; i < NVARS; i++) {
+#line 793
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 793
assert(var_rank[i] <= MAX_RANK);
+#line 793
assert(var_nels[i] <= MAX_NELS);
+#line 793
for (j = 0; j < var_rank[i]; j++) {
+#line 793
start[j] = 0;
+#line 793
edge[j] = 1;
+#line 793
stride[j] = 1;
+#line 793
imap[j] = 1;
+#line 793
}
+#line 793
err = nc_get_varm_long(BAD_ID, i, start, edge, stride, imap, value);
+#line 793
IF (err != NC_EBADID)
+#line 793
error("bad ncid: status = %d", err);
+#line 793
err = nc_get_varm_long(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 793
IF (err != NC_ENOTVAR)
+#line 793
error("bad var id: status = %d", err);
+#line 793
for (j = 0; j < var_rank[i]; j++) {
+#line 793
start[j] = var_shape[i][j];
+#line 793
err = nc_get_varm_long(ncid, i, start, edge, stride, imap, value);
+#line 793
if(!canConvert) {
+#line 793
IF (err != NC_ECHAR)
+#line 793
error("conversion: status = %d", err);
+#line 793
} else {
+#line 793
IF (err != NC_EINVALCOORDS)
+#line 793
error("bad index: status = %d", err);
+#line 793
start[j] = 0;
+#line 793
edge[j] = var_shape[i][j] + 1;
+#line 793
err = nc_get_varm_long(ncid, i, start, edge, stride, imap, value);
+#line 793
IF (err != NC_EEDGE)
+#line 793
error("bad edge: status = %d", err);
+#line 793
edge[j] = 1;
+#line 793
stride[j] = 0;
+#line 793
err = nc_get_varm_long(ncid, i, start, edge, stride, imap, value);
+#line 793
IF (err != NC_ESTRIDE)
+#line 793
error("bad stride: status = %d", err);
+#line 793
stride[j] = 1;
+#line 793
}
+#line 793
}
+#line 793
/* Choose a random point dividing each dim into 2 parts */
+#line 793
/* get 2^rank (nslabs) slabs so defined */
+#line 793
nslabs = 1;
+#line 793
for (j = 0; j < var_rank[i]; j++) {
+#line 793
mid[j] = roll( var_shape[i][j] );
+#line 793
nslabs *= 2;
+#line 793
}
+#line 793
/* bits of k determine whether to get lower or upper part of dim */
+#line 793
/* choose random stride from 1 to edge */
+#line 793
for (k = 0; k < nslabs; k++) {
+#line 793
nstarts = 1;
+#line 793
for (j = 0; j < var_rank[i]; j++) {
+#line 793
if ((k >> j) & 1) {
+#line 793
start[j] = 0;
+#line 793
edge[j] = mid[j];
+#line 793
}else{
+#line 793
start[j] = mid[j];
+#line 793
edge[j] = var_shape[i][j] - mid[j];
+#line 793
}
+#line 793
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 793
nstarts *= stride[j];
+#line 793
}
+#line 793
for (m = 0; m < nstarts; m++) {
+#line 793
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 793
IF (err)
+#line 793
error("error in toMixedBase");
+#line 793
nels = 1;
+#line 793
for (j = 0; j < var_rank[i]; j++) {
+#line 793
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 793
nels *= count[j];
+#line 793
index[j] += start[j];
+#line 793
}
+#line 793
/* Random choice of forward or backward */
+#line 793
/* TODO
+#line 793
if ( roll(2) ) {
+#line 793
for (j = 0; j < var_rank[i]; j++) {
+#line 793
index[j] += (count[j] - 1) * stride[j];
+#line 793
stride[j] = -stride[j];
+#line 793
}
+#line 793
}
+#line 793
*/
+#line 793
if (var_rank[i] > 0) {
+#line 793
j = var_rank[i] - 1;
+#line 793
imap[j] = 1;
+#line 793
for (; j > 0; j--)
+#line 793
imap[j-1] = imap[j] * count[j];
+#line 793
}
+#line 793
allInExtRange = allInIntRange = 1;
+#line 793
for (j = 0; j < nels; j++) {
+#line 793
err = toMixedBase(j, var_rank[i], count, index2);
+#line 793
IF (err)
+#line 793
error("error in toMixedBase 1");
+#line 793
for (d = 0; d < var_rank[i]; d++)
+#line 793
index2[d] = index[d] + index2[d] * stride[d];
+#line 793
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 793
NCT_LONG);
+#line 793
if (inRange3(expect[j],var_type[i],NCT_LONG)) {
+#line 793
allInIntRange = allInIntRange && expect[j] >= long_min
+#line 793
&& expect[j] <= long_max;
+#line 793
} else {
+#line 793
allInExtRange = 0;
+#line 793
}
+#line 793
}
+#line 793
if (var_rank[i] == 0 && i%2 )
+#line 793
err = nc_get_varm_long(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 793
else
+#line 793
err = nc_get_varm_long(ncid,i,index,count,stride,imap,value);
+#line 793
if (canConvert) {
+#line 793
if (allInExtRange) {
+#line 793
if (allInIntRange) {
+#line 793
IF (err)
+#line 793
error("%s", nc_strerror(err));
+#line 793
} else {
+#line 793
IF (err != NC_ERANGE)
+#line 793
error("Range error: status = %d", err);
+#line 793
}
+#line 793
} else {
+#line 793
IF (err != 0 && err != NC_ERANGE)
+#line 793
error("OK or Range error: status = %d", err);
+#line 793
}
+#line 793
for (j = 0; j < nels; j++) {
+#line 793
if (inRange3(expect[j],var_type[i],NCT_LONG)
+#line 793
&& expect[j] >= long_min
+#line 793
&& expect[j] <= long_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_LONG)){
+#line 793
+ IF (!equal(value[j],expect[j],var_type[i], NCT_LONG)){
+#line 793
error("value read not that expected");
+#line 793
if (verbose) {
+#line 793
error("\n");
+#line 793
error("varid: %d, ", i);
+#line 793
error("var_name: %s, ", var_name[i]);
+#line 793
error("element number: %d ", j);
+#line 793
error("expect: %g, ", expect[j]);
+#line 793
error("got: %g", (double) value[j]);
+#line 793
}
+#line 793
} else {
+#line 793
nok++;
+#line 793
}
+#line 793
}
+#line 793
}
+#line 793
} else {
+#line 793
IF (nels > 0 && err != NC_ECHAR)
+#line 793
error("wrong type: status = %d", err);
+#line 793
}
+#line 793
}
+#line 793
}
+#line 793
}
+#line 793
err = nc_close(ncid);
+#line 793
IF (err)
+#line 793
error("nc_close: %s", nc_strerror(err));
+#line 793
print_nok(nok);
+#line 793
}
+#line 793
void
+#line 794
test_nc_get_varm_float(void)
+#line 794
{
+#line 794
int ncid;
+#line 794
int d;
+#line 794
int i;
+#line 794
int j;
+#line 794
int k;
+#line 794
int m;
+#line 794
int err;
+#line 794
int allInExtRange; /* all values within external range? */
+#line 794
int allInIntRange; /* all values within internal range? */
+#line 794
int nels;
+#line 794
int nslabs;
+#line 794
int nstarts; /* number of different starts */
+#line 794
int nok = 0; /* count of valid comparisons */
+#line 794
size_t start[MAX_RANK];
+#line 794
size_t edge[MAX_RANK];
+#line 794
size_t index[MAX_RANK];
+#line 794
size_t index2[MAX_RANK];
+#line 794
size_t mid[MAX_RANK];
+#line 794
size_t count[MAX_RANK];
+#line 794
size_t sstride[MAX_RANK];
+#line 794
ptrdiff_t stride[MAX_RANK];
+#line 794
ptrdiff_t imap[MAX_RANK];
+#line 794
int canConvert; /* Both text or both numeric */
+#line 794
float value[MAX_NELS];
+#line 794
double expect[MAX_NELS];
+#line 794
+#line 794
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 794
IF (err)
+#line 794
error("nc_open: %s", nc_strerror(err));
+#line 794
for (i = 0; i < NVARS; i++) {
+#line 794
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 794
assert(var_rank[i] <= MAX_RANK);
+#line 794
assert(var_nels[i] <= MAX_NELS);
+#line 794
for (j = 0; j < var_rank[i]; j++) {
+#line 794
start[j] = 0;
+#line 794
edge[j] = 1;
+#line 794
stride[j] = 1;
+#line 794
imap[j] = 1;
+#line 794
}
+#line 794
err = nc_get_varm_float(BAD_ID, i, start, edge, stride, imap, value);
+#line 794
IF (err != NC_EBADID)
+#line 794
error("bad ncid: status = %d", err);
+#line 794
err = nc_get_varm_float(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 794
IF (err != NC_ENOTVAR)
+#line 794
error("bad var id: status = %d", err);
+#line 794
for (j = 0; j < var_rank[i]; j++) {
+#line 794
start[j] = var_shape[i][j];
+#line 794
err = nc_get_varm_float(ncid, i, start, edge, stride, imap, value);
+#line 794
if(!canConvert) {
+#line 794
IF (err != NC_ECHAR)
+#line 794
error("conversion: status = %d", err);
+#line 794
} else {
+#line 794
IF (err != NC_EINVALCOORDS)
+#line 794
error("bad index: status = %d", err);
+#line 794
start[j] = 0;
+#line 794
edge[j] = var_shape[i][j] + 1;
+#line 794
err = nc_get_varm_float(ncid, i, start, edge, stride, imap, value);
+#line 794
IF (err != NC_EEDGE)
+#line 794
error("bad edge: status = %d", err);
+#line 794
edge[j] = 1;
+#line 794
stride[j] = 0;
+#line 794
err = nc_get_varm_float(ncid, i, start, edge, stride, imap, value);
+#line 794
IF (err != NC_ESTRIDE)
+#line 794
error("bad stride: status = %d", err);
+#line 794
stride[j] = 1;
+#line 794
}
+#line 794
}
+#line 794
/* Choose a random point dividing each dim into 2 parts */
+#line 794
/* get 2^rank (nslabs) slabs so defined */
+#line 794
nslabs = 1;
+#line 794
for (j = 0; j < var_rank[i]; j++) {
+#line 794
mid[j] = roll( var_shape[i][j] );
+#line 794
nslabs *= 2;
+#line 794
}
+#line 794
/* bits of k determine whether to get lower or upper part of dim */
+#line 794
/* choose random stride from 1 to edge */
+#line 794
for (k = 0; k < nslabs; k++) {
+#line 794
nstarts = 1;
+#line 794
for (j = 0; j < var_rank[i]; j++) {
+#line 794
if ((k >> j) & 1) {
+#line 794
start[j] = 0;
+#line 794
edge[j] = mid[j];
+#line 794
}else{
+#line 794
start[j] = mid[j];
+#line 794
edge[j] = var_shape[i][j] - mid[j];
+#line 794
}
+#line 794
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 794
nstarts *= stride[j];
+#line 794
}
+#line 794
for (m = 0; m < nstarts; m++) {
+#line 794
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 794
IF (err)
+#line 794
error("error in toMixedBase");
+#line 794
nels = 1;
+#line 794
for (j = 0; j < var_rank[i]; j++) {
+#line 794
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 794
nels *= count[j];
+#line 794
index[j] += start[j];
+#line 794
}
+#line 794
/* Random choice of forward or backward */
+#line 794
/* TODO
+#line 794
if ( roll(2) ) {
+#line 794
for (j = 0; j < var_rank[i]; j++) {
+#line 794
index[j] += (count[j] - 1) * stride[j];
+#line 794
stride[j] = -stride[j];
+#line 794
}
+#line 794
}
+#line 794
*/
+#line 794
if (var_rank[i] > 0) {
+#line 794
j = var_rank[i] - 1;
+#line 794
imap[j] = 1;
+#line 794
for (; j > 0; j--)
+#line 794
imap[j-1] = imap[j] * count[j];
+#line 794
}
+#line 794
allInExtRange = allInIntRange = 1;
+#line 794
for (j = 0; j < nels; j++) {
+#line 794
err = toMixedBase(j, var_rank[i], count, index2);
+#line 794
IF (err)
+#line 794
error("error in toMixedBase 1");
+#line 794
for (d = 0; d < var_rank[i]; d++)
+#line 794
index2[d] = index[d] + index2[d] * stride[d];
+#line 794
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 794
NCT_FLOAT);
+#line 794
if (inRange3(expect[j],var_type[i],NCT_FLOAT)) {
+#line 794
allInIntRange = allInIntRange && expect[j] >= float_min
+#line 794
&& expect[j] <= float_max;
+#line 794
} else {
+#line 794
allInExtRange = 0;
+#line 794
}
+#line 794
}
+#line 794
if (var_rank[i] == 0 && i%2 )
+#line 794
err = nc_get_varm_float(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 794
else
+#line 794
err = nc_get_varm_float(ncid,i,index,count,stride,imap,value);
+#line 794
if (canConvert) {
+#line 794
if (allInExtRange) {
+#line 794
if (allInIntRange) {
+#line 794
IF (err)
+#line 794
error("%s", nc_strerror(err));
+#line 794
} else {
+#line 794
IF (err != NC_ERANGE)
+#line 794
error("Range error: status = %d", err);
+#line 794
}
+#line 794
} else {
+#line 794
IF (err != 0 && err != NC_ERANGE)
+#line 794
error("OK or Range error: status = %d", err);
+#line 794
}
+#line 794
for (j = 0; j < nels; j++) {
+#line 794
if (inRange3(expect[j],var_type[i],NCT_FLOAT)
+#line 794
&& expect[j] >= float_min
+#line 794
&& expect[j] <= float_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_FLOAT)){
+#line 794
+ IF (!equal(value[j],expect[j],var_type[i], NCT_FLOAT)){
+#line 794
error("value read not that expected");
+#line 794
if (verbose) {
+#line 794
error("\n");
+#line 794
error("varid: %d, ", i);
+#line 794
error("var_name: %s, ", var_name[i]);
+#line 794
error("element number: %d ", j);
+#line 794
error("expect: %g, ", expect[j]);
+#line 794
error("got: %g", (double) value[j]);
+#line 794
}
+#line 794
} else {
+#line 794
nok++;
+#line 794
}
+#line 794
}
+#line 794
}
+#line 794
} else {
+#line 794
IF (nels > 0 && err != NC_ECHAR)
+#line 794
error("wrong type: status = %d", err);
+#line 794
}
+#line 794
}
+#line 794
}
+#line 794
}
+#line 794
err = nc_close(ncid);
+#line 794
IF (err)
+#line 794
error("nc_close: %s", nc_strerror(err));
+#line 794
print_nok(nok);
+#line 794
}
+#line 794
void
+#line 795
test_nc_get_varm_double(void)
+#line 795
{
+#line 795
int ncid;
+#line 795
int d;
+#line 795
int i;
+#line 795
int j;
+#line 795
int k;
+#line 795
int m;
+#line 795
int err;
+#line 795
int allInExtRange; /* all values within external range? */
+#line 795
int allInIntRange; /* all values within internal range? */
+#line 795
int nels;
+#line 795
int nslabs;
+#line 795
int nstarts; /* number of different starts */
+#line 795
int nok = 0; /* count of valid comparisons */
+#line 795
size_t start[MAX_RANK];
+#line 795
size_t edge[MAX_RANK];
+#line 795
size_t index[MAX_RANK];
+#line 795
size_t index2[MAX_RANK];
+#line 795
size_t mid[MAX_RANK];
+#line 795
size_t count[MAX_RANK];
+#line 795
size_t sstride[MAX_RANK];
+#line 795
ptrdiff_t stride[MAX_RANK];
+#line 795
ptrdiff_t imap[MAX_RANK];
+#line 795
int canConvert; /* Both text or both numeric */
+#line 795
double value[MAX_NELS];
+#line 795
double expect[MAX_NELS];
+#line 795
+#line 795
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 795
IF (err)
+#line 795
error("nc_open: %s", nc_strerror(err));
+#line 795
for (i = 0; i < NVARS; i++) {
+#line 795
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 795
assert(var_rank[i] <= MAX_RANK);
+#line 795
assert(var_nels[i] <= MAX_NELS);
+#line 795
for (j = 0; j < var_rank[i]; j++) {
+#line 795
start[j] = 0;
+#line 795
edge[j] = 1;
+#line 795
stride[j] = 1;
+#line 795
imap[j] = 1;
+#line 795
}
+#line 795
err = nc_get_varm_double(BAD_ID, i, start, edge, stride, imap, value);
+#line 795
IF (err != NC_EBADID)
+#line 795
error("bad ncid: status = %d", err);
+#line 795
err = nc_get_varm_double(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 795
IF (err != NC_ENOTVAR)
+#line 795
error("bad var id: status = %d", err);
+#line 795
for (j = 0; j < var_rank[i]; j++) {
+#line 795
start[j] = var_shape[i][j];
+#line 795
err = nc_get_varm_double(ncid, i, start, edge, stride, imap, value);
+#line 795
if(!canConvert) {
+#line 795
IF (err != NC_ECHAR)
+#line 795
error("conversion: status = %d", err);
+#line 795
} else {
+#line 795
IF (err != NC_EINVALCOORDS)
+#line 795
error("bad index: status = %d", err);
+#line 795
start[j] = 0;
+#line 795
edge[j] = var_shape[i][j] + 1;
+#line 795
err = nc_get_varm_double(ncid, i, start, edge, stride, imap, value);
+#line 795
IF (err != NC_EEDGE)
+#line 795
error("bad edge: status = %d", err);
+#line 795
edge[j] = 1;
+#line 795
stride[j] = 0;
+#line 795
err = nc_get_varm_double(ncid, i, start, edge, stride, imap, value);
+#line 795
IF (err != NC_ESTRIDE)
+#line 795
error("bad stride: status = %d", err);
+#line 795
stride[j] = 1;
+#line 795
}
+#line 795
}
+#line 795
/* Choose a random point dividing each dim into 2 parts */
+#line 795
/* get 2^rank (nslabs) slabs so defined */
+#line 795
nslabs = 1;
+#line 795
for (j = 0; j < var_rank[i]; j++) {
+#line 795
mid[j] = roll( var_shape[i][j] );
+#line 795
nslabs *= 2;
+#line 795
}
+#line 795
/* bits of k determine whether to get lower or upper part of dim */
+#line 795
/* choose random stride from 1 to edge */
+#line 795
for (k = 0; k < nslabs; k++) {
+#line 795
nstarts = 1;
+#line 795
for (j = 0; j < var_rank[i]; j++) {
+#line 795
if ((k >> j) & 1) {
+#line 795
start[j] = 0;
+#line 795
edge[j] = mid[j];
+#line 795
}else{
+#line 795
start[j] = mid[j];
+#line 795
edge[j] = var_shape[i][j] - mid[j];
+#line 795
}
+#line 795
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 795
nstarts *= stride[j];
+#line 795
}
+#line 795
for (m = 0; m < nstarts; m++) {
+#line 795
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 795
IF (err)
+#line 795
error("error in toMixedBase");
+#line 795
nels = 1;
+#line 795
for (j = 0; j < var_rank[i]; j++) {
+#line 795
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 795
nels *= count[j];
+#line 795
index[j] += start[j];
+#line 795
}
+#line 795
/* Random choice of forward or backward */
+#line 795
/* TODO
+#line 795
if ( roll(2) ) {
+#line 795
for (j = 0; j < var_rank[i]; j++) {
+#line 795
index[j] += (count[j] - 1) * stride[j];
+#line 795
stride[j] = -stride[j];
+#line 795
}
+#line 795
}
+#line 795
*/
+#line 795
if (var_rank[i] > 0) {
+#line 795
j = var_rank[i] - 1;
+#line 795
imap[j] = 1;
+#line 795
for (; j > 0; j--)
+#line 795
imap[j-1] = imap[j] * count[j];
+#line 795
}
+#line 795
allInExtRange = allInIntRange = 1;
+#line 795
for (j = 0; j < nels; j++) {
+#line 795
err = toMixedBase(j, var_rank[i], count, index2);
+#line 795
IF (err)
+#line 795
error("error in toMixedBase 1");
+#line 795
for (d = 0; d < var_rank[i]; d++)
+#line 795
index2[d] = index[d] + index2[d] * stride[d];
+#line 795
expect[j] = hash4(var_type[i], var_rank[i], index2,
+#line 795
NCT_DOUBLE);
+#line 795
if (inRange3(expect[j],var_type[i],NCT_DOUBLE)) {
+#line 795
allInIntRange = allInIntRange && expect[j] >= double_min
+#line 795
&& expect[j] <= double_max;
+#line 795
} else {
+#line 795
allInExtRange = 0;
+#line 795
}
+#line 795
}
+#line 795
if (var_rank[i] == 0 && i%2 )
+#line 795
err = nc_get_varm_double(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 795
else
+#line 795
err = nc_get_varm_double(ncid,i,index,count,stride,imap,value);
+#line 795
if (canConvert) {
+#line 795
if (allInExtRange) {
+#line 795
if (allInIntRange) {
+#line 795
IF (err)
+#line 795
error("%s", nc_strerror(err));
+#line 795
} else {
+#line 795
IF (err != NC_ERANGE)
+#line 795
error("Range error: status = %d", err);
+#line 795
}
+#line 795
} else {
+#line 795
IF (err != 0 && err != NC_ERANGE)
+#line 795
error("OK or Range error: status = %d", err);
+#line 795
}
+#line 795
for (j = 0; j < nels; j++) {
+#line 795
if (inRange3(expect[j],var_type[i],NCT_DOUBLE)
+#line 795
&& expect[j] >= double_min
+#line 795
&& expect[j] <= double_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_DOUBLE)){
+#line 795
+ IF (!equal(value[j],expect[j],var_type[i], NCT_DOUBLE)){
+#line 795
error("value read not that expected");
+#line 795
if (verbose) {
+#line 795
error("\n");
+#line 795
error("varid: %d, ", i);
+#line 795
error("var_name: %s, ", var_name[i]);
+#line 795
error("element number: %d ", j);
+#line 795
error("expect: %g, ", expect[j]);
+#line 795
error("got: %g", (double) value[j]);
+#line 795
}
+#line 795
} else {
+#line 795
nok++;
+#line 795
}
+#line 795
}
+#line 795
}
+#line 795
} else {
+#line 795
IF (nels > 0 && err != NC_ECHAR)
+#line 795
error("wrong type: status = %d", err);
+#line 795
}
+#line 795
}
+#line 795
}
+#line 795
}
+#line 795
err = nc_close(ncid);
+#line 795
IF (err)
+#line 795
error("nc_close: %s", nc_strerror(err));
+#line 795
print_nok(nok);
+#line 795
}
+#line 795
+#line 888
void
+#line 889
test_nc_get_att_text(void)
+#line 889
{
+#line 889
int ncid;
+#line 889
int i;
+#line 889
int j;
+#line 889
size_t k;
+#line 889
int err;
+#line 889
int allInExtRange;
+#line 889
int allInIntRange;
+#line 889
int canConvert; /* Both text or both numeric */
+#line 889
text value[MAX_NELS];
+#line 889
double expect[MAX_NELS];
+#line 889
int nok = 0; /* count of valid comparisons */
+#line 889
+#line 889
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 889
IF (err)
+#line 889
error("nc_open: %s", nc_strerror(err));
+#line 889
+#line 889
for (i = -1; i < NVARS; i++) {
+#line 889
for (j = 0; j < NATTS(i); j++) {
+#line 889
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 889
err = nc_get_att_text(BAD_ID, i, ATT_NAME(i,j), value);
+#line 889
IF (err != NC_EBADID)
+#line 889
error("bad ncid: status = %d", err);
+#line 889
err = nc_get_att_text(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 889
IF (err != NC_ENOTVAR)
+#line 889
error("bad var id: status = %d", err);
+#line 889
err = nc_get_att_text(ncid, i, "noSuch", value);
+#line 889
IF (err != NC_ENOTATT)
+#line 889
error("Bad attribute name: status = %d", err);
+#line 889
allInExtRange = allInIntRange = 1;
+#line 889
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 889
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_TEXT);
+#line 889
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_TEXT)) {
+#line 889
allInIntRange = allInIntRange && expect[k] >= text_min
+#line 889
&& expect[k] <= text_max;
+#line 889
} else {
+#line 889
allInExtRange = 0;
+#line 889
}
+#line 889
}
+#line 889
err = nc_get_att_text(ncid, i, ATT_NAME(i,j), value);
+#line 889
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 889
if (allInExtRange) {
+#line 889
if (allInIntRange) {
+#line 889
IF (err)
+#line 889
error("%s", nc_strerror(err));
+#line 889
} else {
+#line 889
IF (err != NC_ERANGE)
+#line 889
error("Range error: status = %d", err);
+#line 889
}
+#line 889
} else {
+#line 889
IF (err != 0 && err != NC_ERANGE)
+#line 889
error("OK or Range error: status = %d", err);
+#line 889
}
+#line 889
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 889
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_TEXT)
+#line 889
&& expect[k] >= text_min && expect[k] <= text_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_TEXT)){
+#line 889
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_TEXT)){
+#line 889
error("value read not that expected");
+#line 889
if (verbose) {
+#line 889
error("\n");
+#line 889
error("varid: %d, ", i);
+#line 889
error("att_name: %s, ", ATT_NAME(i,j));
+#line 889
error("element number: %d ", k);
+#line 889
error("expect: %g", expect[k]);
+#line 889
error("got: %g", (double) value[k]);
+#line 889
}
+#line 889
} else {
+#line 889
nok++;
+#line 889
}
+#line 889
}
+#line 889
}
+#line 889
} else {
+#line 889
IF (err != NC_ECHAR)
+#line 889
error("wrong type: status = %d", err);
+#line 889
}
+#line 889
}
+#line 889
}
+#line 889
+#line 889
err = nc_close(ncid);
+#line 889
IF (err)
+#line 889
error("nc_close: %s", nc_strerror(err));
+#line 889
print_nok(nok);
+#line 889
}
+#line 889
void
+#line 890
test_nc_get_att_uchar(void)
+#line 890
{
+#line 890
int ncid;
+#line 890
int i;
+#line 890
int j;
+#line 890
size_t k;
+#line 890
int err;
+#line 890
int allInExtRange;
+#line 890
int allInIntRange;
+#line 890
int canConvert; /* Both text or both numeric */
+#line 890
uchar value[MAX_NELS];
+#line 890
double expect[MAX_NELS];
+#line 890
int nok = 0; /* count of valid comparisons */
+#line 890
+#line 890
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 890
IF (err)
+#line 890
error("nc_open: %s", nc_strerror(err));
+#line 890
+#line 890
for (i = -1; i < NVARS; i++) {
+#line 890
for (j = 0; j < NATTS(i); j++) {
+#line 890
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 890
err = nc_get_att_uchar(BAD_ID, i, ATT_NAME(i,j), value);
+#line 890
IF (err != NC_EBADID)
+#line 890
error("bad ncid: status = %d", err);
+#line 890
err = nc_get_att_uchar(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 890
IF (err != NC_ENOTVAR)
+#line 890
error("bad var id: status = %d", err);
+#line 890
err = nc_get_att_uchar(ncid, i, "noSuch", value);
+#line 890
IF (err != NC_ENOTATT)
+#line 890
error("Bad attribute name: status = %d", err);
+#line 890
allInExtRange = allInIntRange = 1;
+#line 890
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 890
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_UCHAR);
+#line 890
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_UCHAR)) {
+#line 890
allInIntRange = allInIntRange && expect[k] >= uchar_min
+#line 890
&& expect[k] <= uchar_max;
+#line 890
} else {
+#line 890
allInExtRange = 0;
+#line 890
}
+#line 890
}
+#line 890
err = nc_get_att_uchar(ncid, i, ATT_NAME(i,j), value);
+#line 890
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 890
if (allInExtRange) {
+#line 890
if (allInIntRange) {
+#line 890
IF (err)
+#line 890
error("%s", nc_strerror(err));
+#line 890
} else {
+#line 890
IF (err != NC_ERANGE)
+#line 890
error("Range error: status = %d", err);
+#line 890
}
+#line 890
} else {
+#line 890
IF (err != 0 && err != NC_ERANGE)
+#line 890
error("OK or Range error: status = %d", err);
+#line 890
}
+#line 890
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 890
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_UCHAR)
+#line 890
&& expect[k] >= uchar_min && expect[k] <= uchar_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_UCHAR)){
+#line 890
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_UCHAR)){
+#line 890
error("value read not that expected");
+#line 890
if (verbose) {
+#line 890
error("\n");
+#line 890
error("varid: %d, ", i);
+#line 890
error("att_name: %s, ", ATT_NAME(i,j));
+#line 890
error("element number: %d ", k);
+#line 890
error("expect: %g", expect[k]);
+#line 890
error("got: %g", (double) value[k]);
+#line 890
}
+#line 890
} else {
+#line 890
nok++;
+#line 890
}
+#line 890
}
+#line 890
}
+#line 890
} else {
+#line 890
IF (err != NC_ECHAR)
+#line 890
error("wrong type: status = %d", err);
+#line 890
}
+#line 890
}
+#line 890
}
+#line 890
+#line 890
err = nc_close(ncid);
+#line 890
IF (err)
+#line 890
error("nc_close: %s", nc_strerror(err));
+#line 890
print_nok(nok);
+#line 890
}
+#line 890
void
+#line 891
test_nc_get_att_schar(void)
+#line 891
{
+#line 891
int ncid;
+#line 891
int i;
+#line 891
int j;
+#line 891
size_t k;
+#line 891
int err;
+#line 891
int allInExtRange;
+#line 891
int allInIntRange;
+#line 891
int canConvert; /* Both text or both numeric */
+#line 891
schar value[MAX_NELS];
+#line 891
double expect[MAX_NELS];
+#line 891
int nok = 0; /* count of valid comparisons */
+#line 891
+#line 891
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 891
IF (err)
+#line 891
error("nc_open: %s", nc_strerror(err));
+#line 891
+#line 891
for (i = -1; i < NVARS; i++) {
+#line 891
for (j = 0; j < NATTS(i); j++) {
+#line 891
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 891
err = nc_get_att_schar(BAD_ID, i, ATT_NAME(i,j), value);
+#line 891
IF (err != NC_EBADID)
+#line 891
error("bad ncid: status = %d", err);
+#line 891
err = nc_get_att_schar(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 891
IF (err != NC_ENOTVAR)
+#line 891
error("bad var id: status = %d", err);
+#line 891
err = nc_get_att_schar(ncid, i, "noSuch", value);
+#line 891
IF (err != NC_ENOTATT)
+#line 891
error("Bad attribute name: status = %d", err);
+#line 891
allInExtRange = allInIntRange = 1;
+#line 891
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 891
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_SCHAR);
+#line 891
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SCHAR)) {
+#line 891
allInIntRange = allInIntRange && expect[k] >= schar_min
+#line 891
&& expect[k] <= schar_max;
+#line 891
} else {
+#line 891
allInExtRange = 0;
+#line 891
}
+#line 891
}
+#line 891
err = nc_get_att_schar(ncid, i, ATT_NAME(i,j), value);
+#line 891
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 891
if (allInExtRange) {
+#line 891
if (allInIntRange) {
+#line 891
IF (err)
+#line 891
error("%s", nc_strerror(err));
+#line 891
} else {
+#line 891
IF (err != NC_ERANGE)
+#line 891
error("Range error: status = %d", err);
+#line 891
}
+#line 891
} else {
+#line 891
IF (err != 0 && err != NC_ERANGE)
+#line 891
error("OK or Range error: status = %d", err);
+#line 891
}
+#line 891
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 891
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SCHAR)
+#line 891
&& expect[k] >= schar_min && expect[k] <= schar_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_SCHAR)){
+#line 891
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_SCHAR)){
+#line 891
error("value read not that expected");
+#line 891
if (verbose) {
+#line 891
error("\n");
+#line 891
error("varid: %d, ", i);
+#line 891
error("att_name: %s, ", ATT_NAME(i,j));
+#line 891
error("element number: %d ", k);
+#line 891
error("expect: %g", expect[k]);
+#line 891
error("got: %g", (double) value[k]);
+#line 891
}
+#line 891
} else {
+#line 891
nok++;
+#line 891
}
+#line 891
}
+#line 891
}
+#line 891
} else {
+#line 891
IF (err != NC_ECHAR)
+#line 891
error("wrong type: status = %d", err);
+#line 891
}
+#line 891
}
+#line 891
}
+#line 891
+#line 891
err = nc_close(ncid);
+#line 891
IF (err)
+#line 891
error("nc_close: %s", nc_strerror(err));
+#line 891
print_nok(nok);
+#line 891
}
+#line 891
void
+#line 892
test_nc_get_att_short(void)
+#line 892
{
+#line 892
int ncid;
+#line 892
int i;
+#line 892
int j;
+#line 892
size_t k;
+#line 892
int err;
+#line 892
int allInExtRange;
+#line 892
int allInIntRange;
+#line 892
int canConvert; /* Both text or both numeric */
+#line 892
short value[MAX_NELS];
+#line 892
double expect[MAX_NELS];
+#line 892
int nok = 0; /* count of valid comparisons */
+#line 892
+#line 892
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 892
IF (err)
+#line 892
error("nc_open: %s", nc_strerror(err));
+#line 892
+#line 892
for (i = -1; i < NVARS; i++) {
+#line 892
for (j = 0; j < NATTS(i); j++) {
+#line 892
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 892
err = nc_get_att_short(BAD_ID, i, ATT_NAME(i,j), value);
+#line 892
IF (err != NC_EBADID)
+#line 892
error("bad ncid: status = %d", err);
+#line 892
err = nc_get_att_short(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 892
IF (err != NC_ENOTVAR)
+#line 892
error("bad var id: status = %d", err);
+#line 892
err = nc_get_att_short(ncid, i, "noSuch", value);
+#line 892
IF (err != NC_ENOTATT)
+#line 892
error("Bad attribute name: status = %d", err);
+#line 892
allInExtRange = allInIntRange = 1;
+#line 892
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 892
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_SHORT);
+#line 892
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SHORT)) {
+#line 892
allInIntRange = allInIntRange && expect[k] >= short_min
+#line 892
&& expect[k] <= short_max;
+#line 892
} else {
+#line 892
allInExtRange = 0;
+#line 892
}
+#line 892
}
+#line 892
err = nc_get_att_short(ncid, i, ATT_NAME(i,j), value);
+#line 892
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 892
if (allInExtRange) {
+#line 892
if (allInIntRange) {
+#line 892
IF (err)
+#line 892
error("%s", nc_strerror(err));
+#line 892
} else {
+#line 892
IF (err != NC_ERANGE)
+#line 892
error("Range error: status = %d", err);
+#line 892
}
+#line 892
} else {
+#line 892
IF (err != 0 && err != NC_ERANGE)
+#line 892
error("OK or Range error: status = %d", err);
+#line 892
}
+#line 892
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 892
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_SHORT)
+#line 892
&& expect[k] >= short_min && expect[k] <= short_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_SHORT)){
+#line 892
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_SHORT)){
+#line 892
error("value read not that expected");
+#line 892
if (verbose) {
+#line 892
error("\n");
+#line 892
error("varid: %d, ", i);
+#line 892
error("att_name: %s, ", ATT_NAME(i,j));
+#line 892
error("element number: %d ", k);
+#line 892
error("expect: %g", expect[k]);
+#line 892
error("got: %g", (double) value[k]);
+#line 892
}
+#line 892
} else {
+#line 892
nok++;
+#line 892
}
+#line 892
}
+#line 892
}
+#line 892
} else {
+#line 892
IF (err != NC_ECHAR)
+#line 892
error("wrong type: status = %d", err);
+#line 892
}
+#line 892
}
+#line 892
}
+#line 892
+#line 892
err = nc_close(ncid);
+#line 892
IF (err)
+#line 892
error("nc_close: %s", nc_strerror(err));
+#line 892
print_nok(nok);
+#line 892
}
+#line 892
void
+#line 893
test_nc_get_att_int(void)
+#line 893
{
+#line 893
int ncid;
+#line 893
int i;
+#line 893
int j;
+#line 893
size_t k;
+#line 893
int err;
+#line 893
int allInExtRange;
+#line 893
int allInIntRange;
+#line 893
int canConvert; /* Both text or both numeric */
+#line 893
int value[MAX_NELS];
+#line 893
double expect[MAX_NELS];
+#line 893
int nok = 0; /* count of valid comparisons */
+#line 893
+#line 893
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 893
IF (err)
+#line 893
error("nc_open: %s", nc_strerror(err));
+#line 893
+#line 893
for (i = -1; i < NVARS; i++) {
+#line 893
for (j = 0; j < NATTS(i); j++) {
+#line 893
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 893
err = nc_get_att_int(BAD_ID, i, ATT_NAME(i,j), value);
+#line 893
IF (err != NC_EBADID)
+#line 893
error("bad ncid: status = %d", err);
+#line 893
err = nc_get_att_int(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 893
IF (err != NC_ENOTVAR)
+#line 893
error("bad var id: status = %d", err);
+#line 893
err = nc_get_att_int(ncid, i, "noSuch", value);
+#line 893
IF (err != NC_ENOTATT)
+#line 893
error("Bad attribute name: status = %d", err);
+#line 893
allInExtRange = allInIntRange = 1;
+#line 893
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 893
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_INT);
+#line 893
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_INT)) {
+#line 893
allInIntRange = allInIntRange && expect[k] >= int_min
+#line 893
&& expect[k] <= int_max;
+#line 893
} else {
+#line 893
allInExtRange = 0;
+#line 893
}
+#line 893
}
+#line 893
err = nc_get_att_int(ncid, i, ATT_NAME(i,j), value);
+#line 893
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 893
if (allInExtRange) {
+#line 893
if (allInIntRange) {
+#line 893
IF (err)
+#line 893
error("%s", nc_strerror(err));
+#line 893
} else {
+#line 893
IF (err != NC_ERANGE)
+#line 893
error("Range error: status = %d", err);
+#line 893
}
+#line 893
} else {
+#line 893
IF (err != 0 && err != NC_ERANGE)
+#line 893
error("OK or Range error: status = %d", err);
+#line 893
}
+#line 893
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 893
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_INT)
+#line 893
&& expect[k] >= int_min && expect[k] <= int_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_INT)){
+#line 893
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_INT)){
+#line 893
error("value read not that expected");
+#line 893
if (verbose) {
+#line 893
error("\n");
+#line 893
error("varid: %d, ", i);
+#line 893
error("att_name: %s, ", ATT_NAME(i,j));
+#line 893
error("element number: %d ", k);
+#line 893
error("expect: %g", expect[k]);
+#line 893
error("got: %g", (double) value[k]);
+#line 893
}
+#line 893
} else {
+#line 893
nok++;
+#line 893
}
+#line 893
}
+#line 893
}
+#line 893
} else {
+#line 893
IF (err != NC_ECHAR)
+#line 893
error("wrong type: status = %d", err);
+#line 893
}
+#line 893
}
+#line 893
}
+#line 893
+#line 893
err = nc_close(ncid);
+#line 893
IF (err)
+#line 893
error("nc_close: %s", nc_strerror(err));
+#line 893
print_nok(nok);
+#line 893
}
+#line 893
void
+#line 894
test_nc_get_att_long(void)
+#line 894
{
+#line 894
int ncid;
+#line 894
int i;
+#line 894
int j;
+#line 894
size_t k;
+#line 894
int err;
+#line 894
int allInExtRange;
+#line 894
int allInIntRange;
+#line 894
int canConvert; /* Both text or both numeric */
+#line 894
long value[MAX_NELS];
+#line 894
double expect[MAX_NELS];
+#line 894
int nok = 0; /* count of valid comparisons */
+#line 894
+#line 894
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 894
IF (err)
+#line 894
error("nc_open: %s", nc_strerror(err));
+#line 894
+#line 894
for (i = -1; i < NVARS; i++) {
+#line 894
for (j = 0; j < NATTS(i); j++) {
+#line 894
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 894
err = nc_get_att_long(BAD_ID, i, ATT_NAME(i,j), value);
+#line 894
IF (err != NC_EBADID)
+#line 894
error("bad ncid: status = %d", err);
+#line 894
err = nc_get_att_long(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 894
IF (err != NC_ENOTVAR)
+#line 894
error("bad var id: status = %d", err);
+#line 894
err = nc_get_att_long(ncid, i, "noSuch", value);
+#line 894
IF (err != NC_ENOTATT)
+#line 894
error("Bad attribute name: status = %d", err);
+#line 894
allInExtRange = allInIntRange = 1;
+#line 894
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 894
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_LONG);
+#line 894
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_LONG)) {
+#line 894
allInIntRange = allInIntRange && expect[k] >= long_min
+#line 894
&& expect[k] <= long_max;
+#line 894
} else {
+#line 894
allInExtRange = 0;
+#line 894
}
+#line 894
}
+#line 894
err = nc_get_att_long(ncid, i, ATT_NAME(i,j), value);
+#line 894
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 894
if (allInExtRange) {
+#line 894
if (allInIntRange) {
+#line 894
IF (err)
+#line 894
error("%s", nc_strerror(err));
+#line 894
} else {
+#line 894
IF (err != NC_ERANGE)
+#line 894
error("Range error: status = %d", err);
+#line 894
}
+#line 894
} else {
+#line 894
IF (err != 0 && err != NC_ERANGE)
+#line 894
error("OK or Range error: status = %d", err);
+#line 894
}
+#line 894
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 894
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_LONG)
+#line 894
&& expect[k] >= long_min && expect[k] <= long_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_LONG)){
+#line 894
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_LONG)){
+#line 894
error("value read not that expected");
+#line 894
if (verbose) {
+#line 894
error("\n");
+#line 894
error("varid: %d, ", i);
+#line 894
error("att_name: %s, ", ATT_NAME(i,j));
+#line 894
error("element number: %d ", k);
+#line 894
error("expect: %g", expect[k]);
+#line 894
error("got: %g", (double) value[k]);
+#line 894
}
+#line 894
} else {
+#line 894
nok++;
+#line 894
}
+#line 894
}
+#line 894
}
+#line 894
} else {
+#line 894
IF (err != NC_ECHAR)
+#line 894
error("wrong type: status = %d", err);
+#line 894
}
+#line 894
}
+#line 894
}
+#line 894
+#line 894
err = nc_close(ncid);
+#line 894
IF (err)
+#line 894
error("nc_close: %s", nc_strerror(err));
+#line 894
print_nok(nok);
+#line 894
}
+#line 894
void
+#line 895
test_nc_get_att_float(void)
+#line 895
{
+#line 895
int ncid;
+#line 895
int i;
+#line 895
int j;
+#line 895
size_t k;
+#line 895
int err;
+#line 895
int allInExtRange;
+#line 895
int allInIntRange;
+#line 895
int canConvert; /* Both text or both numeric */
+#line 895
float value[MAX_NELS];
+#line 895
double expect[MAX_NELS];
+#line 895
int nok = 0; /* count of valid comparisons */
+#line 895
+#line 895
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 895
IF (err)
+#line 895
error("nc_open: %s", nc_strerror(err));
+#line 895
+#line 895
for (i = -1; i < NVARS; i++) {
+#line 895
for (j = 0; j < NATTS(i); j++) {
+#line 895
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 895
err = nc_get_att_float(BAD_ID, i, ATT_NAME(i,j), value);
+#line 895
IF (err != NC_EBADID)
+#line 895
error("bad ncid: status = %d", err);
+#line 895
err = nc_get_att_float(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 895
IF (err != NC_ENOTVAR)
+#line 895
error("bad var id: status = %d", err);
+#line 895
err = nc_get_att_float(ncid, i, "noSuch", value);
+#line 895
IF (err != NC_ENOTATT)
+#line 895
error("Bad attribute name: status = %d", err);
+#line 895
allInExtRange = allInIntRange = 1;
+#line 895
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 895
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_FLOAT);
+#line 895
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_FLOAT)) {
+#line 895
allInIntRange = allInIntRange && expect[k] >= float_min
+#line 895
&& expect[k] <= float_max;
+#line 895
} else {
+#line 895
allInExtRange = 0;
+#line 895
}
+#line 895
}
+#line 895
err = nc_get_att_float(ncid, i, ATT_NAME(i,j), value);
+#line 895
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 895
if (allInExtRange) {
+#line 895
if (allInIntRange) {
+#line 895
IF (err)
+#line 895
error("%s", nc_strerror(err));
+#line 895
} else {
+#line 895
IF (err != NC_ERANGE)
+#line 895
error("Range error: status = %d", err);
+#line 895
}
+#line 895
} else {
+#line 895
IF (err != 0 && err != NC_ERANGE)
+#line 895
error("OK or Range error: status = %d", err);
+#line 895
}
+#line 895
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 895
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_FLOAT)
+#line 895
&& expect[k] >= float_min && expect[k] <= float_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_FLOAT)){
+#line 895
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_FLOAT)){
+#line 895
error("value read not that expected");
+#line 895
if (verbose) {
+#line 895
error("\n");
+#line 895
error("varid: %d, ", i);
+#line 895
error("att_name: %s, ", ATT_NAME(i,j));
+#line 895
error("element number: %d ", k);
+#line 895
error("expect: %g", expect[k]);
+#line 895
error("got: %g", (double) value[k]);
+#line 895
}
+#line 895
} else {
+#line 895
nok++;
+#line 895
}
+#line 895
}
+#line 895
}
+#line 895
} else {
+#line 895
IF (err != NC_ECHAR)
+#line 895
error("wrong type: status = %d", err);
+#line 895
}
+#line 895
}
+#line 895
}
+#line 895
+#line 895
err = nc_close(ncid);
+#line 895
IF (err)
+#line 895
error("nc_close: %s", nc_strerror(err));
+#line 895
print_nok(nok);
+#line 895
}
+#line 895
void
+#line 896
test_nc_get_att_double(void)
+#line 896
{
+#line 896
int ncid;
+#line 896
int i;
+#line 896
int j;
+#line 896
size_t k;
+#line 896
int err;
+#line 896
int allInExtRange;
+#line 896
int allInIntRange;
+#line 896
int canConvert; /* Both text or both numeric */
+#line 896
double value[MAX_NELS];
+#line 896
double expect[MAX_NELS];
+#line 896
int nok = 0; /* count of valid comparisons */
+#line 896
+#line 896
err = nc_open(testfile, NC_NOWRITE, &ncid);
+#line 896
IF (err)
+#line 896
error("nc_open: %s", nc_strerror(err));
+#line 896
+#line 896
for (i = -1; i < NVARS; i++) {
+#line 896
for (j = 0; j < NATTS(i); j++) {
+#line 896
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 896
err = nc_get_att_double(BAD_ID, i, ATT_NAME(i,j), value);
+#line 896
IF (err != NC_EBADID)
+#line 896
error("bad ncid: status = %d", err);
+#line 896
err = nc_get_att_double(ncid, BAD_VARID, ATT_NAME(i,j), value);
+#line 896
IF (err != NC_ENOTVAR)
+#line 896
error("bad var id: status = %d", err);
+#line 896
err = nc_get_att_double(ncid, i, "noSuch", value);
+#line 896
IF (err != NC_ENOTATT)
+#line 896
error("Bad attribute name: status = %d", err);
+#line 896
allInExtRange = allInIntRange = 1;
+#line 896
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 896
expect[k] = hash4(ATT_TYPE(i,j), -1, &k, NCT_DOUBLE);
+#line 896
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_DOUBLE)) {
+#line 896
allInIntRange = allInIntRange && expect[k] >= double_min
+#line 896
&& expect[k] <= double_max;
+#line 896
} else {
+#line 896
allInExtRange = 0;
+#line 896
}
+#line 896
}
+#line 896
err = nc_get_att_double(ncid, i, ATT_NAME(i,j), value);
+#line 896
if (canConvert || ATT_LEN(i,j) == 0) {
+#line 896
if (allInExtRange) {
+#line 896
if (allInIntRange) {
+#line 896
IF (err)
+#line 896
error("%s", nc_strerror(err));
+#line 896
} else {
+#line 896
IF (err != NC_ERANGE)
+#line 896
error("Range error: status = %d", err);
+#line 896
}
+#line 896
} else {
+#line 896
IF (err != 0 && err != NC_ERANGE)
+#line 896
error("OK or Range error: status = %d", err);
+#line 896
}
+#line 896
for (k = 0; k < ATT_LEN(i,j); k++) {
+#line 896
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_DOUBLE)
+#line 896
&& expect[k] >= double_min && expect[k] <= double_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_DOUBLE)){
+#line 896
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_DOUBLE)){
+#line 896
error("value read not that expected");
+#line 896
if (verbose) {
+#line 896
error("\n");
+#line 896
error("varid: %d, ", i);
+#line 896
error("att_name: %s, ", ATT_NAME(i,j));
+#line 896
error("element number: %d ", k);
+#line 896
error("expect: %g", expect[k]);
+#line 896
error("got: %g", (double) value[k]);
+#line 896
}
+#line 896
} else {
+#line 896
nok++;
+#line 896
}
+#line 896
}
+#line 896
}
+#line 896
} else {
+#line 896
IF (err != NC_ECHAR)
+#line 896
error("wrong type: status = %d", err);
+#line 896
}
+#line 896
}
+#line 896
}
+#line 896
+#line 896
err = nc_close(ncid);
+#line 896
IF (err)
+#line 896
error("nc_close: %s", nc_strerror(err));
+#line 896
print_nok(nok);
+#line 896
}
+#line 896
diff --git a/nc_test/test_get.m4 b/nc_test/test_get.m4
index 63e2407..d8b6696 100644
--- a/nc_test/test_get.m4
+++ b/nc_test/test_get.m4
@@ -558,8 +558,7 @@ test_nc_get_vars_$1(void)
for (j = 0; j < nels; j++) {
if (inRange3(expect[j],var_type[i],NCT_ITYPE($1))
&& expect[j] >= $1_min && expect[j] <= $1_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_ITYPE($1))){
+ IF (!equal(value[j],expect[j],var_type[i], NCT_ITYPE($1))){
error("value read not that expected");
if (verbose) {
error("\n");
@@ -757,8 +756,7 @@ test_nc_get_varm_$1(void)
if (inRange3(expect[j],var_type[i],NCT_ITYPE($1))
&& expect[j] >= $1_min
&& expect[j] <= $1_max) {
- IF (!equal(value[j],expect[j],var_type[i],
- NCT_ITYPE($1))){
+ IF (!equal(value[j],expect[j],var_type[i], NCT_ITYPE($1))){
error("value read not that expected");
if (verbose) {
error("\n");
@@ -859,8 +857,7 @@ test_nc_get_att_$1(void)
for (k = 0; k < ATT_LEN(i,j); k++) {
if (inRange3(expect[k],ATT_TYPE(i,j),NCT_ITYPE($1))
&& expect[k] >= $1_min && expect[k] <= $1_max) {
- IF (!equal(value[k],expect[k],ATT_TYPE(i,j),
- NCT_ITYPE($1))){
+ IF (!equal(value[k],expect[k],ATT_TYPE(i,j), NCT_ITYPE($1))){
error("value read not that expected");
if (verbose) {
error("\n");
diff --git a/nc_test/test_put.c b/nc_test/test_put.c
index d24cc12..a40e3be 100644
--- a/nc_test/test_put.c
+++ b/nc_test/test_put.c
@@ -1,6858 +1,13629 @@
+#line 5 "../../nc_test/test_put.m4"
/* Do not edit this file. It is produced from the corresponding .m4 source */
+#line 7
/*********************************************************************
* Copyright 1996, UCAR/Unidata
* See netcdf/COPYRIGHT file for copying and redistribution conditions.
* $Id: test_put.m4,v 1.25 2005/03/08 03:04:19 ed Exp $
*********************************************************************/
+#line 31
#include "tests.h"
+#line 55
/*
+#line 56
* ensure hash value within range for internal TYPE
+#line 56
*/
+#line 56
static
+#line 56
double
+#line 56
hash_text(
+#line 56
const nc_type type,
+#line 56
const int rank,
+#line 56
const size_t *index,
+#line 56
const nct_itype itype)
+#line 56
{
+#line 56
const double min = text_min;
+#line 56
const double max = text_max;
+#line 56
+#line 56
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 56
}
+#line 56
/*
+#line 57
* ensure hash value within range for internal TYPE
+#line 57
*/
+#line 57
static
+#line 57
double
+#line 57
hash_uchar(
+#line 57
const nc_type type,
+#line 57
const int rank,
+#line 57
const size_t *index,
+#line 57
const nct_itype itype)
+#line 57
{
+#line 57
const double min = uchar_min;
+#line 57
const double max = uchar_max;
+#line 57
+#line 57
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 57
}
+#line 57
/*
+#line 58
* ensure hash value within range for internal TYPE
+#line 58
*/
+#line 58
static
+#line 58
double
+#line 58
hash_schar(
+#line 58
const nc_type type,
+#line 58
const int rank,
+#line 58
const size_t *index,
+#line 58
const nct_itype itype)
+#line 58
{
+#line 58
const double min = schar_min;
+#line 58
const double max = schar_max;
+#line 58
+#line 58
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 58
}
+#line 58
/*
+#line 59
* ensure hash value within range for internal TYPE
+#line 59
*/
+#line 59
static
+#line 59
double
+#line 59
hash_short(
+#line 59
const nc_type type,
+#line 59
const int rank,
+#line 59
const size_t *index,
+#line 59
const nct_itype itype)
+#line 59
{
+#line 59
const double min = short_min;
+#line 59
const double max = short_max;
+#line 59
+#line 59
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 59
}
+#line 59
/*
+#line 60
* ensure hash value within range for internal TYPE
+#line 60
*/
+#line 60
static
+#line 60
double
+#line 60
hash_int(
+#line 60
const nc_type type,
+#line 60
const int rank,
+#line 60
const size_t *index,
+#line 60
const nct_itype itype)
+#line 60
{
+#line 60
const double min = int_min;
+#line 60
const double max = int_max;
+#line 60
+#line 60
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 60
}
+#line 60
/*
+#line 61
* ensure hash value within range for internal TYPE
+#line 61
*/
+#line 61
static
+#line 61
double
+#line 61
hash_long(
+#line 61
const nc_type type,
+#line 61
const int rank,
+#line 61
const size_t *index,
+#line 61
const nct_itype itype)
+#line 61
{
+#line 61
const double min = long_min;
+#line 61
const double max = long_max;
+#line 61
+#line 61
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 61
}
+#line 61
/*
+#line 62
* ensure hash value within range for internal TYPE
+#line 62
*/
+#line 62
static
+#line 62
double
+#line 62
hash_float(
+#line 62
const nc_type type,
+#line 62
const int rank,
+#line 62
const size_t *index,
+#line 62
const nct_itype itype)
+#line 62
{
+#line 62
const double min = float_min;
+#line 62
const double max = float_max;
+#line 62
+#line 62
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 62
}
+#line 62
/*
+#line 63
* ensure hash value within range for internal TYPE
+#line 63
*/
+#line 63
static
+#line 63
double
+#line 63
hash_double(
+#line 63
const nc_type type,
+#line 63
const int rank,
+#line 63
const size_t *index,
+#line 63
const nct_itype itype)
+#line 63
{
+#line 63
const double min = double_min;
+#line 63
const double max = double_max;
+#line 63
+#line 63
return MAX(min, MIN(max, hash4( type, rank, index, itype)));
+#line 63
}
+#line 63
+#line 154
/*
+#line 155
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 155
*/
+#line 155
static
+#line 155
void
+#line 155
check_vars_text(const char *filename)
+#line 155
{
+#line 155
int ncid; /* netCDF id */
+#line 155
size_t index[MAX_RANK];
+#line 155
int err; /* status */
+#line 155
int d;
+#line 155
int i;
+#line 155
size_t j;
+#line 155
text value;
+#line 155
nc_type datatype;
+#line 155
int ndims;
+#line 155
int dimids[MAX_RANK];
+#line 155
double expect;
+#line 155
char name[NC_MAX_NAME];
+#line 155
size_t length;
+#line 155
int canConvert; /* Both text or both numeric */
+#line 155
int nok = 0; /* count of valid comparisons */
+#line 155
+#line 155
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 155
IF (err)
+#line 155
error("nc_open: %s", nc_strerror(err));
+#line 155
+#line 155
for (i = 0; i < NVARS; i++) {
+#line 155
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 155
if (canConvert) {
+#line 155
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 155
IF (err)
+#line 155
error("nc_inq_var: %s", nc_strerror(err));
+#line 155
IF (strcmp(name, var_name[i]) != 0)
+#line 155
error("Unexpected var_name");
+#line 155
IF (datatype != var_type[i])
+#line 155
error("Unexpected type");
+#line 155
IF (ndims != var_rank[i])
+#line 155
error("Unexpected rank");
+#line 155
for (j = 0; j < ndims; j++) {
+#line 155
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 155
IF (err)
+#line 155
error("nc_inq_dim: %s", nc_strerror(err));
+#line 155
IF (length != var_shape[i][j])
+#line 155
error("Unexpected shape");
+#line 155
}
+#line 155
for (j = 0; j < var_nels[i]; j++) {
+#line 155
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 155
IF (err)
+#line 155
error("error in toMixedBase 2");
+#line 155
expect = hash4( var_type[i], var_rank[i], index, NCT_TEXT);
+#line 155
err = nc_get_var1_text(ncid, i, index, &value);
+#line 155
if (inRange3(expect,datatype,NCT_TEXT)) {
+#line 155
if (expect >= text_min && expect <= text_max) {
+#line 155
IF (err) {
+#line 155
error("nc_get_var1_text: %s", nc_strerror(err));
+#line 155
} else {
+#line 155
IF (!equal(value,expect,var_type[i],NCT_TEXT)) {
+#line 155
error("Var value read not that expected");
+#line 155
if (verbose) {
+#line 155
error("\n");
+#line 155
error("varid: %d, ", i);
+#line 155
error("var_name: %s, ", var_name[i]);
+#line 155
error("index:");
+#line 155
for (d = 0; d < var_rank[i]; d++)
+#line 155
error(" %d", index[d]);
+#line 155
error(", expect: %g, ", expect);
+#line 155
error("got: %g", (double) value);
+#line 155
}
+#line 155
} else {
+#line 155
++nok;
+#line 155
}
+#line 155
}
+#line 155
}
+#line 155
}
+#line 155
}
+#line 155
}
+#line 155
}
+#line 155
err = nc_close (ncid);
+#line 155
IF (err)
+#line 155
error("nc_close: %s", nc_strerror(err));
+#line 155
print_nok(nok);
+#line 155
}
+#line 155
/*
+#line 156
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 156
*/
+#line 156
static
+#line 156
void
+#line 156
check_vars_uchar(const char *filename)
+#line 156
{
+#line 156
int ncid; /* netCDF id */
+#line 156
size_t index[MAX_RANK];
+#line 156
int err; /* status */
+#line 156
int d;
+#line 156
int i;
+#line 156
size_t j;
+#line 156
uchar value;
+#line 156
nc_type datatype;
+#line 156
int ndims;
+#line 156
int dimids[MAX_RANK];
+#line 156
double expect;
+#line 156
char name[NC_MAX_NAME];
+#line 156
size_t length;
+#line 156
int canConvert; /* Both text or both numeric */
+#line 156
int nok = 0; /* count of valid comparisons */
+#line 156
+#line 156
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 156
IF (err)
+#line 156
error("nc_open: %s", nc_strerror(err));
+#line 156
+#line 156
for (i = 0; i < NVARS; i++) {
+#line 156
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 156
if (canConvert) {
+#line 156
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 156
IF (err)
+#line 156
error("nc_inq_var: %s", nc_strerror(err));
+#line 156
IF (strcmp(name, var_name[i]) != 0)
+#line 156
error("Unexpected var_name");
+#line 156
IF (datatype != var_type[i])
+#line 156
error("Unexpected type");
+#line 156
IF (ndims != var_rank[i])
+#line 156
error("Unexpected rank");
+#line 156
for (j = 0; j < ndims; j++) {
+#line 156
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 156
IF (err)
+#line 156
error("nc_inq_dim: %s", nc_strerror(err));
+#line 156
IF (length != var_shape[i][j])
+#line 156
error("Unexpected shape");
+#line 156
}
+#line 156
for (j = 0; j < var_nels[i]; j++) {
+#line 156
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 156
IF (err)
+#line 156
error("error in toMixedBase 2");
+#line 156
expect = hash4( var_type[i], var_rank[i], index, NCT_UCHAR);
+#line 156
err = nc_get_var1_uchar(ncid, i, index, &value);
+#line 156
if (inRange3(expect,datatype,NCT_UCHAR)) {
+#line 156
if (expect >= uchar_min && expect <= uchar_max) {
+#line 156
IF (err) {
+#line 156
error("nc_get_var1_uchar: %s", nc_strerror(err));
+#line 156
} else {
+#line 156
IF (!equal(value,expect,var_type[i],NCT_UCHAR)) {
+#line 156
error("Var value read not that expected");
+#line 156
if (verbose) {
+#line 156
error("\n");
+#line 156
error("varid: %d, ", i);
+#line 156
error("var_name: %s, ", var_name[i]);
+#line 156
error("index:");
+#line 156
for (d = 0; d < var_rank[i]; d++)
+#line 156
error(" %d", index[d]);
+#line 156
error(", expect: %g, ", expect);
+#line 156
error("got: %g", (double) value);
+#line 156
}
+#line 156
} else {
+#line 156
++nok;
+#line 156
}
+#line 156
}
+#line 156
}
+#line 156
}
+#line 156
}
+#line 156
}
+#line 156
}
+#line 156
err = nc_close (ncid);
+#line 156
IF (err)
+#line 156
error("nc_close: %s", nc_strerror(err));
+#line 156
print_nok(nok);
+#line 156
}
+#line 156
/*
+#line 157
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 157
*/
+#line 157
static
+#line 157
void
+#line 157
check_vars_schar(const char *filename)
+#line 157
{
+#line 157
int ncid; /* netCDF id */
+#line 157
size_t index[MAX_RANK];
+#line 157
int err; /* status */
+#line 157
int d;
+#line 157
int i;
+#line 157
size_t j;
+#line 157
schar value;
+#line 157
nc_type datatype;
+#line 157
int ndims;
+#line 157
int dimids[MAX_RANK];
+#line 157
double expect;
+#line 157
char name[NC_MAX_NAME];
+#line 157
size_t length;
+#line 157
int canConvert; /* Both text or both numeric */
+#line 157
int nok = 0; /* count of valid comparisons */
+#line 157
+#line 157
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 157
IF (err)
+#line 157
error("nc_open: %s", nc_strerror(err));
+#line 157
+#line 157
for (i = 0; i < NVARS; i++) {
+#line 157
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 157
if (canConvert) {
+#line 157
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 157
IF (err)
+#line 157
error("nc_inq_var: %s", nc_strerror(err));
+#line 157
IF (strcmp(name, var_name[i]) != 0)
+#line 157
error("Unexpected var_name");
+#line 157
IF (datatype != var_type[i])
+#line 157
error("Unexpected type");
+#line 157
IF (ndims != var_rank[i])
+#line 157
error("Unexpected rank");
+#line 157
for (j = 0; j < ndims; j++) {
+#line 157
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 157
IF (err)
+#line 157
error("nc_inq_dim: %s", nc_strerror(err));
+#line 157
IF (length != var_shape[i][j])
+#line 157
error("Unexpected shape");
+#line 157
}
+#line 157
for (j = 0; j < var_nels[i]; j++) {
+#line 157
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 157
IF (err)
+#line 157
error("error in toMixedBase 2");
+#line 157
expect = hash4( var_type[i], var_rank[i], index, NCT_SCHAR);
+#line 157
err = nc_get_var1_schar(ncid, i, index, &value);
+#line 157
if (inRange3(expect,datatype,NCT_SCHAR)) {
+#line 157
if (expect >= schar_min && expect <= schar_max) {
+#line 157
IF (err) {
+#line 157
error("nc_get_var1_schar: %s", nc_strerror(err));
+#line 157
} else {
+#line 157
IF (!equal(value,expect,var_type[i],NCT_SCHAR)) {
+#line 157
error("Var value read not that expected");
+#line 157
if (verbose) {
+#line 157
error("\n");
+#line 157
error("varid: %d, ", i);
+#line 157
error("var_name: %s, ", var_name[i]);
+#line 157
error("index:");
+#line 157
for (d = 0; d < var_rank[i]; d++)
+#line 157
error(" %d", index[d]);
+#line 157
error(", expect: %g, ", expect);
+#line 157
error("got: %g", (double) value);
+#line 157
}
+#line 157
} else {
+#line 157
++nok;
+#line 157
}
+#line 157
}
+#line 157
}
+#line 157
}
+#line 157
}
+#line 157
}
+#line 157
}
+#line 157
err = nc_close (ncid);
+#line 157
IF (err)
+#line 157
error("nc_close: %s", nc_strerror(err));
+#line 157
print_nok(nok);
+#line 157
}
+#line 157
/*
+#line 158
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 158
*/
+#line 158
static
+#line 158
void
+#line 158
check_vars_short(const char *filename)
+#line 158
{
+#line 158
int ncid; /* netCDF id */
+#line 158
size_t index[MAX_RANK];
+#line 158
int err; /* status */
+#line 158
int d;
+#line 158
int i;
+#line 158
size_t j;
+#line 158
short value;
+#line 158
nc_type datatype;
+#line 158
int ndims;
+#line 158
int dimids[MAX_RANK];
+#line 158
double expect;
+#line 158
char name[NC_MAX_NAME];
+#line 158
size_t length;
+#line 158
int canConvert; /* Both text or both numeric */
+#line 158
int nok = 0; /* count of valid comparisons */
+#line 158
+#line 158
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 158
IF (err)
+#line 158
error("nc_open: %s", nc_strerror(err));
+#line 158
+#line 158
for (i = 0; i < NVARS; i++) {
+#line 158
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 158
if (canConvert) {
+#line 158
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 158
IF (err)
+#line 158
error("nc_inq_var: %s", nc_strerror(err));
+#line 158
IF (strcmp(name, var_name[i]) != 0)
+#line 158
error("Unexpected var_name");
+#line 158
IF (datatype != var_type[i])
+#line 158
error("Unexpected type");
+#line 158
IF (ndims != var_rank[i])
+#line 158
error("Unexpected rank");
+#line 158
for (j = 0; j < ndims; j++) {
+#line 158
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 158
IF (err)
+#line 158
error("nc_inq_dim: %s", nc_strerror(err));
+#line 158
IF (length != var_shape[i][j])
+#line 158
error("Unexpected shape");
+#line 158
}
+#line 158
for (j = 0; j < var_nels[i]; j++) {
+#line 158
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 158
IF (err)
+#line 158
error("error in toMixedBase 2");
+#line 158
expect = hash4( var_type[i], var_rank[i], index, NCT_SHORT);
+#line 158
err = nc_get_var1_short(ncid, i, index, &value);
+#line 158
if (inRange3(expect,datatype,NCT_SHORT)) {
+#line 158
if (expect >= short_min && expect <= short_max) {
+#line 158
IF (err) {
+#line 158
error("nc_get_var1_short: %s", nc_strerror(err));
+#line 158
} else {
+#line 158
IF (!equal(value,expect,var_type[i],NCT_SHORT)) {
+#line 158
error("Var value read not that expected");
+#line 158
if (verbose) {
+#line 158
error("\n");
+#line 158
error("varid: %d, ", i);
+#line 158
error("var_name: %s, ", var_name[i]);
+#line 158
error("index:");
+#line 158
for (d = 0; d < var_rank[i]; d++)
+#line 158
error(" %d", index[d]);
+#line 158
error(", expect: %g, ", expect);
+#line 158
error("got: %g", (double) value);
+#line 158
}
+#line 158
} else {
+#line 158
++nok;
+#line 158
}
+#line 158
}
+#line 158
}
+#line 158
}
+#line 158
}
+#line 158
}
+#line 158
}
+#line 158
err = nc_close (ncid);
+#line 158
IF (err)
+#line 158
error("nc_close: %s", nc_strerror(err));
+#line 158
print_nok(nok);
+#line 158
}
+#line 158
/*
+#line 159
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 159
*/
+#line 159
static
+#line 159
void
+#line 159
check_vars_int(const char *filename)
+#line 159
{
+#line 159
int ncid; /* netCDF id */
+#line 159
size_t index[MAX_RANK];
+#line 159
int err; /* status */
+#line 159
int d;
+#line 159
int i;
+#line 159
size_t j;
+#line 159
int value;
+#line 159
nc_type datatype;
+#line 159
int ndims;
+#line 159
int dimids[MAX_RANK];
+#line 159
double expect;
+#line 159
char name[NC_MAX_NAME];
+#line 159
size_t length;
+#line 159
int canConvert; /* Both text or both numeric */
+#line 159
int nok = 0; /* count of valid comparisons */
+#line 159
+#line 159
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 159
IF (err)
+#line 159
error("nc_open: %s", nc_strerror(err));
+#line 159
+#line 159
for (i = 0; i < NVARS; i++) {
+#line 159
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 159
if (canConvert) {
+#line 159
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 159
IF (err)
+#line 159
error("nc_inq_var: %s", nc_strerror(err));
+#line 159
IF (strcmp(name, var_name[i]) != 0)
+#line 159
error("Unexpected var_name");
+#line 159
IF (datatype != var_type[i])
+#line 159
error("Unexpected type");
+#line 159
IF (ndims != var_rank[i])
+#line 159
error("Unexpected rank");
+#line 159
for (j = 0; j < ndims; j++) {
+#line 159
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 159
IF (err)
+#line 159
error("nc_inq_dim: %s", nc_strerror(err));
+#line 159
IF (length != var_shape[i][j])
+#line 159
error("Unexpected shape");
+#line 159
}
+#line 159
for (j = 0; j < var_nels[i]; j++) {
+#line 159
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 159
IF (err)
+#line 159
error("error in toMixedBase 2");
+#line 159
expect = hash4( var_type[i], var_rank[i], index, NCT_INT);
+#line 159
err = nc_get_var1_int(ncid, i, index, &value);
+#line 159
if (inRange3(expect,datatype,NCT_INT)) {
+#line 159
if (expect >= int_min && expect <= int_max) {
+#line 159
IF (err) {
+#line 159
error("nc_get_var1_int: %s", nc_strerror(err));
+#line 159
} else {
+#line 159
IF (!equal(value,expect,var_type[i],NCT_INT)) {
+#line 159
error("Var value read not that expected");
+#line 159
if (verbose) {
+#line 159
error("\n");
+#line 159
error("varid: %d, ", i);
+#line 159
error("var_name: %s, ", var_name[i]);
+#line 159
error("index:");
+#line 159
for (d = 0; d < var_rank[i]; d++)
+#line 159
error(" %d", index[d]);
+#line 159
error(", expect: %g, ", expect);
+#line 159
error("got: %g", (double) value);
+#line 159
}
+#line 159
} else {
+#line 159
++nok;
+#line 159
}
+#line 159
}
+#line 159
}
+#line 159
}
+#line 159
}
+#line 159
}
+#line 159
}
+#line 159
err = nc_close (ncid);
+#line 159
IF (err)
+#line 159
error("nc_close: %s", nc_strerror(err));
+#line 159
print_nok(nok);
+#line 159
}
+#line 159
/*
+#line 160
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 160
*/
+#line 160
static
+#line 160
void
+#line 160
check_vars_long(const char *filename)
+#line 160
{
+#line 160
int ncid; /* netCDF id */
+#line 160
size_t index[MAX_RANK];
+#line 160
int err; /* status */
+#line 160
int d;
+#line 160
int i;
+#line 160
size_t j;
+#line 160
long value;
+#line 160
nc_type datatype;
+#line 160
int ndims;
+#line 160
int dimids[MAX_RANK];
+#line 160
double expect;
+#line 160
char name[NC_MAX_NAME];
+#line 160
size_t length;
+#line 160
int canConvert; /* Both text or both numeric */
+#line 160
int nok = 0; /* count of valid comparisons */
+#line 160
+#line 160
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 160
IF (err)
+#line 160
error("nc_open: %s", nc_strerror(err));
+#line 160
+#line 160
for (i = 0; i < NVARS; i++) {
+#line 160
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 160
if (canConvert) {
+#line 160
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 160
IF (err)
+#line 160
error("nc_inq_var: %s", nc_strerror(err));
+#line 160
IF (strcmp(name, var_name[i]) != 0)
+#line 160
error("Unexpected var_name");
+#line 160
IF (datatype != var_type[i])
+#line 160
error("Unexpected type");
+#line 160
IF (ndims != var_rank[i])
+#line 160
error("Unexpected rank");
+#line 160
for (j = 0; j < ndims; j++) {
+#line 160
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 160
IF (err)
+#line 160
error("nc_inq_dim: %s", nc_strerror(err));
+#line 160
IF (length != var_shape[i][j])
+#line 160
error("Unexpected shape");
+#line 160
}
+#line 160
for (j = 0; j < var_nels[i]; j++) {
+#line 160
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 160
IF (err)
+#line 160
error("error in toMixedBase 2");
+#line 160
expect = hash4( var_type[i], var_rank[i], index, NCT_LONG);
+#line 160
err = nc_get_var1_long(ncid, i, index, &value);
+#line 160
if (inRange3(expect,datatype,NCT_LONG)) {
+#line 160
if (expect >= long_min && expect <= long_max) {
+#line 160
IF (err) {
+#line 160
error("nc_get_var1_long: %s", nc_strerror(err));
+#line 160
} else {
+#line 160
IF (!equal(value,expect,var_type[i],NCT_LONG)) {
+#line 160
error("Var value read not that expected");
+#line 160
if (verbose) {
+#line 160
error("\n");
+#line 160
error("varid: %d, ", i);
+#line 160
error("var_name: %s, ", var_name[i]);
+#line 160
error("index:");
+#line 160
for (d = 0; d < var_rank[i]; d++)
+#line 160
error(" %d", index[d]);
+#line 160
error(", expect: %g, ", expect);
+#line 160
error("got: %g", (double) value);
+#line 160
}
+#line 160
} else {
+#line 160
++nok;
+#line 160
}
+#line 160
}
+#line 160
}
+#line 160
}
+#line 160
}
+#line 160
}
+#line 160
}
+#line 160
err = nc_close (ncid);
+#line 160
IF (err)
+#line 160
error("nc_close: %s", nc_strerror(err));
+#line 160
print_nok(nok);
+#line 160
}
+#line 160
/*
+#line 161
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 161
*/
+#line 161
static
+#line 161
void
+#line 161
check_vars_float(const char *filename)
+#line 161
{
+#line 161
int ncid; /* netCDF id */
+#line 161
size_t index[MAX_RANK];
+#line 161
int err; /* status */
+#line 161
int d;
+#line 161
int i;
+#line 161
size_t j;
+#line 161
float value;
+#line 161
nc_type datatype;
+#line 161
int ndims;
+#line 161
int dimids[MAX_RANK];
+#line 161
double expect;
+#line 161
char name[NC_MAX_NAME];
+#line 161
size_t length;
+#line 161
int canConvert; /* Both text or both numeric */
+#line 161
int nok = 0; /* count of valid comparisons */
+#line 161
+#line 161
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 161
IF (err)
+#line 161
error("nc_open: %s", nc_strerror(err));
+#line 161
+#line 161
for (i = 0; i < NVARS; i++) {
+#line 161
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 161
if (canConvert) {
+#line 161
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 161
IF (err)
+#line 161
error("nc_inq_var: %s", nc_strerror(err));
+#line 161
IF (strcmp(name, var_name[i]) != 0)
+#line 161
error("Unexpected var_name");
+#line 161
IF (datatype != var_type[i])
+#line 161
error("Unexpected type");
+#line 161
IF (ndims != var_rank[i])
+#line 161
error("Unexpected rank");
+#line 161
for (j = 0; j < ndims; j++) {
+#line 161
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 161
IF (err)
+#line 161
error("nc_inq_dim: %s", nc_strerror(err));
+#line 161
IF (length != var_shape[i][j])
+#line 161
error("Unexpected shape");
+#line 161
}
+#line 161
for (j = 0; j < var_nels[i]; j++) {
+#line 161
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 161
IF (err)
+#line 161
error("error in toMixedBase 2");
+#line 161
expect = hash4( var_type[i], var_rank[i], index, NCT_FLOAT);
+#line 161
err = nc_get_var1_float(ncid, i, index, &value);
+#line 161
if (inRange3(expect,datatype,NCT_FLOAT)) {
+#line 161
if (expect >= float_min && expect <= float_max) {
+#line 161
IF (err) {
+#line 161
error("nc_get_var1_float: %s", nc_strerror(err));
+#line 161
} else {
+#line 161
IF (!equal(value,expect,var_type[i],NCT_FLOAT)) {
+#line 161
error("Var value read not that expected");
+#line 161
if (verbose) {
+#line 161
error("\n");
+#line 161
error("varid: %d, ", i);
+#line 161
error("var_name: %s, ", var_name[i]);
+#line 161
error("index:");
+#line 161
for (d = 0; d < var_rank[i]; d++)
+#line 161
error(" %d", index[d]);
+#line 161
error(", expect: %g, ", expect);
+#line 161
error("got: %g", (double) value);
+#line 161
}
+#line 161
} else {
+#line 161
++nok;
+#line 161
}
+#line 161
}
+#line 161
}
+#line 161
}
+#line 161
}
+#line 161
}
+#line 161
}
+#line 161
err = nc_close (ncid);
+#line 161
IF (err)
+#line 161
error("nc_close: %s", nc_strerror(err));
+#line 161
print_nok(nok);
+#line 161
}
+#line 161
/*
+#line 162
* check all vars in file which are (text/numeric) compatible with TYPE
+#line 162
*/
+#line 162
static
+#line 162
void
+#line 162
check_vars_double(const char *filename)
+#line 162
{
+#line 162
int ncid; /* netCDF id */
+#line 162
size_t index[MAX_RANK];
+#line 162
int err; /* status */
+#line 162
int d;
+#line 162
int i;
+#line 162
size_t j;
+#line 162
double value;
+#line 162
nc_type datatype;
+#line 162
int ndims;
+#line 162
int dimids[MAX_RANK];
+#line 162
double expect;
+#line 162
char name[NC_MAX_NAME];
+#line 162
size_t length;
+#line 162
int canConvert; /* Both text or both numeric */
+#line 162
int nok = 0; /* count of valid comparisons */
+#line 162
+#line 162
err = nc_open(filename, NC_NOWRITE, &ncid);
+#line 162
IF (err)
+#line 162
error("nc_open: %s", nc_strerror(err));
+#line 162
+#line 162
for (i = 0; i < NVARS; i++) {
+#line 162
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 162
if (canConvert) {
+#line 162
err = nc_inq_var(ncid, i, name, &datatype, &ndims, dimids, NULL);
+#line 162
IF (err)
+#line 162
error("nc_inq_var: %s", nc_strerror(err));
+#line 162
IF (strcmp(name, var_name[i]) != 0)
+#line 162
error("Unexpected var_name");
+#line 162
IF (datatype != var_type[i])
+#line 162
error("Unexpected type");
+#line 162
IF (ndims != var_rank[i])
+#line 162
error("Unexpected rank");
+#line 162
for (j = 0; j < ndims; j++) {
+#line 162
err = nc_inq_dim(ncid, dimids[j], 0, &length);
+#line 162
IF (err)
+#line 162
error("nc_inq_dim: %s", nc_strerror(err));
+#line 162
IF (length != var_shape[i][j])
+#line 162
error("Unexpected shape");
+#line 162
}
+#line 162
for (j = 0; j < var_nels[i]; j++) {
+#line 162
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 162
IF (err)
+#line 162
error("error in toMixedBase 2");
+#line 162
expect = hash4( var_type[i], var_rank[i], index, NCT_DOUBLE);
+#line 162
err = nc_get_var1_double(ncid, i, index, &value);
+#line 162
if (inRange3(expect,datatype,NCT_DOUBLE)) {
+#line 162
if (expect >= double_min && expect <= double_max) {
+#line 162
IF (err) {
+#line 162
error("nc_get_var1_double: %s", nc_strerror(err));
+#line 162
} else {
+#line 162
IF (!equal(value,expect,var_type[i],NCT_DOUBLE)) {
+#line 162
error("Var value read not that expected");
+#line 162
if (verbose) {
+#line 162
error("\n");
+#line 162
error("varid: %d, ", i);
+#line 162
error("var_name: %s, ", var_name[i]);
+#line 162
error("index:");
+#line 162
for (d = 0; d < var_rank[i]; d++)
+#line 162
error(" %d", index[d]);
+#line 162
error(", expect: %g, ", expect);
+#line 162
error("got: %g", (double) value);
+#line 162
}
+#line 162
} else {
+#line 162
++nok;
+#line 162
}
+#line 162
}
+#line 162
}
+#line 162
}
+#line 162
}
+#line 162
}
+#line 162
}
+#line 162
err = nc_close (ncid);
+#line 162
IF (err)
+#line 162
error("nc_close: %s", nc_strerror(err));
+#line 162
print_nok(nok);
+#line 162
}
+#line 162
+#line 244
/*
+#line 245
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 245
* ignore any attributes containing values outside range of TYPE
+#line 245
*/
+#line 245
static
+#line 245
void
+#line 245
check_atts_text(int ncid)
+#line 245
{
+#line 245
int err; /* status */
+#line 245
int i;
+#line 245
int j;
+#line 245
size_t k;
+#line 245
text value[MAX_NELS];
+#line 245
nc_type datatype;
+#line 245
double expect[MAX_NELS];
+#line 245
size_t length;
+#line 245
size_t nInExtRange; /* number values within external range */
+#line 245
size_t nInIntRange; /* number values within internal range */
+#line 245
int canConvert; /* Both text or both numeric */
+#line 245
int nok = 0; /* count of valid comparisons */
+#line 245
+#line 245
for (i = -1; i < NVARS; i++) {
+#line 245
for (j = 0; j < NATTS(i); j++) {
+#line 245
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 245
if (canConvert) {
+#line 245
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 245
IF (err)
+#line 245
error("nc_inq_att: %s", nc_strerror(err));
+#line 245
IF (datatype != ATT_TYPE(i,j))
+#line 245
error("nc_inq_att: unexpected type");
+#line 245
IF (length != ATT_LEN(i,j))
+#line 245
error("nc_inq_att: unexpected length");
+#line 245
assert(length <= MAX_NELS);
+#line 245
nInIntRange = nInExtRange = 0;
+#line 245
for (k = 0; k < length; k++) {
+#line 245
expect[k] = hash4( datatype, -1, &k, NCT_TEXT);
+#line 245
if (inRange3(expect[k], datatype, NCT_TEXT)) {
+#line 245
++nInExtRange;
+#line 245
if (expect[k] >= text_min && expect[k] <= text_max)
+#line 245
++nInIntRange;
+#line 245
}
+#line 245
}
+#line 245
err = nc_get_att_text(ncid, i, ATT_NAME(i,j), value);
+#line 245
if (nInExtRange == length && nInIntRange == length) {
+#line 245
IF (err)
+#line 245
error("%s", nc_strerror(err));
+#line 245
} else {
+#line 245
IF (err != 0 && err != NC_ERANGE)
+#line 245
error("OK or Range error: status = %d", err);
+#line 245
}
+#line 245
for (k = 0; k < length; k++) {
+#line 245
if (inRange3(expect[k],datatype,NCT_TEXT)
+#line 245
&& expect[k] >= text_min && expect[k] <= text_max) {
+#line 245
IF (!equal(value[k],expect[k],datatype,NCT_TEXT)) {
+#line 245
error("att. value read not that expected");
+#line 245
if (verbose) {
+#line 245
error("\n");
+#line 245
error("varid: %d, ", i);
+#line 245
error("att_name: %s, ", ATT_NAME(i,j));
+#line 245
error("element number: %d ", k);
+#line 245
error("expect: %g, ", expect[k]);
+#line 245
error("got: %g", (double) value[k]);
+#line 245
}
+#line 245
} else {
+#line 245
nok++;
+#line 245
}
+#line 245
}
+#line 245
}
+#line 245
}
+#line 245
}
+#line 245
}
+#line 245
+#line 245
print_nok(nok);
+#line 245
}
+#line 245
/*
+#line 246
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 246
* ignore any attributes containing values outside range of TYPE
+#line 246
*/
+#line 246
static
+#line 246
void
+#line 246
check_atts_uchar(int ncid)
+#line 246
{
+#line 246
int err; /* status */
+#line 246
int i;
+#line 246
int j;
+#line 246
size_t k;
+#line 246
uchar value[MAX_NELS];
+#line 246
nc_type datatype;
+#line 246
double expect[MAX_NELS];
+#line 246
size_t length;
+#line 246
size_t nInExtRange; /* number values within external range */
+#line 246
size_t nInIntRange; /* number values within internal range */
+#line 246
int canConvert; /* Both text or both numeric */
+#line 246
int nok = 0; /* count of valid comparisons */
+#line 246
+#line 246
for (i = -1; i < NVARS; i++) {
+#line 246
for (j = 0; j < NATTS(i); j++) {
+#line 246
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 246
if (canConvert) {
+#line 246
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 246
IF (err)
+#line 246
error("nc_inq_att: %s", nc_strerror(err));
+#line 246
IF (datatype != ATT_TYPE(i,j))
+#line 246
error("nc_inq_att: unexpected type");
+#line 246
IF (length != ATT_LEN(i,j))
+#line 246
error("nc_inq_att: unexpected length");
+#line 246
assert(length <= MAX_NELS);
+#line 246
nInIntRange = nInExtRange = 0;
+#line 246
for (k = 0; k < length; k++) {
+#line 246
expect[k] = hash4( datatype, -1, &k, NCT_UCHAR);
+#line 246
if (inRange3(expect[k], datatype, NCT_UCHAR)) {
+#line 246
++nInExtRange;
+#line 246
if (expect[k] >= uchar_min && expect[k] <= uchar_max)
+#line 246
++nInIntRange;
+#line 246
}
+#line 246
}
+#line 246
err = nc_get_att_uchar(ncid, i, ATT_NAME(i,j), value);
+#line 246
if (nInExtRange == length && nInIntRange == length) {
+#line 246
IF (err)
+#line 246
error("%s", nc_strerror(err));
+#line 246
} else {
+#line 246
IF (err != 0 && err != NC_ERANGE)
+#line 246
error("OK or Range error: status = %d", err);
+#line 246
}
+#line 246
for (k = 0; k < length; k++) {
+#line 246
if (inRange3(expect[k],datatype,NCT_UCHAR)
+#line 246
&& expect[k] >= uchar_min && expect[k] <= uchar_max) {
+#line 246
IF (!equal(value[k],expect[k],datatype,NCT_UCHAR)) {
+#line 246
error("att. value read not that expected");
+#line 246
if (verbose) {
+#line 246
error("\n");
+#line 246
error("varid: %d, ", i);
+#line 246
error("att_name: %s, ", ATT_NAME(i,j));
+#line 246
error("element number: %d ", k);
+#line 246
error("expect: %g, ", expect[k]);
+#line 246
error("got: %g", (double) value[k]);
+#line 246
}
+#line 246
} else {
+#line 246
nok++;
+#line 246
}
+#line 246
}
+#line 246
}
+#line 246
}
+#line 246
}
+#line 246
}
+#line 246
+#line 246
print_nok(nok);
+#line 246
}
+#line 246
/*
+#line 247
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 247
* ignore any attributes containing values outside range of TYPE
+#line 247
*/
+#line 247
static
+#line 247
void
+#line 247
check_atts_schar(int ncid)
+#line 247
{
+#line 247
int err; /* status */
+#line 247
int i;
+#line 247
int j;
+#line 247
size_t k;
+#line 247
schar value[MAX_NELS];
+#line 247
nc_type datatype;
+#line 247
double expect[MAX_NELS];
+#line 247
size_t length;
+#line 247
size_t nInExtRange; /* number values within external range */
+#line 247
size_t nInIntRange; /* number values within internal range */
+#line 247
int canConvert; /* Both text or both numeric */
+#line 247
int nok = 0; /* count of valid comparisons */
+#line 247
+#line 247
for (i = -1; i < NVARS; i++) {
+#line 247
for (j = 0; j < NATTS(i); j++) {
+#line 247
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 247
if (canConvert) {
+#line 247
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 247
IF (err)
+#line 247
error("nc_inq_att: %s", nc_strerror(err));
+#line 247
IF (datatype != ATT_TYPE(i,j))
+#line 247
error("nc_inq_att: unexpected type");
+#line 247
IF (length != ATT_LEN(i,j))
+#line 247
error("nc_inq_att: unexpected length");
+#line 247
assert(length <= MAX_NELS);
+#line 247
nInIntRange = nInExtRange = 0;
+#line 247
for (k = 0; k < length; k++) {
+#line 247
expect[k] = hash4( datatype, -1, &k, NCT_SCHAR);
+#line 247
if (inRange3(expect[k], datatype, NCT_SCHAR)) {
+#line 247
++nInExtRange;
+#line 247
if (expect[k] >= schar_min && expect[k] <= schar_max)
+#line 247
++nInIntRange;
+#line 247
}
+#line 247
}
+#line 247
err = nc_get_att_schar(ncid, i, ATT_NAME(i,j), value);
+#line 247
if (nInExtRange == length && nInIntRange == length) {
+#line 247
IF (err)
+#line 247
error("%s", nc_strerror(err));
+#line 247
} else {
+#line 247
IF (err != 0 && err != NC_ERANGE)
+#line 247
error("OK or Range error: status = %d", err);
+#line 247
}
+#line 247
for (k = 0; k < length; k++) {
+#line 247
if (inRange3(expect[k],datatype,NCT_SCHAR)
+#line 247
&& expect[k] >= schar_min && expect[k] <= schar_max) {
+#line 247
IF (!equal(value[k],expect[k],datatype,NCT_SCHAR)) {
+#line 247
error("att. value read not that expected");
+#line 247
if (verbose) {
+#line 247
error("\n");
+#line 247
error("varid: %d, ", i);
+#line 247
error("att_name: %s, ", ATT_NAME(i,j));
+#line 247
error("element number: %d ", k);
+#line 247
error("expect: %g, ", expect[k]);
+#line 247
error("got: %g", (double) value[k]);
+#line 247
}
+#line 247
} else {
+#line 247
nok++;
+#line 247
}
+#line 247
}
+#line 247
}
+#line 247
}
+#line 247
}
+#line 247
}
+#line 247
+#line 247
print_nok(nok);
+#line 247
}
+#line 247
/*
+#line 248
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 248
* ignore any attributes containing values outside range of TYPE
+#line 248
*/
+#line 248
static
+#line 248
void
+#line 248
check_atts_short(int ncid)
+#line 248
{
+#line 248
int err; /* status */
+#line 248
int i;
+#line 248
int j;
+#line 248
size_t k;
+#line 248
short value[MAX_NELS];
+#line 248
nc_type datatype;
+#line 248
double expect[MAX_NELS];
+#line 248
size_t length;
+#line 248
size_t nInExtRange; /* number values within external range */
+#line 248
size_t nInIntRange; /* number values within internal range */
+#line 248
int canConvert; /* Both text or both numeric */
+#line 248
int nok = 0; /* count of valid comparisons */
+#line 248
+#line 248
for (i = -1; i < NVARS; i++) {
+#line 248
for (j = 0; j < NATTS(i); j++) {
+#line 248
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 248
if (canConvert) {
+#line 248
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 248
IF (err)
+#line 248
error("nc_inq_att: %s", nc_strerror(err));
+#line 248
IF (datatype != ATT_TYPE(i,j))
+#line 248
error("nc_inq_att: unexpected type");
+#line 248
IF (length != ATT_LEN(i,j))
+#line 248
error("nc_inq_att: unexpected length");
+#line 248
assert(length <= MAX_NELS);
+#line 248
nInIntRange = nInExtRange = 0;
+#line 248
for (k = 0; k < length; k++) {
+#line 248
expect[k] = hash4( datatype, -1, &k, NCT_SHORT);
+#line 248
if (inRange3(expect[k], datatype, NCT_SHORT)) {
+#line 248
++nInExtRange;
+#line 248
if (expect[k] >= short_min && expect[k] <= short_max)
+#line 248
++nInIntRange;
+#line 248
}
+#line 248
}
+#line 248
err = nc_get_att_short(ncid, i, ATT_NAME(i,j), value);
+#line 248
if (nInExtRange == length && nInIntRange == length) {
+#line 248
IF (err)
+#line 248
error("%s", nc_strerror(err));
+#line 248
} else {
+#line 248
IF (err != 0 && err != NC_ERANGE)
+#line 248
error("OK or Range error: status = %d", err);
+#line 248
}
+#line 248
for (k = 0; k < length; k++) {
+#line 248
if (inRange3(expect[k],datatype,NCT_SHORT)
+#line 248
&& expect[k] >= short_min && expect[k] <= short_max) {
+#line 248
IF (!equal(value[k],expect[k],datatype,NCT_SHORT)) {
+#line 248
error("att. value read not that expected");
+#line 248
if (verbose) {
+#line 248
error("\n");
+#line 248
error("varid: %d, ", i);
+#line 248
error("att_name: %s, ", ATT_NAME(i,j));
+#line 248
error("element number: %d ", k);
+#line 248
error("expect: %g, ", expect[k]);
+#line 248
error("got: %g", (double) value[k]);
+#line 248
}
+#line 248
} else {
+#line 248
nok++;
+#line 248
}
+#line 248
}
+#line 248
}
+#line 248
}
+#line 248
}
+#line 248
}
+#line 248
+#line 248
print_nok(nok);
+#line 248
}
+#line 248
/*
+#line 249
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 249
* ignore any attributes containing values outside range of TYPE
+#line 249
*/
+#line 249
static
+#line 249
void
+#line 249
check_atts_int(int ncid)
+#line 249
{
+#line 249
int err; /* status */
+#line 249
int i;
+#line 249
int j;
+#line 249
size_t k;
+#line 249
int value[MAX_NELS];
+#line 249
nc_type datatype;
+#line 249
double expect[MAX_NELS];
+#line 249
size_t length;
+#line 249
size_t nInExtRange; /* number values within external range */
+#line 249
size_t nInIntRange; /* number values within internal range */
+#line 249
int canConvert; /* Both text or both numeric */
+#line 249
int nok = 0; /* count of valid comparisons */
+#line 249
+#line 249
for (i = -1; i < NVARS; i++) {
+#line 249
for (j = 0; j < NATTS(i); j++) {
+#line 249
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 249
if (canConvert) {
+#line 249
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 249
IF (err)
+#line 249
error("nc_inq_att: %s", nc_strerror(err));
+#line 249
IF (datatype != ATT_TYPE(i,j))
+#line 249
error("nc_inq_att: unexpected type");
+#line 249
IF (length != ATT_LEN(i,j))
+#line 249
error("nc_inq_att: unexpected length");
+#line 249
assert(length <= MAX_NELS);
+#line 249
nInIntRange = nInExtRange = 0;
+#line 249
for (k = 0; k < length; k++) {
+#line 249
expect[k] = hash4( datatype, -1, &k, NCT_INT);
+#line 249
if (inRange3(expect[k], datatype, NCT_INT)) {
+#line 249
++nInExtRange;
+#line 249
if (expect[k] >= int_min && expect[k] <= int_max)
+#line 249
++nInIntRange;
+#line 249
}
+#line 249
}
+#line 249
err = nc_get_att_int(ncid, i, ATT_NAME(i,j), value);
+#line 249
if (nInExtRange == length && nInIntRange == length) {
+#line 249
IF (err)
+#line 249
error("%s", nc_strerror(err));
+#line 249
} else {
+#line 249
IF (err != 0 && err != NC_ERANGE)
+#line 249
error("OK or Range error: status = %d", err);
+#line 249
}
+#line 249
for (k = 0; k < length; k++) {
+#line 249
if (inRange3(expect[k],datatype,NCT_INT)
+#line 249
&& expect[k] >= int_min && expect[k] <= int_max) {
+#line 249
IF (!equal(value[k],expect[k],datatype,NCT_INT)) {
+#line 249
error("att. value read not that expected");
+#line 249
if (verbose) {
+#line 249
error("\n");
+#line 249
error("varid: %d, ", i);
+#line 249
error("att_name: %s, ", ATT_NAME(i,j));
+#line 249
error("element number: %d ", k);
+#line 249
error("expect: %g, ", expect[k]);
+#line 249
error("got: %g", (double) value[k]);
+#line 249
}
+#line 249
} else {
+#line 249
nok++;
+#line 249
}
+#line 249
}
+#line 249
}
+#line 249
}
+#line 249
}
+#line 249
}
+#line 249
+#line 249
print_nok(nok);
+#line 249
}
+#line 249
/*
+#line 250
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 250
* ignore any attributes containing values outside range of TYPE
+#line 250
*/
+#line 250
static
+#line 250
void
+#line 250
check_atts_long(int ncid)
+#line 250
{
+#line 250
int err; /* status */
+#line 250
int i;
+#line 250
int j;
+#line 250
size_t k;
+#line 250
long value[MAX_NELS];
+#line 250
nc_type datatype;
+#line 250
double expect[MAX_NELS];
+#line 250
size_t length;
+#line 250
size_t nInExtRange; /* number values within external range */
+#line 250
size_t nInIntRange; /* number values within internal range */
+#line 250
int canConvert; /* Both text or both numeric */
+#line 250
int nok = 0; /* count of valid comparisons */
+#line 250
+#line 250
for (i = -1; i < NVARS; i++) {
+#line 250
for (j = 0; j < NATTS(i); j++) {
+#line 250
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 250
if (canConvert) {
+#line 250
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 250
IF (err)
+#line 250
error("nc_inq_att: %s", nc_strerror(err));
+#line 250
IF (datatype != ATT_TYPE(i,j))
+#line 250
error("nc_inq_att: unexpected type");
+#line 250
IF (length != ATT_LEN(i,j))
+#line 250
error("nc_inq_att: unexpected length");
+#line 250
assert(length <= MAX_NELS);
+#line 250
nInIntRange = nInExtRange = 0;
+#line 250
for (k = 0; k < length; k++) {
+#line 250
expect[k] = hash4( datatype, -1, &k, NCT_LONG);
+#line 250
if (inRange3(expect[k], datatype, NCT_LONG)) {
+#line 250
++nInExtRange;
+#line 250
if (expect[k] >= long_min && expect[k] <= long_max)
+#line 250
++nInIntRange;
+#line 250
}
+#line 250
}
+#line 250
err = nc_get_att_long(ncid, i, ATT_NAME(i,j), value);
+#line 250
if (nInExtRange == length && nInIntRange == length) {
+#line 250
IF (err)
+#line 250
error("%s", nc_strerror(err));
+#line 250
} else {
+#line 250
IF (err != 0 && err != NC_ERANGE)
+#line 250
error("OK or Range error: status = %d", err);
+#line 250
}
+#line 250
for (k = 0; k < length; k++) {
+#line 250
if (inRange3(expect[k],datatype,NCT_LONG)
+#line 250
&& expect[k] >= long_min && expect[k] <= long_max) {
+#line 250
IF (!equal(value[k],expect[k],datatype,NCT_LONG)) {
+#line 250
error("att. value read not that expected");
+#line 250
if (verbose) {
+#line 250
error("\n");
+#line 250
error("varid: %d, ", i);
+#line 250
error("att_name: %s, ", ATT_NAME(i,j));
+#line 250
error("element number: %d ", k);
+#line 250
error("expect: %g, ", expect[k]);
+#line 250
error("got: %g", (double) value[k]);
+#line 250
}
+#line 250
} else {
+#line 250
nok++;
+#line 250
}
+#line 250
}
+#line 250
}
+#line 250
}
+#line 250
}
+#line 250
}
+#line 250
+#line 250
print_nok(nok);
+#line 250
}
+#line 250
/*
+#line 251
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 251
* ignore any attributes containing values outside range of TYPE
+#line 251
*/
+#line 251
static
+#line 251
void
+#line 251
check_atts_float(int ncid)
+#line 251
{
+#line 251
int err; /* status */
+#line 251
int i;
+#line 251
int j;
+#line 251
size_t k;
+#line 251
float value[MAX_NELS];
+#line 251
nc_type datatype;
+#line 251
double expect[MAX_NELS];
+#line 251
size_t length;
+#line 251
size_t nInExtRange; /* number values within external range */
+#line 251
size_t nInIntRange; /* number values within internal range */
+#line 251
int canConvert; /* Both text or both numeric */
+#line 251
int nok = 0; /* count of valid comparisons */
+#line 251
+#line 251
for (i = -1; i < NVARS; i++) {
+#line 251
for (j = 0; j < NATTS(i); j++) {
+#line 251
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 251
if (canConvert) {
+#line 251
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 251
IF (err)
+#line 251
error("nc_inq_att: %s", nc_strerror(err));
+#line 251
IF (datatype != ATT_TYPE(i,j))
+#line 251
error("nc_inq_att: unexpected type");
+#line 251
IF (length != ATT_LEN(i,j))
+#line 251
error("nc_inq_att: unexpected length");
+#line 251
assert(length <= MAX_NELS);
+#line 251
nInIntRange = nInExtRange = 0;
+#line 251
for (k = 0; k < length; k++) {
+#line 251
expect[k] = hash4( datatype, -1, &k, NCT_FLOAT);
+#line 251
if (inRange3(expect[k], datatype, NCT_FLOAT)) {
+#line 251
++nInExtRange;
+#line 251
if (expect[k] >= float_min && expect[k] <= float_max)
+#line 251
++nInIntRange;
+#line 251
}
+#line 251
}
+#line 251
err = nc_get_att_float(ncid, i, ATT_NAME(i,j), value);
+#line 251
if (nInExtRange == length && nInIntRange == length) {
+#line 251
IF (err)
+#line 251
error("%s", nc_strerror(err));
+#line 251
} else {
+#line 251
IF (err != 0 && err != NC_ERANGE)
+#line 251
error("OK or Range error: status = %d", err);
+#line 251
}
+#line 251
for (k = 0; k < length; k++) {
+#line 251
if (inRange3(expect[k],datatype,NCT_FLOAT)
+#line 251
&& expect[k] >= float_min && expect[k] <= float_max) {
+#line 251
IF (!equal(value[k],expect[k],datatype,NCT_FLOAT)) {
+#line 251
error("att. value read not that expected");
+#line 251
if (verbose) {
+#line 251
error("\n");
+#line 251
error("varid: %d, ", i);
+#line 251
error("att_name: %s, ", ATT_NAME(i,j));
+#line 251
error("element number: %d ", k);
+#line 251
error("expect: %g, ", expect[k]);
+#line 251
error("got: %g", (double) value[k]);
+#line 251
}
+#line 251
} else {
+#line 251
nok++;
+#line 251
}
+#line 251
}
+#line 251
}
+#line 251
}
+#line 251
}
+#line 251
}
+#line 251
+#line 251
print_nok(nok);
+#line 251
}
+#line 251
/*
+#line 252
* check all attributes in file which are (text/numeric) compatible with TYPE
+#line 252
* ignore any attributes containing values outside range of TYPE
+#line 252
*/
+#line 252
static
+#line 252
void
+#line 252
check_atts_double(int ncid)
+#line 252
{
+#line 252
int err; /* status */
+#line 252
int i;
+#line 252
int j;
+#line 252
size_t k;
+#line 252
double value[MAX_NELS];
+#line 252
nc_type datatype;
+#line 252
double expect[MAX_NELS];
+#line 252
size_t length;
+#line 252
size_t nInExtRange; /* number values within external range */
+#line 252
size_t nInIntRange; /* number values within internal range */
+#line 252
int canConvert; /* Both text or both numeric */
+#line 252
int nok = 0; /* count of valid comparisons */
+#line 252
+#line 252
for (i = -1; i < NVARS; i++) {
+#line 252
for (j = 0; j < NATTS(i); j++) {
+#line 252
canConvert = (ATT_TYPE(i,j) == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 252
if (canConvert) {
+#line 252
err = nc_inq_att(ncid, i, ATT_NAME(i,j), &datatype, &length);
+#line 252
IF (err)
+#line 252
error("nc_inq_att: %s", nc_strerror(err));
+#line 252
IF (datatype != ATT_TYPE(i,j))
+#line 252
error("nc_inq_att: unexpected type");
+#line 252
IF (length != ATT_LEN(i,j))
+#line 252
error("nc_inq_att: unexpected length");
+#line 252
assert(length <= MAX_NELS);
+#line 252
nInIntRange = nInExtRange = 0;
+#line 252
for (k = 0; k < length; k++) {
+#line 252
expect[k] = hash4( datatype, -1, &k, NCT_DOUBLE);
+#line 252
if (inRange3(expect[k], datatype, NCT_DOUBLE)) {
+#line 252
++nInExtRange;
+#line 252
if (expect[k] >= double_min && expect[k] <= double_max)
+#line 252
++nInIntRange;
+#line 252
}
+#line 252
}
+#line 252
err = nc_get_att_double(ncid, i, ATT_NAME(i,j), value);
+#line 252
if (nInExtRange == length && nInIntRange == length) {
+#line 252
IF (err)
+#line 252
error("%s", nc_strerror(err));
+#line 252
} else {
+#line 252
IF (err != 0 && err != NC_ERANGE)
+#line 252
error("OK or Range error: status = %d", err);
+#line 252
}
+#line 252
for (k = 0; k < length; k++) {
+#line 252
if (inRange3(expect[k],datatype,NCT_DOUBLE)
+#line 252
&& expect[k] >= double_min && expect[k] <= double_max) {
+#line 252
IF (!equal(value[k],expect[k],datatype,NCT_DOUBLE)) {
+#line 252
error("att. value read not that expected");
+#line 252
if (verbose) {
+#line 252
error("\n");
+#line 252
error("varid: %d, ", i);
+#line 252
error("att_name: %s, ", ATT_NAME(i,j));
+#line 252
error("element number: %d ", k);
+#line 252
error("expect: %g, ", expect[k]);
+#line 252
error("got: %g", (double) value[k]);
+#line 252
}
+#line 252
} else {
+#line 252
nok++;
+#line 252
}
+#line 252
}
+#line 252
}
+#line 252
}
+#line 252
}
+#line 252
}
+#line 252
+#line 252
print_nok(nok);
+#line 252
}
+#line 252
+#line 339
void
+#line 340
test_nc_put_var1_text(void)
+#line 340
{
+#line 340
int ncid;
+#line 340
int i;
+#line 340
int j;
+#line 340
int err;
+#line 340
size_t index[MAX_RANK];
+#line 340
int canConvert; /* Both text or both numeric */
+#line 340
text value = 5; /* any value would do - only for error cases */
+#line 340
+#line 340
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 340
IF (err) {
+#line 340
error("nc_create: %s", nc_strerror(err));
+#line 340
return;
+#line 340
}
+#line 340
def_dims(ncid);
+#line 340
def_vars(ncid);
+#line 340
err = nc_enddef(ncid);
+#line 340
IF (err)
+#line 340
error("nc_enddef: %s", nc_strerror(err));
+#line 340
+#line 340
for (i = 0; i < NVARS; i++) {
+#line 340
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 340
for (j = 0; j < var_rank[i]; j++)
+#line 340
index[j] = 0;
+#line 340
err = nc_put_var1_text(BAD_ID, i, index, &value);
+#line 340
IF (err != NC_EBADID)
+#line 340
error("bad ncid: status = %d", err);
+#line 340
err = nc_put_var1_text(ncid, BAD_VARID, index, &value);
+#line 340
IF (err != NC_ENOTVAR)
+#line 340
error("bad var id: status = %d", err);
+#line 340
for (j = 0; j < var_rank[i]; j++) {
+#line 340
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 340
index[j] = var_shape[i][j];
+#line 340
err = nc_put_var1_text(ncid, i, index, &value);
+#line 340
IF (canConvert && err != NC_EINVALCOORDS)
+#line 340
error("bad index: status = %d", err);
+#line 340
index[j] = 0;
+#line 340
}
+#line 340
}
+#line 340
for (j = 0; j < var_nels[i]; j++) {
+#line 340
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 340
IF (err)
+#line 340
error("error in toMixedBase 1");
+#line 340
value = hash_text( var_type[i], var_rank[i], index, NCT_TEXT);
+#line 340
if (var_rank[i] == 0 && i%2 == 0)
+#line 340
err = nc_put_var1_text(ncid, i, NULL, &value);
+#line 340
else
+#line 340
err = nc_put_var1_text(ncid, i, index, &value);
+#line 340
if (canConvert) {
+#line 340
if (inRange3(value, var_type[i],NCT_TEXT)) {
+#line 340
IF (err)
+#line 340
error("%s", nc_strerror(err));
+#line 340
} else {
+#line 340
IF (err != NC_ERANGE) {
+#line 340
error("Range error: status = %d", err);
+#line 340
error("\n\t\tfor type %s value %.17e %ld",
+#line 340
s_nc_type(var_type[i]),
+#line 340
(double)value, (long)value);
+#line 340
}
+#line 340
}
+#line 340
} else {
+#line 340
IF (err != NC_ECHAR)
+#line 340
error("wrong type: status = %d", err);
+#line 340
}
+#line 340
}
+#line 340
}
+#line 340
+#line 340
err = nc_close(ncid);
+#line 340
IF (err)
+#line 340
error("nc_close: %s", nc_strerror(err));
+#line 340
+#line 340
check_vars_text(scratch);
+#line 340
+#line 340
err = remove(scratch);
+#line 340
IF (err)
+#line 340
error("remove of %s failed", scratch);
+#line 340
}
+#line 340
void
+#line 341
test_nc_put_var1_uchar(void)
+#line 341
{
+#line 341
int ncid;
+#line 341
int i;
+#line 341
int j;
+#line 341
int err;
+#line 341
size_t index[MAX_RANK];
+#line 341
int canConvert; /* Both text or both numeric */
+#line 341
uchar value = 5; /* any value would do - only for error cases */
+#line 341
+#line 341
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 341
IF (err) {
+#line 341
error("nc_create: %s", nc_strerror(err));
+#line 341
return;
+#line 341
}
+#line 341
def_dims(ncid);
+#line 341
def_vars(ncid);
+#line 341
err = nc_enddef(ncid);
+#line 341
IF (err)
+#line 341
error("nc_enddef: %s", nc_strerror(err));
+#line 341
+#line 341
for (i = 0; i < NVARS; i++) {
+#line 341
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 341
for (j = 0; j < var_rank[i]; j++)
+#line 341
index[j] = 0;
+#line 341
err = nc_put_var1_uchar(BAD_ID, i, index, &value);
+#line 341
IF (err != NC_EBADID)
+#line 341
error("bad ncid: status = %d", err);
+#line 341
err = nc_put_var1_uchar(ncid, BAD_VARID, index, &value);
+#line 341
IF (err != NC_ENOTVAR)
+#line 341
error("bad var id: status = %d", err);
+#line 341
for (j = 0; j < var_rank[i]; j++) {
+#line 341
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 341
index[j] = var_shape[i][j];
+#line 341
err = nc_put_var1_uchar(ncid, i, index, &value);
+#line 341
IF (canConvert && err != NC_EINVALCOORDS)
+#line 341
error("bad index: status = %d", err);
+#line 341
index[j] = 0;
+#line 341
}
+#line 341
}
+#line 341
for (j = 0; j < var_nels[i]; j++) {
+#line 341
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 341
IF (err)
+#line 341
error("error in toMixedBase 1");
+#line 341
value = hash_uchar( var_type[i], var_rank[i], index, NCT_UCHAR);
+#line 341
if (var_rank[i] == 0 && i%2 == 0)
+#line 341
err = nc_put_var1_uchar(ncid, i, NULL, &value);
+#line 341
else
+#line 341
err = nc_put_var1_uchar(ncid, i, index, &value);
+#line 341
if (canConvert) {
+#line 341
if (inRange3(value, var_type[i],NCT_UCHAR)) {
+#line 341
IF (err)
+#line 341
error("%s", nc_strerror(err));
+#line 341
} else {
+#line 341
IF (err != NC_ERANGE) {
+#line 341
error("Range error: status = %d", err);
+#line 341
error("\n\t\tfor type %s value %.17e %ld",
+#line 341
s_nc_type(var_type[i]),
+#line 341
(double)value, (long)value);
+#line 341
}
+#line 341
}
+#line 341
} else {
+#line 341
IF (err != NC_ECHAR)
+#line 341
error("wrong type: status = %d", err);
+#line 341
}
+#line 341
}
+#line 341
}
+#line 341
+#line 341
err = nc_close(ncid);
+#line 341
IF (err)
+#line 341
error("nc_close: %s", nc_strerror(err));
+#line 341
+#line 341
check_vars_uchar(scratch);
+#line 341
+#line 341
err = remove(scratch);
+#line 341
IF (err)
+#line 341
error("remove of %s failed", scratch);
+#line 341
}
+#line 341
void
+#line 342
test_nc_put_var1_schar(void)
+#line 342
{
+#line 342
int ncid;
+#line 342
int i;
+#line 342
int j;
+#line 342
int err;
+#line 342
size_t index[MAX_RANK];
+#line 342
int canConvert; /* Both text or both numeric */
+#line 342
schar value = 5; /* any value would do - only for error cases */
+#line 342
+#line 342
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 342
IF (err) {
+#line 342
error("nc_create: %s", nc_strerror(err));
+#line 342
return;
+#line 342
}
+#line 342
def_dims(ncid);
+#line 342
def_vars(ncid);
+#line 342
err = nc_enddef(ncid);
+#line 342
IF (err)
+#line 342
error("nc_enddef: %s", nc_strerror(err));
+#line 342
+#line 342
for (i = 0; i < NVARS; i++) {
+#line 342
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 342
for (j = 0; j < var_rank[i]; j++)
+#line 342
index[j] = 0;
+#line 342
err = nc_put_var1_schar(BAD_ID, i, index, &value);
+#line 342
IF (err != NC_EBADID)
+#line 342
error("bad ncid: status = %d", err);
+#line 342
err = nc_put_var1_schar(ncid, BAD_VARID, index, &value);
+#line 342
IF (err != NC_ENOTVAR)
+#line 342
error("bad var id: status = %d", err);
+#line 342
for (j = 0; j < var_rank[i]; j++) {
+#line 342
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 342
index[j] = var_shape[i][j];
+#line 342
err = nc_put_var1_schar(ncid, i, index, &value);
+#line 342
IF (canConvert && err != NC_EINVALCOORDS)
+#line 342
error("bad index: status = %d", err);
+#line 342
index[j] = 0;
+#line 342
}
+#line 342
}
+#line 342
for (j = 0; j < var_nels[i]; j++) {
+#line 342
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 342
IF (err)
+#line 342
error("error in toMixedBase 1");
+#line 342
value = hash_schar( var_type[i], var_rank[i], index, NCT_SCHAR);
+#line 342
if (var_rank[i] == 0 && i%2 == 0)
+#line 342
err = nc_put_var1_schar(ncid, i, NULL, &value);
+#line 342
else
+#line 342
err = nc_put_var1_schar(ncid, i, index, &value);
+#line 342
if (canConvert) {
+#line 342
if (inRange3(value, var_type[i],NCT_SCHAR)) {
+#line 342
IF (err)
+#line 342
error("%s", nc_strerror(err));
+#line 342
} else {
+#line 342
IF (err != NC_ERANGE) {
+#line 342
error("Range error: status = %d", err);
+#line 342
error("\n\t\tfor type %s value %.17e %ld",
+#line 342
s_nc_type(var_type[i]),
+#line 342
(double)value, (long)value);
+#line 342
}
+#line 342
}
+#line 342
} else {
+#line 342
IF (err != NC_ECHAR)
+#line 342
error("wrong type: status = %d", err);
+#line 342
}
+#line 342
}
+#line 342
}
+#line 342
+#line 342
err = nc_close(ncid);
+#line 342
IF (err)
+#line 342
error("nc_close: %s", nc_strerror(err));
+#line 342
+#line 342
check_vars_schar(scratch);
+#line 342
+#line 342
err = remove(scratch);
+#line 342
IF (err)
+#line 342
error("remove of %s failed", scratch);
+#line 342
}
+#line 342
void
+#line 343
test_nc_put_var1_short(void)
+#line 343
{
+#line 343
int ncid;
+#line 343
int i;
+#line 343
int j;
+#line 343
int err;
+#line 343
size_t index[MAX_RANK];
+#line 343
int canConvert; /* Both text or both numeric */
+#line 343
short value = 5; /* any value would do - only for error cases */
+#line 343
+#line 343
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 343
IF (err) {
+#line 343
error("nc_create: %s", nc_strerror(err));
+#line 343
return;
+#line 343
}
+#line 343
def_dims(ncid);
+#line 343
def_vars(ncid);
+#line 343
err = nc_enddef(ncid);
+#line 343
IF (err)
+#line 343
error("nc_enddef: %s", nc_strerror(err));
+#line 343
+#line 343
for (i = 0; i < NVARS; i++) {
+#line 343
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 343
for (j = 0; j < var_rank[i]; j++)
+#line 343
index[j] = 0;
+#line 343
err = nc_put_var1_short(BAD_ID, i, index, &value);
+#line 343
IF (err != NC_EBADID)
+#line 343
error("bad ncid: status = %d", err);
+#line 343
err = nc_put_var1_short(ncid, BAD_VARID, index, &value);
+#line 343
IF (err != NC_ENOTVAR)
+#line 343
error("bad var id: status = %d", err);
+#line 343
for (j = 0; j < var_rank[i]; j++) {
+#line 343
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 343
index[j] = var_shape[i][j];
+#line 343
err = nc_put_var1_short(ncid, i, index, &value);
+#line 343
IF (canConvert && err != NC_EINVALCOORDS)
+#line 343
error("bad index: status = %d", err);
+#line 343
index[j] = 0;
+#line 343
}
+#line 343
}
+#line 343
for (j = 0; j < var_nels[i]; j++) {
+#line 343
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 343
IF (err)
+#line 343
error("error in toMixedBase 1");
+#line 343
value = hash_short( var_type[i], var_rank[i], index, NCT_SHORT);
+#line 343
if (var_rank[i] == 0 && i%2 == 0)
+#line 343
err = nc_put_var1_short(ncid, i, NULL, &value);
+#line 343
else
+#line 343
err = nc_put_var1_short(ncid, i, index, &value);
+#line 343
if (canConvert) {
+#line 343
if (inRange3(value, var_type[i],NCT_SHORT)) {
+#line 343
IF (err)
+#line 343
error("%s", nc_strerror(err));
+#line 343
} else {
+#line 343
IF (err != NC_ERANGE) {
+#line 343
error("Range error: status = %d", err);
+#line 343
error("\n\t\tfor type %s value %.17e %ld",
+#line 343
s_nc_type(var_type[i]),
+#line 343
(double)value, (long)value);
+#line 343
}
+#line 343
}
+#line 343
} else {
+#line 343
IF (err != NC_ECHAR)
+#line 343
error("wrong type: status = %d", err);
+#line 343
}
+#line 343
}
+#line 343
}
+#line 343
+#line 343
err = nc_close(ncid);
+#line 343
IF (err)
+#line 343
error("nc_close: %s", nc_strerror(err));
+#line 343
+#line 343
check_vars_short(scratch);
+#line 343
+#line 343
err = remove(scratch);
+#line 343
IF (err)
+#line 343
error("remove of %s failed", scratch);
+#line 343
}
+#line 343
void
+#line 344
test_nc_put_var1_int(void)
+#line 344
{
+#line 344
int ncid;
+#line 344
int i;
+#line 344
int j;
+#line 344
int err;
+#line 344
size_t index[MAX_RANK];
+#line 344
int canConvert; /* Both text or both numeric */
+#line 344
int value = 5; /* any value would do - only for error cases */
+#line 344
+#line 344
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 344
IF (err) {
+#line 344
error("nc_create: %s", nc_strerror(err));
+#line 344
return;
+#line 344
}
+#line 344
def_dims(ncid);
+#line 344
def_vars(ncid);
+#line 344
err = nc_enddef(ncid);
+#line 344
IF (err)
+#line 344
error("nc_enddef: %s", nc_strerror(err));
+#line 344
+#line 344
for (i = 0; i < NVARS; i++) {
+#line 344
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 344
for (j = 0; j < var_rank[i]; j++)
+#line 344
index[j] = 0;
+#line 344
err = nc_put_var1_int(BAD_ID, i, index, &value);
+#line 344
IF (err != NC_EBADID)
+#line 344
error("bad ncid: status = %d", err);
+#line 344
err = nc_put_var1_int(ncid, BAD_VARID, index, &value);
+#line 344
IF (err != NC_ENOTVAR)
+#line 344
error("bad var id: status = %d", err);
+#line 344
for (j = 0; j < var_rank[i]; j++) {
+#line 344
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 344
index[j] = var_shape[i][j];
+#line 344
err = nc_put_var1_int(ncid, i, index, &value);
+#line 344
IF (canConvert && err != NC_EINVALCOORDS)
+#line 344
error("bad index: status = %d", err);
+#line 344
index[j] = 0;
+#line 344
}
+#line 344
}
+#line 344
for (j = 0; j < var_nels[i]; j++) {
+#line 344
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 344
IF (err)
+#line 344
error("error in toMixedBase 1");
+#line 344
value = hash_int( var_type[i], var_rank[i], index, NCT_INT);
+#line 344
if (var_rank[i] == 0 && i%2 == 0)
+#line 344
err = nc_put_var1_int(ncid, i, NULL, &value);
+#line 344
else
+#line 344
err = nc_put_var1_int(ncid, i, index, &value);
+#line 344
if (canConvert) {
+#line 344
if (inRange3(value, var_type[i],NCT_INT)) {
+#line 344
IF (err)
+#line 344
error("%s", nc_strerror(err));
+#line 344
} else {
+#line 344
IF (err != NC_ERANGE) {
+#line 344
error("Range error: status = %d", err);
+#line 344
error("\n\t\tfor type %s value %.17e %ld",
+#line 344
s_nc_type(var_type[i]),
+#line 344
(double)value, (long)value);
+#line 344
}
+#line 344
}
+#line 344
} else {
+#line 344
IF (err != NC_ECHAR)
+#line 344
error("wrong type: status = %d", err);
+#line 344
}
+#line 344
}
+#line 344
}
+#line 344
+#line 344
err = nc_close(ncid);
+#line 344
IF (err)
+#line 344
error("nc_close: %s", nc_strerror(err));
+#line 344
+#line 344
check_vars_int(scratch);
+#line 344
+#line 344
err = remove(scratch);
+#line 344
IF (err)
+#line 344
error("remove of %s failed", scratch);
+#line 344
}
+#line 344
void
+#line 345
test_nc_put_var1_long(void)
+#line 345
{
+#line 345
int ncid;
+#line 345
int i;
+#line 345
int j;
+#line 345
int err;
+#line 345
size_t index[MAX_RANK];
+#line 345
int canConvert; /* Both text or both numeric */
+#line 345
long value = 5; /* any value would do - only for error cases */
+#line 345
+#line 345
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 345
IF (err) {
+#line 345
error("nc_create: %s", nc_strerror(err));
+#line 345
return;
+#line 345
}
+#line 345
def_dims(ncid);
+#line 345
def_vars(ncid);
+#line 345
err = nc_enddef(ncid);
+#line 345
IF (err)
+#line 345
error("nc_enddef: %s", nc_strerror(err));
+#line 345
+#line 345
for (i = 0; i < NVARS; i++) {
+#line 345
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 345
for (j = 0; j < var_rank[i]; j++)
+#line 345
index[j] = 0;
+#line 345
err = nc_put_var1_long(BAD_ID, i, index, &value);
+#line 345
IF (err != NC_EBADID)
+#line 345
error("bad ncid: status = %d", err);
+#line 345
err = nc_put_var1_long(ncid, BAD_VARID, index, &value);
+#line 345
IF (err != NC_ENOTVAR)
+#line 345
error("bad var id: status = %d", err);
+#line 345
for (j = 0; j < var_rank[i]; j++) {
+#line 345
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 345
index[j] = var_shape[i][j];
+#line 345
err = nc_put_var1_long(ncid, i, index, &value);
+#line 345
IF (canConvert && err != NC_EINVALCOORDS)
+#line 345
error("bad index: status = %d", err);
+#line 345
index[j] = 0;
+#line 345
}
+#line 345
}
+#line 345
for (j = 0; j < var_nels[i]; j++) {
+#line 345
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 345
IF (err)
+#line 345
error("error in toMixedBase 1");
+#line 345
value = hash_long( var_type[i], var_rank[i], index, NCT_LONG);
+#line 345
if (var_rank[i] == 0 && i%2 == 0)
+#line 345
err = nc_put_var1_long(ncid, i, NULL, &value);
+#line 345
else
+#line 345
err = nc_put_var1_long(ncid, i, index, &value);
+#line 345
if (canConvert) {
+#line 345
if (inRange3(value, var_type[i],NCT_LONG)) {
+#line 345
IF (err)
+#line 345
error("%s", nc_strerror(err));
+#line 345
} else {
+#line 345
IF (err != NC_ERANGE) {
+#line 345
error("Range error: status = %d", err);
+#line 345
error("\n\t\tfor type %s value %.17e %ld",
+#line 345
s_nc_type(var_type[i]),
+#line 345
(double)value, (long)value);
+#line 345
}
+#line 345
}
+#line 345
} else {
+#line 345
IF (err != NC_ECHAR)
+#line 345
error("wrong type: status = %d", err);
+#line 345
}
+#line 345
}
+#line 345
}
+#line 345
+#line 345
err = nc_close(ncid);
+#line 345
IF (err)
+#line 345
error("nc_close: %s", nc_strerror(err));
+#line 345
+#line 345
check_vars_long(scratch);
+#line 345
+#line 345
err = remove(scratch);
+#line 345
IF (err)
+#line 345
error("remove of %s failed", scratch);
+#line 345
}
+#line 345
void
+#line 346
test_nc_put_var1_float(void)
+#line 346
{
+#line 346
int ncid;
+#line 346
int i;
+#line 346
int j;
+#line 346
int err;
+#line 346
size_t index[MAX_RANK];
+#line 346
int canConvert; /* Both text or both numeric */
+#line 346
float value = 5; /* any value would do - only for error cases */
+#line 346
+#line 346
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 346
IF (err) {
+#line 346
error("nc_create: %s", nc_strerror(err));
+#line 346
return;
+#line 346
}
+#line 346
def_dims(ncid);
+#line 346
def_vars(ncid);
+#line 346
err = nc_enddef(ncid);
+#line 346
IF (err)
+#line 346
error("nc_enddef: %s", nc_strerror(err));
+#line 346
+#line 346
for (i = 0; i < NVARS; i++) {
+#line 346
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 346
for (j = 0; j < var_rank[i]; j++)
+#line 346
index[j] = 0;
+#line 346
err = nc_put_var1_float(BAD_ID, i, index, &value);
+#line 346
IF (err != NC_EBADID)
+#line 346
error("bad ncid: status = %d", err);
+#line 346
err = nc_put_var1_float(ncid, BAD_VARID, index, &value);
+#line 346
IF (err != NC_ENOTVAR)
+#line 346
error("bad var id: status = %d", err);
+#line 346
for (j = 0; j < var_rank[i]; j++) {
+#line 346
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 346
index[j] = var_shape[i][j];
+#line 346
err = nc_put_var1_float(ncid, i, index, &value);
+#line 346
IF (canConvert && err != NC_EINVALCOORDS)
+#line 346
error("bad index: status = %d", err);
+#line 346
index[j] = 0;
+#line 346
}
+#line 346
}
+#line 346
for (j = 0; j < var_nels[i]; j++) {
+#line 346
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 346
IF (err)
+#line 346
error("error in toMixedBase 1");
+#line 346
value = hash_float( var_type[i], var_rank[i], index, NCT_FLOAT);
+#line 346
if (var_rank[i] == 0 && i%2 == 0)
+#line 346
err = nc_put_var1_float(ncid, i, NULL, &value);
+#line 346
else
+#line 346
err = nc_put_var1_float(ncid, i, index, &value);
+#line 346
if (canConvert) {
+#line 346
if (inRange3(value, var_type[i],NCT_FLOAT)) {
+#line 346
IF (err)
+#line 346
error("%s", nc_strerror(err));
+#line 346
} else {
+#line 346
IF (err != NC_ERANGE) {
+#line 346
error("Range error: status = %d", err);
+#line 346
error("\n\t\tfor type %s value %.17e %ld",
+#line 346
s_nc_type(var_type[i]),
+#line 346
(double)value, (long)value);
+#line 346
}
+#line 346
}
+#line 346
} else {
+#line 346
IF (err != NC_ECHAR)
+#line 346
error("wrong type: status = %d", err);
+#line 346
}
+#line 346
}
+#line 346
}
+#line 346
+#line 346
err = nc_close(ncid);
+#line 346
IF (err)
+#line 346
error("nc_close: %s", nc_strerror(err));
+#line 346
+#line 346
check_vars_float(scratch);
+#line 346
+#line 346
err = remove(scratch);
+#line 346
IF (err)
+#line 346
error("remove of %s failed", scratch);
+#line 346
}
+#line 346
void
+#line 347
test_nc_put_var1_double(void)
+#line 347
{
+#line 347
int ncid;
+#line 347
int i;
+#line 347
int j;
+#line 347
int err;
+#line 347
size_t index[MAX_RANK];
+#line 347
int canConvert; /* Both text or both numeric */
+#line 347
double value = 5; /* any value would do - only for error cases */
+#line 347
+#line 347
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 347
IF (err) {
+#line 347
error("nc_create: %s", nc_strerror(err));
+#line 347
return;
+#line 347
}
+#line 347
def_dims(ncid);
+#line 347
def_vars(ncid);
+#line 347
err = nc_enddef(ncid);
+#line 347
IF (err)
+#line 347
error("nc_enddef: %s", nc_strerror(err));
+#line 347
+#line 347
for (i = 0; i < NVARS; i++) {
+#line 347
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 347
for (j = 0; j < var_rank[i]; j++)
+#line 347
index[j] = 0;
+#line 347
err = nc_put_var1_double(BAD_ID, i, index, &value);
+#line 347
IF (err != NC_EBADID)
+#line 347
error("bad ncid: status = %d", err);
+#line 347
err = nc_put_var1_double(ncid, BAD_VARID, index, &value);
+#line 347
IF (err != NC_ENOTVAR)
+#line 347
error("bad var id: status = %d", err);
+#line 347
for (j = 0; j < var_rank[i]; j++) {
+#line 347
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 347
index[j] = var_shape[i][j];
+#line 347
err = nc_put_var1_double(ncid, i, index, &value);
+#line 347
IF (canConvert && err != NC_EINVALCOORDS)
+#line 347
error("bad index: status = %d", err);
+#line 347
index[j] = 0;
+#line 347
}
+#line 347
}
+#line 347
for (j = 0; j < var_nels[i]; j++) {
+#line 347
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 347
IF (err)
+#line 347
error("error in toMixedBase 1");
+#line 347
value = hash_double( var_type[i], var_rank[i], index, NCT_DOUBLE);
+#line 347
if (var_rank[i] == 0 && i%2 == 0)
+#line 347
err = nc_put_var1_double(ncid, i, NULL, &value);
+#line 347
else
+#line 347
err = nc_put_var1_double(ncid, i, index, &value);
+#line 347
if (canConvert) {
+#line 347
if (inRange3(value, var_type[i],NCT_DOUBLE)) {
+#line 347
IF (err)
+#line 347
error("%s", nc_strerror(err));
+#line 347
} else {
+#line 347
IF (err != NC_ERANGE) {
+#line 347
error("Range error: status = %d", err);
+#line 347
error("\n\t\tfor type %s value %.17e %ld",
+#line 347
s_nc_type(var_type[i]),
+#line 347
(double)value, (long)value);
+#line 347
}
+#line 347
}
+#line 347
} else {
+#line 347
IF (err != NC_ECHAR)
+#line 347
error("wrong type: status = %d", err);
+#line 347
}
+#line 347
}
+#line 347
}
+#line 347
+#line 347
err = nc_close(ncid);
+#line 347
IF (err)
+#line 347
error("nc_close: %s", nc_strerror(err));
+#line 347
+#line 347
check_vars_double(scratch);
+#line 347
+#line 347
err = remove(scratch);
+#line 347
IF (err)
+#line 347
error("remove of %s failed", scratch);
+#line 347
}
+#line 347
+#line 477
void
+#line 478
test_nc_put_var_text(void)
+#line 478
{
+#line 478
int ncid;
+#line 478
int varid;
+#line 478
int i;
+#line 478
int j;
+#line 478
int err;
+#line 478
int nels;
+#line 478
size_t index[MAX_RANK];
+#line 478
int canConvert; /* Both text or both numeric */
+#line 478
int allInExtRange; /* all values within external range? */
+#line 478
text value[MAX_NELS];
+#line 478
+#line 478
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 478
IF (err) {
+#line 478
error("nc_create: %s", nc_strerror(err));
+#line 478
return;
+#line 478
}
+#line 478
def_dims(ncid);
+#line 478
def_vars(ncid);
+#line 478
err = nc_enddef(ncid);
+#line 478
IF (err)
+#line 478
error("nc_enddef: %s", nc_strerror(err));
+#line 478
+#line 478
for (i = 0; i < NVARS; i++) {
+#line 478
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 478
assert(var_rank[i] <= MAX_RANK);
+#line 478
assert(var_nels[i] <= MAX_NELS);
+#line 478
err = nc_put_var_text(BAD_ID, i, value);
+#line 478
IF (err != NC_EBADID)
+#line 478
error("bad ncid: status = %d", err);
+#line 478
err = nc_put_var_text(ncid, BAD_VARID, value);
+#line 478
IF (err != NC_ENOTVAR)
+#line 478
error("bad var id: status = %d", err);
+#line 478
+#line 478
nels = 1;
+#line 478
for (j = 0; j < var_rank[i]; j++) {
+#line 478
nels *= var_shape[i][j];
+#line 478
}
+#line 478
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 478
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 478
IF (err)
+#line 478
error("error in toMixedBase 1");
+#line 478
value[j]= hash_text(var_type[i], var_rank[i], index, NCT_TEXT);
+#line 478
allInExtRange = allInExtRange
+#line 478
&& inRange3(value[j], var_type[i], NCT_TEXT);
+#line 478
}
+#line 478
err = nc_put_var_text(ncid, i, value);
+#line 478
if (canConvert) {
+#line 478
if (allInExtRange) {
+#line 478
IF (err)
+#line 478
error("%s", nc_strerror(err));
+#line 478
} else {
+#line 478
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 478
error("range error: status = %d", err);
+#line 478
}
+#line 478
} else { /* should flag wrong type even if nothing to write */
+#line 478
IF (nels > 0 && err != NC_ECHAR)
+#line 478
error("wrong type: status = %d", err);
+#line 478
}
+#line 478
}
+#line 478
+#line 478
/* Preceeding has written nothing for record variables, now try */
+#line 478
/* again with more than 0 records */
+#line 478
+#line 478
/* Write record number NRECS to force writing of preceding records */
+#line 478
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 478
err = nc_inq_varid(ncid, "cr", &varid);
+#line 478
IF (err)
+#line 478
error("nc_inq_varid: %s", nc_strerror(err));
+#line 478
index[0] = NRECS-1;
+#line 478
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 478
IF (err)
+#line 478
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 478
+#line 478
for (i = 0; i < NVARS; i++) {
+#line 478
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 478
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 478
assert(var_rank[i] <= MAX_RANK);
+#line 478
assert(var_nels[i] <= MAX_NELS);
+#line 478
err = nc_put_var_text(BAD_ID, i, value);
+#line 478
IF (err != NC_EBADID)
+#line 478
error("bad ncid: status = %d", err);
+#line 478
nels = 1;
+#line 478
for (j = 0; j < var_rank[i]; j++) {
+#line 478
nels *= var_shape[i][j];
+#line 478
}
+#line 478
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 478
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 478
IF (err)
+#line 478
error("error in toMixedBase 1");
+#line 478
value[j]= hash_text(var_type[i], var_rank[i], index, NCT_TEXT);
+#line 478
allInExtRange = allInExtRange
+#line 478
&& inRange3(value[j], var_type[i], NCT_TEXT);
+#line 478
}
+#line 478
err = nc_put_var_text(ncid, i, value);
+#line 478
if (canConvert) {
+#line 478
if (allInExtRange) {
+#line 478
IF (err)
+#line 478
error("%s", nc_strerror(err));
+#line 478
} else {
+#line 478
IF (err != NC_ERANGE)
+#line 478
error("range error: status = %d", err);
+#line 478
}
+#line 478
} else {
+#line 478
IF (nels > 0 && err != NC_ECHAR)
+#line 478
error("wrong type: status = %d", err);
+#line 478
}
+#line 478
}
+#line 478
}
+#line 478
+#line 478
err = nc_close(ncid);
+#line 478
IF (err)
+#line 478
error("nc_close: %s", nc_strerror(err));
+#line 478
+#line 478
check_vars_text(scratch);
+#line 478
+#line 478
err = remove(scratch);
+#line 478
IF (err)
+#line 478
error("remove of %s failed", scratch);
+#line 478
}
+#line 478
void
+#line 479
test_nc_put_var_uchar(void)
+#line 479
{
+#line 479
int ncid;
+#line 479
int varid;
+#line 479
int i;
+#line 479
int j;
+#line 479
int err;
+#line 479
int nels;
+#line 479
size_t index[MAX_RANK];
+#line 479
int canConvert; /* Both text or both numeric */
+#line 479
int allInExtRange; /* all values within external range? */
+#line 479
uchar value[MAX_NELS];
+#line 479
+#line 479
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 479
IF (err) {
+#line 479
error("nc_create: %s", nc_strerror(err));
+#line 479
return;
+#line 479
}
+#line 479
def_dims(ncid);
+#line 479
def_vars(ncid);
+#line 479
err = nc_enddef(ncid);
+#line 479
IF (err)
+#line 479
error("nc_enddef: %s", nc_strerror(err));
+#line 479
+#line 479
for (i = 0; i < NVARS; i++) {
+#line 479
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 479
assert(var_rank[i] <= MAX_RANK);
+#line 479
assert(var_nels[i] <= MAX_NELS);
+#line 479
err = nc_put_var_uchar(BAD_ID, i, value);
+#line 479
IF (err != NC_EBADID)
+#line 479
error("bad ncid: status = %d", err);
+#line 479
err = nc_put_var_uchar(ncid, BAD_VARID, value);
+#line 479
IF (err != NC_ENOTVAR)
+#line 479
error("bad var id: status = %d", err);
+#line 479
+#line 479
nels = 1;
+#line 479
for (j = 0; j < var_rank[i]; j++) {
+#line 479
nels *= var_shape[i][j];
+#line 479
}
+#line 479
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 479
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 479
IF (err)
+#line 479
error("error in toMixedBase 1");
+#line 479
value[j]= hash_uchar(var_type[i], var_rank[i], index, NCT_UCHAR);
+#line 479
allInExtRange = allInExtRange
+#line 479
&& inRange3(value[j], var_type[i], NCT_UCHAR);
+#line 479
}
+#line 479
err = nc_put_var_uchar(ncid, i, value);
+#line 479
if (canConvert) {
+#line 479
if (allInExtRange) {
+#line 479
IF (err)
+#line 479
error("%s", nc_strerror(err));
+#line 479
} else {
+#line 479
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 479
error("range error: status = %d", err);
+#line 479
}
+#line 479
} else { /* should flag wrong type even if nothing to write */
+#line 479
IF (nels > 0 && err != NC_ECHAR)
+#line 479
error("wrong type: status = %d", err);
+#line 479
}
+#line 479
}
+#line 479
+#line 479
/* Preceeding has written nothing for record variables, now try */
+#line 479
/* again with more than 0 records */
+#line 479
+#line 479
/* Write record number NRECS to force writing of preceding records */
+#line 479
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 479
err = nc_inq_varid(ncid, "cr", &varid);
+#line 479
IF (err)
+#line 479
error("nc_inq_varid: %s", nc_strerror(err));
+#line 479
index[0] = NRECS-1;
+#line 479
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 479
IF (err)
+#line 479
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 479
+#line 479
for (i = 0; i < NVARS; i++) {
+#line 479
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 479
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 479
assert(var_rank[i] <= MAX_RANK);
+#line 479
assert(var_nels[i] <= MAX_NELS);
+#line 479
err = nc_put_var_uchar(BAD_ID, i, value);
+#line 479
IF (err != NC_EBADID)
+#line 479
error("bad ncid: status = %d", err);
+#line 479
nels = 1;
+#line 479
for (j = 0; j < var_rank[i]; j++) {
+#line 479
nels *= var_shape[i][j];
+#line 479
}
+#line 479
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 479
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 479
IF (err)
+#line 479
error("error in toMixedBase 1");
+#line 479
value[j]= hash_uchar(var_type[i], var_rank[i], index, NCT_UCHAR);
+#line 479
allInExtRange = allInExtRange
+#line 479
&& inRange3(value[j], var_type[i], NCT_UCHAR);
+#line 479
}
+#line 479
err = nc_put_var_uchar(ncid, i, value);
+#line 479
if (canConvert) {
+#line 479
if (allInExtRange) {
+#line 479
IF (err)
+#line 479
error("%s", nc_strerror(err));
+#line 479
} else {
+#line 479
IF (err != NC_ERANGE)
+#line 479
error("range error: status = %d", err);
+#line 479
}
+#line 479
} else {
+#line 479
IF (nels > 0 && err != NC_ECHAR)
+#line 479
error("wrong type: status = %d", err);
+#line 479
}
+#line 479
}
+#line 479
}
+#line 479
+#line 479
err = nc_close(ncid);
+#line 479
IF (err)
+#line 479
error("nc_close: %s", nc_strerror(err));
+#line 479
+#line 479
check_vars_uchar(scratch);
+#line 479
+#line 479
err = remove(scratch);
+#line 479
IF (err)
+#line 479
error("remove of %s failed", scratch);
+#line 479
}
+#line 479
void
+#line 480
test_nc_put_var_schar(void)
+#line 480
{
+#line 480
int ncid;
+#line 480
int varid;
+#line 480
int i;
+#line 480
int j;
+#line 480
int err;
+#line 480
int nels;
+#line 480
size_t index[MAX_RANK];
+#line 480
int canConvert; /* Both text or both numeric */
+#line 480
int allInExtRange; /* all values within external range? */
+#line 480
schar value[MAX_NELS];
+#line 480
+#line 480
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 480
IF (err) {
+#line 480
error("nc_create: %s", nc_strerror(err));
+#line 480
return;
+#line 480
}
+#line 480
def_dims(ncid);
+#line 480
def_vars(ncid);
+#line 480
err = nc_enddef(ncid);
+#line 480
IF (err)
+#line 480
error("nc_enddef: %s", nc_strerror(err));
+#line 480
+#line 480
for (i = 0; i < NVARS; i++) {
+#line 480
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 480
assert(var_rank[i] <= MAX_RANK);
+#line 480
assert(var_nels[i] <= MAX_NELS);
+#line 480
err = nc_put_var_schar(BAD_ID, i, value);
+#line 480
IF (err != NC_EBADID)
+#line 480
error("bad ncid: status = %d", err);
+#line 480
err = nc_put_var_schar(ncid, BAD_VARID, value);
+#line 480
IF (err != NC_ENOTVAR)
+#line 480
error("bad var id: status = %d", err);
+#line 480
+#line 480
nels = 1;
+#line 480
for (j = 0; j < var_rank[i]; j++) {
+#line 480
nels *= var_shape[i][j];
+#line 480
}
+#line 480
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 480
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 480
IF (err)
+#line 480
error("error in toMixedBase 1");
+#line 480
value[j]= hash_schar(var_type[i], var_rank[i], index, NCT_SCHAR);
+#line 480
allInExtRange = allInExtRange
+#line 480
&& inRange3(value[j], var_type[i], NCT_SCHAR);
+#line 480
}
+#line 480
err = nc_put_var_schar(ncid, i, value);
+#line 480
if (canConvert) {
+#line 480
if (allInExtRange) {
+#line 480
IF (err)
+#line 480
error("%s", nc_strerror(err));
+#line 480
} else {
+#line 480
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 480
error("range error: status = %d", err);
+#line 480
}
+#line 480
} else { /* should flag wrong type even if nothing to write */
+#line 480
IF (nels > 0 && err != NC_ECHAR)
+#line 480
error("wrong type: status = %d", err);
+#line 480
}
+#line 480
}
+#line 480
+#line 480
/* Preceeding has written nothing for record variables, now try */
+#line 480
/* again with more than 0 records */
+#line 480
+#line 480
/* Write record number NRECS to force writing of preceding records */
+#line 480
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 480
err = nc_inq_varid(ncid, "cr", &varid);
+#line 480
IF (err)
+#line 480
error("nc_inq_varid: %s", nc_strerror(err));
+#line 480
index[0] = NRECS-1;
+#line 480
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 480
IF (err)
+#line 480
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 480
+#line 480
for (i = 0; i < NVARS; i++) {
+#line 480
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 480
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 480
assert(var_rank[i] <= MAX_RANK);
+#line 480
assert(var_nels[i] <= MAX_NELS);
+#line 480
err = nc_put_var_schar(BAD_ID, i, value);
+#line 480
IF (err != NC_EBADID)
+#line 480
error("bad ncid: status = %d", err);
+#line 480
nels = 1;
+#line 480
for (j = 0; j < var_rank[i]; j++) {
+#line 480
nels *= var_shape[i][j];
+#line 480
}
+#line 480
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 480
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 480
IF (err)
+#line 480
error("error in toMixedBase 1");
+#line 480
value[j]= hash_schar(var_type[i], var_rank[i], index, NCT_SCHAR);
+#line 480
allInExtRange = allInExtRange
+#line 480
&& inRange3(value[j], var_type[i], NCT_SCHAR);
+#line 480
}
+#line 480
err = nc_put_var_schar(ncid, i, value);
+#line 480
if (canConvert) {
+#line 480
if (allInExtRange) {
+#line 480
IF (err)
+#line 480
error("%s", nc_strerror(err));
+#line 480
} else {
+#line 480
IF (err != NC_ERANGE)
+#line 480
error("range error: status = %d", err);
+#line 480
}
+#line 480
} else {
+#line 480
IF (nels > 0 && err != NC_ECHAR)
+#line 480
error("wrong type: status = %d", err);
+#line 480
}
+#line 480
}
+#line 480
}
+#line 480
+#line 480
err = nc_close(ncid);
+#line 480
IF (err)
+#line 480
error("nc_close: %s", nc_strerror(err));
+#line 480
+#line 480
check_vars_schar(scratch);
+#line 480
+#line 480
err = remove(scratch);
+#line 480
IF (err)
+#line 480
error("remove of %s failed", scratch);
+#line 480
}
+#line 480
void
+#line 481
test_nc_put_var_short(void)
+#line 481
{
+#line 481
int ncid;
+#line 481
int varid;
+#line 481
int i;
+#line 481
int j;
+#line 481
int err;
+#line 481
int nels;
+#line 481
size_t index[MAX_RANK];
+#line 481
int canConvert; /* Both text or both numeric */
+#line 481
int allInExtRange; /* all values within external range? */
+#line 481
short value[MAX_NELS];
+#line 481
+#line 481
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 481
IF (err) {
+#line 481
error("nc_create: %s", nc_strerror(err));
+#line 481
return;
+#line 481
}
+#line 481
def_dims(ncid);
+#line 481
def_vars(ncid);
+#line 481
err = nc_enddef(ncid);
+#line 481
IF (err)
+#line 481
error("nc_enddef: %s", nc_strerror(err));
+#line 481
+#line 481
for (i = 0; i < NVARS; i++) {
+#line 481
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 481
assert(var_rank[i] <= MAX_RANK);
+#line 481
assert(var_nels[i] <= MAX_NELS);
+#line 481
err = nc_put_var_short(BAD_ID, i, value);
+#line 481
IF (err != NC_EBADID)
+#line 481
error("bad ncid: status = %d", err);
+#line 481
err = nc_put_var_short(ncid, BAD_VARID, value);
+#line 481
IF (err != NC_ENOTVAR)
+#line 481
error("bad var id: status = %d", err);
+#line 481
+#line 481
nels = 1;
+#line 481
for (j = 0; j < var_rank[i]; j++) {
+#line 481
nels *= var_shape[i][j];
+#line 481
}
+#line 481
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 481
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 481
IF (err)
+#line 481
error("error in toMixedBase 1");
+#line 481
value[j]= hash_short(var_type[i], var_rank[i], index, NCT_SHORT);
+#line 481
allInExtRange = allInExtRange
+#line 481
&& inRange3(value[j], var_type[i], NCT_SHORT);
+#line 481
}
+#line 481
err = nc_put_var_short(ncid, i, value);
+#line 481
if (canConvert) {
+#line 481
if (allInExtRange) {
+#line 481
IF (err)
+#line 481
error("%s", nc_strerror(err));
+#line 481
} else {
+#line 481
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 481
error("range error: status = %d", err);
+#line 481
}
+#line 481
} else { /* should flag wrong type even if nothing to write */
+#line 481
IF (nels > 0 && err != NC_ECHAR)
+#line 481
error("wrong type: status = %d", err);
+#line 481
}
+#line 481
}
+#line 481
+#line 481
/* Preceeding has written nothing for record variables, now try */
+#line 481
/* again with more than 0 records */
+#line 481
+#line 481
/* Write record number NRECS to force writing of preceding records */
+#line 481
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 481
err = nc_inq_varid(ncid, "cr", &varid);
+#line 481
IF (err)
+#line 481
error("nc_inq_varid: %s", nc_strerror(err));
+#line 481
index[0] = NRECS-1;
+#line 481
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 481
IF (err)
+#line 481
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 481
+#line 481
for (i = 0; i < NVARS; i++) {
+#line 481
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 481
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 481
assert(var_rank[i] <= MAX_RANK);
+#line 481
assert(var_nels[i] <= MAX_NELS);
+#line 481
err = nc_put_var_short(BAD_ID, i, value);
+#line 481
IF (err != NC_EBADID)
+#line 481
error("bad ncid: status = %d", err);
+#line 481
nels = 1;
+#line 481
for (j = 0; j < var_rank[i]; j++) {
+#line 481
nels *= var_shape[i][j];
+#line 481
}
+#line 481
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 481
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 481
IF (err)
+#line 481
error("error in toMixedBase 1");
+#line 481
value[j]= hash_short(var_type[i], var_rank[i], index, NCT_SHORT);
+#line 481
allInExtRange = allInExtRange
+#line 481
&& inRange3(value[j], var_type[i], NCT_SHORT);
+#line 481
}
+#line 481
err = nc_put_var_short(ncid, i, value);
+#line 481
if (canConvert) {
+#line 481
if (allInExtRange) {
+#line 481
IF (err)
+#line 481
error("%s", nc_strerror(err));
+#line 481
} else {
+#line 481
IF (err != NC_ERANGE)
+#line 481
error("range error: status = %d", err);
+#line 481
}
+#line 481
} else {
+#line 481
IF (nels > 0 && err != NC_ECHAR)
+#line 481
error("wrong type: status = %d", err);
+#line 481
}
+#line 481
}
+#line 481
}
+#line 481
+#line 481
err = nc_close(ncid);
+#line 481
IF (err)
+#line 481
error("nc_close: %s", nc_strerror(err));
+#line 481
+#line 481
check_vars_short(scratch);
+#line 481
+#line 481
err = remove(scratch);
+#line 481
IF (err)
+#line 481
error("remove of %s failed", scratch);
+#line 481
}
+#line 481
void
+#line 482
test_nc_put_var_int(void)
+#line 482
{
+#line 482
int ncid;
+#line 482
int varid;
+#line 482
int i;
+#line 482
int j;
+#line 482
int err;
+#line 482
int nels;
+#line 482
size_t index[MAX_RANK];
+#line 482
int canConvert; /* Both text or both numeric */
+#line 482
int allInExtRange; /* all values within external range? */
+#line 482
int value[MAX_NELS];
+#line 482
+#line 482
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 482
IF (err) {
+#line 482
error("nc_create: %s", nc_strerror(err));
+#line 482
return;
+#line 482
}
+#line 482
def_dims(ncid);
+#line 482
def_vars(ncid);
+#line 482
err = nc_enddef(ncid);
+#line 482
IF (err)
+#line 482
error("nc_enddef: %s", nc_strerror(err));
+#line 482
+#line 482
for (i = 0; i < NVARS; i++) {
+#line 482
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 482
assert(var_rank[i] <= MAX_RANK);
+#line 482
assert(var_nels[i] <= MAX_NELS);
+#line 482
err = nc_put_var_int(BAD_ID, i, value);
+#line 482
IF (err != NC_EBADID)
+#line 482
error("bad ncid: status = %d", err);
+#line 482
err = nc_put_var_int(ncid, BAD_VARID, value);
+#line 482
IF (err != NC_ENOTVAR)
+#line 482
error("bad var id: status = %d", err);
+#line 482
+#line 482
nels = 1;
+#line 482
for (j = 0; j < var_rank[i]; j++) {
+#line 482
nels *= var_shape[i][j];
+#line 482
}
+#line 482
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 482
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 482
IF (err)
+#line 482
error("error in toMixedBase 1");
+#line 482
value[j]= hash_int(var_type[i], var_rank[i], index, NCT_INT);
+#line 482
allInExtRange = allInExtRange
+#line 482
&& inRange3(value[j], var_type[i], NCT_INT);
+#line 482
}
+#line 482
err = nc_put_var_int(ncid, i, value);
+#line 482
if (canConvert) {
+#line 482
if (allInExtRange) {
+#line 482
IF (err)
+#line 482
error("%s", nc_strerror(err));
+#line 482
} else {
+#line 482
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 482
error("range error: status = %d", err);
+#line 482
}
+#line 482
} else { /* should flag wrong type even if nothing to write */
+#line 482
IF (nels > 0 && err != NC_ECHAR)
+#line 482
error("wrong type: status = %d", err);
+#line 482
}
+#line 482
}
+#line 482
+#line 482
/* Preceeding has written nothing for record variables, now try */
+#line 482
/* again with more than 0 records */
+#line 482
+#line 482
/* Write record number NRECS to force writing of preceding records */
+#line 482
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 482
err = nc_inq_varid(ncid, "cr", &varid);
+#line 482
IF (err)
+#line 482
error("nc_inq_varid: %s", nc_strerror(err));
+#line 482
index[0] = NRECS-1;
+#line 482
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 482
IF (err)
+#line 482
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 482
+#line 482
for (i = 0; i < NVARS; i++) {
+#line 482
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 482
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 482
assert(var_rank[i] <= MAX_RANK);
+#line 482
assert(var_nels[i] <= MAX_NELS);
+#line 482
err = nc_put_var_int(BAD_ID, i, value);
+#line 482
IF (err != NC_EBADID)
+#line 482
error("bad ncid: status = %d", err);
+#line 482
nels = 1;
+#line 482
for (j = 0; j < var_rank[i]; j++) {
+#line 482
nels *= var_shape[i][j];
+#line 482
}
+#line 482
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 482
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 482
IF (err)
+#line 482
error("error in toMixedBase 1");
+#line 482
value[j]= hash_int(var_type[i], var_rank[i], index, NCT_INT);
+#line 482
allInExtRange = allInExtRange
+#line 482
&& inRange3(value[j], var_type[i], NCT_INT);
+#line 482
}
+#line 482
err = nc_put_var_int(ncid, i, value);
+#line 482
if (canConvert) {
+#line 482
if (allInExtRange) {
+#line 482
IF (err)
+#line 482
error("%s", nc_strerror(err));
+#line 482
} else {
+#line 482
IF (err != NC_ERANGE)
+#line 482
error("range error: status = %d", err);
+#line 482
}
+#line 482
} else {
+#line 482
IF (nels > 0 && err != NC_ECHAR)
+#line 482
error("wrong type: status = %d", err);
+#line 482
}
+#line 482
}
+#line 482
}
+#line 482
+#line 482
err = nc_close(ncid);
+#line 482
IF (err)
+#line 482
error("nc_close: %s", nc_strerror(err));
+#line 482
+#line 482
check_vars_int(scratch);
+#line 482
+#line 482
err = remove(scratch);
+#line 482
IF (err)
+#line 482
error("remove of %s failed", scratch);
+#line 482
}
+#line 482
void
+#line 483
test_nc_put_var_long(void)
+#line 483
{
+#line 483
int ncid;
+#line 483
int varid;
+#line 483
int i;
+#line 483
int j;
+#line 483
int err;
+#line 483
int nels;
+#line 483
size_t index[MAX_RANK];
+#line 483
int canConvert; /* Both text or both numeric */
+#line 483
int allInExtRange; /* all values within external range? */
+#line 483
long value[MAX_NELS];
+#line 483
+#line 483
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 483
IF (err) {
+#line 483
error("nc_create: %s", nc_strerror(err));
+#line 483
return;
+#line 483
}
+#line 483
def_dims(ncid);
+#line 483
def_vars(ncid);
+#line 483
err = nc_enddef(ncid);
+#line 483
IF (err)
+#line 483
error("nc_enddef: %s", nc_strerror(err));
+#line 483
+#line 483
for (i = 0; i < NVARS; i++) {
+#line 483
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 483
assert(var_rank[i] <= MAX_RANK);
+#line 483
assert(var_nels[i] <= MAX_NELS);
+#line 483
err = nc_put_var_long(BAD_ID, i, value);
+#line 483
IF (err != NC_EBADID)
+#line 483
error("bad ncid: status = %d", err);
+#line 483
err = nc_put_var_long(ncid, BAD_VARID, value);
+#line 483
IF (err != NC_ENOTVAR)
+#line 483
error("bad var id: status = %d", err);
+#line 483
+#line 483
nels = 1;
+#line 483
for (j = 0; j < var_rank[i]; j++) {
+#line 483
nels *= var_shape[i][j];
+#line 483
}
+#line 483
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 483
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 483
IF (err)
+#line 483
error("error in toMixedBase 1");
+#line 483
value[j]= hash_long(var_type[i], var_rank[i], index, NCT_LONG);
+#line 483
allInExtRange = allInExtRange
+#line 483
&& inRange3(value[j], var_type[i], NCT_LONG);
+#line 483
}
+#line 483
err = nc_put_var_long(ncid, i, value);
+#line 483
if (canConvert) {
+#line 483
if (allInExtRange) {
+#line 483
IF (err)
+#line 483
error("%s", nc_strerror(err));
+#line 483
} else {
+#line 483
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 483
error("range error: status = %d", err);
+#line 483
}
+#line 483
} else { /* should flag wrong type even if nothing to write */
+#line 483
IF (nels > 0 && err != NC_ECHAR)
+#line 483
error("wrong type: status = %d", err);
+#line 483
}
+#line 483
}
+#line 483
+#line 483
/* Preceeding has written nothing for record variables, now try */
+#line 483
/* again with more than 0 records */
+#line 483
+#line 483
/* Write record number NRECS to force writing of preceding records */
+#line 483
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 483
err = nc_inq_varid(ncid, "cr", &varid);
+#line 483
IF (err)
+#line 483
error("nc_inq_varid: %s", nc_strerror(err));
+#line 483
index[0] = NRECS-1;
+#line 483
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 483
IF (err)
+#line 483
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 483
+#line 483
for (i = 0; i < NVARS; i++) {
+#line 483
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 483
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 483
assert(var_rank[i] <= MAX_RANK);
+#line 483
assert(var_nels[i] <= MAX_NELS);
+#line 483
err = nc_put_var_long(BAD_ID, i, value);
+#line 483
IF (err != NC_EBADID)
+#line 483
error("bad ncid: status = %d", err);
+#line 483
nels = 1;
+#line 483
for (j = 0; j < var_rank[i]; j++) {
+#line 483
nels *= var_shape[i][j];
+#line 483
}
+#line 483
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 483
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 483
IF (err)
+#line 483
error("error in toMixedBase 1");
+#line 483
value[j]= hash_long(var_type[i], var_rank[i], index, NCT_LONG);
+#line 483
allInExtRange = allInExtRange
+#line 483
&& inRange3(value[j], var_type[i], NCT_LONG);
+#line 483
}
+#line 483
err = nc_put_var_long(ncid, i, value);
+#line 483
if (canConvert) {
+#line 483
if (allInExtRange) {
+#line 483
IF (err)
+#line 483
error("%s", nc_strerror(err));
+#line 483
} else {
+#line 483
IF (err != NC_ERANGE)
+#line 483
error("range error: status = %d", err);
+#line 483
}
+#line 483
} else {
+#line 483
IF (nels > 0 && err != NC_ECHAR)
+#line 483
error("wrong type: status = %d", err);
+#line 483
}
+#line 483
}
+#line 483
}
+#line 483
+#line 483
err = nc_close(ncid);
+#line 483
IF (err)
+#line 483
error("nc_close: %s", nc_strerror(err));
+#line 483
+#line 483
check_vars_long(scratch);
+#line 483
+#line 483
err = remove(scratch);
+#line 483
IF (err)
+#line 483
error("remove of %s failed", scratch);
+#line 483
}
+#line 483
void
+#line 484
test_nc_put_var_float(void)
+#line 484
{
+#line 484
int ncid;
+#line 484
int varid;
+#line 484
int i;
+#line 484
int j;
+#line 484
int err;
+#line 484
int nels;
+#line 484
size_t index[MAX_RANK];
+#line 484
int canConvert; /* Both text or both numeric */
+#line 484
int allInExtRange; /* all values within external range? */
+#line 484
float value[MAX_NELS];
+#line 484
+#line 484
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 484
IF (err) {
+#line 484
error("nc_create: %s", nc_strerror(err));
+#line 484
return;
+#line 484
}
+#line 484
def_dims(ncid);
+#line 484
def_vars(ncid);
+#line 484
err = nc_enddef(ncid);
+#line 484
IF (err)
+#line 484
error("nc_enddef: %s", nc_strerror(err));
+#line 484
+#line 484
for (i = 0; i < NVARS; i++) {
+#line 484
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 484
assert(var_rank[i] <= MAX_RANK);
+#line 484
assert(var_nels[i] <= MAX_NELS);
+#line 484
err = nc_put_var_float(BAD_ID, i, value);
+#line 484
IF (err != NC_EBADID)
+#line 484
error("bad ncid: status = %d", err);
+#line 484
err = nc_put_var_float(ncid, BAD_VARID, value);
+#line 484
IF (err != NC_ENOTVAR)
+#line 484
error("bad var id: status = %d", err);
+#line 484
+#line 484
nels = 1;
+#line 484
for (j = 0; j < var_rank[i]; j++) {
+#line 484
nels *= var_shape[i][j];
+#line 484
}
+#line 484
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 484
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 484
IF (err)
+#line 484
error("error in toMixedBase 1");
+#line 484
value[j]= hash_float(var_type[i], var_rank[i], index, NCT_FLOAT);
+#line 484
allInExtRange = allInExtRange
+#line 484
&& inRange3(value[j], var_type[i], NCT_FLOAT);
+#line 484
}
+#line 484
err = nc_put_var_float(ncid, i, value);
+#line 484
if (canConvert) {
+#line 484
if (allInExtRange) {
+#line 484
IF (err)
+#line 484
error("%s", nc_strerror(err));
+#line 484
} else {
+#line 484
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 484
error("range error: status = %d", err);
+#line 484
}
+#line 484
} else { /* should flag wrong type even if nothing to write */
+#line 484
IF (nels > 0 && err != NC_ECHAR)
+#line 484
error("wrong type: status = %d", err);
+#line 484
}
+#line 484
}
+#line 484
+#line 484
/* Preceeding has written nothing for record variables, now try */
+#line 484
/* again with more than 0 records */
+#line 484
+#line 484
/* Write record number NRECS to force writing of preceding records */
+#line 484
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 484
err = nc_inq_varid(ncid, "cr", &varid);
+#line 484
IF (err)
+#line 484
error("nc_inq_varid: %s", nc_strerror(err));
+#line 484
index[0] = NRECS-1;
+#line 484
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 484
IF (err)
+#line 484
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 484
+#line 484
for (i = 0; i < NVARS; i++) {
+#line 484
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 484
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 484
assert(var_rank[i] <= MAX_RANK);
+#line 484
assert(var_nels[i] <= MAX_NELS);
+#line 484
err = nc_put_var_float(BAD_ID, i, value);
+#line 484
IF (err != NC_EBADID)
+#line 484
error("bad ncid: status = %d", err);
+#line 484
nels = 1;
+#line 484
for (j = 0; j < var_rank[i]; j++) {
+#line 484
nels *= var_shape[i][j];
+#line 484
}
+#line 484
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 484
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 484
IF (err)
+#line 484
error("error in toMixedBase 1");
+#line 484
value[j]= hash_float(var_type[i], var_rank[i], index, NCT_FLOAT);
+#line 484
allInExtRange = allInExtRange
+#line 484
&& inRange3(value[j], var_type[i], NCT_FLOAT);
+#line 484
}
+#line 484
err = nc_put_var_float(ncid, i, value);
+#line 484
if (canConvert) {
+#line 484
if (allInExtRange) {
+#line 484
IF (err)
+#line 484
error("%s", nc_strerror(err));
+#line 484
} else {
+#line 484
IF (err != NC_ERANGE)
+#line 484
error("range error: status = %d", err);
+#line 484
}
+#line 484
} else {
+#line 484
IF (nels > 0 && err != NC_ECHAR)
+#line 484
error("wrong type: status = %d", err);
+#line 484
}
+#line 484
}
+#line 484
}
+#line 484
+#line 484
err = nc_close(ncid);
+#line 484
IF (err)
+#line 484
error("nc_close: %s", nc_strerror(err));
+#line 484
+#line 484
check_vars_float(scratch);
+#line 484
+#line 484
err = remove(scratch);
+#line 484
IF (err)
+#line 484
error("remove of %s failed", scratch);
+#line 484
}
+#line 484
void
+#line 485
test_nc_put_var_double(void)
+#line 485
{
+#line 485
int ncid;
+#line 485
int varid;
+#line 485
int i;
+#line 485
int j;
+#line 485
int err;
+#line 485
int nels;
+#line 485
size_t index[MAX_RANK];
+#line 485
int canConvert; /* Both text or both numeric */
+#line 485
int allInExtRange; /* all values within external range? */
+#line 485
double value[MAX_NELS];
+#line 485
+#line 485
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 485
IF (err) {
+#line 485
error("nc_create: %s", nc_strerror(err));
+#line 485
return;
+#line 485
}
+#line 485
def_dims(ncid);
+#line 485
def_vars(ncid);
+#line 485
err = nc_enddef(ncid);
+#line 485
IF (err)
+#line 485
error("nc_enddef: %s", nc_strerror(err));
+#line 485
+#line 485
for (i = 0; i < NVARS; i++) {
+#line 485
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 485
assert(var_rank[i] <= MAX_RANK);
+#line 485
assert(var_nels[i] <= MAX_NELS);
+#line 485
err = nc_put_var_double(BAD_ID, i, value);
+#line 485
IF (err != NC_EBADID)
+#line 485
error("bad ncid: status = %d", err);
+#line 485
err = nc_put_var_double(ncid, BAD_VARID, value);
+#line 485
IF (err != NC_ENOTVAR)
+#line 485
error("bad var id: status = %d", err);
+#line 485
+#line 485
nels = 1;
+#line 485
for (j = 0; j < var_rank[i]; j++) {
+#line 485
nels *= var_shape[i][j];
+#line 485
}
+#line 485
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 485
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 485
IF (err)
+#line 485
error("error in toMixedBase 1");
+#line 485
value[j]= hash_double(var_type[i], var_rank[i], index, NCT_DOUBLE);
+#line 485
allInExtRange = allInExtRange
+#line 485
&& inRange3(value[j], var_type[i], NCT_DOUBLE);
+#line 485
}
+#line 485
err = nc_put_var_double(ncid, i, value);
+#line 485
if (canConvert) {
+#line 485
if (allInExtRange) {
+#line 485
IF (err)
+#line 485
error("%s", nc_strerror(err));
+#line 485
} else {
+#line 485
IF (err != NC_ERANGE && var_dimid[i][0] != RECDIM)
+#line 485
error("range error: status = %d", err);
+#line 485
}
+#line 485
} else { /* should flag wrong type even if nothing to write */
+#line 485
IF (nels > 0 && err != NC_ECHAR)
+#line 485
error("wrong type: status = %d", err);
+#line 485
}
+#line 485
}
+#line 485
+#line 485
/* Preceeding has written nothing for record variables, now try */
+#line 485
/* again with more than 0 records */
+#line 485
+#line 485
/* Write record number NRECS to force writing of preceding records */
+#line 485
/* Assumes variable cr is char vector with UNLIMITED dimension */
+#line 485
err = nc_inq_varid(ncid, "cr", &varid);
+#line 485
IF (err)
+#line 485
error("nc_inq_varid: %s", nc_strerror(err));
+#line 485
index[0] = NRECS-1;
+#line 485
err = nc_put_var1_text(ncid, varid, index, "x");
+#line 485
IF (err)
+#line 485
error("nc_put_var1_text: %s", nc_strerror(err));
+#line 485
+#line 485
for (i = 0; i < NVARS; i++) {
+#line 485
if (var_dimid[i][0] == RECDIM) { /* only test record variables here */
+#line 485
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 485
assert(var_rank[i] <= MAX_RANK);
+#line 485
assert(var_nels[i] <= MAX_NELS);
+#line 485
err = nc_put_var_double(BAD_ID, i, value);
+#line 485
IF (err != NC_EBADID)
+#line 485
error("bad ncid: status = %d", err);
+#line 485
nels = 1;
+#line 485
for (j = 0; j < var_rank[i]; j++) {
+#line 485
nels *= var_shape[i][j];
+#line 485
}
+#line 485
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 485
err = toMixedBase(j, var_rank[i], var_shape[i], index);
+#line 485
IF (err)
+#line 485
error("error in toMixedBase 1");
+#line 485
value[j]= hash_double(var_type[i], var_rank[i], index, NCT_DOUBLE);
+#line 485
allInExtRange = allInExtRange
+#line 485
&& inRange3(value[j], var_type[i], NCT_DOUBLE);
+#line 485
}
+#line 485
err = nc_put_var_double(ncid, i, value);
+#line 485
if (canConvert) {
+#line 485
if (allInExtRange) {
+#line 485
IF (err)
+#line 485
error("%s", nc_strerror(err));
+#line 485
} else {
+#line 485
IF (err != NC_ERANGE)
+#line 485
error("range error: status = %d", err);
+#line 485
}
+#line 485
} else {
+#line 485
IF (nels > 0 && err != NC_ECHAR)
+#line 485
error("wrong type: status = %d", err);
+#line 485
}
+#line 485
}
+#line 485
}
+#line 485
+#line 485
err = nc_close(ncid);
+#line 485
IF (err)
+#line 485
error("nc_close: %s", nc_strerror(err));
+#line 485
+#line 485
check_vars_double(scratch);
+#line 485
+#line 485
err = remove(scratch);
+#line 485
IF (err)
+#line 485
error("remove of %s failed", scratch);
+#line 485
}
+#line 485
+#line 642
void
+#line 643
test_nc_put_vara_text(void)
+#line 643
{
+#line 643
int ncid;
+#line 643
int d;
+#line 643
int i;
+#line 643
int j;
+#line 643
int k;
+#line 643
int err;
+#line 643
int nslabs;
+#line 643
int nels;
+#line 643
size_t start[MAX_RANK];
+#line 643
size_t edge[MAX_RANK];
+#line 643
size_t mid[MAX_RANK];
+#line 643
size_t index[MAX_RANK];
+#line 643
int canConvert; /* Both text or both numeric */
+#line 643
int allInExtRange; /* all values within external range? */
+#line 643
text value[MAX_NELS];
+#line 643
+#line 643
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 643
IF (err) {
+#line 643
error("nc_create: %s", nc_strerror(err));
+#line 643
return;
+#line 643
}
+#line 643
def_dims(ncid);
+#line 643
def_vars(ncid);
+#line 643
err = nc_enddef(ncid);
+#line 643
IF (err)
+#line 643
error("nc_enddef: %s", nc_strerror(err));
+#line 643
+#line 643
value[0] = 0;
+#line 643
for (i = 0; i < NVARS; i++) {
+#line 643
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 643
assert(var_rank[i] <= MAX_RANK);
+#line 643
assert(var_nels[i] <= MAX_NELS);
+#line 643
for (j = 0; j < var_rank[i]; j++) {
+#line 643
start[j] = 0;
+#line 643
edge[j] = 1;
+#line 643
}
+#line 643
err = nc_put_vara_text(BAD_ID, i, start, edge, value);
+#line 643
IF (err != NC_EBADID)
+#line 643
error("bad ncid: status = %d", err);
+#line 643
err = nc_put_vara_text(ncid, BAD_VARID, start, edge, value);
+#line 643
IF (err != NC_ENOTVAR)
+#line 643
error("bad var id: status = %d", err);
+#line 643
for (j = 0; j < var_rank[i]; j++) {
+#line 643
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 643
start[j] = var_shape[i][j];
+#line 643
err = nc_put_vara_text(ncid, i, start, edge, value);
+#line 643
IF (canConvert && err != NC_EINVALCOORDS)
+#line 643
error("bad start: status = %d", err);
+#line 643
start[j] = 0;
+#line 643
edge[j] = var_shape[i][j] + 1;
+#line 643
err = nc_put_vara_text(ncid, i, start, edge, value);
+#line 643
IF (canConvert && err != NC_EEDGE)
+#line 643
error("bad edge: status = %d", err);
+#line 643
edge[j] = 1;
+#line 643
}
+#line 643
}
+#line 643
/* Check correct error returned even when nothing to put */
+#line 643
for (j = 0; j < var_rank[i]; j++) {
+#line 643
edge[j] = 0;
+#line 643
}
+#line 643
err = nc_put_vara_text(BAD_ID, i, start, edge, value);
+#line 643
IF (err != NC_EBADID)
+#line 643
error("bad ncid: status = %d", err);
+#line 643
err = nc_put_vara_text(ncid, BAD_VARID, start, edge, value);
+#line 643
IF (err != NC_ENOTVAR)
+#line 643
error("bad var id: status = %d", err);
+#line 643
for (j = 0; j < var_rank[i]; j++) {
+#line 643
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 643
start[j] = var_shape[i][j];
+#line 643
err = nc_put_vara_text(ncid, i, start, edge, value);
+#line 643
IF (canConvert && err != NC_EINVALCOORDS)
+#line 643
error("bad start: status = %d", err);
+#line 643
start[j] = 0;
+#line 643
}
+#line 643
}
+#line 643
err = nc_put_vara_text(ncid, i, start, edge, value);
+#line 643
if (canConvert) {
+#line 643
IF (err)
+#line 643
error("%s", nc_strerror(err));
+#line 643
} else {
+#line 643
IF (err != NC_ECHAR)
+#line 643
error("wrong type: status = %d", err);
+#line 643
}
+#line 643
for (j = 0; j < var_rank[i]; j++) {
+#line 643
edge[j] = 1;
+#line 643
}
+#line 643
+#line 643
/* Choose a random point dividing each dim into 2 parts */
+#line 643
/* Put 2^rank (nslabs) slabs so defined */
+#line 643
nslabs = 1;
+#line 643
for (j = 0; j < var_rank[i]; j++) {
+#line 643
mid[j] = roll( var_shape[i][j] );
+#line 643
nslabs *= 2;
+#line 643
}
+#line 643
/* bits of k determine whether to put lower or upper part of dim */
+#line 643
for (k = 0; k < nslabs; k++) {
+#line 643
nels = 1;
+#line 643
for (j = 0; j < var_rank[i]; j++) {
+#line 643
if ((k >> j) & 1) {
+#line 643
start[j] = 0;
+#line 643
edge[j] = mid[j];
+#line 643
}else{
+#line 643
start[j] = mid[j];
+#line 643
edge[j] = var_shape[i][j] - mid[j];
+#line 643
}
+#line 643
nels *= edge[j];
+#line 643
}
+#line 643
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 643
err = toMixedBase(j, var_rank[i], edge, index);
+#line 643
IF (err)
+#line 643
error("error in toMixedBase 1");
+#line 643
for (d = 0; d < var_rank[i]; d++)
+#line 643
index[d] += start[d];
+#line 643
value[j]= hash_text(var_type[i], var_rank[i], index, NCT_TEXT);
+#line 643
allInExtRange = allInExtRange
+#line 643
&& inRange3(value[j], var_type[i], NCT_TEXT);
+#line 643
}
+#line 643
if (var_rank[i] == 0 && i%2 == 0)
+#line 643
err = nc_put_vara_text(ncid, i, NULL, NULL, value);
+#line 643
else
+#line 643
err = nc_put_vara_text(ncid, i, start, edge, value);
+#line 643
if (canConvert) {
+#line 643
if (allInExtRange) {
+#line 643
IF (err)
+#line 643
error("%s", nc_strerror(err));
+#line 643
} else {
+#line 643
IF (err != NC_ERANGE)
+#line 643
error("range error: status = %d", err);
+#line 643
}
+#line 643
} else {
+#line 643
IF (nels > 0 && err != NC_ECHAR)
+#line 643
error("wrong type: status = %d", err);
+#line 643
}
+#line 643
}
+#line 643
}
+#line 643
+#line 643
err = nc_close(ncid);
+#line 643
IF (err)
+#line 643
error("nc_close: %s", nc_strerror(err));
+#line 643
+#line 643
check_vars_text(scratch);
+#line 643
+#line 643
err = remove(scratch);
+#line 643
IF (err)
+#line 643
error("remove of %s failed", scratch);
+#line 643
}
+#line 643
void
+#line 644
test_nc_put_vara_uchar(void)
+#line 644
{
+#line 644
int ncid;
+#line 644
int d;
+#line 644
int i;
+#line 644
int j;
+#line 644
int k;
+#line 644
int err;
+#line 644
int nslabs;
+#line 644
int nels;
+#line 644
size_t start[MAX_RANK];
+#line 644
size_t edge[MAX_RANK];
+#line 644
size_t mid[MAX_RANK];
+#line 644
size_t index[MAX_RANK];
+#line 644
int canConvert; /* Both text or both numeric */
+#line 644
int allInExtRange; /* all values within external range? */
+#line 644
uchar value[MAX_NELS];
+#line 644
+#line 644
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 644
IF (err) {
+#line 644
error("nc_create: %s", nc_strerror(err));
+#line 644
return;
+#line 644
}
+#line 644
def_dims(ncid);
+#line 644
def_vars(ncid);
+#line 644
err = nc_enddef(ncid);
+#line 644
IF (err)
+#line 644
error("nc_enddef: %s", nc_strerror(err));
+#line 644
+#line 644
value[0] = 0;
+#line 644
for (i = 0; i < NVARS; i++) {
+#line 644
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 644
assert(var_rank[i] <= MAX_RANK);
+#line 644
assert(var_nels[i] <= MAX_NELS);
+#line 644
for (j = 0; j < var_rank[i]; j++) {
+#line 644
start[j] = 0;
+#line 644
edge[j] = 1;
+#line 644
}
+#line 644
err = nc_put_vara_uchar(BAD_ID, i, start, edge, value);
+#line 644
IF (err != NC_EBADID)
+#line 644
error("bad ncid: status = %d", err);
+#line 644
err = nc_put_vara_uchar(ncid, BAD_VARID, start, edge, value);
+#line 644
IF (err != NC_ENOTVAR)
+#line 644
error("bad var id: status = %d", err);
+#line 644
for (j = 0; j < var_rank[i]; j++) {
+#line 644
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 644
start[j] = var_shape[i][j];
+#line 644
err = nc_put_vara_uchar(ncid, i, start, edge, value);
+#line 644
IF (canConvert && err != NC_EINVALCOORDS)
+#line 644
error("bad start: status = %d", err);
+#line 644
start[j] = 0;
+#line 644
edge[j] = var_shape[i][j] + 1;
+#line 644
err = nc_put_vara_uchar(ncid, i, start, edge, value);
+#line 644
IF (canConvert && err != NC_EEDGE)
+#line 644
error("bad edge: status = %d", err);
+#line 644
edge[j] = 1;
+#line 644
}
+#line 644
}
+#line 644
/* Check correct error returned even when nothing to put */
+#line 644
for (j = 0; j < var_rank[i]; j++) {
+#line 644
edge[j] = 0;
+#line 644
}
+#line 644
err = nc_put_vara_uchar(BAD_ID, i, start, edge, value);
+#line 644
IF (err != NC_EBADID)
+#line 644
error("bad ncid: status = %d", err);
+#line 644
err = nc_put_vara_uchar(ncid, BAD_VARID, start, edge, value);
+#line 644
IF (err != NC_ENOTVAR)
+#line 644
error("bad var id: status = %d", err);
+#line 644
for (j = 0; j < var_rank[i]; j++) {
+#line 644
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 644
start[j] = var_shape[i][j];
+#line 644
err = nc_put_vara_uchar(ncid, i, start, edge, value);
+#line 644
IF (canConvert && err != NC_EINVALCOORDS)
+#line 644
error("bad start: status = %d", err);
+#line 644
start[j] = 0;
+#line 644
}
+#line 644
}
+#line 644
err = nc_put_vara_uchar(ncid, i, start, edge, value);
+#line 644
if (canConvert) {
+#line 644
IF (err)
+#line 644
error("%s", nc_strerror(err));
+#line 644
} else {
+#line 644
IF (err != NC_ECHAR)
+#line 644
error("wrong type: status = %d", err);
+#line 644
}
+#line 644
for (j = 0; j < var_rank[i]; j++) {
+#line 644
edge[j] = 1;
+#line 644
}
+#line 644
+#line 644
/* Choose a random point dividing each dim into 2 parts */
+#line 644
/* Put 2^rank (nslabs) slabs so defined */
+#line 644
nslabs = 1;
+#line 644
for (j = 0; j < var_rank[i]; j++) {
+#line 644
mid[j] = roll( var_shape[i][j] );
+#line 644
nslabs *= 2;
+#line 644
}
+#line 644
/* bits of k determine whether to put lower or upper part of dim */
+#line 644
for (k = 0; k < nslabs; k++) {
+#line 644
nels = 1;
+#line 644
for (j = 0; j < var_rank[i]; j++) {
+#line 644
if ((k >> j) & 1) {
+#line 644
start[j] = 0;
+#line 644
edge[j] = mid[j];
+#line 644
}else{
+#line 644
start[j] = mid[j];
+#line 644
edge[j] = var_shape[i][j] - mid[j];
+#line 644
}
+#line 644
nels *= edge[j];
+#line 644
}
+#line 644
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 644
err = toMixedBase(j, var_rank[i], edge, index);
+#line 644
IF (err)
+#line 644
error("error in toMixedBase 1");
+#line 644
for (d = 0; d < var_rank[i]; d++)
+#line 644
index[d] += start[d];
+#line 644
value[j]= hash_uchar(var_type[i], var_rank[i], index, NCT_UCHAR);
+#line 644
allInExtRange = allInExtRange
+#line 644
&& inRange3(value[j], var_type[i], NCT_UCHAR);
+#line 644
}
+#line 644
if (var_rank[i] == 0 && i%2 == 0)
+#line 644
err = nc_put_vara_uchar(ncid, i, NULL, NULL, value);
+#line 644
else
+#line 644
err = nc_put_vara_uchar(ncid, i, start, edge, value);
+#line 644
if (canConvert) {
+#line 644
if (allInExtRange) {
+#line 644
IF (err)
+#line 644
error("%s", nc_strerror(err));
+#line 644
} else {
+#line 644
IF (err != NC_ERANGE)
+#line 644
error("range error: status = %d", err);
+#line 644
}
+#line 644
} else {
+#line 644
IF (nels > 0 && err != NC_ECHAR)
+#line 644
error("wrong type: status = %d", err);
+#line 644
}
+#line 644
}
+#line 644
}
+#line 644
+#line 644
err = nc_close(ncid);
+#line 644
IF (err)
+#line 644
error("nc_close: %s", nc_strerror(err));
+#line 644
+#line 644
check_vars_uchar(scratch);
+#line 644
+#line 644
err = remove(scratch);
+#line 644
IF (err)
+#line 644
error("remove of %s failed", scratch);
+#line 644
}
+#line 644
void
+#line 645
test_nc_put_vara_schar(void)
+#line 645
{
+#line 645
int ncid;
+#line 645
int d;
+#line 645
int i;
+#line 645
int j;
+#line 645
int k;
+#line 645
int err;
+#line 645
int nslabs;
+#line 645
int nels;
+#line 645
size_t start[MAX_RANK];
+#line 645
size_t edge[MAX_RANK];
+#line 645
size_t mid[MAX_RANK];
+#line 645
size_t index[MAX_RANK];
+#line 645
int canConvert; /* Both text or both numeric */
+#line 645
int allInExtRange; /* all values within external range? */
+#line 645
schar value[MAX_NELS];
+#line 645
+#line 645
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 645
IF (err) {
+#line 645
error("nc_create: %s", nc_strerror(err));
+#line 645
return;
+#line 645
}
+#line 645
def_dims(ncid);
+#line 645
def_vars(ncid);
+#line 645
err = nc_enddef(ncid);
+#line 645
IF (err)
+#line 645
error("nc_enddef: %s", nc_strerror(err));
+#line 645
+#line 645
value[0] = 0;
+#line 645
for (i = 0; i < NVARS; i++) {
+#line 645
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 645
assert(var_rank[i] <= MAX_RANK);
+#line 645
assert(var_nels[i] <= MAX_NELS);
+#line 645
for (j = 0; j < var_rank[i]; j++) {
+#line 645
start[j] = 0;
+#line 645
edge[j] = 1;
+#line 645
}
+#line 645
err = nc_put_vara_schar(BAD_ID, i, start, edge, value);
+#line 645
IF (err != NC_EBADID)
+#line 645
error("bad ncid: status = %d", err);
+#line 645
err = nc_put_vara_schar(ncid, BAD_VARID, start, edge, value);
+#line 645
IF (err != NC_ENOTVAR)
+#line 645
error("bad var id: status = %d", err);
+#line 645
for (j = 0; j < var_rank[i]; j++) {
+#line 645
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 645
start[j] = var_shape[i][j];
+#line 645
err = nc_put_vara_schar(ncid, i, start, edge, value);
+#line 645
IF (canConvert && err != NC_EINVALCOORDS)
+#line 645
error("bad start: status = %d", err);
+#line 645
start[j] = 0;
+#line 645
edge[j] = var_shape[i][j] + 1;
+#line 645
err = nc_put_vara_schar(ncid, i, start, edge, value);
+#line 645
IF (canConvert && err != NC_EEDGE)
+#line 645
error("bad edge: status = %d", err);
+#line 645
edge[j] = 1;
+#line 645
}
+#line 645
}
+#line 645
/* Check correct error returned even when nothing to put */
+#line 645
for (j = 0; j < var_rank[i]; j++) {
+#line 645
edge[j] = 0;
+#line 645
}
+#line 645
err = nc_put_vara_schar(BAD_ID, i, start, edge, value);
+#line 645
IF (err != NC_EBADID)
+#line 645
error("bad ncid: status = %d", err);
+#line 645
err = nc_put_vara_schar(ncid, BAD_VARID, start, edge, value);
+#line 645
IF (err != NC_ENOTVAR)
+#line 645
error("bad var id: status = %d", err);
+#line 645
for (j = 0; j < var_rank[i]; j++) {
+#line 645
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 645
start[j] = var_shape[i][j];
+#line 645
err = nc_put_vara_schar(ncid, i, start, edge, value);
+#line 645
IF (canConvert && err != NC_EINVALCOORDS)
+#line 645
error("bad start: status = %d", err);
+#line 645
start[j] = 0;
+#line 645
}
+#line 645
}
+#line 645
err = nc_put_vara_schar(ncid, i, start, edge, value);
+#line 645
if (canConvert) {
+#line 645
IF (err)
+#line 645
error("%s", nc_strerror(err));
+#line 645
} else {
+#line 645
IF (err != NC_ECHAR)
+#line 645
error("wrong type: status = %d", err);
+#line 645
}
+#line 645
for (j = 0; j < var_rank[i]; j++) {
+#line 645
edge[j] = 1;
+#line 645
}
+#line 645
+#line 645
/* Choose a random point dividing each dim into 2 parts */
+#line 645
/* Put 2^rank (nslabs) slabs so defined */
+#line 645
nslabs = 1;
+#line 645
for (j = 0; j < var_rank[i]; j++) {
+#line 645
mid[j] = roll( var_shape[i][j] );
+#line 645
nslabs *= 2;
+#line 645
}
+#line 645
/* bits of k determine whether to put lower or upper part of dim */
+#line 645
for (k = 0; k < nslabs; k++) {
+#line 645
nels = 1;
+#line 645
for (j = 0; j < var_rank[i]; j++) {
+#line 645
if ((k >> j) & 1) {
+#line 645
start[j] = 0;
+#line 645
edge[j] = mid[j];
+#line 645
}else{
+#line 645
start[j] = mid[j];
+#line 645
edge[j] = var_shape[i][j] - mid[j];
+#line 645
}
+#line 645
nels *= edge[j];
+#line 645
}
+#line 645
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 645
err = toMixedBase(j, var_rank[i], edge, index);
+#line 645
IF (err)
+#line 645
error("error in toMixedBase 1");
+#line 645
for (d = 0; d < var_rank[i]; d++)
+#line 645
index[d] += start[d];
+#line 645
value[j]= hash_schar(var_type[i], var_rank[i], index, NCT_SCHAR);
+#line 645
allInExtRange = allInExtRange
+#line 645
&& inRange3(value[j], var_type[i], NCT_SCHAR);
+#line 645
}
+#line 645
if (var_rank[i] == 0 && i%2 == 0)
+#line 645
err = nc_put_vara_schar(ncid, i, NULL, NULL, value);
+#line 645
else
+#line 645
err = nc_put_vara_schar(ncid, i, start, edge, value);
+#line 645
if (canConvert) {
+#line 645
if (allInExtRange) {
+#line 645
IF (err)
+#line 645
error("%s", nc_strerror(err));
+#line 645
} else {
+#line 645
IF (err != NC_ERANGE)
+#line 645
error("range error: status = %d", err);
+#line 645
}
+#line 645
} else {
+#line 645
IF (nels > 0 && err != NC_ECHAR)
+#line 645
error("wrong type: status = %d", err);
+#line 645
}
+#line 645
}
+#line 645
}
+#line 645
+#line 645
err = nc_close(ncid);
+#line 645
IF (err)
+#line 645
error("nc_close: %s", nc_strerror(err));
+#line 645
+#line 645
check_vars_schar(scratch);
+#line 645
+#line 645
err = remove(scratch);
+#line 645
IF (err)
+#line 645
error("remove of %s failed", scratch);
+#line 645
}
+#line 645
void
+#line 646
test_nc_put_vara_short(void)
+#line 646
{
+#line 646
int ncid;
+#line 646
int d;
+#line 646
int i;
+#line 646
int j;
+#line 646
int k;
+#line 646
int err;
+#line 646
int nslabs;
+#line 646
int nels;
+#line 646
size_t start[MAX_RANK];
+#line 646
size_t edge[MAX_RANK];
+#line 646
size_t mid[MAX_RANK];
+#line 646
size_t index[MAX_RANK];
+#line 646
int canConvert; /* Both text or both numeric */
+#line 646
int allInExtRange; /* all values within external range? */
+#line 646
short value[MAX_NELS];
+#line 646
+#line 646
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 646
IF (err) {
+#line 646
error("nc_create: %s", nc_strerror(err));
+#line 646
return;
+#line 646
}
+#line 646
def_dims(ncid);
+#line 646
def_vars(ncid);
+#line 646
err = nc_enddef(ncid);
+#line 646
IF (err)
+#line 646
error("nc_enddef: %s", nc_strerror(err));
+#line 646
+#line 646
value[0] = 0;
+#line 646
for (i = 0; i < NVARS; i++) {
+#line 646
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 646
assert(var_rank[i] <= MAX_RANK);
+#line 646
assert(var_nels[i] <= MAX_NELS);
+#line 646
for (j = 0; j < var_rank[i]; j++) {
+#line 646
start[j] = 0;
+#line 646
edge[j] = 1;
+#line 646
}
+#line 646
err = nc_put_vara_short(BAD_ID, i, start, edge, value);
+#line 646
IF (err != NC_EBADID)
+#line 646
error("bad ncid: status = %d", err);
+#line 646
err = nc_put_vara_short(ncid, BAD_VARID, start, edge, value);
+#line 646
IF (err != NC_ENOTVAR)
+#line 646
error("bad var id: status = %d", err);
+#line 646
for (j = 0; j < var_rank[i]; j++) {
+#line 646
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 646
start[j] = var_shape[i][j];
+#line 646
err = nc_put_vara_short(ncid, i, start, edge, value);
+#line 646
IF (canConvert && err != NC_EINVALCOORDS)
+#line 646
error("bad start: status = %d", err);
+#line 646
start[j] = 0;
+#line 646
edge[j] = var_shape[i][j] + 1;
+#line 646
err = nc_put_vara_short(ncid, i, start, edge, value);
+#line 646
IF (canConvert && err != NC_EEDGE)
+#line 646
error("bad edge: status = %d", err);
+#line 646
edge[j] = 1;
+#line 646
}
+#line 646
}
+#line 646
/* Check correct error returned even when nothing to put */
+#line 646
for (j = 0; j < var_rank[i]; j++) {
+#line 646
edge[j] = 0;
+#line 646
}
+#line 646
err = nc_put_vara_short(BAD_ID, i, start, edge, value);
+#line 646
IF (err != NC_EBADID)
+#line 646
error("bad ncid: status = %d", err);
+#line 646
err = nc_put_vara_short(ncid, BAD_VARID, start, edge, value);
+#line 646
IF (err != NC_ENOTVAR)
+#line 646
error("bad var id: status = %d", err);
+#line 646
for (j = 0; j < var_rank[i]; j++) {
+#line 646
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 646
start[j] = var_shape[i][j];
+#line 646
err = nc_put_vara_short(ncid, i, start, edge, value);
+#line 646
IF (canConvert && err != NC_EINVALCOORDS)
+#line 646
error("bad start: status = %d", err);
+#line 646
start[j] = 0;
+#line 646
}
+#line 646
}
+#line 646
err = nc_put_vara_short(ncid, i, start, edge, value);
+#line 646
if (canConvert) {
+#line 646
IF (err)
+#line 646
error("%s", nc_strerror(err));
+#line 646
} else {
+#line 646
IF (err != NC_ECHAR)
+#line 646
error("wrong type: status = %d", err);
+#line 646
}
+#line 646
for (j = 0; j < var_rank[i]; j++) {
+#line 646
edge[j] = 1;
+#line 646
}
+#line 646
+#line 646
/* Choose a random point dividing each dim into 2 parts */
+#line 646
/* Put 2^rank (nslabs) slabs so defined */
+#line 646
nslabs = 1;
+#line 646
for (j = 0; j < var_rank[i]; j++) {
+#line 646
mid[j] = roll( var_shape[i][j] );
+#line 646
nslabs *= 2;
+#line 646
}
+#line 646
/* bits of k determine whether to put lower or upper part of dim */
+#line 646
for (k = 0; k < nslabs; k++) {
+#line 646
nels = 1;
+#line 646
for (j = 0; j < var_rank[i]; j++) {
+#line 646
if ((k >> j) & 1) {
+#line 646
start[j] = 0;
+#line 646
edge[j] = mid[j];
+#line 646
}else{
+#line 646
start[j] = mid[j];
+#line 646
edge[j] = var_shape[i][j] - mid[j];
+#line 646
}
+#line 646
nels *= edge[j];
+#line 646
}
+#line 646
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 646
err = toMixedBase(j, var_rank[i], edge, index);
+#line 646
IF (err)
+#line 646
error("error in toMixedBase 1");
+#line 646
for (d = 0; d < var_rank[i]; d++)
+#line 646
index[d] += start[d];
+#line 646
value[j]= hash_short(var_type[i], var_rank[i], index, NCT_SHORT);
+#line 646
allInExtRange = allInExtRange
+#line 646
&& inRange3(value[j], var_type[i], NCT_SHORT);
+#line 646
}
+#line 646
if (var_rank[i] == 0 && i%2 == 0)
+#line 646
err = nc_put_vara_short(ncid, i, NULL, NULL, value);
+#line 646
else
+#line 646
err = nc_put_vara_short(ncid, i, start, edge, value);
+#line 646
if (canConvert) {
+#line 646
if (allInExtRange) {
+#line 646
IF (err)
+#line 646
error("%s", nc_strerror(err));
+#line 646
} else {
+#line 646
IF (err != NC_ERANGE)
+#line 646
error("range error: status = %d", err);
+#line 646
}
+#line 646
} else {
+#line 646
IF (nels > 0 && err != NC_ECHAR)
+#line 646
error("wrong type: status = %d", err);
+#line 646
}
+#line 646
}
+#line 646
}
+#line 646
+#line 646
err = nc_close(ncid);
+#line 646
IF (err)
+#line 646
error("nc_close: %s", nc_strerror(err));
+#line 646
+#line 646
check_vars_short(scratch);
+#line 646
+#line 646
err = remove(scratch);
+#line 646
IF (err)
+#line 646
error("remove of %s failed", scratch);
+#line 646
}
+#line 646
void
+#line 647
test_nc_put_vara_int(void)
+#line 647
{
+#line 647
int ncid;
+#line 647
int d;
+#line 647
int i;
+#line 647
int j;
+#line 647
int k;
+#line 647
int err;
+#line 647
int nslabs;
+#line 647
int nels;
+#line 647
size_t start[MAX_RANK];
+#line 647
size_t edge[MAX_RANK];
+#line 647
size_t mid[MAX_RANK];
+#line 647
size_t index[MAX_RANK];
+#line 647
int canConvert; /* Both text or both numeric */
+#line 647
int allInExtRange; /* all values within external range? */
+#line 647
int value[MAX_NELS];
+#line 647
+#line 647
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 647
IF (err) {
+#line 647
error("nc_create: %s", nc_strerror(err));
+#line 647
return;
+#line 647
}
+#line 647
def_dims(ncid);
+#line 647
def_vars(ncid);
+#line 647
err = nc_enddef(ncid);
+#line 647
IF (err)
+#line 647
error("nc_enddef: %s", nc_strerror(err));
+#line 647
+#line 647
value[0] = 0;
+#line 647
for (i = 0; i < NVARS; i++) {
+#line 647
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 647
assert(var_rank[i] <= MAX_RANK);
+#line 647
assert(var_nels[i] <= MAX_NELS);
+#line 647
for (j = 0; j < var_rank[i]; j++) {
+#line 647
start[j] = 0;
+#line 647
edge[j] = 1;
+#line 647
}
+#line 647
err = nc_put_vara_int(BAD_ID, i, start, edge, value);
+#line 647
IF (err != NC_EBADID)
+#line 647
error("bad ncid: status = %d", err);
+#line 647
err = nc_put_vara_int(ncid, BAD_VARID, start, edge, value);
+#line 647
IF (err != NC_ENOTVAR)
+#line 647
error("bad var id: status = %d", err);
+#line 647
for (j = 0; j < var_rank[i]; j++) {
+#line 647
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 647
start[j] = var_shape[i][j];
+#line 647
err = nc_put_vara_int(ncid, i, start, edge, value);
+#line 647
IF (canConvert && err != NC_EINVALCOORDS)
+#line 647
error("bad start: status = %d", err);
+#line 647
start[j] = 0;
+#line 647
edge[j] = var_shape[i][j] + 1;
+#line 647
err = nc_put_vara_int(ncid, i, start, edge, value);
+#line 647
IF (canConvert && err != NC_EEDGE)
+#line 647
error("bad edge: status = %d", err);
+#line 647
edge[j] = 1;
+#line 647
}
+#line 647
}
+#line 647
/* Check correct error returned even when nothing to put */
+#line 647
for (j = 0; j < var_rank[i]; j++) {
+#line 647
edge[j] = 0;
+#line 647
}
+#line 647
err = nc_put_vara_int(BAD_ID, i, start, edge, value);
+#line 647
IF (err != NC_EBADID)
+#line 647
error("bad ncid: status = %d", err);
+#line 647
err = nc_put_vara_int(ncid, BAD_VARID, start, edge, value);
+#line 647
IF (err != NC_ENOTVAR)
+#line 647
error("bad var id: status = %d", err);
+#line 647
for (j = 0; j < var_rank[i]; j++) {
+#line 647
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 647
start[j] = var_shape[i][j];
+#line 647
err = nc_put_vara_int(ncid, i, start, edge, value);
+#line 647
IF (canConvert && err != NC_EINVALCOORDS)
+#line 647
error("bad start: status = %d", err);
+#line 647
start[j] = 0;
+#line 647
}
+#line 647
}
+#line 647
err = nc_put_vara_int(ncid, i, start, edge, value);
+#line 647
if (canConvert) {
+#line 647
IF (err)
+#line 647
error("%s", nc_strerror(err));
+#line 647
} else {
+#line 647
IF (err != NC_ECHAR)
+#line 647
error("wrong type: status = %d", err);
+#line 647
}
+#line 647
for (j = 0; j < var_rank[i]; j++) {
+#line 647
edge[j] = 1;
+#line 647
}
+#line 647
+#line 647
/* Choose a random point dividing each dim into 2 parts */
+#line 647
/* Put 2^rank (nslabs) slabs so defined */
+#line 647
nslabs = 1;
+#line 647
for (j = 0; j < var_rank[i]; j++) {
+#line 647
mid[j] = roll( var_shape[i][j] );
+#line 647
nslabs *= 2;
+#line 647
}
+#line 647
/* bits of k determine whether to put lower or upper part of dim */
+#line 647
for (k = 0; k < nslabs; k++) {
+#line 647
nels = 1;
+#line 647
for (j = 0; j < var_rank[i]; j++) {
+#line 647
if ((k >> j) & 1) {
+#line 647
start[j] = 0;
+#line 647
edge[j] = mid[j];
+#line 647
}else{
+#line 647
start[j] = mid[j];
+#line 647
edge[j] = var_shape[i][j] - mid[j];
+#line 647
}
+#line 647
nels *= edge[j];
+#line 647
}
+#line 647
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 647
err = toMixedBase(j, var_rank[i], edge, index);
+#line 647
IF (err)
+#line 647
error("error in toMixedBase 1");
+#line 647
for (d = 0; d < var_rank[i]; d++)
+#line 647
index[d] += start[d];
+#line 647
value[j]= hash_int(var_type[i], var_rank[i], index, NCT_INT);
+#line 647
allInExtRange = allInExtRange
+#line 647
&& inRange3(value[j], var_type[i], NCT_INT);
+#line 647
}
+#line 647
if (var_rank[i] == 0 && i%2 == 0)
+#line 647
err = nc_put_vara_int(ncid, i, NULL, NULL, value);
+#line 647
else
+#line 647
err = nc_put_vara_int(ncid, i, start, edge, value);
+#line 647
if (canConvert) {
+#line 647
if (allInExtRange) {
+#line 647
IF (err)
+#line 647
error("%s", nc_strerror(err));
+#line 647
} else {
+#line 647
IF (err != NC_ERANGE)
+#line 647
error("range error: status = %d", err);
+#line 647
}
+#line 647
} else {
+#line 647
IF (nels > 0 && err != NC_ECHAR)
+#line 647
error("wrong type: status = %d", err);
+#line 647
}
+#line 647
}
+#line 647
}
+#line 647
+#line 647
err = nc_close(ncid);
+#line 647
IF (err)
+#line 647
error("nc_close: %s", nc_strerror(err));
+#line 647
+#line 647
check_vars_int(scratch);
+#line 647
+#line 647
err = remove(scratch);
+#line 647
IF (err)
+#line 647
error("remove of %s failed", scratch);
+#line 647
}
+#line 647
void
+#line 648
test_nc_put_vara_long(void)
+#line 648
{
+#line 648
int ncid;
+#line 648
int d;
+#line 648
int i;
+#line 648
int j;
+#line 648
int k;
+#line 648
int err;
+#line 648
int nslabs;
+#line 648
int nels;
+#line 648
size_t start[MAX_RANK];
+#line 648
size_t edge[MAX_RANK];
+#line 648
size_t mid[MAX_RANK];
+#line 648
size_t index[MAX_RANK];
+#line 648
int canConvert; /* Both text or both numeric */
+#line 648
int allInExtRange; /* all values within external range? */
+#line 648
long value[MAX_NELS];
+#line 648
+#line 648
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 648
IF (err) {
+#line 648
error("nc_create: %s", nc_strerror(err));
+#line 648
return;
+#line 648
}
+#line 648
def_dims(ncid);
+#line 648
def_vars(ncid);
+#line 648
err = nc_enddef(ncid);
+#line 648
IF (err)
+#line 648
error("nc_enddef: %s", nc_strerror(err));
+#line 648
+#line 648
value[0] = 0;
+#line 648
for (i = 0; i < NVARS; i++) {
+#line 648
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 648
assert(var_rank[i] <= MAX_RANK);
+#line 648
assert(var_nels[i] <= MAX_NELS);
+#line 648
for (j = 0; j < var_rank[i]; j++) {
+#line 648
start[j] = 0;
+#line 648
edge[j] = 1;
+#line 648
}
+#line 648
err = nc_put_vara_long(BAD_ID, i, start, edge, value);
+#line 648
IF (err != NC_EBADID)
+#line 648
error("bad ncid: status = %d", err);
+#line 648
err = nc_put_vara_long(ncid, BAD_VARID, start, edge, value);
+#line 648
IF (err != NC_ENOTVAR)
+#line 648
error("bad var id: status = %d", err);
+#line 648
for (j = 0; j < var_rank[i]; j++) {
+#line 648
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 648
start[j] = var_shape[i][j];
+#line 648
err = nc_put_vara_long(ncid, i, start, edge, value);
+#line 648
IF (canConvert && err != NC_EINVALCOORDS)
+#line 648
error("bad start: status = %d", err);
+#line 648
start[j] = 0;
+#line 648
edge[j] = var_shape[i][j] + 1;
+#line 648
err = nc_put_vara_long(ncid, i, start, edge, value);
+#line 648
IF (canConvert && err != NC_EEDGE)
+#line 648
error("bad edge: status = %d", err);
+#line 648
edge[j] = 1;
+#line 648
}
+#line 648
}
+#line 648
/* Check correct error returned even when nothing to put */
+#line 648
for (j = 0; j < var_rank[i]; j++) {
+#line 648
edge[j] = 0;
+#line 648
}
+#line 648
err = nc_put_vara_long(BAD_ID, i, start, edge, value);
+#line 648
IF (err != NC_EBADID)
+#line 648
error("bad ncid: status = %d", err);
+#line 648
err = nc_put_vara_long(ncid, BAD_VARID, start, edge, value);
+#line 648
IF (err != NC_ENOTVAR)
+#line 648
error("bad var id: status = %d", err);
+#line 648
for (j = 0; j < var_rank[i]; j++) {
+#line 648
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 648
start[j] = var_shape[i][j];
+#line 648
err = nc_put_vara_long(ncid, i, start, edge, value);
+#line 648
IF (canConvert && err != NC_EINVALCOORDS)
+#line 648
error("bad start: status = %d", err);
+#line 648
start[j] = 0;
+#line 648
}
+#line 648
}
+#line 648
err = nc_put_vara_long(ncid, i, start, edge, value);
+#line 648
if (canConvert) {
+#line 648
IF (err)
+#line 648
error("%s", nc_strerror(err));
+#line 648
} else {
+#line 648
IF (err != NC_ECHAR)
+#line 648
error("wrong type: status = %d", err);
+#line 648
}
+#line 648
for (j = 0; j < var_rank[i]; j++) {
+#line 648
edge[j] = 1;
+#line 648
}
+#line 648
+#line 648
/* Choose a random point dividing each dim into 2 parts */
+#line 648
/* Put 2^rank (nslabs) slabs so defined */
+#line 648
nslabs = 1;
+#line 648
for (j = 0; j < var_rank[i]; j++) {
+#line 648
mid[j] = roll( var_shape[i][j] );
+#line 648
nslabs *= 2;
+#line 648
}
+#line 648
/* bits of k determine whether to put lower or upper part of dim */
+#line 648
for (k = 0; k < nslabs; k++) {
+#line 648
nels = 1;
+#line 648
for (j = 0; j < var_rank[i]; j++) {
+#line 648
if ((k >> j) & 1) {
+#line 648
start[j] = 0;
+#line 648
edge[j] = mid[j];
+#line 648
}else{
+#line 648
start[j] = mid[j];
+#line 648
edge[j] = var_shape[i][j] - mid[j];
+#line 648
}
+#line 648
nels *= edge[j];
+#line 648
}
+#line 648
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 648
err = toMixedBase(j, var_rank[i], edge, index);
+#line 648
IF (err)
+#line 648
error("error in toMixedBase 1");
+#line 648
for (d = 0; d < var_rank[i]; d++)
+#line 648
index[d] += start[d];
+#line 648
value[j]= hash_long(var_type[i], var_rank[i], index, NCT_LONG);
+#line 648
allInExtRange = allInExtRange
+#line 648
&& inRange3(value[j], var_type[i], NCT_LONG);
+#line 648
}
+#line 648
if (var_rank[i] == 0 && i%2 == 0)
+#line 648
err = nc_put_vara_long(ncid, i, NULL, NULL, value);
+#line 648
else
+#line 648
err = nc_put_vara_long(ncid, i, start, edge, value);
+#line 648
if (canConvert) {
+#line 648
if (allInExtRange) {
+#line 648
IF (err)
+#line 648
error("%s", nc_strerror(err));
+#line 648
} else {
+#line 648
IF (err != NC_ERANGE)
+#line 648
error("range error: status = %d", err);
+#line 648
}
+#line 648
} else {
+#line 648
IF (nels > 0 && err != NC_ECHAR)
+#line 648
error("wrong type: status = %d", err);
+#line 648
}
+#line 648
}
+#line 648
}
+#line 648
+#line 648
err = nc_close(ncid);
+#line 648
IF (err)
+#line 648
error("nc_close: %s", nc_strerror(err));
+#line 648
+#line 648
check_vars_long(scratch);
+#line 648
+#line 648
err = remove(scratch);
+#line 648
IF (err)
+#line 648
error("remove of %s failed", scratch);
+#line 648
}
+#line 648
void
+#line 649
test_nc_put_vara_float(void)
+#line 649
{
+#line 649
int ncid;
+#line 649
int d;
+#line 649
int i;
+#line 649
int j;
+#line 649
int k;
+#line 649
int err;
+#line 649
int nslabs;
+#line 649
int nels;
+#line 649
size_t start[MAX_RANK];
+#line 649
size_t edge[MAX_RANK];
+#line 649
size_t mid[MAX_RANK];
+#line 649
size_t index[MAX_RANK];
+#line 649
int canConvert; /* Both text or both numeric */
+#line 649
int allInExtRange; /* all values within external range? */
+#line 649
float value[MAX_NELS];
+#line 649
+#line 649
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 649
IF (err) {
+#line 649
error("nc_create: %s", nc_strerror(err));
+#line 649
return;
+#line 649
}
+#line 649
def_dims(ncid);
+#line 649
def_vars(ncid);
+#line 649
err = nc_enddef(ncid);
+#line 649
IF (err)
+#line 649
error("nc_enddef: %s", nc_strerror(err));
+#line 649
+#line 649
value[0] = 0;
+#line 649
for (i = 0; i < NVARS; i++) {
+#line 649
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 649
assert(var_rank[i] <= MAX_RANK);
+#line 649
assert(var_nels[i] <= MAX_NELS);
+#line 649
for (j = 0; j < var_rank[i]; j++) {
+#line 649
start[j] = 0;
+#line 649
edge[j] = 1;
+#line 649
}
+#line 649
err = nc_put_vara_float(BAD_ID, i, start, edge, value);
+#line 649
IF (err != NC_EBADID)
+#line 649
error("bad ncid: status = %d", err);
+#line 649
err = nc_put_vara_float(ncid, BAD_VARID, start, edge, value);
+#line 649
IF (err != NC_ENOTVAR)
+#line 649
error("bad var id: status = %d", err);
+#line 649
for (j = 0; j < var_rank[i]; j++) {
+#line 649
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 649
start[j] = var_shape[i][j];
+#line 649
err = nc_put_vara_float(ncid, i, start, edge, value);
+#line 649
IF (canConvert && err != NC_EINVALCOORDS)
+#line 649
error("bad start: status = %d", err);
+#line 649
start[j] = 0;
+#line 649
edge[j] = var_shape[i][j] + 1;
+#line 649
err = nc_put_vara_float(ncid, i, start, edge, value);
+#line 649
IF (canConvert && err != NC_EEDGE)
+#line 649
error("bad edge: status = %d", err);
+#line 649
edge[j] = 1;
+#line 649
}
+#line 649
}
+#line 649
/* Check correct error returned even when nothing to put */
+#line 649
for (j = 0; j < var_rank[i]; j++) {
+#line 649
edge[j] = 0;
+#line 649
}
+#line 649
err = nc_put_vara_float(BAD_ID, i, start, edge, value);
+#line 649
IF (err != NC_EBADID)
+#line 649
error("bad ncid: status = %d", err);
+#line 649
err = nc_put_vara_float(ncid, BAD_VARID, start, edge, value);
+#line 649
IF (err != NC_ENOTVAR)
+#line 649
error("bad var id: status = %d", err);
+#line 649
for (j = 0; j < var_rank[i]; j++) {
+#line 649
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 649
start[j] = var_shape[i][j];
+#line 649
err = nc_put_vara_float(ncid, i, start, edge, value);
+#line 649
IF (canConvert && err != NC_EINVALCOORDS)
+#line 649
error("bad start: status = %d", err);
+#line 649
start[j] = 0;
+#line 649
}
+#line 649
}
+#line 649
err = nc_put_vara_float(ncid, i, start, edge, value);
+#line 649
if (canConvert) {
+#line 649
IF (err)
+#line 649
error("%s", nc_strerror(err));
+#line 649
} else {
+#line 649
IF (err != NC_ECHAR)
+#line 649
error("wrong type: status = %d", err);
+#line 649
}
+#line 649
for (j = 0; j < var_rank[i]; j++) {
+#line 649
edge[j] = 1;
+#line 649
}
+#line 649
+#line 649
/* Choose a random point dividing each dim into 2 parts */
+#line 649
/* Put 2^rank (nslabs) slabs so defined */
+#line 649
nslabs = 1;
+#line 649
for (j = 0; j < var_rank[i]; j++) {
+#line 649
mid[j] = roll( var_shape[i][j] );
+#line 649
nslabs *= 2;
+#line 649
}
+#line 649
/* bits of k determine whether to put lower or upper part of dim */
+#line 649
for (k = 0; k < nslabs; k++) {
+#line 649
nels = 1;
+#line 649
for (j = 0; j < var_rank[i]; j++) {
+#line 649
if ((k >> j) & 1) {
+#line 649
start[j] = 0;
+#line 649
edge[j] = mid[j];
+#line 649
}else{
+#line 649
start[j] = mid[j];
+#line 649
edge[j] = var_shape[i][j] - mid[j];
+#line 649
}
+#line 649
nels *= edge[j];
+#line 649
}
+#line 649
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 649
err = toMixedBase(j, var_rank[i], edge, index);
+#line 649
IF (err)
+#line 649
error("error in toMixedBase 1");
+#line 649
for (d = 0; d < var_rank[i]; d++)
+#line 649
index[d] += start[d];
+#line 649
value[j]= hash_float(var_type[i], var_rank[i], index, NCT_FLOAT);
+#line 649
allInExtRange = allInExtRange
+#line 649
&& inRange3(value[j], var_type[i], NCT_FLOAT);
+#line 649
}
+#line 649
if (var_rank[i] == 0 && i%2 == 0)
+#line 649
err = nc_put_vara_float(ncid, i, NULL, NULL, value);
+#line 649
else
+#line 649
err = nc_put_vara_float(ncid, i, start, edge, value);
+#line 649
if (canConvert) {
+#line 649
if (allInExtRange) {
+#line 649
IF (err)
+#line 649
error("%s", nc_strerror(err));
+#line 649
} else {
+#line 649
IF (err != NC_ERANGE)
+#line 649
error("range error: status = %d", err);
+#line 649
}
+#line 649
} else {
+#line 649
IF (nels > 0 && err != NC_ECHAR)
+#line 649
error("wrong type: status = %d", err);
+#line 649
}
+#line 649
}
+#line 649
}
+#line 649
+#line 649
err = nc_close(ncid);
+#line 649
IF (err)
+#line 649
error("nc_close: %s", nc_strerror(err));
+#line 649
+#line 649
check_vars_float(scratch);
+#line 649
+#line 649
err = remove(scratch);
+#line 649
IF (err)
+#line 649
error("remove of %s failed", scratch);
+#line 649
}
+#line 649
void
+#line 650
test_nc_put_vara_double(void)
+#line 650
{
+#line 650
int ncid;
+#line 650
int d;
+#line 650
int i;
+#line 650
int j;
+#line 650
int k;
+#line 650
int err;
+#line 650
int nslabs;
+#line 650
int nels;
+#line 650
size_t start[MAX_RANK];
+#line 650
size_t edge[MAX_RANK];
+#line 650
size_t mid[MAX_RANK];
+#line 650
size_t index[MAX_RANK];
+#line 650
int canConvert; /* Both text or both numeric */
+#line 650
int allInExtRange; /* all values within external range? */
+#line 650
double value[MAX_NELS];
+#line 650
+#line 650
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 650
IF (err) {
+#line 650
error("nc_create: %s", nc_strerror(err));
+#line 650
return;
+#line 650
}
+#line 650
def_dims(ncid);
+#line 650
def_vars(ncid);
+#line 650
err = nc_enddef(ncid);
+#line 650
IF (err)
+#line 650
error("nc_enddef: %s", nc_strerror(err));
+#line 650
+#line 650
value[0] = 0;
+#line 650
for (i = 0; i < NVARS; i++) {
+#line 650
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 650
assert(var_rank[i] <= MAX_RANK);
+#line 650
assert(var_nels[i] <= MAX_NELS);
+#line 650
for (j = 0; j < var_rank[i]; j++) {
+#line 650
start[j] = 0;
+#line 650
edge[j] = 1;
+#line 650
}
+#line 650
err = nc_put_vara_double(BAD_ID, i, start, edge, value);
+#line 650
IF (err != NC_EBADID)
+#line 650
error("bad ncid: status = %d", err);
+#line 650
err = nc_put_vara_double(ncid, BAD_VARID, start, edge, value);
+#line 650
IF (err != NC_ENOTVAR)
+#line 650
error("bad var id: status = %d", err);
+#line 650
for (j = 0; j < var_rank[i]; j++) {
+#line 650
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 650
start[j] = var_shape[i][j];
+#line 650
err = nc_put_vara_double(ncid, i, start, edge, value);
+#line 650
IF (canConvert && err != NC_EINVALCOORDS)
+#line 650
error("bad start: status = %d", err);
+#line 650
start[j] = 0;
+#line 650
edge[j] = var_shape[i][j] + 1;
+#line 650
err = nc_put_vara_double(ncid, i, start, edge, value);
+#line 650
IF (canConvert && err != NC_EEDGE)
+#line 650
error("bad edge: status = %d", err);
+#line 650
edge[j] = 1;
+#line 650
}
+#line 650
}
+#line 650
/* Check correct error returned even when nothing to put */
+#line 650
for (j = 0; j < var_rank[i]; j++) {
+#line 650
edge[j] = 0;
+#line 650
}
+#line 650
err = nc_put_vara_double(BAD_ID, i, start, edge, value);
+#line 650
IF (err != NC_EBADID)
+#line 650
error("bad ncid: status = %d", err);
+#line 650
err = nc_put_vara_double(ncid, BAD_VARID, start, edge, value);
+#line 650
IF (err != NC_ENOTVAR)
+#line 650
error("bad var id: status = %d", err);
+#line 650
for (j = 0; j < var_rank[i]; j++) {
+#line 650
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 650
start[j] = var_shape[i][j];
+#line 650
err = nc_put_vara_double(ncid, i, start, edge, value);
+#line 650
IF (canConvert && err != NC_EINVALCOORDS)
+#line 650
error("bad start: status = %d", err);
+#line 650
start[j] = 0;
+#line 650
}
+#line 650
}
+#line 650
err = nc_put_vara_double(ncid, i, start, edge, value);
+#line 650
if (canConvert) {
+#line 650
IF (err)
+#line 650
error("%s", nc_strerror(err));
+#line 650
} else {
+#line 650
IF (err != NC_ECHAR)
+#line 650
error("wrong type: status = %d", err);
+#line 650
}
+#line 650
for (j = 0; j < var_rank[i]; j++) {
+#line 650
edge[j] = 1;
+#line 650
}
+#line 650
+#line 650
/* Choose a random point dividing each dim into 2 parts */
+#line 650
/* Put 2^rank (nslabs) slabs so defined */
+#line 650
nslabs = 1;
+#line 650
for (j = 0; j < var_rank[i]; j++) {
+#line 650
mid[j] = roll( var_shape[i][j] );
+#line 650
nslabs *= 2;
+#line 650
}
+#line 650
/* bits of k determine whether to put lower or upper part of dim */
+#line 650
for (k = 0; k < nslabs; k++) {
+#line 650
nels = 1;
+#line 650
for (j = 0; j < var_rank[i]; j++) {
+#line 650
if ((k >> j) & 1) {
+#line 650
start[j] = 0;
+#line 650
edge[j] = mid[j];
+#line 650
}else{
+#line 650
start[j] = mid[j];
+#line 650
edge[j] = var_shape[i][j] - mid[j];
+#line 650
}
+#line 650
nels *= edge[j];
+#line 650
}
+#line 650
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 650
err = toMixedBase(j, var_rank[i], edge, index);
+#line 650
IF (err)
+#line 650
error("error in toMixedBase 1");
+#line 650
for (d = 0; d < var_rank[i]; d++)
+#line 650
index[d] += start[d];
+#line 650
value[j]= hash_double(var_type[i], var_rank[i], index, NCT_DOUBLE);
+#line 650
allInExtRange = allInExtRange
+#line 650
&& inRange3(value[j], var_type[i], NCT_DOUBLE);
+#line 650
}
+#line 650
if (var_rank[i] == 0 && i%2 == 0)
+#line 650
err = nc_put_vara_double(ncid, i, NULL, NULL, value);
+#line 650
else
+#line 650
err = nc_put_vara_double(ncid, i, start, edge, value);
+#line 650
if (canConvert) {
+#line 650
if (allInExtRange) {
+#line 650
IF (err)
+#line 650
error("%s", nc_strerror(err));
+#line 650
} else {
+#line 650
IF (err != NC_ERANGE)
+#line 650
error("range error: status = %d", err);
+#line 650
}
+#line 650
} else {
+#line 650
IF (nels > 0 && err != NC_ECHAR)
+#line 650
error("wrong type: status = %d", err);
+#line 650
}
+#line 650
}
+#line 650
}
+#line 650
+#line 650
err = nc_close(ncid);
+#line 650
IF (err)
+#line 650
error("nc_close: %s", nc_strerror(err));
+#line 650
+#line 650
check_vars_double(scratch);
+#line 650
+#line 650
err = remove(scratch);
+#line 650
IF (err)
+#line 650
error("remove of %s failed", scratch);
+#line 650
}
+#line 650
+#line 815
void
+#line 816
test_nc_put_vars_text(void)
+#line 816
{
+#line 816
int ncid;
+#line 816
int d;
+#line 816
int i;
+#line 816
int j;
+#line 816
int k;
+#line 816
int m;
+#line 816
int err;
+#line 816
int nels;
+#line 816
int nslabs;
+#line 816
int nstarts; /* number of different starts */
+#line 816
size_t start[MAX_RANK];
+#line 816
size_t edge[MAX_RANK];
+#line 816
size_t index[MAX_RANK];
+#line 816
size_t index2[MAX_RANK];
+#line 816
size_t mid[MAX_RANK];
+#line 816
size_t count[MAX_RANK];
+#line 816
size_t sstride[MAX_RANK];
+#line 816
ptrdiff_t stride[MAX_RANK];
+#line 816
int canConvert; /* Both text or both numeric */
+#line 816
int allInExtRange; /* all values within external range? */
+#line 816
text value[MAX_NELS];
+#line 816
+#line 816
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 816
IF (err) {
+#line 816
error("nc_create: %s", nc_strerror(err));
+#line 816
return;
+#line 816
}
+#line 816
def_dims(ncid);
+#line 816
def_vars(ncid);
+#line 816
err = nc_enddef(ncid);
+#line 816
IF (err)
+#line 816
error("nc_enddef: %s", nc_strerror(err));
+#line 816
+#line 816
for (i = 0; i < NVARS; i++) {
+#line 816
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 816
assert(var_rank[i] <= MAX_RANK);
+#line 816
assert(var_nels[i] <= MAX_NELS);
+#line 816
for (j = 0; j < var_rank[i]; j++) {
+#line 816
start[j] = 0;
+#line 816
edge[j] = 1;
+#line 816
stride[j] = 1;
+#line 816
}
+#line 816
err = nc_put_vars_text(BAD_ID, i, start, edge, stride, value);
+#line 816
IF (err != NC_EBADID)
+#line 816
error("bad ncid: status = %d", err);
+#line 816
err = nc_put_vars_text(ncid, BAD_VARID, start, edge, stride, value);
+#line 816
IF (err != NC_ENOTVAR)
+#line 816
error("bad var id: status = %d", err);
+#line 816
for (j = 0; j < var_rank[i]; j++) {
+#line 816
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 816
start[j] = var_shape[i][j] + 1;
+#line 816
err = nc_put_vars_text(ncid, i, start, edge, stride, value);
+#line 816
if(!canConvert) {
+#line 816
IF(err != NC_ECHAR)
+#line 816
error("conversion: status = %d", err);
+#line 816
} else {
+#line 816
IF(err != NC_EINVALCOORDS)
+#line 816
error("bad start: status = %d", err);
+#line 816
start[j] = 0;
+#line 816
edge[j] = var_shape[i][j] + 1;
+#line 816
err = nc_put_vars_text(ncid, i, start, edge, stride, value);
+#line 816
IF (err != NC_EEDGE)
+#line 816
error("bad edge: status = %d", err);
+#line 816
edge[j] = 1;
+#line 816
stride[j] = 0;
+#line 816
err = nc_put_vars_text(ncid, i, start, edge, stride, value);
+#line 816
IF (err != NC_ESTRIDE)
+#line 816
error("bad stride: status = %d", err);
+#line 816
stride[j] = 1;
+#line 816
}
+#line 816
}
+#line 816
}
+#line 816
/* Choose a random point dividing each dim into 2 parts */
+#line 816
/* Put 2^rank (nslabs) slabs so defined */
+#line 816
nslabs = 1;
+#line 816
for (j = 0; j < var_rank[i]; j++) {
+#line 816
mid[j] = roll( var_shape[i][j] );
+#line 816
nslabs *= 2;
+#line 816
}
+#line 816
/* bits of k determine whether to put lower or upper part of dim */
+#line 816
/* choose random stride from 1 to edge */
+#line 816
for (k = 0; k < nslabs; k++) {
+#line 816
nstarts = 1;
+#line 816
for (j = 0; j < var_rank[i]; j++) {
+#line 816
if ((k >> j) & 1) {
+#line 816
start[j] = 0;
+#line 816
edge[j] = mid[j];
+#line 816
}else{
+#line 816
start[j] = mid[j];
+#line 816
edge[j] = var_shape[i][j] - mid[j];
+#line 816
}
+#line 816
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 816
nstarts *= stride[j];
+#line 816
}
+#line 816
for (m = 0; m < nstarts; m++) {
+#line 816
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 816
IF (err)
+#line 816
error("error in toMixedBase");
+#line 816
nels = 1;
+#line 816
for (j = 0; j < var_rank[i]; j++) {
+#line 816
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 816
nels *= count[j];
+#line 816
index[j] += start[j];
+#line 816
}
+#line 816
/* Random choice of forward or backward */
+#line 816
/* TODO
+#line 816
if ( roll(2) ) {
+#line 816
for (j = 0; j < var_rank[i]; j++) {
+#line 816
index[j] += (count[j] - 1) * stride[j];
+#line 816
stride[j] = -stride[j];
+#line 816
}
+#line 816
}
+#line 816
*/
+#line 816
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 816
err = toMixedBase(j, var_rank[i], count, index2);
+#line 816
IF (err)
+#line 816
error("error in toMixedBase");
+#line 816
for (d = 0; d < var_rank[i]; d++)
+#line 816
index2[d] = index[d] + index2[d] * stride[d];
+#line 816
value[j] = hash_text(var_type[i], var_rank[i], index2,
+#line 816
NCT_TEXT);
+#line 816
allInExtRange = allInExtRange
+#line 816
&& inRange3(value[j], var_type[i], NCT_TEXT);
+#line 816
}
+#line 816
if (var_rank[i] == 0 && i%2 == 0)
+#line 816
err = nc_put_vars_text(ncid, i, NULL, NULL, stride, value);
+#line 816
else
+#line 816
err = nc_put_vars_text(ncid, i, index, count, stride, value);
+#line 816
if (canConvert) {
+#line 816
if (allInExtRange) {
+#line 816
IF (err)
+#line 816
error("%s", nc_strerror(err));
+#line 816
} else {
+#line 816
IF (err != NC_ERANGE)
+#line 816
error("range error: status = %d", err);
+#line 816
}
+#line 816
} else {
+#line 816
IF (nels > 0 && err != NC_ECHAR)
+#line 816
error("wrong type: status = %d", err);
+#line 816
}
+#line 816
}
+#line 816
}
+#line 816
}
+#line 816
+#line 816
err = nc_close(ncid);
+#line 816
IF (err)
+#line 816
error("nc_close: %s", nc_strerror(err));
+#line 816
+#line 816
check_vars_text(scratch);
+#line 816
+#line 816
err = remove(scratch);
+#line 816
IF (err)
+#line 816
error("remove of %s failed", scratch);
+#line 816
}
+#line 816
void
+#line 817
test_nc_put_vars_uchar(void)
+#line 817
{
+#line 817
int ncid;
+#line 817
int d;
+#line 817
int i;
+#line 817
int j;
+#line 817
int k;
+#line 817
int m;
+#line 817
int err;
+#line 817
int nels;
+#line 817
int nslabs;
+#line 817
int nstarts; /* number of different starts */
+#line 817
size_t start[MAX_RANK];
+#line 817
size_t edge[MAX_RANK];
+#line 817
size_t index[MAX_RANK];
+#line 817
size_t index2[MAX_RANK];
+#line 817
size_t mid[MAX_RANK];
+#line 817
size_t count[MAX_RANK];
+#line 817
size_t sstride[MAX_RANK];
+#line 817
ptrdiff_t stride[MAX_RANK];
+#line 817
int canConvert; /* Both text or both numeric */
+#line 817
int allInExtRange; /* all values within external range? */
+#line 817
uchar value[MAX_NELS];
+#line 817
+#line 817
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 817
IF (err) {
+#line 817
error("nc_create: %s", nc_strerror(err));
+#line 817
return;
+#line 817
}
+#line 817
def_dims(ncid);
+#line 817
def_vars(ncid);
+#line 817
err = nc_enddef(ncid);
+#line 817
IF (err)
+#line 817
error("nc_enddef: %s", nc_strerror(err));
+#line 817
+#line 817
for (i = 0; i < NVARS; i++) {
+#line 817
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 817
assert(var_rank[i] <= MAX_RANK);
+#line 817
assert(var_nels[i] <= MAX_NELS);
+#line 817
for (j = 0; j < var_rank[i]; j++) {
+#line 817
start[j] = 0;
+#line 817
edge[j] = 1;
+#line 817
stride[j] = 1;
+#line 817
}
+#line 817
err = nc_put_vars_uchar(BAD_ID, i, start, edge, stride, value);
+#line 817
IF (err != NC_EBADID)
+#line 817
error("bad ncid: status = %d", err);
+#line 817
err = nc_put_vars_uchar(ncid, BAD_VARID, start, edge, stride, value);
+#line 817
IF (err != NC_ENOTVAR)
+#line 817
error("bad var id: status = %d", err);
+#line 817
for (j = 0; j < var_rank[i]; j++) {
+#line 817
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 817
start[j] = var_shape[i][j] + 1;
+#line 817
err = nc_put_vars_uchar(ncid, i, start, edge, stride, value);
+#line 817
if(!canConvert) {
+#line 817
IF(err != NC_ECHAR)
+#line 817
error("conversion: status = %d", err);
+#line 817
} else {
+#line 817
IF(err != NC_EINVALCOORDS)
+#line 817
error("bad start: status = %d", err);
+#line 817
start[j] = 0;
+#line 817
edge[j] = var_shape[i][j] + 1;
+#line 817
err = nc_put_vars_uchar(ncid, i, start, edge, stride, value);
+#line 817
IF (err != NC_EEDGE)
+#line 817
error("bad edge: status = %d", err);
+#line 817
edge[j] = 1;
+#line 817
stride[j] = 0;
+#line 817
err = nc_put_vars_uchar(ncid, i, start, edge, stride, value);
+#line 817
IF (err != NC_ESTRIDE)
+#line 817
error("bad stride: status = %d", err);
+#line 817
stride[j] = 1;
+#line 817
}
+#line 817
}
+#line 817
}
+#line 817
/* Choose a random point dividing each dim into 2 parts */
+#line 817
/* Put 2^rank (nslabs) slabs so defined */
+#line 817
nslabs = 1;
+#line 817
for (j = 0; j < var_rank[i]; j++) {
+#line 817
mid[j] = roll( var_shape[i][j] );
+#line 817
nslabs *= 2;
+#line 817
}
+#line 817
/* bits of k determine whether to put lower or upper part of dim */
+#line 817
/* choose random stride from 1 to edge */
+#line 817
for (k = 0; k < nslabs; k++) {
+#line 817
nstarts = 1;
+#line 817
for (j = 0; j < var_rank[i]; j++) {
+#line 817
if ((k >> j) & 1) {
+#line 817
start[j] = 0;
+#line 817
edge[j] = mid[j];
+#line 817
}else{
+#line 817
start[j] = mid[j];
+#line 817
edge[j] = var_shape[i][j] - mid[j];
+#line 817
}
+#line 817
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 817
nstarts *= stride[j];
+#line 817
}
+#line 817
for (m = 0; m < nstarts; m++) {
+#line 817
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 817
IF (err)
+#line 817
error("error in toMixedBase");
+#line 817
nels = 1;
+#line 817
for (j = 0; j < var_rank[i]; j++) {
+#line 817
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 817
nels *= count[j];
+#line 817
index[j] += start[j];
+#line 817
}
+#line 817
/* Random choice of forward or backward */
+#line 817
/* TODO
+#line 817
if ( roll(2) ) {
+#line 817
for (j = 0; j < var_rank[i]; j++) {
+#line 817
index[j] += (count[j] - 1) * stride[j];
+#line 817
stride[j] = -stride[j];
+#line 817
}
+#line 817
}
+#line 817
*/
+#line 817
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 817
err = toMixedBase(j, var_rank[i], count, index2);
+#line 817
IF (err)
+#line 817
error("error in toMixedBase");
+#line 817
for (d = 0; d < var_rank[i]; d++)
+#line 817
index2[d] = index[d] + index2[d] * stride[d];
+#line 817
value[j] = hash_uchar(var_type[i], var_rank[i], index2,
+#line 817
NCT_UCHAR);
+#line 817
allInExtRange = allInExtRange
+#line 817
&& inRange3(value[j], var_type[i], NCT_UCHAR);
+#line 817
}
+#line 817
if (var_rank[i] == 0 && i%2 == 0)
+#line 817
err = nc_put_vars_uchar(ncid, i, NULL, NULL, stride, value);
+#line 817
else
+#line 817
err = nc_put_vars_uchar(ncid, i, index, count, stride, value);
+#line 817
if (canConvert) {
+#line 817
if (allInExtRange) {
+#line 817
IF (err)
+#line 817
error("%s", nc_strerror(err));
+#line 817
} else {
+#line 817
IF (err != NC_ERANGE)
+#line 817
error("range error: status = %d", err);
+#line 817
}
+#line 817
} else {
+#line 817
IF (nels > 0 && err != NC_ECHAR)
+#line 817
error("wrong type: status = %d", err);
+#line 817
}
+#line 817
}
+#line 817
}
+#line 817
}
+#line 817
+#line 817
err = nc_close(ncid);
+#line 817
IF (err)
+#line 817
error("nc_close: %s", nc_strerror(err));
+#line 817
+#line 817
check_vars_uchar(scratch);
+#line 817
+#line 817
err = remove(scratch);
+#line 817
IF (err)
+#line 817
error("remove of %s failed", scratch);
+#line 817
}
+#line 817
void
+#line 818
test_nc_put_vars_schar(void)
+#line 818
{
+#line 818
int ncid;
+#line 818
int d;
+#line 818
int i;
+#line 818
int j;
+#line 818
int k;
+#line 818
int m;
+#line 818
int err;
+#line 818
int nels;
+#line 818
int nslabs;
+#line 818
int nstarts; /* number of different starts */
+#line 818
size_t start[MAX_RANK];
+#line 818
size_t edge[MAX_RANK];
+#line 818
size_t index[MAX_RANK];
+#line 818
size_t index2[MAX_RANK];
+#line 818
size_t mid[MAX_RANK];
+#line 818
size_t count[MAX_RANK];
+#line 818
size_t sstride[MAX_RANK];
+#line 818
ptrdiff_t stride[MAX_RANK];
+#line 818
int canConvert; /* Both text or both numeric */
+#line 818
int allInExtRange; /* all values within external range? */
+#line 818
schar value[MAX_NELS];
+#line 818
+#line 818
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 818
IF (err) {
+#line 818
error("nc_create: %s", nc_strerror(err));
+#line 818
return;
+#line 818
}
+#line 818
def_dims(ncid);
+#line 818
def_vars(ncid);
+#line 818
err = nc_enddef(ncid);
+#line 818
IF (err)
+#line 818
error("nc_enddef: %s", nc_strerror(err));
+#line 818
+#line 818
for (i = 0; i < NVARS; i++) {
+#line 818
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 818
assert(var_rank[i] <= MAX_RANK);
+#line 818
assert(var_nels[i] <= MAX_NELS);
+#line 818
for (j = 0; j < var_rank[i]; j++) {
+#line 818
start[j] = 0;
+#line 818
edge[j] = 1;
+#line 818
stride[j] = 1;
+#line 818
}
+#line 818
err = nc_put_vars_schar(BAD_ID, i, start, edge, stride, value);
+#line 818
IF (err != NC_EBADID)
+#line 818
error("bad ncid: status = %d", err);
+#line 818
err = nc_put_vars_schar(ncid, BAD_VARID, start, edge, stride, value);
+#line 818
IF (err != NC_ENOTVAR)
+#line 818
error("bad var id: status = %d", err);
+#line 818
for (j = 0; j < var_rank[i]; j++) {
+#line 818
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 818
start[j] = var_shape[i][j] + 1;
+#line 818
err = nc_put_vars_schar(ncid, i, start, edge, stride, value);
+#line 818
if(!canConvert) {
+#line 818
IF(err != NC_ECHAR)
+#line 818
error("conversion: status = %d", err);
+#line 818
} else {
+#line 818
IF(err != NC_EINVALCOORDS)
+#line 818
error("bad start: status = %d", err);
+#line 818
start[j] = 0;
+#line 818
edge[j] = var_shape[i][j] + 1;
+#line 818
err = nc_put_vars_schar(ncid, i, start, edge, stride, value);
+#line 818
IF (err != NC_EEDGE)
+#line 818
error("bad edge: status = %d", err);
+#line 818
edge[j] = 1;
+#line 818
stride[j] = 0;
+#line 818
err = nc_put_vars_schar(ncid, i, start, edge, stride, value);
+#line 818
IF (err != NC_ESTRIDE)
+#line 818
error("bad stride: status = %d", err);
+#line 818
stride[j] = 1;
+#line 818
}
+#line 818
}
+#line 818
}
+#line 818
/* Choose a random point dividing each dim into 2 parts */
+#line 818
/* Put 2^rank (nslabs) slabs so defined */
+#line 818
nslabs = 1;
+#line 818
for (j = 0; j < var_rank[i]; j++) {
+#line 818
mid[j] = roll( var_shape[i][j] );
+#line 818
nslabs *= 2;
+#line 818
}
+#line 818
/* bits of k determine whether to put lower or upper part of dim */
+#line 818
/* choose random stride from 1 to edge */
+#line 818
for (k = 0; k < nslabs; k++) {
+#line 818
nstarts = 1;
+#line 818
for (j = 0; j < var_rank[i]; j++) {
+#line 818
if ((k >> j) & 1) {
+#line 818
start[j] = 0;
+#line 818
edge[j] = mid[j];
+#line 818
}else{
+#line 818
start[j] = mid[j];
+#line 818
edge[j] = var_shape[i][j] - mid[j];
+#line 818
}
+#line 818
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 818
nstarts *= stride[j];
+#line 818
}
+#line 818
for (m = 0; m < nstarts; m++) {
+#line 818
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 818
IF (err)
+#line 818
error("error in toMixedBase");
+#line 818
nels = 1;
+#line 818
for (j = 0; j < var_rank[i]; j++) {
+#line 818
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 818
nels *= count[j];
+#line 818
index[j] += start[j];
+#line 818
}
+#line 818
/* Random choice of forward or backward */
+#line 818
/* TODO
+#line 818
if ( roll(2) ) {
+#line 818
for (j = 0; j < var_rank[i]; j++) {
+#line 818
index[j] += (count[j] - 1) * stride[j];
+#line 818
stride[j] = -stride[j];
+#line 818
}
+#line 818
}
+#line 818
*/
+#line 818
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 818
err = toMixedBase(j, var_rank[i], count, index2);
+#line 818
IF (err)
+#line 818
error("error in toMixedBase");
+#line 818
for (d = 0; d < var_rank[i]; d++)
+#line 818
index2[d] = index[d] + index2[d] * stride[d];
+#line 818
value[j] = hash_schar(var_type[i], var_rank[i], index2,
+#line 818
NCT_SCHAR);
+#line 818
allInExtRange = allInExtRange
+#line 818
&& inRange3(value[j], var_type[i], NCT_SCHAR);
+#line 818
}
+#line 818
if (var_rank[i] == 0 && i%2 == 0)
+#line 818
err = nc_put_vars_schar(ncid, i, NULL, NULL, stride, value);
+#line 818
else
+#line 818
err = nc_put_vars_schar(ncid, i, index, count, stride, value);
+#line 818
if (canConvert) {
+#line 818
if (allInExtRange) {
+#line 818
IF (err)
+#line 818
error("%s", nc_strerror(err));
+#line 818
} else {
+#line 818
IF (err != NC_ERANGE)
+#line 818
error("range error: status = %d", err);
+#line 818
}
+#line 818
} else {
+#line 818
IF (nels > 0 && err != NC_ECHAR)
+#line 818
error("wrong type: status = %d", err);
+#line 818
}
+#line 818
}
+#line 818
}
+#line 818
}
+#line 818
+#line 818
err = nc_close(ncid);
+#line 818
IF (err)
+#line 818
error("nc_close: %s", nc_strerror(err));
+#line 818
+#line 818
check_vars_schar(scratch);
+#line 818
+#line 818
err = remove(scratch);
+#line 818
IF (err)
+#line 818
error("remove of %s failed", scratch);
+#line 818
}
+#line 818
void
+#line 819
test_nc_put_vars_short(void)
+#line 819
{
+#line 819
int ncid;
+#line 819
int d;
+#line 819
int i;
+#line 819
int j;
+#line 819
int k;
+#line 819
int m;
+#line 819
int err;
+#line 819
int nels;
+#line 819
int nslabs;
+#line 819
int nstarts; /* number of different starts */
+#line 819
size_t start[MAX_RANK];
+#line 819
size_t edge[MAX_RANK];
+#line 819
size_t index[MAX_RANK];
+#line 819
size_t index2[MAX_RANK];
+#line 819
size_t mid[MAX_RANK];
+#line 819
size_t count[MAX_RANK];
+#line 819
size_t sstride[MAX_RANK];
+#line 819
ptrdiff_t stride[MAX_RANK];
+#line 819
int canConvert; /* Both text or both numeric */
+#line 819
int allInExtRange; /* all values within external range? */
+#line 819
short value[MAX_NELS];
+#line 819
+#line 819
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 819
IF (err) {
+#line 819
error("nc_create: %s", nc_strerror(err));
+#line 819
return;
+#line 819
}
+#line 819
def_dims(ncid);
+#line 819
def_vars(ncid);
+#line 819
err = nc_enddef(ncid);
+#line 819
IF (err)
+#line 819
error("nc_enddef: %s", nc_strerror(err));
+#line 819
+#line 819
for (i = 0; i < NVARS; i++) {
+#line 819
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 819
assert(var_rank[i] <= MAX_RANK);
+#line 819
assert(var_nels[i] <= MAX_NELS);
+#line 819
for (j = 0; j < var_rank[i]; j++) {
+#line 819
start[j] = 0;
+#line 819
edge[j] = 1;
+#line 819
stride[j] = 1;
+#line 819
}
+#line 819
err = nc_put_vars_short(BAD_ID, i, start, edge, stride, value);
+#line 819
IF (err != NC_EBADID)
+#line 819
error("bad ncid: status = %d", err);
+#line 819
err = nc_put_vars_short(ncid, BAD_VARID, start, edge, stride, value);
+#line 819
IF (err != NC_ENOTVAR)
+#line 819
error("bad var id: status = %d", err);
+#line 819
for (j = 0; j < var_rank[i]; j++) {
+#line 819
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 819
start[j] = var_shape[i][j] + 1;
+#line 819
err = nc_put_vars_short(ncid, i, start, edge, stride, value);
+#line 819
if(!canConvert) {
+#line 819
IF(err != NC_ECHAR)
+#line 819
error("conversion: status = %d", err);
+#line 819
} else {
+#line 819
IF(err != NC_EINVALCOORDS)
+#line 819
error("bad start: status = %d", err);
+#line 819
start[j] = 0;
+#line 819
edge[j] = var_shape[i][j] + 1;
+#line 819
err = nc_put_vars_short(ncid, i, start, edge, stride, value);
+#line 819
IF (err != NC_EEDGE)
+#line 819
error("bad edge: status = %d", err);
+#line 819
edge[j] = 1;
+#line 819
stride[j] = 0;
+#line 819
err = nc_put_vars_short(ncid, i, start, edge, stride, value);
+#line 819
IF (err != NC_ESTRIDE)
+#line 819
error("bad stride: status = %d", err);
+#line 819
stride[j] = 1;
+#line 819
}
+#line 819
}
+#line 819
}
+#line 819
/* Choose a random point dividing each dim into 2 parts */
+#line 819
/* Put 2^rank (nslabs) slabs so defined */
+#line 819
nslabs = 1;
+#line 819
for (j = 0; j < var_rank[i]; j++) {
+#line 819
mid[j] = roll( var_shape[i][j] );
+#line 819
nslabs *= 2;
+#line 819
}
+#line 819
/* bits of k determine whether to put lower or upper part of dim */
+#line 819
/* choose random stride from 1 to edge */
+#line 819
for (k = 0; k < nslabs; k++) {
+#line 819
nstarts = 1;
+#line 819
for (j = 0; j < var_rank[i]; j++) {
+#line 819
if ((k >> j) & 1) {
+#line 819
start[j] = 0;
+#line 819
edge[j] = mid[j];
+#line 819
}else{
+#line 819
start[j] = mid[j];
+#line 819
edge[j] = var_shape[i][j] - mid[j];
+#line 819
}
+#line 819
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 819
nstarts *= stride[j];
+#line 819
}
+#line 819
for (m = 0; m < nstarts; m++) {
+#line 819
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 819
IF (err)
+#line 819
error("error in toMixedBase");
+#line 819
nels = 1;
+#line 819
for (j = 0; j < var_rank[i]; j++) {
+#line 819
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 819
nels *= count[j];
+#line 819
index[j] += start[j];
+#line 819
}
+#line 819
/* Random choice of forward or backward */
+#line 819
/* TODO
+#line 819
if ( roll(2) ) {
+#line 819
for (j = 0; j < var_rank[i]; j++) {
+#line 819
index[j] += (count[j] - 1) * stride[j];
+#line 819
stride[j] = -stride[j];
+#line 819
}
+#line 819
}
+#line 819
*/
+#line 819
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 819
err = toMixedBase(j, var_rank[i], count, index2);
+#line 819
IF (err)
+#line 819
error("error in toMixedBase");
+#line 819
for (d = 0; d < var_rank[i]; d++)
+#line 819
index2[d] = index[d] + index2[d] * stride[d];
+#line 819
value[j] = hash_short(var_type[i], var_rank[i], index2,
+#line 819
NCT_SHORT);
+#line 819
allInExtRange = allInExtRange
+#line 819
&& inRange3(value[j], var_type[i], NCT_SHORT);
+#line 819
}
+#line 819
if (var_rank[i] == 0 && i%2 == 0)
+#line 819
err = nc_put_vars_short(ncid, i, NULL, NULL, stride, value);
+#line 819
else
+#line 819
err = nc_put_vars_short(ncid, i, index, count, stride, value);
+#line 819
if (canConvert) {
+#line 819
if (allInExtRange) {
+#line 819
IF (err)
+#line 819
error("%s", nc_strerror(err));
+#line 819
} else {
+#line 819
IF (err != NC_ERANGE)
+#line 819
error("range error: status = %d", err);
+#line 819
}
+#line 819
} else {
+#line 819
IF (nels > 0 && err != NC_ECHAR)
+#line 819
error("wrong type: status = %d", err);
+#line 819
}
+#line 819
}
+#line 819
}
+#line 819
}
+#line 819
+#line 819
err = nc_close(ncid);
+#line 819
IF (err)
+#line 819
error("nc_close: %s", nc_strerror(err));
+#line 819
+#line 819
check_vars_short(scratch);
+#line 819
+#line 819
err = remove(scratch);
+#line 819
IF (err)
+#line 819
error("remove of %s failed", scratch);
+#line 819
}
+#line 819
void
+#line 820
test_nc_put_vars_int(void)
+#line 820
{
+#line 820
int ncid;
+#line 820
int d;
+#line 820
int i;
+#line 820
int j;
+#line 820
int k;
+#line 820
int m;
+#line 820
int err;
+#line 820
int nels;
+#line 820
int nslabs;
+#line 820
int nstarts; /* number of different starts */
+#line 820
size_t start[MAX_RANK];
+#line 820
size_t edge[MAX_RANK];
+#line 820
size_t index[MAX_RANK];
+#line 820
size_t index2[MAX_RANK];
+#line 820
size_t mid[MAX_RANK];
+#line 820
size_t count[MAX_RANK];
+#line 820
size_t sstride[MAX_RANK];
+#line 820
ptrdiff_t stride[MAX_RANK];
+#line 820
int canConvert; /* Both text or both numeric */
+#line 820
int allInExtRange; /* all values within external range? */
+#line 820
int value[MAX_NELS];
+#line 820
+#line 820
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 820
IF (err) {
+#line 820
error("nc_create: %s", nc_strerror(err));
+#line 820
return;
+#line 820
}
+#line 820
def_dims(ncid);
+#line 820
def_vars(ncid);
+#line 820
err = nc_enddef(ncid);
+#line 820
IF (err)
+#line 820
error("nc_enddef: %s", nc_strerror(err));
+#line 820
+#line 820
for (i = 0; i < NVARS; i++) {
+#line 820
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 820
assert(var_rank[i] <= MAX_RANK);
+#line 820
assert(var_nels[i] <= MAX_NELS);
+#line 820
for (j = 0; j < var_rank[i]; j++) {
+#line 820
start[j] = 0;
+#line 820
edge[j] = 1;
+#line 820
stride[j] = 1;
+#line 820
}
+#line 820
err = nc_put_vars_int(BAD_ID, i, start, edge, stride, value);
+#line 820
IF (err != NC_EBADID)
+#line 820
error("bad ncid: status = %d", err);
+#line 820
err = nc_put_vars_int(ncid, BAD_VARID, start, edge, stride, value);
+#line 820
IF (err != NC_ENOTVAR)
+#line 820
error("bad var id: status = %d", err);
+#line 820
for (j = 0; j < var_rank[i]; j++) {
+#line 820
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 820
start[j] = var_shape[i][j] + 1;
+#line 820
err = nc_put_vars_int(ncid, i, start, edge, stride, value);
+#line 820
if(!canConvert) {
+#line 820
IF(err != NC_ECHAR)
+#line 820
error("conversion: status = %d", err);
+#line 820
} else {
+#line 820
IF(err != NC_EINVALCOORDS)
+#line 820
error("bad start: status = %d", err);
+#line 820
start[j] = 0;
+#line 820
edge[j] = var_shape[i][j] + 1;
+#line 820
err = nc_put_vars_int(ncid, i, start, edge, stride, value);
+#line 820
IF (err != NC_EEDGE)
+#line 820
error("bad edge: status = %d", err);
+#line 820
edge[j] = 1;
+#line 820
stride[j] = 0;
+#line 820
err = nc_put_vars_int(ncid, i, start, edge, stride, value);
+#line 820
IF (err != NC_ESTRIDE)
+#line 820
error("bad stride: status = %d", err);
+#line 820
stride[j] = 1;
+#line 820
}
+#line 820
}
+#line 820
}
+#line 820
/* Choose a random point dividing each dim into 2 parts */
+#line 820
/* Put 2^rank (nslabs) slabs so defined */
+#line 820
nslabs = 1;
+#line 820
for (j = 0; j < var_rank[i]; j++) {
+#line 820
mid[j] = roll( var_shape[i][j] );
+#line 820
nslabs *= 2;
+#line 820
}
+#line 820
/* bits of k determine whether to put lower or upper part of dim */
+#line 820
/* choose random stride from 1 to edge */
+#line 820
for (k = 0; k < nslabs; k++) {
+#line 820
nstarts = 1;
+#line 820
for (j = 0; j < var_rank[i]; j++) {
+#line 820
if ((k >> j) & 1) {
+#line 820
start[j] = 0;
+#line 820
edge[j] = mid[j];
+#line 820
}else{
+#line 820
start[j] = mid[j];
+#line 820
edge[j] = var_shape[i][j] - mid[j];
+#line 820
}
+#line 820
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 820
nstarts *= stride[j];
+#line 820
}
+#line 820
for (m = 0; m < nstarts; m++) {
+#line 820
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 820
IF (err)
+#line 820
error("error in toMixedBase");
+#line 820
nels = 1;
+#line 820
for (j = 0; j < var_rank[i]; j++) {
+#line 820
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 820
nels *= count[j];
+#line 820
index[j] += start[j];
+#line 820
}
+#line 820
/* Random choice of forward or backward */
+#line 820
/* TODO
+#line 820
if ( roll(2) ) {
+#line 820
for (j = 0; j < var_rank[i]; j++) {
+#line 820
index[j] += (count[j] - 1) * stride[j];
+#line 820
stride[j] = -stride[j];
+#line 820
}
+#line 820
}
+#line 820
*/
+#line 820
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 820
err = toMixedBase(j, var_rank[i], count, index2);
+#line 820
IF (err)
+#line 820
error("error in toMixedBase");
+#line 820
for (d = 0; d < var_rank[i]; d++)
+#line 820
index2[d] = index[d] + index2[d] * stride[d];
+#line 820
value[j] = hash_int(var_type[i], var_rank[i], index2,
+#line 820
NCT_INT);
+#line 820
allInExtRange = allInExtRange
+#line 820
&& inRange3(value[j], var_type[i], NCT_INT);
+#line 820
}
+#line 820
if (var_rank[i] == 0 && i%2 == 0)
+#line 820
err = nc_put_vars_int(ncid, i, NULL, NULL, stride, value);
+#line 820
else
+#line 820
err = nc_put_vars_int(ncid, i, index, count, stride, value);
+#line 820
if (canConvert) {
+#line 820
if (allInExtRange) {
+#line 820
IF (err)
+#line 820
error("%s", nc_strerror(err));
+#line 820
} else {
+#line 820
IF (err != NC_ERANGE)
+#line 820
error("range error: status = %d", err);
+#line 820
}
+#line 820
} else {
+#line 820
IF (nels > 0 && err != NC_ECHAR)
+#line 820
error("wrong type: status = %d", err);
+#line 820
}
+#line 820
}
+#line 820
}
+#line 820
}
+#line 820
+#line 820
err = nc_close(ncid);
+#line 820
IF (err)
+#line 820
error("nc_close: %s", nc_strerror(err));
+#line 820
+#line 820
check_vars_int(scratch);
+#line 820
+#line 820
err = remove(scratch);
+#line 820
IF (err)
+#line 820
error("remove of %s failed", scratch);
+#line 820
}
+#line 820
void
+#line 821
test_nc_put_vars_long(void)
+#line 821
{
+#line 821
int ncid;
+#line 821
int d;
+#line 821
int i;
+#line 821
int j;
+#line 821
int k;
+#line 821
int m;
+#line 821
int err;
+#line 821
int nels;
+#line 821
int nslabs;
+#line 821
int nstarts; /* number of different starts */
+#line 821
size_t start[MAX_RANK];
+#line 821
size_t edge[MAX_RANK];
+#line 821
size_t index[MAX_RANK];
+#line 821
size_t index2[MAX_RANK];
+#line 821
size_t mid[MAX_RANK];
+#line 821
size_t count[MAX_RANK];
+#line 821
size_t sstride[MAX_RANK];
+#line 821
ptrdiff_t stride[MAX_RANK];
+#line 821
int canConvert; /* Both text or both numeric */
+#line 821
int allInExtRange; /* all values within external range? */
+#line 821
long value[MAX_NELS];
+#line 821
+#line 821
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 821
IF (err) {
+#line 821
error("nc_create: %s", nc_strerror(err));
+#line 821
return;
+#line 821
}
+#line 821
def_dims(ncid);
+#line 821
def_vars(ncid);
+#line 821
err = nc_enddef(ncid);
+#line 821
IF (err)
+#line 821
error("nc_enddef: %s", nc_strerror(err));
+#line 821
+#line 821
for (i = 0; i < NVARS; i++) {
+#line 821
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 821
assert(var_rank[i] <= MAX_RANK);
+#line 821
assert(var_nels[i] <= MAX_NELS);
+#line 821
for (j = 0; j < var_rank[i]; j++) {
+#line 821
start[j] = 0;
+#line 821
edge[j] = 1;
+#line 821
stride[j] = 1;
+#line 821
}
+#line 821
err = nc_put_vars_long(BAD_ID, i, start, edge, stride, value);
+#line 821
IF (err != NC_EBADID)
+#line 821
error("bad ncid: status = %d", err);
+#line 821
err = nc_put_vars_long(ncid, BAD_VARID, start, edge, stride, value);
+#line 821
IF (err != NC_ENOTVAR)
+#line 821
error("bad var id: status = %d", err);
+#line 821
for (j = 0; j < var_rank[i]; j++) {
+#line 821
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 821
start[j] = var_shape[i][j] + 1;
+#line 821
err = nc_put_vars_long(ncid, i, start, edge, stride, value);
+#line 821
if(!canConvert) {
+#line 821
IF(err != NC_ECHAR)
+#line 821
error("conversion: status = %d", err);
+#line 821
} else {
+#line 821
IF(err != NC_EINVALCOORDS)
+#line 821
error("bad start: status = %d", err);
+#line 821
start[j] = 0;
+#line 821
edge[j] = var_shape[i][j] + 1;
+#line 821
err = nc_put_vars_long(ncid, i, start, edge, stride, value);
+#line 821
IF (err != NC_EEDGE)
+#line 821
error("bad edge: status = %d", err);
+#line 821
edge[j] = 1;
+#line 821
stride[j] = 0;
+#line 821
err = nc_put_vars_long(ncid, i, start, edge, stride, value);
+#line 821
IF (err != NC_ESTRIDE)
+#line 821
error("bad stride: status = %d", err);
+#line 821
stride[j] = 1;
+#line 821
}
+#line 821
}
+#line 821
}
+#line 821
/* Choose a random point dividing each dim into 2 parts */
+#line 821
/* Put 2^rank (nslabs) slabs so defined */
+#line 821
nslabs = 1;
+#line 821
for (j = 0; j < var_rank[i]; j++) {
+#line 821
mid[j] = roll( var_shape[i][j] );
+#line 821
nslabs *= 2;
+#line 821
}
+#line 821
/* bits of k determine whether to put lower or upper part of dim */
+#line 821
/* choose random stride from 1 to edge */
+#line 821
for (k = 0; k < nslabs; k++) {
+#line 821
nstarts = 1;
+#line 821
for (j = 0; j < var_rank[i]; j++) {
+#line 821
if ((k >> j) & 1) {
+#line 821
start[j] = 0;
+#line 821
edge[j] = mid[j];
+#line 821
}else{
+#line 821
start[j] = mid[j];
+#line 821
edge[j] = var_shape[i][j] - mid[j];
+#line 821
}
+#line 821
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 821
nstarts *= stride[j];
+#line 821
}
+#line 821
for (m = 0; m < nstarts; m++) {
+#line 821
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 821
IF (err)
+#line 821
error("error in toMixedBase");
+#line 821
nels = 1;
+#line 821
for (j = 0; j < var_rank[i]; j++) {
+#line 821
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 821
nels *= count[j];
+#line 821
index[j] += start[j];
+#line 821
}
+#line 821
/* Random choice of forward or backward */
+#line 821
/* TODO
+#line 821
if ( roll(2) ) {
+#line 821
for (j = 0; j < var_rank[i]; j++) {
+#line 821
index[j] += (count[j] - 1) * stride[j];
+#line 821
stride[j] = -stride[j];
+#line 821
}
+#line 821
}
+#line 821
*/
+#line 821
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 821
err = toMixedBase(j, var_rank[i], count, index2);
+#line 821
IF (err)
+#line 821
error("error in toMixedBase");
+#line 821
for (d = 0; d < var_rank[i]; d++)
+#line 821
index2[d] = index[d] + index2[d] * stride[d];
+#line 821
value[j] = hash_long(var_type[i], var_rank[i], index2,
+#line 821
NCT_LONG);
+#line 821
allInExtRange = allInExtRange
+#line 821
&& inRange3(value[j], var_type[i], NCT_LONG);
+#line 821
}
+#line 821
if (var_rank[i] == 0 && i%2 == 0)
+#line 821
err = nc_put_vars_long(ncid, i, NULL, NULL, stride, value);
+#line 821
else
+#line 821
err = nc_put_vars_long(ncid, i, index, count, stride, value);
+#line 821
if (canConvert) {
+#line 821
if (allInExtRange) {
+#line 821
IF (err)
+#line 821
error("%s", nc_strerror(err));
+#line 821
} else {
+#line 821
IF (err != NC_ERANGE)
+#line 821
error("range error: status = %d", err);
+#line 821
}
+#line 821
} else {
+#line 821
IF (nels > 0 && err != NC_ECHAR)
+#line 821
error("wrong type: status = %d", err);
+#line 821
}
+#line 821
}
+#line 821
}
+#line 821
}
+#line 821
+#line 821
err = nc_close(ncid);
+#line 821
IF (err)
+#line 821
error("nc_close: %s", nc_strerror(err));
+#line 821
+#line 821
check_vars_long(scratch);
+#line 821
+#line 821
err = remove(scratch);
+#line 821
IF (err)
+#line 821
error("remove of %s failed", scratch);
+#line 821
}
+#line 821
void
+#line 822
test_nc_put_vars_float(void)
+#line 822
{
+#line 822
int ncid;
+#line 822
int d;
+#line 822
int i;
+#line 822
int j;
+#line 822
int k;
+#line 822
int m;
+#line 822
int err;
+#line 822
int nels;
+#line 822
int nslabs;
+#line 822
int nstarts; /* number of different starts */
+#line 822
size_t start[MAX_RANK];
+#line 822
size_t edge[MAX_RANK];
+#line 822
size_t index[MAX_RANK];
+#line 822
size_t index2[MAX_RANK];
+#line 822
size_t mid[MAX_RANK];
+#line 822
size_t count[MAX_RANK];
+#line 822
size_t sstride[MAX_RANK];
+#line 822
ptrdiff_t stride[MAX_RANK];
+#line 822
int canConvert; /* Both text or both numeric */
+#line 822
int allInExtRange; /* all values within external range? */
+#line 822
float value[MAX_NELS];
+#line 822
+#line 822
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 822
IF (err) {
+#line 822
error("nc_create: %s", nc_strerror(err));
+#line 822
return;
+#line 822
}
+#line 822
def_dims(ncid);
+#line 822
def_vars(ncid);
+#line 822
err = nc_enddef(ncid);
+#line 822
IF (err)
+#line 822
error("nc_enddef: %s", nc_strerror(err));
+#line 822
+#line 822
for (i = 0; i < NVARS; i++) {
+#line 822
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 822
assert(var_rank[i] <= MAX_RANK);
+#line 822
assert(var_nels[i] <= MAX_NELS);
+#line 822
for (j = 0; j < var_rank[i]; j++) {
+#line 822
start[j] = 0;
+#line 822
edge[j] = 1;
+#line 822
stride[j] = 1;
+#line 822
}
+#line 822
err = nc_put_vars_float(BAD_ID, i, start, edge, stride, value);
+#line 822
IF (err != NC_EBADID)
+#line 822
error("bad ncid: status = %d", err);
+#line 822
err = nc_put_vars_float(ncid, BAD_VARID, start, edge, stride, value);
+#line 822
IF (err != NC_ENOTVAR)
+#line 822
error("bad var id: status = %d", err);
+#line 822
for (j = 0; j < var_rank[i]; j++) {
+#line 822
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 822
start[j] = var_shape[i][j] + 1;
+#line 822
err = nc_put_vars_float(ncid, i, start, edge, stride, value);
+#line 822
if(!canConvert) {
+#line 822
IF(err != NC_ECHAR)
+#line 822
error("conversion: status = %d", err);
+#line 822
} else {
+#line 822
IF(err != NC_EINVALCOORDS)
+#line 822
error("bad start: status = %d", err);
+#line 822
start[j] = 0;
+#line 822
edge[j] = var_shape[i][j] + 1;
+#line 822
err = nc_put_vars_float(ncid, i, start, edge, stride, value);
+#line 822
IF (err != NC_EEDGE)
+#line 822
error("bad edge: status = %d", err);
+#line 822
edge[j] = 1;
+#line 822
stride[j] = 0;
+#line 822
err = nc_put_vars_float(ncid, i, start, edge, stride, value);
+#line 822
IF (err != NC_ESTRIDE)
+#line 822
error("bad stride: status = %d", err);
+#line 822
stride[j] = 1;
+#line 822
}
+#line 822
}
+#line 822
}
+#line 822
/* Choose a random point dividing each dim into 2 parts */
+#line 822
/* Put 2^rank (nslabs) slabs so defined */
+#line 822
nslabs = 1;
+#line 822
for (j = 0; j < var_rank[i]; j++) {
+#line 822
mid[j] = roll( var_shape[i][j] );
+#line 822
nslabs *= 2;
+#line 822
}
+#line 822
/* bits of k determine whether to put lower or upper part of dim */
+#line 822
/* choose random stride from 1 to edge */
+#line 822
for (k = 0; k < nslabs; k++) {
+#line 822
nstarts = 1;
+#line 822
for (j = 0; j < var_rank[i]; j++) {
+#line 822
if ((k >> j) & 1) {
+#line 822
start[j] = 0;
+#line 822
edge[j] = mid[j];
+#line 822
}else{
+#line 822
start[j] = mid[j];
+#line 822
edge[j] = var_shape[i][j] - mid[j];
+#line 822
}
+#line 822
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 822
nstarts *= stride[j];
+#line 822
}
+#line 822
for (m = 0; m < nstarts; m++) {
+#line 822
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 822
IF (err)
+#line 822
error("error in toMixedBase");
+#line 822
nels = 1;
+#line 822
for (j = 0; j < var_rank[i]; j++) {
+#line 822
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 822
nels *= count[j];
+#line 822
index[j] += start[j];
+#line 822
}
+#line 822
/* Random choice of forward or backward */
+#line 822
/* TODO
+#line 822
if ( roll(2) ) {
+#line 822
for (j = 0; j < var_rank[i]; j++) {
+#line 822
index[j] += (count[j] - 1) * stride[j];
+#line 822
stride[j] = -stride[j];
+#line 822
}
+#line 822
}
+#line 822
*/
+#line 822
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 822
err = toMixedBase(j, var_rank[i], count, index2);
+#line 822
IF (err)
+#line 822
error("error in toMixedBase");
+#line 822
for (d = 0; d < var_rank[i]; d++)
+#line 822
index2[d] = index[d] + index2[d] * stride[d];
+#line 822
value[j] = hash_float(var_type[i], var_rank[i], index2,
+#line 822
NCT_FLOAT);
+#line 822
allInExtRange = allInExtRange
+#line 822
&& inRange3(value[j], var_type[i], NCT_FLOAT);
+#line 822
}
+#line 822
if (var_rank[i] == 0 && i%2 == 0)
+#line 822
err = nc_put_vars_float(ncid, i, NULL, NULL, stride, value);
+#line 822
else
+#line 822
err = nc_put_vars_float(ncid, i, index, count, stride, value);
+#line 822
if (canConvert) {
+#line 822
if (allInExtRange) {
+#line 822
IF (err)
+#line 822
error("%s", nc_strerror(err));
+#line 822
} else {
+#line 822
IF (err != NC_ERANGE)
+#line 822
error("range error: status = %d", err);
+#line 822
}
+#line 822
} else {
+#line 822
IF (nels > 0 && err != NC_ECHAR)
+#line 822
error("wrong type: status = %d", err);
+#line 822
}
+#line 822
}
+#line 822
}
+#line 822
}
+#line 822
+#line 822
err = nc_close(ncid);
+#line 822
IF (err)
+#line 822
error("nc_close: %s", nc_strerror(err));
+#line 822
+#line 822
check_vars_float(scratch);
+#line 822
+#line 822
err = remove(scratch);
+#line 822
IF (err)
+#line 822
error("remove of %s failed", scratch);
+#line 822
}
+#line 822
void
+#line 823
test_nc_put_vars_double(void)
+#line 823
{
+#line 823
int ncid;
+#line 823
int d;
+#line 823
int i;
+#line 823
int j;
+#line 823
int k;
+#line 823
int m;
+#line 823
int err;
+#line 823
int nels;
+#line 823
int nslabs;
+#line 823
int nstarts; /* number of different starts */
+#line 823
size_t start[MAX_RANK];
+#line 823
size_t edge[MAX_RANK];
+#line 823
size_t index[MAX_RANK];
+#line 823
size_t index2[MAX_RANK];
+#line 823
size_t mid[MAX_RANK];
+#line 823
size_t count[MAX_RANK];
+#line 823
size_t sstride[MAX_RANK];
+#line 823
ptrdiff_t stride[MAX_RANK];
+#line 823
int canConvert; /* Both text or both numeric */
+#line 823
int allInExtRange; /* all values within external range? */
+#line 823
double value[MAX_NELS];
+#line 823
+#line 823
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 823
IF (err) {
+#line 823
error("nc_create: %s", nc_strerror(err));
+#line 823
return;
+#line 823
}
+#line 823
def_dims(ncid);
+#line 823
def_vars(ncid);
+#line 823
err = nc_enddef(ncid);
+#line 823
IF (err)
+#line 823
error("nc_enddef: %s", nc_strerror(err));
+#line 823
+#line 823
for (i = 0; i < NVARS; i++) {
+#line 823
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 823
assert(var_rank[i] <= MAX_RANK);
+#line 823
assert(var_nels[i] <= MAX_NELS);
+#line 823
for (j = 0; j < var_rank[i]; j++) {
+#line 823
start[j] = 0;
+#line 823
edge[j] = 1;
+#line 823
stride[j] = 1;
+#line 823
}
+#line 823
err = nc_put_vars_double(BAD_ID, i, start, edge, stride, value);
+#line 823
IF (err != NC_EBADID)
+#line 823
error("bad ncid: status = %d", err);
+#line 823
err = nc_put_vars_double(ncid, BAD_VARID, start, edge, stride, value);
+#line 823
IF (err != NC_ENOTVAR)
+#line 823
error("bad var id: status = %d", err);
+#line 823
for (j = 0; j < var_rank[i]; j++) {
+#line 823
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 823
start[j] = var_shape[i][j] + 1;
+#line 823
err = nc_put_vars_double(ncid, i, start, edge, stride, value);
+#line 823
if(!canConvert) {
+#line 823
IF(err != NC_ECHAR)
+#line 823
error("conversion: status = %d", err);
+#line 823
} else {
+#line 823
IF(err != NC_EINVALCOORDS)
+#line 823
error("bad start: status = %d", err);
+#line 823
start[j] = 0;
+#line 823
edge[j] = var_shape[i][j] + 1;
+#line 823
err = nc_put_vars_double(ncid, i, start, edge, stride, value);
+#line 823
IF (err != NC_EEDGE)
+#line 823
error("bad edge: status = %d", err);
+#line 823
edge[j] = 1;
+#line 823
stride[j] = 0;
+#line 823
err = nc_put_vars_double(ncid, i, start, edge, stride, value);
+#line 823
IF (err != NC_ESTRIDE)
+#line 823
error("bad stride: status = %d", err);
+#line 823
stride[j] = 1;
+#line 823
}
+#line 823
}
+#line 823
}
+#line 823
/* Choose a random point dividing each dim into 2 parts */
+#line 823
/* Put 2^rank (nslabs) slabs so defined */
+#line 823
nslabs = 1;
+#line 823
for (j = 0; j < var_rank[i]; j++) {
+#line 823
mid[j] = roll( var_shape[i][j] );
+#line 823
nslabs *= 2;
+#line 823
}
+#line 823
/* bits of k determine whether to put lower or upper part of dim */
+#line 823
/* choose random stride from 1 to edge */
+#line 823
for (k = 0; k < nslabs; k++) {
+#line 823
nstarts = 1;
+#line 823
for (j = 0; j < var_rank[i]; j++) {
+#line 823
if ((k >> j) & 1) {
+#line 823
start[j] = 0;
+#line 823
edge[j] = mid[j];
+#line 823
}else{
+#line 823
start[j] = mid[j];
+#line 823
edge[j] = var_shape[i][j] - mid[j];
+#line 823
}
+#line 823
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 823
nstarts *= stride[j];
+#line 823
}
+#line 823
for (m = 0; m < nstarts; m++) {
+#line 823
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 823
IF (err)
+#line 823
error("error in toMixedBase");
+#line 823
nels = 1;
+#line 823
for (j = 0; j < var_rank[i]; j++) {
+#line 823
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 823
nels *= count[j];
+#line 823
index[j] += start[j];
+#line 823
}
+#line 823
/* Random choice of forward or backward */
+#line 823
/* TODO
+#line 823
if ( roll(2) ) {
+#line 823
for (j = 0; j < var_rank[i]; j++) {
+#line 823
index[j] += (count[j] - 1) * stride[j];
+#line 823
stride[j] = -stride[j];
+#line 823
}
+#line 823
}
+#line 823
*/
+#line 823
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 823
err = toMixedBase(j, var_rank[i], count, index2);
+#line 823
IF (err)
+#line 823
error("error in toMixedBase");
+#line 823
for (d = 0; d < var_rank[i]; d++)
+#line 823
index2[d] = index[d] + index2[d] * stride[d];
+#line 823
value[j] = hash_double(var_type[i], var_rank[i], index2,
+#line 823
NCT_DOUBLE);
+#line 823
allInExtRange = allInExtRange
+#line 823
&& inRange3(value[j], var_type[i], NCT_DOUBLE);
+#line 823
}
+#line 823
if (var_rank[i] == 0 && i%2 == 0)
+#line 823
err = nc_put_vars_double(ncid, i, NULL, NULL, stride, value);
+#line 823
else
+#line 823
err = nc_put_vars_double(ncid, i, index, count, stride, value);
+#line 823
if (canConvert) {
+#line 823
if (allInExtRange) {
+#line 823
IF (err)
+#line 823
error("%s", nc_strerror(err));
+#line 823
} else {
+#line 823
IF (err != NC_ERANGE)
+#line 823
error("range error: status = %d", err);
+#line 823
}
+#line 823
} else {
+#line 823
IF (nels > 0 && err != NC_ECHAR)
+#line 823
error("wrong type: status = %d", err);
+#line 823
}
+#line 823
}
+#line 823
}
+#line 823
}
+#line 823
+#line 823
err = nc_close(ncid);
+#line 823
IF (err)
+#line 823
error("nc_close: %s", nc_strerror(err));
+#line 823
+#line 823
check_vars_double(scratch);
+#line 823
+#line 823
err = remove(scratch);
+#line 823
IF (err)
+#line 823
error("remove of %s failed", scratch);
+#line 823
}
+#line 823
+#line 996
void
+#line 997
test_nc_put_varm_text(void)
+#line 997
{
+#line 997
int ncid;
+#line 997
int d;
+#line 997
int i;
+#line 997
int j;
+#line 997
int k;
+#line 997
int m;
+#line 997
int err;
+#line 997
int nels;
+#line 997
int nslabs;
+#line 997
int nstarts; /* number of different starts */
+#line 997
size_t start[MAX_RANK];
+#line 997
size_t edge[MAX_RANK];
+#line 997
size_t index[MAX_RANK];
+#line 997
size_t index2[MAX_RANK];
+#line 997
size_t mid[MAX_RANK];
+#line 997
size_t count[MAX_RANK];
+#line 997
size_t sstride[MAX_RANK];
+#line 997
ptrdiff_t stride[MAX_RANK];
+#line 997
ptrdiff_t imap[MAX_RANK];
+#line 997
int canConvert; /* Both text or both numeric */
+#line 997
int allInExtRange; /* all values within external range? */
+#line 997
text value[MAX_NELS];
+#line 997
+#line 997
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 997
IF (err) {
+#line 997
error("nc_create: %s", nc_strerror(err));
+#line 997
return;
+#line 997
}
+#line 997
def_dims(ncid);
+#line 997
def_vars(ncid);
+#line 997
err = nc_enddef(ncid);
+#line 997
IF (err)
+#line 997
error("nc_enddef: %s", nc_strerror(err));
+#line 997
+#line 997
for (i = 0; i < NVARS; i++) {
+#line 997
canConvert = (var_type[i] == NC_CHAR) == (NCT_TEXT == NCT_TEXT);
+#line 997
assert(var_rank[i] <= MAX_RANK);
+#line 997
assert(var_nels[i] <= MAX_NELS);
+#line 997
for (j = 0; j < var_rank[i]; j++) {
+#line 997
start[j] = 0;
+#line 997
edge[j] = 1;
+#line 997
stride[j] = 1;
+#line 997
imap[j] = 1;
+#line 997
}
+#line 997
err = nc_put_varm_text(BAD_ID, i, start, edge, stride, imap, value);
+#line 997
IF (err != NC_EBADID)
+#line 997
error("bad ncid: status = %d", err);
+#line 997
err = nc_put_varm_text(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 997
IF (err != NC_ENOTVAR)
+#line 997
error("bad var id: status = %d", err);
+#line 997
for (j = 0; j < var_rank[i]; j++) {
+#line 997
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 997
start[j] = var_shape[i][j] + 1;
+#line 997
err = nc_put_varm_text(ncid, i, start, edge, stride, imap, value);
+#line 997
if (!canConvert) {
+#line 997
IF(err != NC_ECHAR)
+#line 997
error("conversion: status = %d", err);
+#line 997
} else {
+#line 997
IF (err != NC_EINVALCOORDS)
+#line 997
error("bad start: status = %d", err);
+#line 997
start[j] = 0;
+#line 997
edge[j] = var_shape[i][j] + 1;
+#line 997
err = nc_put_varm_text(ncid, i, start, edge, stride, imap, value);
+#line 997
IF (err != NC_EEDGE)
+#line 997
error("bad edge: status = %d", err);
+#line 997
edge[j] = 1;
+#line 997
stride[j] = 0;
+#line 997
err = nc_put_varm_text(ncid, i, start, edge, stride, imap, value);
+#line 997
IF (err != NC_ESTRIDE)
+#line 997
error("bad stride: status = %d", err);
+#line 997
stride[j] = 1;
+#line 997
}
+#line 997
}
+#line 997
}
+#line 997
/* Choose a random point dividing each dim into 2 parts */
+#line 997
/* Put 2^rank (nslabs) slabs so defined */
+#line 997
nslabs = 1;
+#line 997
for (j = 0; j < var_rank[i]; j++) {
+#line 997
mid[j] = roll( var_shape[i][j] );
+#line 997
nslabs *= 2;
+#line 997
}
+#line 997
/* bits of k determine whether to put lower or upper part of dim */
+#line 997
/* choose random stride from 1 to edge */
+#line 997
for (k = 0; k < nslabs; k++) {
+#line 997
nstarts = 1;
+#line 997
for (j = 0; j < var_rank[i]; j++) {
+#line 997
if ((k >> j) & 1) {
+#line 997
start[j] = 0;
+#line 997
edge[j] = mid[j];
+#line 997
}else{
+#line 997
start[j] = mid[j];
+#line 997
edge[j] = var_shape[i][j] - mid[j];
+#line 997
}
+#line 997
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 997
nstarts *= stride[j];
+#line 997
}
+#line 997
for (m = 0; m < nstarts; m++) {
+#line 997
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 997
IF (err)
+#line 997
error("error in toMixedBase");
+#line 997
nels = 1;
+#line 997
for (j = 0; j < var_rank[i]; j++) {
+#line 997
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 997
nels *= count[j];
+#line 997
index[j] += start[j];
+#line 997
}
+#line 997
/* Random choice of forward or backward */
+#line 997
/* TODO
+#line 997
if ( roll(2) ) {
+#line 997
for (j = 0; j < var_rank[i]; j++) {
+#line 997
index[j] += (count[j] - 1) * stride[j];
+#line 997
stride[j] = -stride[j];
+#line 997
}
+#line 997
}
+#line 997
*/
+#line 997
if (var_rank[i] > 0) {
+#line 997
j = var_rank[i] - 1;
+#line 997
imap[j] = 1;
+#line 997
for (; j > 0; j--)
+#line 997
imap[j-1] = imap[j] * count[j];
+#line 997
}
+#line 997
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 997
err = toMixedBase(j, var_rank[i], count, index2);
+#line 997
IF (err)
+#line 997
error("error in toMixedBase");
+#line 997
for (d = 0; d < var_rank[i]; d++)
+#line 997
index2[d] = index[d] + index2[d] * stride[d];
+#line 997
value[j] = hash_text(var_type[i], var_rank[i], index2,
+#line 997
NCT_TEXT);
+#line 997
allInExtRange = allInExtRange
+#line 997
&& inRange3(value[j], var_type[i], NCT_TEXT);
+#line 997
}
+#line 997
if (var_rank[i] == 0 && i%2 == 0)
+#line 997
err = nc_put_varm_text(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 997
else
+#line 997
err = nc_put_varm_text(ncid,i,index,count,stride,imap,value);
+#line 997
if (canConvert) {
+#line 997
if (allInExtRange) {
+#line 997
IF (err)
+#line 997
error("%s", nc_strerror(err));
+#line 997
} else {
+#line 997
IF (err != NC_ERANGE)
+#line 997
error("range error: status = %d", err);
+#line 997
}
+#line 997
} else {
+#line 997
IF (nels > 0 && err != NC_ECHAR)
+#line 997
error("wrong type: status = %d", err);
+#line 997
}
+#line 997
}
+#line 997
}
+#line 997
}
+#line 997
+#line 997
err = nc_close(ncid);
+#line 997
IF (err)
+#line 997
error("nc_close: %s", nc_strerror(err));
+#line 997
+#line 997
check_vars_text(scratch);
+#line 997
+#line 997
err = remove(scratch);
+#line 997
IF (err)
+#line 997
error("remove of %s failed", scratch);
+#line 997
}
+#line 997
void
+#line 998
test_nc_put_varm_uchar(void)
+#line 998
{
+#line 998
int ncid;
+#line 998
int d;
+#line 998
int i;
+#line 998
int j;
+#line 998
int k;
+#line 998
int m;
+#line 998
int err;
+#line 998
int nels;
+#line 998
int nslabs;
+#line 998
int nstarts; /* number of different starts */
+#line 998
size_t start[MAX_RANK];
+#line 998
size_t edge[MAX_RANK];
+#line 998
size_t index[MAX_RANK];
+#line 998
size_t index2[MAX_RANK];
+#line 998
size_t mid[MAX_RANK];
+#line 998
size_t count[MAX_RANK];
+#line 998
size_t sstride[MAX_RANK];
+#line 998
ptrdiff_t stride[MAX_RANK];
+#line 998
ptrdiff_t imap[MAX_RANK];
+#line 998
int canConvert; /* Both text or both numeric */
+#line 998
int allInExtRange; /* all values within external range? */
+#line 998
uchar value[MAX_NELS];
+#line 998
+#line 998
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 998
IF (err) {
+#line 998
error("nc_create: %s", nc_strerror(err));
+#line 998
return;
+#line 998
}
+#line 998
def_dims(ncid);
+#line 998
def_vars(ncid);
+#line 998
err = nc_enddef(ncid);
+#line 998
IF (err)
+#line 998
error("nc_enddef: %s", nc_strerror(err));
+#line 998
+#line 998
for (i = 0; i < NVARS; i++) {
+#line 998
canConvert = (var_type[i] == NC_CHAR) == (NCT_UCHAR == NCT_TEXT);
+#line 998
assert(var_rank[i] <= MAX_RANK);
+#line 998
assert(var_nels[i] <= MAX_NELS);
+#line 998
for (j = 0; j < var_rank[i]; j++) {
+#line 998
start[j] = 0;
+#line 998
edge[j] = 1;
+#line 998
stride[j] = 1;
+#line 998
imap[j] = 1;
+#line 998
}
+#line 998
err = nc_put_varm_uchar(BAD_ID, i, start, edge, stride, imap, value);
+#line 998
IF (err != NC_EBADID)
+#line 998
error("bad ncid: status = %d", err);
+#line 998
err = nc_put_varm_uchar(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 998
IF (err != NC_ENOTVAR)
+#line 998
error("bad var id: status = %d", err);
+#line 998
for (j = 0; j < var_rank[i]; j++) {
+#line 998
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 998
start[j] = var_shape[i][j] + 1;
+#line 998
err = nc_put_varm_uchar(ncid, i, start, edge, stride, imap, value);
+#line 998
if (!canConvert) {
+#line 998
IF(err != NC_ECHAR)
+#line 998
error("conversion: status = %d", err);
+#line 998
} else {
+#line 998
IF (err != NC_EINVALCOORDS)
+#line 998
error("bad start: status = %d", err);
+#line 998
start[j] = 0;
+#line 998
edge[j] = var_shape[i][j] + 1;
+#line 998
err = nc_put_varm_uchar(ncid, i, start, edge, stride, imap, value);
+#line 998
IF (err != NC_EEDGE)
+#line 998
error("bad edge: status = %d", err);
+#line 998
edge[j] = 1;
+#line 998
stride[j] = 0;
+#line 998
err = nc_put_varm_uchar(ncid, i, start, edge, stride, imap, value);
+#line 998
IF (err != NC_ESTRIDE)
+#line 998
error("bad stride: status = %d", err);
+#line 998
stride[j] = 1;
+#line 998
}
+#line 998
}
+#line 998
}
+#line 998
/* Choose a random point dividing each dim into 2 parts */
+#line 998
/* Put 2^rank (nslabs) slabs so defined */
+#line 998
nslabs = 1;
+#line 998
for (j = 0; j < var_rank[i]; j++) {
+#line 998
mid[j] = roll( var_shape[i][j] );
+#line 998
nslabs *= 2;
+#line 998
}
+#line 998
/* bits of k determine whether to put lower or upper part of dim */
+#line 998
/* choose random stride from 1 to edge */
+#line 998
for (k = 0; k < nslabs; k++) {
+#line 998
nstarts = 1;
+#line 998
for (j = 0; j < var_rank[i]; j++) {
+#line 998
if ((k >> j) & 1) {
+#line 998
start[j] = 0;
+#line 998
edge[j] = mid[j];
+#line 998
}else{
+#line 998
start[j] = mid[j];
+#line 998
edge[j] = var_shape[i][j] - mid[j];
+#line 998
}
+#line 998
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 998
nstarts *= stride[j];
+#line 998
}
+#line 998
for (m = 0; m < nstarts; m++) {
+#line 998
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 998
IF (err)
+#line 998
error("error in toMixedBase");
+#line 998
nels = 1;
+#line 998
for (j = 0; j < var_rank[i]; j++) {
+#line 998
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 998
nels *= count[j];
+#line 998
index[j] += start[j];
+#line 998
}
+#line 998
/* Random choice of forward or backward */
+#line 998
/* TODO
+#line 998
if ( roll(2) ) {
+#line 998
for (j = 0; j < var_rank[i]; j++) {
+#line 998
index[j] += (count[j] - 1) * stride[j];
+#line 998
stride[j] = -stride[j];
+#line 998
}
+#line 998
}
+#line 998
*/
+#line 998
if (var_rank[i] > 0) {
+#line 998
j = var_rank[i] - 1;
+#line 998
imap[j] = 1;
+#line 998
for (; j > 0; j--)
+#line 998
imap[j-1] = imap[j] * count[j];
+#line 998
}
+#line 998
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 998
err = toMixedBase(j, var_rank[i], count, index2);
+#line 998
IF (err)
+#line 998
error("error in toMixedBase");
+#line 998
for (d = 0; d < var_rank[i]; d++)
+#line 998
index2[d] = index[d] + index2[d] * stride[d];
+#line 998
value[j] = hash_uchar(var_type[i], var_rank[i], index2,
+#line 998
NCT_UCHAR);
+#line 998
allInExtRange = allInExtRange
+#line 998
&& inRange3(value[j], var_type[i], NCT_UCHAR);
+#line 998
}
+#line 998
if (var_rank[i] == 0 && i%2 == 0)
+#line 998
err = nc_put_varm_uchar(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 998
else
+#line 998
err = nc_put_varm_uchar(ncid,i,index,count,stride,imap,value);
+#line 998
if (canConvert) {
+#line 998
if (allInExtRange) {
+#line 998
IF (err)
+#line 998
error("%s", nc_strerror(err));
+#line 998
} else {
+#line 998
IF (err != NC_ERANGE)
+#line 998
error("range error: status = %d", err);
+#line 998
}
+#line 998
} else {
+#line 998
IF (nels > 0 && err != NC_ECHAR)
+#line 998
error("wrong type: status = %d", err);
+#line 998
}
+#line 998
}
+#line 998
}
+#line 998
}
+#line 998
+#line 998
err = nc_close(ncid);
+#line 998
IF (err)
+#line 998
error("nc_close: %s", nc_strerror(err));
+#line 998
+#line 998
check_vars_uchar(scratch);
+#line 998
+#line 998
err = remove(scratch);
+#line 998
IF (err)
+#line 998
error("remove of %s failed", scratch);
+#line 998
}
+#line 998
void
+#line 999
test_nc_put_varm_schar(void)
+#line 999
{
+#line 999
int ncid;
+#line 999
int d;
+#line 999
int i;
+#line 999
int j;
+#line 999
int k;
+#line 999
int m;
+#line 999
int err;
+#line 999
int nels;
+#line 999
int nslabs;
+#line 999
int nstarts; /* number of different starts */
+#line 999
size_t start[MAX_RANK];
+#line 999
size_t edge[MAX_RANK];
+#line 999
size_t index[MAX_RANK];
+#line 999
size_t index2[MAX_RANK];
+#line 999
size_t mid[MAX_RANK];
+#line 999
size_t count[MAX_RANK];
+#line 999
size_t sstride[MAX_RANK];
+#line 999
ptrdiff_t stride[MAX_RANK];
+#line 999
ptrdiff_t imap[MAX_RANK];
+#line 999
int canConvert; /* Both text or both numeric */
+#line 999
int allInExtRange; /* all values within external range? */
+#line 999
schar value[MAX_NELS];
+#line 999
+#line 999
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 999
IF (err) {
+#line 999
error("nc_create: %s", nc_strerror(err));
+#line 999
return;
+#line 999
}
+#line 999
def_dims(ncid);
+#line 999
def_vars(ncid);
+#line 999
err = nc_enddef(ncid);
+#line 999
IF (err)
+#line 999
error("nc_enddef: %s", nc_strerror(err));
+#line 999
+#line 999
for (i = 0; i < NVARS; i++) {
+#line 999
canConvert = (var_type[i] == NC_CHAR) == (NCT_SCHAR == NCT_TEXT);
+#line 999
assert(var_rank[i] <= MAX_RANK);
+#line 999
assert(var_nels[i] <= MAX_NELS);
+#line 999
for (j = 0; j < var_rank[i]; j++) {
+#line 999
start[j] = 0;
+#line 999
edge[j] = 1;
+#line 999
stride[j] = 1;
+#line 999
imap[j] = 1;
+#line 999
}
+#line 999
err = nc_put_varm_schar(BAD_ID, i, start, edge, stride, imap, value);
+#line 999
IF (err != NC_EBADID)
+#line 999
error("bad ncid: status = %d", err);
+#line 999
err = nc_put_varm_schar(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 999
IF (err != NC_ENOTVAR)
+#line 999
error("bad var id: status = %d", err);
+#line 999
for (j = 0; j < var_rank[i]; j++) {
+#line 999
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 999
start[j] = var_shape[i][j] + 1;
+#line 999
err = nc_put_varm_schar(ncid, i, start, edge, stride, imap, value);
+#line 999
if (!canConvert) {
+#line 999
IF(err != NC_ECHAR)
+#line 999
error("conversion: status = %d", err);
+#line 999
} else {
+#line 999
IF (err != NC_EINVALCOORDS)
+#line 999
error("bad start: status = %d", err);
+#line 999
start[j] = 0;
+#line 999
edge[j] = var_shape[i][j] + 1;
+#line 999
err = nc_put_varm_schar(ncid, i, start, edge, stride, imap, value);
+#line 999
IF (err != NC_EEDGE)
+#line 999
error("bad edge: status = %d", err);
+#line 999
edge[j] = 1;
+#line 999
stride[j] = 0;
+#line 999
err = nc_put_varm_schar(ncid, i, start, edge, stride, imap, value);
+#line 999
IF (err != NC_ESTRIDE)
+#line 999
error("bad stride: status = %d", err);
+#line 999
stride[j] = 1;
+#line 999
}
+#line 999
}
+#line 999
}
+#line 999
/* Choose a random point dividing each dim into 2 parts */
+#line 999
/* Put 2^rank (nslabs) slabs so defined */
+#line 999
nslabs = 1;
+#line 999
for (j = 0; j < var_rank[i]; j++) {
+#line 999
mid[j] = roll( var_shape[i][j] );
+#line 999
nslabs *= 2;
+#line 999
}
+#line 999
/* bits of k determine whether to put lower or upper part of dim */
+#line 999
/* choose random stride from 1 to edge */
+#line 999
for (k = 0; k < nslabs; k++) {
+#line 999
nstarts = 1;
+#line 999
for (j = 0; j < var_rank[i]; j++) {
+#line 999
if ((k >> j) & 1) {
+#line 999
start[j] = 0;
+#line 999
edge[j] = mid[j];
+#line 999
}else{
+#line 999
start[j] = mid[j];
+#line 999
edge[j] = var_shape[i][j] - mid[j];
+#line 999
}
+#line 999
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 999
nstarts *= stride[j];
+#line 999
}
+#line 999
for (m = 0; m < nstarts; m++) {
+#line 999
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 999
IF (err)
+#line 999
error("error in toMixedBase");
+#line 999
nels = 1;
+#line 999
for (j = 0; j < var_rank[i]; j++) {
+#line 999
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 999
nels *= count[j];
+#line 999
index[j] += start[j];
+#line 999
}
+#line 999
/* Random choice of forward or backward */
+#line 999
/* TODO
+#line 999
if ( roll(2) ) {
+#line 999
for (j = 0; j < var_rank[i]; j++) {
+#line 999
index[j] += (count[j] - 1) * stride[j];
+#line 999
stride[j] = -stride[j];
+#line 999
}
+#line 999
}
+#line 999
*/
+#line 999
if (var_rank[i] > 0) {
+#line 999
j = var_rank[i] - 1;
+#line 999
imap[j] = 1;
+#line 999
for (; j > 0; j--)
+#line 999
imap[j-1] = imap[j] * count[j];
+#line 999
}
+#line 999
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 999
err = toMixedBase(j, var_rank[i], count, index2);
+#line 999
IF (err)
+#line 999
error("error in toMixedBase");
+#line 999
for (d = 0; d < var_rank[i]; d++)
+#line 999
index2[d] = index[d] + index2[d] * stride[d];
+#line 999
value[j] = hash_schar(var_type[i], var_rank[i], index2,
+#line 999
NCT_SCHAR);
+#line 999
allInExtRange = allInExtRange
+#line 999
&& inRange3(value[j], var_type[i], NCT_SCHAR);
+#line 999
}
+#line 999
if (var_rank[i] == 0 && i%2 == 0)
+#line 999
err = nc_put_varm_schar(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 999
else
+#line 999
err = nc_put_varm_schar(ncid,i,index,count,stride,imap,value);
+#line 999
if (canConvert) {
+#line 999
if (allInExtRange) {
+#line 999
IF (err)
+#line 999
error("%s", nc_strerror(err));
+#line 999
} else {
+#line 999
IF (err != NC_ERANGE)
+#line 999
error("range error: status = %d", err);
+#line 999
}
+#line 999
} else {
+#line 999
IF (nels > 0 && err != NC_ECHAR)
+#line 999
error("wrong type: status = %d", err);
+#line 999
}
+#line 999
}
+#line 999
}
+#line 999
}
+#line 999
+#line 999
err = nc_close(ncid);
+#line 999
IF (err)
+#line 999
error("nc_close: %s", nc_strerror(err));
+#line 999
+#line 999
check_vars_schar(scratch);
+#line 999
+#line 999
err = remove(scratch);
+#line 999
IF (err)
+#line 999
error("remove of %s failed", scratch);
+#line 999
}
+#line 999
void
+#line 1000
test_nc_put_varm_short(void)
+#line 1000
{
+#line 1000
int ncid;
+#line 1000
int d;
+#line 1000
int i;
+#line 1000
int j;
+#line 1000
int k;
+#line 1000
int m;
+#line 1000
int err;
+#line 1000
int nels;
+#line 1000
int nslabs;
+#line 1000
int nstarts; /* number of different starts */
+#line 1000
size_t start[MAX_RANK];
+#line 1000
size_t edge[MAX_RANK];
+#line 1000
size_t index[MAX_RANK];
+#line 1000
size_t index2[MAX_RANK];
+#line 1000
size_t mid[MAX_RANK];
+#line 1000
size_t count[MAX_RANK];
+#line 1000
size_t sstride[MAX_RANK];
+#line 1000
ptrdiff_t stride[MAX_RANK];
+#line 1000
ptrdiff_t imap[MAX_RANK];
+#line 1000
int canConvert; /* Both text or both numeric */
+#line 1000
int allInExtRange; /* all values within external range? */
+#line 1000
short value[MAX_NELS];
+#line 1000
+#line 1000
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 1000
IF (err) {
+#line 1000
error("nc_create: %s", nc_strerror(err));
+#line 1000
return;
+#line 1000
}
+#line 1000
def_dims(ncid);
+#line 1000
def_vars(ncid);
+#line 1000
err = nc_enddef(ncid);
+#line 1000
IF (err)
+#line 1000
error("nc_enddef: %s", nc_strerror(err));
+#line 1000
+#line 1000
for (i = 0; i < NVARS; i++) {
+#line 1000
canConvert = (var_type[i] == NC_CHAR) == (NCT_SHORT == NCT_TEXT);
+#line 1000
assert(var_rank[i] <= MAX_RANK);
+#line 1000
assert(var_nels[i] <= MAX_NELS);
+#line 1000
for (j = 0; j < var_rank[i]; j++) {
+#line 1000
start[j] = 0;
+#line 1000
edge[j] = 1;
+#line 1000
stride[j] = 1;
+#line 1000
imap[j] = 1;
+#line 1000
}
+#line 1000
err = nc_put_varm_short(BAD_ID, i, start, edge, stride, imap, value);
+#line 1000
IF (err != NC_EBADID)
+#line 1000
error("bad ncid: status = %d", err);
+#line 1000
err = nc_put_varm_short(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 1000
IF (err != NC_ENOTVAR)
+#line 1000
error("bad var id: status = %d", err);
+#line 1000
for (j = 0; j < var_rank[i]; j++) {
+#line 1000
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 1000
start[j] = var_shape[i][j] + 1;
+#line 1000
err = nc_put_varm_short(ncid, i, start, edge, stride, imap, value);
+#line 1000
if (!canConvert) {
+#line 1000
IF(err != NC_ECHAR)
+#line 1000
error("conversion: status = %d", err);
+#line 1000
} else {
+#line 1000
IF (err != NC_EINVALCOORDS)
+#line 1000
error("bad start: status = %d", err);
+#line 1000
start[j] = 0;
+#line 1000
edge[j] = var_shape[i][j] + 1;
+#line 1000
err = nc_put_varm_short(ncid, i, start, edge, stride, imap, value);
+#line 1000
IF (err != NC_EEDGE)
+#line 1000
error("bad edge: status = %d", err);
+#line 1000
edge[j] = 1;
+#line 1000
stride[j] = 0;
+#line 1000
err = nc_put_varm_short(ncid, i, start, edge, stride, imap, value);
+#line 1000
IF (err != NC_ESTRIDE)
+#line 1000
error("bad stride: status = %d", err);
+#line 1000
stride[j] = 1;
+#line 1000
}
+#line 1000
}
+#line 1000
}
+#line 1000
/* Choose a random point dividing each dim into 2 parts */
+#line 1000
/* Put 2^rank (nslabs) slabs so defined */
+#line 1000
nslabs = 1;
+#line 1000
for (j = 0; j < var_rank[i]; j++) {
+#line 1000
mid[j] = roll( var_shape[i][j] );
+#line 1000
nslabs *= 2;
+#line 1000
}
+#line 1000
/* bits of k determine whether to put lower or upper part of dim */
+#line 1000
/* choose random stride from 1 to edge */
+#line 1000
for (k = 0; k < nslabs; k++) {
+#line 1000
nstarts = 1;
+#line 1000
for (j = 0; j < var_rank[i]; j++) {
+#line 1000
if ((k >> j) & 1) {
+#line 1000
start[j] = 0;
+#line 1000
edge[j] = mid[j];
+#line 1000
}else{
+#line 1000
start[j] = mid[j];
+#line 1000
edge[j] = var_shape[i][j] - mid[j];
+#line 1000
}
+#line 1000
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 1000
nstarts *= stride[j];
+#line 1000
}
+#line 1000
for (m = 0; m < nstarts; m++) {
+#line 1000
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 1000
IF (err)
+#line 1000
error("error in toMixedBase");
+#line 1000
nels = 1;
+#line 1000
for (j = 0; j < var_rank[i]; j++) {
+#line 1000
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 1000
nels *= count[j];
+#line 1000
index[j] += start[j];
+#line 1000
}
+#line 1000
/* Random choice of forward or backward */
+#line 1000
/* TODO
+#line 1000
if ( roll(2) ) {
+#line 1000
for (j = 0; j < var_rank[i]; j++) {
+#line 1000
index[j] += (count[j] - 1) * stride[j];
+#line 1000
stride[j] = -stride[j];
+#line 1000
}
+#line 1000
}
+#line 1000
*/
+#line 1000
if (var_rank[i] > 0) {
+#line 1000
j = var_rank[i] - 1;
+#line 1000
imap[j] = 1;
+#line 1000
for (; j > 0; j--)
+#line 1000
imap[j-1] = imap[j] * count[j];
+#line 1000
}
+#line 1000
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 1000
err = toMixedBase(j, var_rank[i], count, index2);
+#line 1000
IF (err)
+#line 1000
error("error in toMixedBase");
+#line 1000
for (d = 0; d < var_rank[i]; d++)
+#line 1000
index2[d] = index[d] + index2[d] * stride[d];
+#line 1000
value[j] = hash_short(var_type[i], var_rank[i], index2,
+#line 1000
NCT_SHORT);
+#line 1000
allInExtRange = allInExtRange
+#line 1000
&& inRange3(value[j], var_type[i], NCT_SHORT);
+#line 1000
}
+#line 1000
if (var_rank[i] == 0 && i%2 == 0)
+#line 1000
err = nc_put_varm_short(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 1000
else
+#line 1000
err = nc_put_varm_short(ncid,i,index,count,stride,imap,value);
+#line 1000
if (canConvert) {
+#line 1000
if (allInExtRange) {
+#line 1000
IF (err)
+#line 1000
error("%s", nc_strerror(err));
+#line 1000
} else {
+#line 1000
IF (err != NC_ERANGE)
+#line 1000
error("range error: status = %d", err);
+#line 1000
}
+#line 1000
} else {
+#line 1000
IF (nels > 0 && err != NC_ECHAR)
+#line 1000
error("wrong type: status = %d", err);
+#line 1000
}
+#line 1000
}
+#line 1000
}
+#line 1000
}
+#line 1000
+#line 1000
err = nc_close(ncid);
+#line 1000
IF (err)
+#line 1000
error("nc_close: %s", nc_strerror(err));
+#line 1000
+#line 1000
check_vars_short(scratch);
+#line 1000
+#line 1000
err = remove(scratch);
+#line 1000
IF (err)
+#line 1000
error("remove of %s failed", scratch);
+#line 1000
}
+#line 1000
void
+#line 1001
test_nc_put_varm_int(void)
+#line 1001
{
+#line 1001
int ncid;
+#line 1001
int d;
+#line 1001
int i;
+#line 1001
int j;
+#line 1001
int k;
+#line 1001
int m;
+#line 1001
int err;
+#line 1001
int nels;
+#line 1001
int nslabs;
+#line 1001
int nstarts; /* number of different starts */
+#line 1001
size_t start[MAX_RANK];
+#line 1001
size_t edge[MAX_RANK];
+#line 1001
size_t index[MAX_RANK];
+#line 1001
size_t index2[MAX_RANK];
+#line 1001
size_t mid[MAX_RANK];
+#line 1001
size_t count[MAX_RANK];
+#line 1001
size_t sstride[MAX_RANK];
+#line 1001
ptrdiff_t stride[MAX_RANK];
+#line 1001
ptrdiff_t imap[MAX_RANK];
+#line 1001
int canConvert; /* Both text or both numeric */
+#line 1001
int allInExtRange; /* all values within external range? */
+#line 1001
int value[MAX_NELS];
+#line 1001
+#line 1001
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 1001
IF (err) {
+#line 1001
error("nc_create: %s", nc_strerror(err));
+#line 1001
return;
+#line 1001
}
+#line 1001
def_dims(ncid);
+#line 1001
def_vars(ncid);
+#line 1001
err = nc_enddef(ncid);
+#line 1001
IF (err)
+#line 1001
error("nc_enddef: %s", nc_strerror(err));
+#line 1001
+#line 1001
for (i = 0; i < NVARS; i++) {
+#line 1001
canConvert = (var_type[i] == NC_CHAR) == (NCT_INT == NCT_TEXT);
+#line 1001
assert(var_rank[i] <= MAX_RANK);
+#line 1001
assert(var_nels[i] <= MAX_NELS);
+#line 1001
for (j = 0; j < var_rank[i]; j++) {
+#line 1001
start[j] = 0;
+#line 1001
edge[j] = 1;
+#line 1001
stride[j] = 1;
+#line 1001
imap[j] = 1;
+#line 1001
}
+#line 1001
err = nc_put_varm_int(BAD_ID, i, start, edge, stride, imap, value);
+#line 1001
IF (err != NC_EBADID)
+#line 1001
error("bad ncid: status = %d", err);
+#line 1001
err = nc_put_varm_int(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 1001
IF (err != NC_ENOTVAR)
+#line 1001
error("bad var id: status = %d", err);
+#line 1001
for (j = 0; j < var_rank[i]; j++) {
+#line 1001
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 1001
start[j] = var_shape[i][j] + 1;
+#line 1001
err = nc_put_varm_int(ncid, i, start, edge, stride, imap, value);
+#line 1001
if (!canConvert) {
+#line 1001
IF(err != NC_ECHAR)
+#line 1001
error("conversion: status = %d", err);
+#line 1001
} else {
+#line 1001
IF (err != NC_EINVALCOORDS)
+#line 1001
error("bad start: status = %d", err);
+#line 1001
start[j] = 0;
+#line 1001
edge[j] = var_shape[i][j] + 1;
+#line 1001
err = nc_put_varm_int(ncid, i, start, edge, stride, imap, value);
+#line 1001
IF (err != NC_EEDGE)
+#line 1001
error("bad edge: status = %d", err);
+#line 1001
edge[j] = 1;
+#line 1001
stride[j] = 0;
+#line 1001
err = nc_put_varm_int(ncid, i, start, edge, stride, imap, value);
+#line 1001
IF (err != NC_ESTRIDE)
+#line 1001
error("bad stride: status = %d", err);
+#line 1001
stride[j] = 1;
+#line 1001
}
+#line 1001
}
+#line 1001
}
+#line 1001
/* Choose a random point dividing each dim into 2 parts */
+#line 1001
/* Put 2^rank (nslabs) slabs so defined */
+#line 1001
nslabs = 1;
+#line 1001
for (j = 0; j < var_rank[i]; j++) {
+#line 1001
mid[j] = roll( var_shape[i][j] );
+#line 1001
nslabs *= 2;
+#line 1001
}
+#line 1001
/* bits of k determine whether to put lower or upper part of dim */
+#line 1001
/* choose random stride from 1 to edge */
+#line 1001
for (k = 0; k < nslabs; k++) {
+#line 1001
nstarts = 1;
+#line 1001
for (j = 0; j < var_rank[i]; j++) {
+#line 1001
if ((k >> j) & 1) {
+#line 1001
start[j] = 0;
+#line 1001
edge[j] = mid[j];
+#line 1001
}else{
+#line 1001
start[j] = mid[j];
+#line 1001
edge[j] = var_shape[i][j] - mid[j];
+#line 1001
}
+#line 1001
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 1001
nstarts *= stride[j];
+#line 1001
}
+#line 1001
for (m = 0; m < nstarts; m++) {
+#line 1001
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 1001
IF (err)
+#line 1001
error("error in toMixedBase");
+#line 1001
nels = 1;
+#line 1001
for (j = 0; j < var_rank[i]; j++) {
+#line 1001
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 1001
nels *= count[j];
+#line 1001
index[j] += start[j];
+#line 1001
}
+#line 1001
/* Random choice of forward or backward */
+#line 1001
/* TODO
+#line 1001
if ( roll(2) ) {
+#line 1001
for (j = 0; j < var_rank[i]; j++) {
+#line 1001
index[j] += (count[j] - 1) * stride[j];
+#line 1001
stride[j] = -stride[j];
+#line 1001
}
+#line 1001
}
+#line 1001
*/
+#line 1001
if (var_rank[i] > 0) {
+#line 1001
j = var_rank[i] - 1;
+#line 1001
imap[j] = 1;
+#line 1001
for (; j > 0; j--)
+#line 1001
imap[j-1] = imap[j] * count[j];
+#line 1001
}
+#line 1001
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 1001
err = toMixedBase(j, var_rank[i], count, index2);
+#line 1001
IF (err)
+#line 1001
error("error in toMixedBase");
+#line 1001
for (d = 0; d < var_rank[i]; d++)
+#line 1001
index2[d] = index[d] + index2[d] * stride[d];
+#line 1001
value[j] = hash_int(var_type[i], var_rank[i], index2,
+#line 1001
NCT_INT);
+#line 1001
allInExtRange = allInExtRange
+#line 1001
&& inRange3(value[j], var_type[i], NCT_INT);
+#line 1001
}
+#line 1001
if (var_rank[i] == 0 && i%2 == 0)
+#line 1001
err = nc_put_varm_int(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 1001
else
+#line 1001
err = nc_put_varm_int(ncid,i,index,count,stride,imap,value);
+#line 1001
if (canConvert) {
+#line 1001
if (allInExtRange) {
+#line 1001
IF (err)
+#line 1001
error("%s", nc_strerror(err));
+#line 1001
} else {
+#line 1001
IF (err != NC_ERANGE)
+#line 1001
error("range error: status = %d", err);
+#line 1001
}
+#line 1001
} else {
+#line 1001
IF (nels > 0 && err != NC_ECHAR)
+#line 1001
error("wrong type: status = %d", err);
+#line 1001
}
+#line 1001
}
+#line 1001
}
+#line 1001
}
+#line 1001
+#line 1001
err = nc_close(ncid);
+#line 1001
IF (err)
+#line 1001
error("nc_close: %s", nc_strerror(err));
+#line 1001
+#line 1001
check_vars_int(scratch);
+#line 1001
+#line 1001
err = remove(scratch);
+#line 1001
IF (err)
+#line 1001
error("remove of %s failed", scratch);
+#line 1001
}
+#line 1001
void
+#line 1002
test_nc_put_varm_long(void)
+#line 1002
{
+#line 1002
int ncid;
+#line 1002
int d;
+#line 1002
int i;
+#line 1002
int j;
+#line 1002
int k;
+#line 1002
int m;
+#line 1002
int err;
+#line 1002
int nels;
+#line 1002
int nslabs;
+#line 1002
int nstarts; /* number of different starts */
+#line 1002
size_t start[MAX_RANK];
+#line 1002
size_t edge[MAX_RANK];
+#line 1002
size_t index[MAX_RANK];
+#line 1002
size_t index2[MAX_RANK];
+#line 1002
size_t mid[MAX_RANK];
+#line 1002
size_t count[MAX_RANK];
+#line 1002
size_t sstride[MAX_RANK];
+#line 1002
ptrdiff_t stride[MAX_RANK];
+#line 1002
ptrdiff_t imap[MAX_RANK];
+#line 1002
int canConvert; /* Both text or both numeric */
+#line 1002
int allInExtRange; /* all values within external range? */
+#line 1002
long value[MAX_NELS];
+#line 1002
+#line 1002
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 1002
IF (err) {
+#line 1002
error("nc_create: %s", nc_strerror(err));
+#line 1002
return;
+#line 1002
}
+#line 1002
def_dims(ncid);
+#line 1002
def_vars(ncid);
+#line 1002
err = nc_enddef(ncid);
+#line 1002
IF (err)
+#line 1002
error("nc_enddef: %s", nc_strerror(err));
+#line 1002
+#line 1002
for (i = 0; i < NVARS; i++) {
+#line 1002
canConvert = (var_type[i] == NC_CHAR) == (NCT_LONG == NCT_TEXT);
+#line 1002
assert(var_rank[i] <= MAX_RANK);
+#line 1002
assert(var_nels[i] <= MAX_NELS);
+#line 1002
for (j = 0; j < var_rank[i]; j++) {
+#line 1002
start[j] = 0;
+#line 1002
edge[j] = 1;
+#line 1002
stride[j] = 1;
+#line 1002
imap[j] = 1;
+#line 1002
}
+#line 1002
err = nc_put_varm_long(BAD_ID, i, start, edge, stride, imap, value);
+#line 1002
IF (err != NC_EBADID)
+#line 1002
error("bad ncid: status = %d", err);
+#line 1002
err = nc_put_varm_long(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 1002
IF (err != NC_ENOTVAR)
+#line 1002
error("bad var id: status = %d", err);
+#line 1002
for (j = 0; j < var_rank[i]; j++) {
+#line 1002
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 1002
start[j] = var_shape[i][j] + 1;
+#line 1002
err = nc_put_varm_long(ncid, i, start, edge, stride, imap, value);
+#line 1002
if (!canConvert) {
+#line 1002
IF(err != NC_ECHAR)
+#line 1002
error("conversion: status = %d", err);
+#line 1002
} else {
+#line 1002
IF (err != NC_EINVALCOORDS)
+#line 1002
error("bad start: status = %d", err);
+#line 1002
start[j] = 0;
+#line 1002
edge[j] = var_shape[i][j] + 1;
+#line 1002
err = nc_put_varm_long(ncid, i, start, edge, stride, imap, value);
+#line 1002
IF (err != NC_EEDGE)
+#line 1002
error("bad edge: status = %d", err);
+#line 1002
edge[j] = 1;
+#line 1002
stride[j] = 0;
+#line 1002
err = nc_put_varm_long(ncid, i, start, edge, stride, imap, value);
+#line 1002
IF (err != NC_ESTRIDE)
+#line 1002
error("bad stride: status = %d", err);
+#line 1002
stride[j] = 1;
+#line 1002
}
+#line 1002
}
+#line 1002
}
+#line 1002
/* Choose a random point dividing each dim into 2 parts */
+#line 1002
/* Put 2^rank (nslabs) slabs so defined */
+#line 1002
nslabs = 1;
+#line 1002
for (j = 0; j < var_rank[i]; j++) {
+#line 1002
mid[j] = roll( var_shape[i][j] );
+#line 1002
nslabs *= 2;
+#line 1002
}
+#line 1002
/* bits of k determine whether to put lower or upper part of dim */
+#line 1002
/* choose random stride from 1 to edge */
+#line 1002
for (k = 0; k < nslabs; k++) {
+#line 1002
nstarts = 1;
+#line 1002
for (j = 0; j < var_rank[i]; j++) {
+#line 1002
if ((k >> j) & 1) {
+#line 1002
start[j] = 0;
+#line 1002
edge[j] = mid[j];
+#line 1002
}else{
+#line 1002
start[j] = mid[j];
+#line 1002
edge[j] = var_shape[i][j] - mid[j];
+#line 1002
}
+#line 1002
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 1002
nstarts *= stride[j];
+#line 1002
}
+#line 1002
for (m = 0; m < nstarts; m++) {
+#line 1002
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 1002
IF (err)
+#line 1002
error("error in toMixedBase");
+#line 1002
nels = 1;
+#line 1002
for (j = 0; j < var_rank[i]; j++) {
+#line 1002
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 1002
nels *= count[j];
+#line 1002
index[j] += start[j];
+#line 1002
}
+#line 1002
/* Random choice of forward or backward */
+#line 1002
/* TODO
+#line 1002
if ( roll(2) ) {
+#line 1002
for (j = 0; j < var_rank[i]; j++) {
+#line 1002
index[j] += (count[j] - 1) * stride[j];
+#line 1002
stride[j] = -stride[j];
+#line 1002
}
+#line 1002
}
+#line 1002
*/
+#line 1002
if (var_rank[i] > 0) {
+#line 1002
j = var_rank[i] - 1;
+#line 1002
imap[j] = 1;
+#line 1002
for (; j > 0; j--)
+#line 1002
imap[j-1] = imap[j] * count[j];
+#line 1002
}
+#line 1002
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 1002
err = toMixedBase(j, var_rank[i], count, index2);
+#line 1002
IF (err)
+#line 1002
error("error in toMixedBase");
+#line 1002
for (d = 0; d < var_rank[i]; d++)
+#line 1002
index2[d] = index[d] + index2[d] * stride[d];
+#line 1002
value[j] = hash_long(var_type[i], var_rank[i], index2,
+#line 1002
NCT_LONG);
+#line 1002
allInExtRange = allInExtRange
+#line 1002
&& inRange3(value[j], var_type[i], NCT_LONG);
+#line 1002
}
+#line 1002
if (var_rank[i] == 0 && i%2 == 0)
+#line 1002
err = nc_put_varm_long(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 1002
else
+#line 1002
err = nc_put_varm_long(ncid,i,index,count,stride,imap,value);
+#line 1002
if (canConvert) {
+#line 1002
if (allInExtRange) {
+#line 1002
IF (err)
+#line 1002
error("%s", nc_strerror(err));
+#line 1002
} else {
+#line 1002
IF (err != NC_ERANGE)
+#line 1002
error("range error: status = %d", err);
+#line 1002
}
+#line 1002
} else {
+#line 1002
IF (nels > 0 && err != NC_ECHAR)
+#line 1002
error("wrong type: status = %d", err);
+#line 1002
}
+#line 1002
}
+#line 1002
}
+#line 1002
}
+#line 1002
+#line 1002
err = nc_close(ncid);
+#line 1002
IF (err)
+#line 1002
error("nc_close: %s", nc_strerror(err));
+#line 1002
+#line 1002
check_vars_long(scratch);
+#line 1002
+#line 1002
err = remove(scratch);
+#line 1002
IF (err)
+#line 1002
error("remove of %s failed", scratch);
+#line 1002
}
+#line 1002
void
+#line 1003
test_nc_put_varm_float(void)
+#line 1003
{
+#line 1003
int ncid;
+#line 1003
int d;
+#line 1003
int i;
+#line 1003
int j;
+#line 1003
int k;
+#line 1003
int m;
+#line 1003
int err;
+#line 1003
int nels;
+#line 1003
int nslabs;
+#line 1003
int nstarts; /* number of different starts */
+#line 1003
size_t start[MAX_RANK];
+#line 1003
size_t edge[MAX_RANK];
+#line 1003
size_t index[MAX_RANK];
+#line 1003
size_t index2[MAX_RANK];
+#line 1003
size_t mid[MAX_RANK];
+#line 1003
size_t count[MAX_RANK];
+#line 1003
size_t sstride[MAX_RANK];
+#line 1003
ptrdiff_t stride[MAX_RANK];
+#line 1003
ptrdiff_t imap[MAX_RANK];
+#line 1003
int canConvert; /* Both text or both numeric */
+#line 1003
int allInExtRange; /* all values within external range? */
+#line 1003
float value[MAX_NELS];
+#line 1003
+#line 1003
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 1003
IF (err) {
+#line 1003
error("nc_create: %s", nc_strerror(err));
+#line 1003
return;
+#line 1003
}
+#line 1003
def_dims(ncid);
+#line 1003
def_vars(ncid);
+#line 1003
err = nc_enddef(ncid);
+#line 1003
IF (err)
+#line 1003
error("nc_enddef: %s", nc_strerror(err));
+#line 1003
+#line 1003
for (i = 0; i < NVARS; i++) {
+#line 1003
canConvert = (var_type[i] == NC_CHAR) == (NCT_FLOAT == NCT_TEXT);
+#line 1003
assert(var_rank[i] <= MAX_RANK);
+#line 1003
assert(var_nels[i] <= MAX_NELS);
+#line 1003
for (j = 0; j < var_rank[i]; j++) {
+#line 1003
start[j] = 0;
+#line 1003
edge[j] = 1;
+#line 1003
stride[j] = 1;
+#line 1003
imap[j] = 1;
+#line 1003
}
+#line 1003
err = nc_put_varm_float(BAD_ID, i, start, edge, stride, imap, value);
+#line 1003
IF (err != NC_EBADID)
+#line 1003
error("bad ncid: status = %d", err);
+#line 1003
err = nc_put_varm_float(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 1003
IF (err != NC_ENOTVAR)
+#line 1003
error("bad var id: status = %d", err);
+#line 1003
for (j = 0; j < var_rank[i]; j++) {
+#line 1003
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 1003
start[j] = var_shape[i][j] + 1;
+#line 1003
err = nc_put_varm_float(ncid, i, start, edge, stride, imap, value);
+#line 1003
if (!canConvert) {
+#line 1003
IF(err != NC_ECHAR)
+#line 1003
error("conversion: status = %d", err);
+#line 1003
} else {
+#line 1003
IF (err != NC_EINVALCOORDS)
+#line 1003
error("bad start: status = %d", err);
+#line 1003
start[j] = 0;
+#line 1003
edge[j] = var_shape[i][j] + 1;
+#line 1003
err = nc_put_varm_float(ncid, i, start, edge, stride, imap, value);
+#line 1003
IF (err != NC_EEDGE)
+#line 1003
error("bad edge: status = %d", err);
+#line 1003
edge[j] = 1;
+#line 1003
stride[j] = 0;
+#line 1003
err = nc_put_varm_float(ncid, i, start, edge, stride, imap, value);
+#line 1003
IF (err != NC_ESTRIDE)
+#line 1003
error("bad stride: status = %d", err);
+#line 1003
stride[j] = 1;
+#line 1003
}
+#line 1003
}
+#line 1003
}
+#line 1003
/* Choose a random point dividing each dim into 2 parts */
+#line 1003
/* Put 2^rank (nslabs) slabs so defined */
+#line 1003
nslabs = 1;
+#line 1003
for (j = 0; j < var_rank[i]; j++) {
+#line 1003
mid[j] = roll( var_shape[i][j] );
+#line 1003
nslabs *= 2;
+#line 1003
}
+#line 1003
/* bits of k determine whether to put lower or upper part of dim */
+#line 1003
/* choose random stride from 1 to edge */
+#line 1003
for (k = 0; k < nslabs; k++) {
+#line 1003
nstarts = 1;
+#line 1003
for (j = 0; j < var_rank[i]; j++) {
+#line 1003
if ((k >> j) & 1) {
+#line 1003
start[j] = 0;
+#line 1003
edge[j] = mid[j];
+#line 1003
}else{
+#line 1003
start[j] = mid[j];
+#line 1003
edge[j] = var_shape[i][j] - mid[j];
+#line 1003
}
+#line 1003
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 1003
nstarts *= stride[j];
+#line 1003
}
+#line 1003
for (m = 0; m < nstarts; m++) {
+#line 1003
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 1003
IF (err)
+#line 1003
error("error in toMixedBase");
+#line 1003
nels = 1;
+#line 1003
for (j = 0; j < var_rank[i]; j++) {
+#line 1003
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 1003
nels *= count[j];
+#line 1003
index[j] += start[j];
+#line 1003
}
+#line 1003
/* Random choice of forward or backward */
+#line 1003
/* TODO
+#line 1003
if ( roll(2) ) {
+#line 1003
for (j = 0; j < var_rank[i]; j++) {
+#line 1003
index[j] += (count[j] - 1) * stride[j];
+#line 1003
stride[j] = -stride[j];
+#line 1003
}
+#line 1003
}
+#line 1003
*/
+#line 1003
if (var_rank[i] > 0) {
+#line 1003
j = var_rank[i] - 1;
+#line 1003
imap[j] = 1;
+#line 1003
for (; j > 0; j--)
+#line 1003
imap[j-1] = imap[j] * count[j];
+#line 1003
}
+#line 1003
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 1003
err = toMixedBase(j, var_rank[i], count, index2);
+#line 1003
IF (err)
+#line 1003
error("error in toMixedBase");
+#line 1003
for (d = 0; d < var_rank[i]; d++)
+#line 1003
index2[d] = index[d] + index2[d] * stride[d];
+#line 1003
value[j] = hash_float(var_type[i], var_rank[i], index2,
+#line 1003
NCT_FLOAT);
+#line 1003
allInExtRange = allInExtRange
+#line 1003
&& inRange3(value[j], var_type[i], NCT_FLOAT);
+#line 1003
}
+#line 1003
if (var_rank[i] == 0 && i%2 == 0)
+#line 1003
err = nc_put_varm_float(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 1003
else
+#line 1003
err = nc_put_varm_float(ncid,i,index,count,stride,imap,value);
+#line 1003
if (canConvert) {
+#line 1003
if (allInExtRange) {
+#line 1003
IF (err)
+#line 1003
error("%s", nc_strerror(err));
+#line 1003
} else {
+#line 1003
IF (err != NC_ERANGE)
+#line 1003
error("range error: status = %d", err);
+#line 1003
}
+#line 1003
} else {
+#line 1003
IF (nels > 0 && err != NC_ECHAR)
+#line 1003
error("wrong type: status = %d", err);
+#line 1003
}
+#line 1003
}
+#line 1003
}
+#line 1003
}
+#line 1003
+#line 1003
err = nc_close(ncid);
+#line 1003
IF (err)
+#line 1003
error("nc_close: %s", nc_strerror(err));
+#line 1003
+#line 1003
check_vars_float(scratch);
+#line 1003
+#line 1003
err = remove(scratch);
+#line 1003
IF (err)
+#line 1003
error("remove of %s failed", scratch);
+#line 1003
}
+#line 1003
void
+#line 1004
test_nc_put_varm_double(void)
+#line 1004
{
+#line 1004
int ncid;
+#line 1004
int d;
+#line 1004
int i;
+#line 1004
int j;
+#line 1004
int k;
+#line 1004
int m;
+#line 1004
int err;
+#line 1004
int nels;
+#line 1004
int nslabs;
+#line 1004
int nstarts; /* number of different starts */
+#line 1004
size_t start[MAX_RANK];
+#line 1004
size_t edge[MAX_RANK];
+#line 1004
size_t index[MAX_RANK];
+#line 1004
size_t index2[MAX_RANK];
+#line 1004
size_t mid[MAX_RANK];
+#line 1004
size_t count[MAX_RANK];
+#line 1004
size_t sstride[MAX_RANK];
+#line 1004
ptrdiff_t stride[MAX_RANK];
+#line 1004
ptrdiff_t imap[MAX_RANK];
+#line 1004
int canConvert; /* Both text or both numeric */
+#line 1004
int allInExtRange; /* all values within external range? */
+#line 1004
double value[MAX_NELS];
+#line 1004
+#line 1004
err = nc_create(scratch, NC_CLOBBER, &ncid);
+#line 1004
IF (err) {
+#line 1004
error("nc_create: %s", nc_strerror(err));
+#line 1004
return;
+#line 1004
}
+#line 1004
def_dims(ncid);
+#line 1004
def_vars(ncid);
+#line 1004
err = nc_enddef(ncid);
+#line 1004
IF (err)
+#line 1004
error("nc_enddef: %s", nc_strerror(err));
+#line 1004
+#line 1004
for (i = 0; i < NVARS; i++) {
+#line 1004
canConvert = (var_type[i] == NC_CHAR) == (NCT_DOUBLE == NCT_TEXT);
+#line 1004
assert(var_rank[i] <= MAX_RANK);
+#line 1004
assert(var_nels[i] <= MAX_NELS);
+#line 1004
for (j = 0; j < var_rank[i]; j++) {
+#line 1004
start[j] = 0;
+#line 1004
edge[j] = 1;
+#line 1004
stride[j] = 1;
+#line 1004
imap[j] = 1;
+#line 1004
}
+#line 1004
err = nc_put_varm_double(BAD_ID, i, start, edge, stride, imap, value);
+#line 1004
IF (err != NC_EBADID)
+#line 1004
error("bad ncid: status = %d", err);
+#line 1004
err = nc_put_varm_double(ncid, BAD_VARID, start, edge, stride, imap, value);
+#line 1004
IF (err != NC_ENOTVAR)
+#line 1004
error("bad var id: status = %d", err);
+#line 1004
for (j = 0; j < var_rank[i]; j++) {
+#line 1004
if (var_dimid[i][j] > 0) { /* skip record dim */
+#line 1004
start[j] = var_shape[i][j] + 1;
+#line 1004
err = nc_put_varm_double(ncid, i, start, edge, stride, imap, value);
+#line 1004
if (!canConvert) {
+#line 1004
IF(err != NC_ECHAR)
+#line 1004
error("conversion: status = %d", err);
+#line 1004
} else {
+#line 1004
IF (err != NC_EINVALCOORDS)
+#line 1004
error("bad start: status = %d", err);
+#line 1004
start[j] = 0;
+#line 1004
edge[j] = var_shape[i][j] + 1;
+#line 1004
err = nc_put_varm_double(ncid, i, start, edge, stride, imap, value);
+#line 1004
IF (err != NC_EEDGE)
+#line 1004
error("bad edge: status = %d", err);
+#line 1004
edge[j] = 1;
+#line 1004
stride[j] = 0;
+#line 1004
err = nc_put_varm_double(ncid, i, start, edge, stride, imap, value);
+#line 1004
IF (err != NC_ESTRIDE)
+#line 1004
error("bad stride: status = %d", err);
+#line 1004
stride[j] = 1;
+#line 1004
}
+#line 1004
}
+#line 1004
}
+#line 1004
/* Choose a random point dividing each dim into 2 parts */
+#line 1004
/* Put 2^rank (nslabs) slabs so defined */
+#line 1004
nslabs = 1;
+#line 1004
for (j = 0; j < var_rank[i]; j++) {
+#line 1004
mid[j] = roll( var_shape[i][j] );
+#line 1004
nslabs *= 2;
+#line 1004
}
+#line 1004
/* bits of k determine whether to put lower or upper part of dim */
+#line 1004
/* choose random stride from 1 to edge */
+#line 1004
for (k = 0; k < nslabs; k++) {
+#line 1004
nstarts = 1;
+#line 1004
for (j = 0; j < var_rank[i]; j++) {
+#line 1004
if ((k >> j) & 1) {
+#line 1004
start[j] = 0;
+#line 1004
edge[j] = mid[j];
+#line 1004
}else{
+#line 1004
start[j] = mid[j];
+#line 1004
edge[j] = var_shape[i][j] - mid[j];
+#line 1004
}
+#line 1004
sstride[j] = stride[j] = edge[j] > 0 ? 1+roll(edge[j]) : 1;
+#line 1004
nstarts *= stride[j];
+#line 1004
}
+#line 1004
for (m = 0; m < nstarts; m++) {
+#line 1004
err = toMixedBase(m, var_rank[i], sstride, index);
+#line 1004
IF (err)
+#line 1004
error("error in toMixedBase");
+#line 1004
nels = 1;
+#line 1004
for (j = 0; j < var_rank[i]; j++) {
+#line 1004
count[j] = 1 + (edge[j] - index[j] - 1) / stride[j];
+#line 1004
nels *= count[j];
+#line 1004
index[j] += start[j];
+#line 1004
}
+#line 1004
/* Random choice of forward or backward */
+#line 1004
/* TODO
+#line 1004
if ( roll(2) ) {
+#line 1004
for (j = 0; j < var_rank[i]; j++) {
+#line 1004
index[j] += (count[j] - 1) * stride[j];
+#line 1004
stride[j] = -stride[j];
+#line 1004
}
+#line 1004
}
+#line 1004
*/
+#line 1004
if (var_rank[i] > 0) {
+#line 1004
j = var_rank[i] - 1;
+#line 1004
imap[j] = 1;
+#line 1004
for (; j > 0; j--)
+#line 1004
imap[j-1] = imap[j] * count[j];
+#line 1004
}
+#line 1004
for (allInExtRange = 1, j = 0; j < nels; j++) {
+#line 1004
err = toMixedBase(j, var_rank[i], count, index2);
+#line 1004
IF (err)
+#line 1004
error("error in toMixedBase");
+#line 1004
for (d = 0; d < var_rank[i]; d++)
+#line 1004
index2[d] = index[d] + index2[d] * stride[d];
+#line 1004
value[j] = hash_double(var_type[i], var_rank[i], index2,
+#line 1004
NCT_DOUBLE);
+#line 1004
allInExtRange = allInExtRange
+#line 1004
&& inRange3(value[j], var_type[i], NCT_DOUBLE);
+#line 1004
}
+#line 1004
if (var_rank[i] == 0 && i%2 == 0)
+#line 1004
err = nc_put_varm_double(ncid,i,NULL,NULL,NULL,NULL,value);
+#line 1004
else
+#line 1004
err = nc_put_varm_double(ncid,i,index,count,stride,imap,value);
+#line 1004
if (canConvert) {
+#line 1004
if (allInExtRange) {
+#line 1004
IF (err)
+#line 1004
error("%s", nc_strerror(err));
+#line 1004
} else {
+#line 1004
IF (err != NC_ERANGE)
+#line 1004
error("range error: status = %d", err);
+#line 1004
}
+#line 1004
} else {
+#line 1004
IF (nels > 0 && err != NC_ECHAR)
+#line 1004
error("wrong type: status = %d", err);
+#line 1004
}
+#line 1004
}
+#line 1004
}
+#line 1004
}
+#line 1004
+#line 1004
err = nc_close(ncid);
+#line 1004
IF (err)
+#line 1004
error("nc_close: %s", nc_strerror(err));
+#line 1004
+#line 1004
check_vars_double(scratch);
+#line 1004
+#line 1004
err = remove(scratch);
+#line 1004
IF (err)
+#line 1004
error("remove of %s failed", scratch);
+#line 1004
}
+#line 1004
@@ -6917,446 +13688,881 @@ test_nc_put_att_text(void)
}
+#line 1135
void
+#line 1136
test_nc_put_att_uchar(void)
+#line 1136
{
+#line 1136
int ncid;
+#line 1136
int i;
+#line 1136
int j;
+#line 1136
size_t k;
+#line 1136
int err;
+#line 1136
uchar value[MAX_NELS];
+#line 1136
int allInExtRange; /* all values within external range? */
+#line 1136
+#line 1136
err = nc_create(scratch, NC_NOCLOBBER, &ncid);
+#line 1136
IF (err) {
+#line 1136
error("nc_create: %s", nc_strerror(err));
+#line 1136
return;
+#line 1136
}
+#line 1136
def_dims(ncid);
+#line 1136
def_vars(ncid);
+#line 1136
+#line 1136
for (i = -1; i < NVARS; i++) {
+#line 1136
for (j = 0; j < NATTS(i); j++) {
+#line 1136
if (!(ATT_TYPE(i,j) == NC_CHAR)) {
+#line 1136
assert(ATT_LEN(i,j) <= MAX_NELS);
+#line 1136
err = nc_put_att_uchar(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1136
ATT_LEN(i,j), value);
+#line 1136
IF (err != NC_EBADID)
+#line 1136
error("bad ncid: status = %d", err);
+#line 1136
err = nc_put_att_uchar(ncid, BAD_VARID, ATT_NAME(i,j),
+#line 1136
ATT_TYPE(i,j), ATT_LEN(i,j), value);
+#line 1136
IF (err != NC_ENOTVAR)
+#line 1136
error("bad var id: status = %d", err);
+#line 1136
err = nc_put_att_uchar(ncid, i, ATT_NAME(i,j), BAD_TYPE,
+#line 1136
ATT_LEN(i,j), value);
+#line 1136
IF (err != NC_EBADTYPE)
+#line 1136
error("bad type: status = %d", err);
+#line 1136
for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) {
+#line 1136
value[k] = hash_uchar(ATT_TYPE(i,j), -1, &k, NCT_UCHAR);
+#line 1136
allInExtRange = allInExtRange
+#line 1136
&& inRange3(value[k], ATT_TYPE(i,j), NCT_UCHAR);
+#line 1136
}
+#line 1136
err = nc_put_att_uchar(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1136
ATT_LEN(i,j), value);
+#line 1136
if (allInExtRange) {
+#line 1136
IF (err)
+#line 1136
error("%s", nc_strerror(err));
+#line 1136
} else {
+#line 1136
IF (err != NC_ERANGE)
+#line 1136
error("range error: status = %d", err);
+#line 1136
}
+#line 1136
}
+#line 1136
}
+#line 1136
}
+#line 1136
+#line 1136
check_atts_uchar(ncid);
+#line 1136
err = nc_close(ncid);
+#line 1136
IF (err)
+#line 1136
error("nc_close: %s", nc_strerror(err));
+#line 1136
+#line 1136
err = remove(scratch);
+#line 1136
IF (err)
+#line 1136
error("remove of %s failed", scratch);
+#line 1136
}
+#line 1136
void
+#line 1137
test_nc_put_att_schar(void)
+#line 1137
{
+#line 1137
int ncid;
+#line 1137
int i;
+#line 1137
int j;
+#line 1137
size_t k;
+#line 1137
int err;
+#line 1137
schar value[MAX_NELS];
+#line 1137
int allInExtRange; /* all values within external range? */
+#line 1137
+#line 1137
err = nc_create(scratch, NC_NOCLOBBER, &ncid);
+#line 1137
IF (err) {
+#line 1137
error("nc_create: %s", nc_strerror(err));
+#line 1137
return;
+#line 1137
}
+#line 1137
def_dims(ncid);
+#line 1137
def_vars(ncid);
+#line 1137
+#line 1137
for (i = -1; i < NVARS; i++) {
+#line 1137
for (j = 0; j < NATTS(i); j++) {
+#line 1137
if (!(ATT_TYPE(i,j) == NC_CHAR)) {
+#line 1137
assert(ATT_LEN(i,j) <= MAX_NELS);
+#line 1137
err = nc_put_att_schar(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1137
ATT_LEN(i,j), value);
+#line 1137
IF (err != NC_EBADID)
+#line 1137
error("bad ncid: status = %d", err);
+#line 1137
err = nc_put_att_schar(ncid, BAD_VARID, ATT_NAME(i,j),
+#line 1137
ATT_TYPE(i,j), ATT_LEN(i,j), value);
+#line 1137
IF (err != NC_ENOTVAR)
+#line 1137
error("bad var id: status = %d", err);
+#line 1137
err = nc_put_att_schar(ncid, i, ATT_NAME(i,j), BAD_TYPE,
+#line 1137
ATT_LEN(i,j), value);
+#line 1137
IF (err != NC_EBADTYPE)
+#line 1137
error("bad type: status = %d", err);
+#line 1137
for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) {
+#line 1137
value[k] = hash_schar(ATT_TYPE(i,j), -1, &k, NCT_SCHAR);
+#line 1137
allInExtRange = allInExtRange
+#line 1137
&& inRange3(value[k], ATT_TYPE(i,j), NCT_SCHAR);
+#line 1137
}
+#line 1137
err = nc_put_att_schar(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1137
ATT_LEN(i,j), value);
+#line 1137
if (allInExtRange) {
+#line 1137
IF (err)
+#line 1137
error("%s", nc_strerror(err));
+#line 1137
} else {
+#line 1137
IF (err != NC_ERANGE)
+#line 1137
error("range error: status = %d", err);
+#line 1137
}
+#line 1137
}
+#line 1137
}
+#line 1137
}
+#line 1137
+#line 1137
check_atts_schar(ncid);
+#line 1137
err = nc_close(ncid);
+#line 1137
IF (err)
+#line 1137
error("nc_close: %s", nc_strerror(err));
+#line 1137
+#line 1137
err = remove(scratch);
+#line 1137
IF (err)
+#line 1137
error("remove of %s failed", scratch);
+#line 1137
}
+#line 1137
void
+#line 1138
test_nc_put_att_short(void)
+#line 1138
{
+#line 1138
int ncid;
+#line 1138
int i;
+#line 1138
int j;
+#line 1138
size_t k;
+#line 1138
int err;
+#line 1138
short value[MAX_NELS];
+#line 1138
int allInExtRange; /* all values within external range? */
+#line 1138
+#line 1138
err = nc_create(scratch, NC_NOCLOBBER, &ncid);
+#line 1138
IF (err) {
+#line 1138
error("nc_create: %s", nc_strerror(err));
+#line 1138
return;
+#line 1138
}
+#line 1138
def_dims(ncid);
+#line 1138
def_vars(ncid);
+#line 1138
+#line 1138
for (i = -1; i < NVARS; i++) {
+#line 1138
for (j = 0; j < NATTS(i); j++) {
+#line 1138
if (!(ATT_TYPE(i,j) == NC_CHAR)) {
+#line 1138
assert(ATT_LEN(i,j) <= MAX_NELS);
+#line 1138
err = nc_put_att_short(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1138
ATT_LEN(i,j), value);
+#line 1138
IF (err != NC_EBADID)
+#line 1138
error("bad ncid: status = %d", err);
+#line 1138
err = nc_put_att_short(ncid, BAD_VARID, ATT_NAME(i,j),
+#line 1138
ATT_TYPE(i,j), ATT_LEN(i,j), value);
+#line 1138
IF (err != NC_ENOTVAR)
+#line 1138
error("bad var id: status = %d", err);
+#line 1138
err = nc_put_att_short(ncid, i, ATT_NAME(i,j), BAD_TYPE,
+#line 1138
ATT_LEN(i,j), value);
+#line 1138
IF (err != NC_EBADTYPE)
+#line 1138
error("bad type: status = %d", err);
+#line 1138
for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) {
+#line 1138
value[k] = hash_short(ATT_TYPE(i,j), -1, &k, NCT_SHORT);
+#line 1138
allInExtRange = allInExtRange
+#line 1138
&& inRange3(value[k], ATT_TYPE(i,j), NCT_SHORT);
+#line 1138
}
+#line 1138
err = nc_put_att_short(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1138
ATT_LEN(i,j), value);
+#line 1138
if (allInExtRange) {
+#line 1138
IF (err)
+#line 1138
error("%s", nc_strerror(err));
+#line 1138
} else {
+#line 1138
IF (err != NC_ERANGE)
+#line 1138
error("range error: status = %d", err);
+#line 1138
}
+#line 1138
}
+#line 1138
}
+#line 1138
}
+#line 1138
+#line 1138
check_atts_short(ncid);
+#line 1138
err = nc_close(ncid);
+#line 1138
IF (err)
+#line 1138
error("nc_close: %s", nc_strerror(err));
+#line 1138
+#line 1138
err = remove(scratch);
+#line 1138
IF (err)
+#line 1138
error("remove of %s failed", scratch);
+#line 1138
}
+#line 1138
void
+#line 1139
test_nc_put_att_int(void)
+#line 1139
{
+#line 1139
int ncid;
+#line 1139
int i;
+#line 1139
int j;
+#line 1139
size_t k;
+#line 1139
int err;
+#line 1139
int value[MAX_NELS];
+#line 1139
int allInExtRange; /* all values within external range? */
+#line 1139
+#line 1139
err = nc_create(scratch, NC_NOCLOBBER, &ncid);
+#line 1139
IF (err) {
+#line 1139
error("nc_create: %s", nc_strerror(err));
+#line 1139
return;
+#line 1139
}
+#line 1139
def_dims(ncid);
+#line 1139
def_vars(ncid);
+#line 1139
+#line 1139
for (i = -1; i < NVARS; i++) {
+#line 1139
for (j = 0; j < NATTS(i); j++) {
+#line 1139
if (!(ATT_TYPE(i,j) == NC_CHAR)) {
+#line 1139
assert(ATT_LEN(i,j) <= MAX_NELS);
+#line 1139
err = nc_put_att_int(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1139
ATT_LEN(i,j), value);
+#line 1139
IF (err != NC_EBADID)
+#line 1139
error("bad ncid: status = %d", err);
+#line 1139
err = nc_put_att_int(ncid, BAD_VARID, ATT_NAME(i,j),
+#line 1139
ATT_TYPE(i,j), ATT_LEN(i,j), value);
+#line 1139
IF (err != NC_ENOTVAR)
+#line 1139
error("bad var id: status = %d", err);
+#line 1139
err = nc_put_att_int(ncid, i, ATT_NAME(i,j), BAD_TYPE,
+#line 1139
ATT_LEN(i,j), value);
+#line 1139
IF (err != NC_EBADTYPE)
+#line 1139
error("bad type: status = %d", err);
+#line 1139
for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) {
+#line 1139
value[k] = hash_int(ATT_TYPE(i,j), -1, &k, NCT_INT);
+#line 1139
allInExtRange = allInExtRange
+#line 1139
&& inRange3(value[k], ATT_TYPE(i,j), NCT_INT);
+#line 1139
}
+#line 1139
err = nc_put_att_int(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1139
ATT_LEN(i,j), value);
+#line 1139
if (allInExtRange) {
+#line 1139
IF (err)
+#line 1139
error("%s", nc_strerror(err));
+#line 1139
} else {
+#line 1139
IF (err != NC_ERANGE)
+#line 1139
error("range error: status = %d", err);
+#line 1139
}
+#line 1139
}
+#line 1139
}
+#line 1139
}
+#line 1139
+#line 1139
check_atts_int(ncid);
+#line 1139
err = nc_close(ncid);
+#line 1139
IF (err)
+#line 1139
error("nc_close: %s", nc_strerror(err));
+#line 1139
+#line 1139
err = remove(scratch);
+#line 1139
IF (err)
+#line 1139
error("remove of %s failed", scratch);
+#line 1139
}
+#line 1139
void
+#line 1140
test_nc_put_att_long(void)
+#line 1140
{
+#line 1140
int ncid;
+#line 1140
int i;
+#line 1140
int j;
+#line 1140
size_t k;
+#line 1140
int err;
+#line 1140
long value[MAX_NELS];
+#line 1140
int allInExtRange; /* all values within external range? */
+#line 1140
+#line 1140
err = nc_create(scratch, NC_NOCLOBBER, &ncid);
+#line 1140
IF (err) {
+#line 1140
error("nc_create: %s", nc_strerror(err));
+#line 1140
return;
+#line 1140
}
+#line 1140
def_dims(ncid);
+#line 1140
def_vars(ncid);
+#line 1140
+#line 1140
for (i = -1; i < NVARS; i++) {
+#line 1140
for (j = 0; j < NATTS(i); j++) {
+#line 1140
if (!(ATT_TYPE(i,j) == NC_CHAR)) {
+#line 1140
assert(ATT_LEN(i,j) <= MAX_NELS);
+#line 1140
err = nc_put_att_long(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1140
ATT_LEN(i,j), value);
+#line 1140
IF (err != NC_EBADID)
+#line 1140
error("bad ncid: status = %d", err);
+#line 1140
err = nc_put_att_long(ncid, BAD_VARID, ATT_NAME(i,j),
+#line 1140
ATT_TYPE(i,j), ATT_LEN(i,j), value);
+#line 1140
IF (err != NC_ENOTVAR)
+#line 1140
error("bad var id: status = %d", err);
+#line 1140
err = nc_put_att_long(ncid, i, ATT_NAME(i,j), BAD_TYPE,
+#line 1140
ATT_LEN(i,j), value);
+#line 1140
IF (err != NC_EBADTYPE)
+#line 1140
error("bad type: status = %d", err);
+#line 1140
for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) {
+#line 1140
value[k] = hash_long(ATT_TYPE(i,j), -1, &k, NCT_LONG);
+#line 1140
allInExtRange = allInExtRange
+#line 1140
&& inRange3(value[k], ATT_TYPE(i,j), NCT_LONG);
+#line 1140
}
+#line 1140
err = nc_put_att_long(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1140
ATT_LEN(i,j), value);
+#line 1140
if (allInExtRange) {
+#line 1140
IF (err)
+#line 1140
error("%s", nc_strerror(err));
+#line 1140
} else {
+#line 1140
IF (err != NC_ERANGE)
+#line 1140
error("range error: status = %d", err);
+#line 1140
}
+#line 1140
}
+#line 1140
}
+#line 1140
}
+#line 1140
+#line 1140
check_atts_long(ncid);
+#line 1140
err = nc_close(ncid);
+#line 1140
IF (err)
+#line 1140
error("nc_close: %s", nc_strerror(err));
+#line 1140
+#line 1140
err = remove(scratch);
+#line 1140
IF (err)
+#line 1140
error("remove of %s failed", scratch);
+#line 1140
}
+#line 1140
void
+#line 1141
test_nc_put_att_float(void)
+#line 1141
{
+#line 1141
int ncid;
+#line 1141
int i;
+#line 1141
int j;
+#line 1141
size_t k;
+#line 1141
int err;
+#line 1141
float value[MAX_NELS];
+#line 1141
int allInExtRange; /* all values within external range? */
+#line 1141
+#line 1141
err = nc_create(scratch, NC_NOCLOBBER, &ncid);
+#line 1141
IF (err) {
+#line 1141
error("nc_create: %s", nc_strerror(err));
+#line 1141
return;
+#line 1141
}
+#line 1141
def_dims(ncid);
+#line 1141
def_vars(ncid);
+#line 1141
+#line 1141
for (i = -1; i < NVARS; i++) {
+#line 1141
for (j = 0; j < NATTS(i); j++) {
+#line 1141
if (!(ATT_TYPE(i,j) == NC_CHAR)) {
+#line 1141
assert(ATT_LEN(i,j) <= MAX_NELS);
+#line 1141
err = nc_put_att_float(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1141
ATT_LEN(i,j), value);
+#line 1141
IF (err != NC_EBADID)
+#line 1141
error("bad ncid: status = %d", err);
+#line 1141
err = nc_put_att_float(ncid, BAD_VARID, ATT_NAME(i,j),
+#line 1141
ATT_TYPE(i,j), ATT_LEN(i,j), value);
+#line 1141
IF (err != NC_ENOTVAR)
+#line 1141
error("bad var id: status = %d", err);
+#line 1141
err = nc_put_att_float(ncid, i, ATT_NAME(i,j), BAD_TYPE,
+#line 1141
ATT_LEN(i,j), value);
+#line 1141
IF (err != NC_EBADTYPE)
+#line 1141
error("bad type: status = %d", err);
+#line 1141
for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) {
+#line 1141
value[k] = hash_float(ATT_TYPE(i,j), -1, &k, NCT_FLOAT);
+#line 1141
allInExtRange = allInExtRange
+#line 1141
&& inRange3(value[k], ATT_TYPE(i,j), NCT_FLOAT);
+#line 1141
}
+#line 1141
err = nc_put_att_float(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1141
ATT_LEN(i,j), value);
+#line 1141
if (allInExtRange) {
+#line 1141
IF (err)
+#line 1141
error("%s", nc_strerror(err));
+#line 1141
} else {
+#line 1141
IF (err != NC_ERANGE)
+#line 1141
error("range error: status = %d", err);
+#line 1141
}
+#line 1141
}
+#line 1141
}
+#line 1141
}
+#line 1141
+#line 1141
check_atts_float(ncid);
+#line 1141
err = nc_close(ncid);
+#line 1141
IF (err)
+#line 1141
error("nc_close: %s", nc_strerror(err));
+#line 1141
+#line 1141
err = remove(scratch);
+#line 1141
IF (err)
+#line 1141
error("remove of %s failed", scratch);
+#line 1141
}
+#line 1141
void
+#line 1142
test_nc_put_att_double(void)
+#line 1142
{
+#line 1142
int ncid;
+#line 1142
int i;
+#line 1142
int j;
+#line 1142
size_t k;
+#line 1142
int err;
+#line 1142
double value[MAX_NELS];
+#line 1142
int allInExtRange; /* all values within external range? */
+#line 1142
+#line 1142
err = nc_create(scratch, NC_NOCLOBBER, &ncid);
+#line 1142
IF (err) {
+#line 1142
error("nc_create: %s", nc_strerror(err));
+#line 1142
return;
+#line 1142
}
+#line 1142
def_dims(ncid);
+#line 1142
def_vars(ncid);
+#line 1142
+#line 1142
for (i = -1; i < NVARS; i++) {
+#line 1142
for (j = 0; j < NATTS(i); j++) {
+#line 1142
if (!(ATT_TYPE(i,j) == NC_CHAR)) {
+#line 1142
assert(ATT_LEN(i,j) <= MAX_NELS);
+#line 1142
err = nc_put_att_double(BAD_ID, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1142
ATT_LEN(i,j), value);
+#line 1142
IF (err != NC_EBADID)
+#line 1142
error("bad ncid: status = %d", err);
+#line 1142
err = nc_put_att_double(ncid, BAD_VARID, ATT_NAME(i,j),
+#line 1142
ATT_TYPE(i,j), ATT_LEN(i,j), value);
+#line 1142
IF (err != NC_ENOTVAR)
+#line 1142
error("bad var id: status = %d", err);
+#line 1142
err = nc_put_att_double(ncid, i, ATT_NAME(i,j), BAD_TYPE,
+#line 1142
ATT_LEN(i,j), value);
+#line 1142
IF (err != NC_EBADTYPE)
+#line 1142
error("bad type: status = %d", err);
+#line 1142
for (allInExtRange = 1, k = 0; k < ATT_LEN(i,j); k++) {
+#line 1142
value[k] = hash_double(ATT_TYPE(i,j), -1, &k, NCT_DOUBLE);
+#line 1142
allInExtRange = allInExtRange
+#line 1142
&& inRange3(value[k], ATT_TYPE(i,j), NCT_DOUBLE);
+#line 1142
}
+#line 1142
err = nc_put_att_double(ncid, i, ATT_NAME(i,j), ATT_TYPE(i,j),
+#line 1142
ATT_LEN(i,j), value);
+#line 1142
if (allInExtRange) {
+#line 1142
IF (err)
+#line 1142
error("%s", nc_strerror(err));
+#line 1142
} else {
+#line 1142
IF (err != NC_ERANGE)
+#line 1142
error("range error: status = %d", err);
+#line 1142
}
+#line 1142
}
+#line 1142
}
+#line 1142
}
+#line 1142
+#line 1142
check_atts_double(ncid);
+#line 1142
err = nc_close(ncid);
+#line 1142
IF (err)
+#line 1142
error("nc_close: %s", nc_strerror(err));
+#line 1142
+#line 1142
err = remove(scratch);
+#line 1142
IF (err)
+#line 1142
error("remove of %s failed", scratch);
+#line 1142
}
+#line 1142
diff --git a/nc_test/tst_diskless.c b/nc_test/tst_diskless.c
index e835a01..97708ee 100644
--- a/nc_test/tst_diskless.c
+++ b/nc_test/tst_diskless.c
@@ -130,7 +130,7 @@ printf("*** testing diskless file with scalar vars...");
/* Close the file. */
if (nc_close(ncid))
- abort(); //ERR;
+ abort(); /* ERR; */
}
SUMMARIZE_ERR;
@@ -247,7 +247,7 @@ printf("*** testing diskless file with scalar vars...");
/* Close the file, losing all information. Hey! What kind of
* storage format is this, anyway? */
if (nc_close(ncid))
- abort(); //ERR;
+ abort(); /* ERR; */
}
SUMMARIZE_ERR;
printf("*** testing diskless file with scalar vars and type conversion...");
@@ -305,12 +305,12 @@ printf("*** testing diskless file with scalar vars...");
/* Close the file. */
if (nc_close(ncid))
- abort(); //ERR;
+ abort(); /* ERR; */
}
SUMMARIZE_ERR;
FINAL_RESULTS;
/* Unnecessary exit(0), FINAL_RESULTS returns. */
- //exit(0);
+ /* exit(0); */
}
diff --git a/nc_test/tst_diskless4.c b/nc_test/tst_diskless4.c
index edde6fd..117dbdd 100644
--- a/nc_test/tst_diskless4.c
+++ b/nc_test/tst_diskless4.c
@@ -72,6 +72,7 @@ main(int argc, char **argv)
memory = malloc(filesize);
if(memory == NULL) {
fprintf(stderr,"Cannot malloc %lu bytes\n",(unsigned long)filesize);
+ fprintf(stderr,"This may mean your machine does not have enough RAM. If this is the case, it is safe to ignore this error.\n");
exit(1);
}
free(memory);
diff --git a/nc_test/tst_meta.c b/nc_test/tst_meta.c
new file mode 100644
index 0000000..0194f67
--- /dev/null
+++ b/nc_test/tst_meta.c
@@ -0,0 +1,34 @@
+/*
+ Copyright 20014, UCAR/Unidata
+ See COPYRIGHT file for copying and redistribution conditions.
+
+ This is part of netCDF.
+
+ This program checks to see that netcdf_meta.h exists and is
+ properly formatted.
+
+*/
+
+#include <config.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <netcdf.h>
+#include <netcdf_meta.h>
+
+int main(int argc, char **argv) {
+
+ /* If netcdf_meta.h is damaged, this file will
+ just flat-out fail to compile, also resulting
+ in an error.
+ */
+
+#ifndef NETCDF_META_H
+ printf("Error! NETCDF_META_H not defined. Check netcdf_meta.h.\n");
+ return -1;
+#else
+ printf("Success! NETCDF_META_H defined.\n");
+ return 0;
+#endif
+
+
+}
diff --git a/nc_test/tst_norm.c b/nc_test/tst_norm.c
index 31e2030..4ec018f 100644
--- a/nc_test/tst_norm.c
+++ b/nc_test/tst_norm.c
@@ -2,7 +2,7 @@
Copyright 2006 University Corporation for Atmospheric Research/Unidata.
See COPYRIGHT file for conditions of use.
- This is a very simple example which tests NFC normalization of
+ This is a very simple example which tests NFC normalization of
Unicode names encoded with UTF-8.
$Id: tst_norm.c,v 1.8 2008/10/20 01:48:08 ed Exp $
@@ -124,9 +124,9 @@ main(int argc, char **argv)
* version of same name. These should fail, as unnormalized name
* should have been normalized in library, so these are attempts to
* create duplicate netCDF objects. */
- if ((res = nc_def_dim(ncid, NNAME, NX, &dimid))
+ if ((res = nc_def_dim(ncid, NNAME, NX, &dimid))
!= NC_ENAMEINUSE) ERR;
- if ((res = nc_def_var(ncid, NNAME, NC_CHAR, NDIMS, dimids, &varid))
+ if ((res = nc_def_var(ncid, NNAME, NC_CHAR, NDIMS, dimids, &varid))
!= NC_ENAMEINUSE) ERR;
if ((res = nc_enddef(ncid)))
ERR;
@@ -154,7 +154,7 @@ main(int argc, char **argv)
ERR;
if ((res = nc_inq_att(ncid, varid, UNITS, &att_type, &att_len)))
ERR;
- if ((res = att_type != NC_CHAR || att_len != UNAMELEN))
+ if ((att_type != NC_CHAR || att_len != UNAMELEN))
ERR;
if ((res = nc_get_att_text(ncid, varid, UNITS, strings_in)))
ERR;
diff --git a/nc_test4/CMakeLists.txt b/nc_test4/CMakeLists.txt
index 5428314..4e84109 100644
--- a/nc_test4/CMakeLists.txt
+++ b/nc_test4/CMakeLists.txt
@@ -8,7 +8,7 @@ SET(NC4_TESTS tst_dims tst_dims2 tst_dims3 tst_files tst_files4 tst_vars
tst_xplatform tst_xplatform2 tst_h_atts2 tst_endian_fill tst_atts
t_type cdm_sea_soundings tst_vl tst_atts1 tst_atts2
tst_vars2 tst_files5 tst_files6 tst_sync tst_h_strbug tst_h_refs
- tst_h_scalar)
+ tst_h_scalar tst_rename)
# Note, renamegroup needs to be compiled before run_grp_rename
build_bin_test(renamegroup)
@@ -20,6 +20,7 @@ ENDIF()
# If the v2 API was built, add the test program.
IF(ENABLE_V2_API)
+
build_bin_test(tst_v2)
ENDIF()
@@ -30,7 +31,6 @@ ENDIF()
IF(USE_HDF4)
SET(NC4_TESTS ${NC4_TESTS} tst_interops2)
-
ENDIF()
IF(BUILD_BENCHMARKS)
@@ -59,14 +59,17 @@ FOREACH(CTEST ${NC4_TESTS})
add_bin_test(nc_test4 ${CTEST})
ENDFOREACH()
-IF(USE_HDF4_FILE_TESTS)
- add_sh_test(nc_test4 run_get_hdf4_files)
- add_bin_test(nc_test4 tst_interops3)
- add_sh_test(nc_test4 tst_formatx_hdf4)
- build_bin_test(tst_chunk_hdf4)
- add_sh_test(nc_test4 run_chunk_hdf4)
+# This must go after the 'foreach' stanza
+# immediately above this comment.
+IF(USE_HDF4_FILE_TESTS AND NOT MSVC)
+ add_sh_test(nc_test4 run_get_hdf4_files)
+ add_bin_test(nc_test4 tst_interops3)
+ add_sh_test(nc_test4 tst_formatx_hdf4)
+ build_bin_test(tst_chunk_hdf4)
+ add_sh_test(nc_test4 run_chunk_hdf4)
ENDIF()
+
IF(TEST_PARALLEL)
build_bin_test(tst_mpi_parallel)
build_bin_test(tst_parallel)
diff --git a/nc_test4/Makefile.am b/nc_test4/Makefile.am
index 6b3c265..b6d3a07 100644
--- a/nc_test4/Makefile.am
+++ b/nc_test4/Makefile.am
@@ -21,7 +21,7 @@ tst_chunks tst_chunks2 tst_utf8 tst_fills tst_fills2 tst_fillbug \
tst_xplatform tst_xplatform2 tst_h_atts2 tst_endian_fill tst_atts \
t_type cdm_sea_soundings tst_camrun tst_vl tst_atts1 tst_atts2 \
tst_vars2 tst_files5 tst_files6 tst_sync tst_h_strbug tst_h_refs \
-tst_h_scalar
+tst_h_scalar tst_rename
check_PROGRAMS = $(NC4_TESTS) renamegroup
diff --git a/nc_test4/Makefile.in b/nc_test4/Makefile.in
new file mode 100644
index 0000000..0d21374
--- /dev/null
+++ b/nc_test4/Makefile.in
@@ -0,0 +1,2457 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# This entire directory will be skipped if netCDF-4 is not enabled.
+#
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+check_PROGRAMS = $(am__EXEEXT_1) renamegroup$(EXEEXT) $(am__EXEEXT_2) \
+ $(am__EXEEXT_3) $(am__EXEEXT_4) $(am__EXEEXT_5) \
+ $(am__EXEEXT_6) $(am__EXEEXT_7) $(am__EXEEXT_8)
+
+# Add these if large file tests are turned on.
+ at LARGE_FILE_TESTS_TRUE@am__append_3 = tst_large tst_large2
+TESTS = $(am__EXEEXT_1) run_grp_rename.sh $(am__EXEEXT_3) \
+ $(am__EXEEXT_4) $(am__EXEEXT_9) $(am__append_10) \
+ $(am__EXEEXT_10) $(am__EXEEXT_11) $(am__append_15) \
+ $(am__append_16) $(am__append_18)
+
+# If the v2 API was built, add its test program.
+ at BUILD_V2_TRUE@am__append_4 = tst_v2
+ at BUILD_V2_TRUE@am__append_5 = tst_v2
+ at LARGE_FILE_TESTS_TRUE@am__append_6 = tst_large
+ at LARGE_FILE_TESTS_TRUE@am__append_7 = tst_large
+
+# If benchmarks were turned on, build and run a bunch more tests.
+ at BUILD_BENCHMARKS_TRUE@am__append_8 = tst_create_files bm_file tst_chunks3 tst_ar4 \
+ at BUILD_BENCHMARKS_TRUE@tst_ar4_3d tst_ar4_4d bm_many_objs tst_h_many_atts bm_many_atts \
+ at BUILD_BENCHMARKS_TRUE@tst_files2 tst_files3 tst_ar5 tst_h_files3 tst_mem tst_knmi \
+ at BUILD_BENCHMARKS_TRUE@bm_netcdf4_recs
+
+
+#WARNING: test_knmi depends on run_get_knmi_files.sh,
+# so they must appear in the appropriate order.
+ at BUILD_BENCHMARKS_TRUE@am__append_9 = tst_ar4_3d tst_create_files run_bm_test1.sh run_bm_elena.sh \
+ at BUILD_BENCHMARKS_TRUE@run_bm_test2.sh run_tst_chunks.sh run_bm_ar4.sh tst_files2 tst_files3 \
+ at BUILD_BENCHMARKS_TRUE@tst_ar5 tst_h_files3 tst_mem \
+ at BUILD_BENCHMARKS_TRUE@run_get_knmi_files.sh tst_knmi
+
+
+# This will run a parallel I/O benchmark for parallel builds.
+ at BUILD_BENCHMARKS_TRUE@@TEST_PARALLEL_TRUE at am__append_10 = run_par_bm_test.sh
+
+# These are the tests for HDF4.
+ at USE_HDF4_TRUE@am__append_11 = tst_interops2 tst_chunk_hdf4
+ at USE_HDF4_TRUE@am__append_12 = tst_interops2 tst_formatx_hdf4.sh run_chunk_hdf4.sh
+ at USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE at am__append_13 = tst_interops3
+ at USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE at am__append_14 = run_get_hdf4_files.sh tst_interops3
+#tst_interops2_LDADD = ${lib_LTLIBRARIES} -lmfhdf -ldf -ljpeg -lhdf5_hl \
+#-lhdf5 -lz
+
+# This will run a bunch of the test programs with valgrind, the memory
+# checking tool. (Valgrind must be present for this to work.)
+ at USE_VALGRIND_TESTS_TRUE@am__append_15 = run_valgrind_tests.sh run_valgrind_tests2.sh
+ at USE_HDF4_TRUE@@USE_VALGRIND_TESTS_TRUE at am__append_16 = run_hdf4_valgrind_tests.sh
+
+# This are extra tests that will only be run if netcdf-4 is configured
+# with --enable-parallel-tests.
+ at TEST_PARALLEL_TRUE@am__append_17 = tst_mpi_parallel tst_parallel tst_parallel3 \
+ at TEST_PARALLEL_TRUE@tst_parallel4 tst_nc4perf
+
+ at TEST_PARALLEL_TRUE@am__append_18 = run_par_test.sh
+subdir = nc_test4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__EXEEXT_1 = tst_dims$(EXEEXT) tst_dims2$(EXEEXT) tst_dims3$(EXEEXT) \
+ tst_files$(EXEEXT) tst_files4$(EXEEXT) tst_vars$(EXEEXT) \
+ tst_varms$(EXEEXT) tst_unlim_vars$(EXEEXT) \
+ tst_converts$(EXEEXT) tst_converts2$(EXEEXT) tst_grps$(EXEEXT) \
+ tst_grps2$(EXEEXT) tst_compounds$(EXEEXT) \
+ tst_compounds2$(EXEEXT) tst_compounds3$(EXEEXT) \
+ tst_opaques$(EXEEXT) tst_strings$(EXEEXT) \
+ tst_strings2$(EXEEXT) tst_interops$(EXEEXT) \
+ tst_interops4$(EXEEXT) tst_interops5$(EXEEXT) \
+ tst_interops6$(EXEEXT) tst_enums$(EXEEXT) tst_coords$(EXEEXT) \
+ tst_coords2$(EXEEXT) tst_coords3$(EXEEXT) tst_vars3$(EXEEXT) \
+ tst_vars4$(EXEEXT) tst_chunks$(EXEEXT) tst_chunks2$(EXEEXT) \
+ tst_utf8$(EXEEXT) tst_fills$(EXEEXT) tst_fills2$(EXEEXT) \
+ tst_fillbug$(EXEEXT) tst_xplatform$(EXEEXT) \
+ tst_xplatform2$(EXEEXT) tst_h_atts2$(EXEEXT) \
+ tst_endian_fill$(EXEEXT) tst_atts$(EXEEXT) t_type$(EXEEXT) \
+ cdm_sea_soundings$(EXEEXT) tst_camrun$(EXEEXT) tst_vl$(EXEEXT) \
+ tst_atts1$(EXEEXT) tst_atts2$(EXEEXT) tst_vars2$(EXEEXT) \
+ tst_files5$(EXEEXT) tst_files6$(EXEEXT) tst_sync$(EXEEXT) \
+ tst_h_strbug$(EXEEXT) tst_h_refs$(EXEEXT) \
+ tst_h_scalar$(EXEEXT) tst_rename$(EXEEXT)
+ at LARGE_FILE_TESTS_TRUE@am__EXEEXT_2 = tst_large$(EXEEXT) \
+ at LARGE_FILE_TESTS_TRUE@ tst_large2$(EXEEXT)
+ at BUILD_V2_TRUE@am__EXEEXT_3 = tst_v2$(EXEEXT)
+ at LARGE_FILE_TESTS_TRUE@am__EXEEXT_4 = tst_large$(EXEEXT)
+ at BUILD_BENCHMARKS_TRUE@am__EXEEXT_5 = tst_create_files$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ bm_file$(EXEEXT) tst_chunks3$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_ar4$(EXEEXT) tst_ar4_3d$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_ar4_4d$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ bm_many_objs$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_h_many_atts$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ bm_many_atts$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_files2$(EXEEXT) tst_files3$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_ar5$(EXEEXT) tst_h_files3$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_mem$(EXEEXT) tst_knmi$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ bm_netcdf4_recs$(EXEEXT)
+ at USE_HDF4_TRUE@am__EXEEXT_6 = tst_interops2$(EXEEXT) \
+ at USE_HDF4_TRUE@ tst_chunk_hdf4$(EXEEXT)
+ at USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE at am__EXEEXT_7 = tst_interops3$(EXEEXT)
+ at TEST_PARALLEL_TRUE@am__EXEEXT_8 = tst_mpi_parallel$(EXEEXT) \
+ at TEST_PARALLEL_TRUE@ tst_parallel$(EXEEXT) \
+ at TEST_PARALLEL_TRUE@ tst_parallel3$(EXEEXT) \
+ at TEST_PARALLEL_TRUE@ tst_parallel4$(EXEEXT) \
+ at TEST_PARALLEL_TRUE@ tst_nc4perf$(EXEEXT)
+am__bm_file_SOURCES_DIST = bm_file.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_bm_file_OBJECTS = bm_file.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+bm_file_OBJECTS = $(am_bm_file_OBJECTS)
+bm_file_LDADD = $(LDADD)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+am__bm_many_atts_SOURCES_DIST = bm_many_atts.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_bm_many_atts_OBJECTS = \
+ at BUILD_BENCHMARKS_TRUE@ bm_many_atts.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+bm_many_atts_OBJECTS = $(am_bm_many_atts_OBJECTS)
+bm_many_atts_LDADD = $(LDADD)
+am__bm_many_objs_SOURCES_DIST = bm_many_objs.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_bm_many_objs_OBJECTS = \
+ at BUILD_BENCHMARKS_TRUE@ bm_many_objs.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+bm_many_objs_OBJECTS = $(am_bm_many_objs_OBJECTS)
+bm_many_objs_LDADD = $(LDADD)
+am__bm_netcdf4_recs_SOURCES_DIST = bm_netcdf4_recs.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_bm_netcdf4_recs_OBJECTS = \
+ at BUILD_BENCHMARKS_TRUE@ bm_netcdf4_recs.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+bm_netcdf4_recs_OBJECTS = $(am_bm_netcdf4_recs_OBJECTS)
+bm_netcdf4_recs_LDADD = $(LDADD)
+cdm_sea_soundings_SOURCES = cdm_sea_soundings.c
+cdm_sea_soundings_OBJECTS = cdm_sea_soundings.$(OBJEXT)
+cdm_sea_soundings_LDADD = $(LDADD)
+renamegroup_SOURCES = renamegroup.c
+renamegroup_OBJECTS = renamegroup.$(OBJEXT)
+renamegroup_LDADD = $(LDADD)
+t_type_SOURCES = t_type.c
+t_type_OBJECTS = t_type.$(OBJEXT)
+t_type_LDADD = $(LDADD)
+am__tst_ar4_SOURCES_DIST = tst_ar4.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_tst_ar4_OBJECTS = tst_ar4.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+tst_ar4_OBJECTS = $(am_tst_ar4_OBJECTS)
+tst_ar4_LDADD = $(LDADD)
+am__tst_ar4_3d_SOURCES_DIST = tst_ar4_3d.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_tst_ar4_3d_OBJECTS = tst_ar4_3d.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+tst_ar4_3d_OBJECTS = $(am_tst_ar4_3d_OBJECTS)
+tst_ar4_3d_LDADD = $(LDADD)
+am__tst_ar4_4d_SOURCES_DIST = tst_ar4_4d.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_tst_ar4_4d_OBJECTS = tst_ar4_4d.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+tst_ar4_4d_OBJECTS = $(am_tst_ar4_4d_OBJECTS)
+tst_ar4_4d_LDADD = $(LDADD)
+tst_ar5_SOURCES = tst_ar5.c
+tst_ar5_OBJECTS = tst_ar5.$(OBJEXT)
+tst_ar5_LDADD = $(LDADD)
+tst_atts_SOURCES = tst_atts.c
+tst_atts_OBJECTS = tst_atts.$(OBJEXT)
+tst_atts_LDADD = $(LDADD)
+tst_atts1_SOURCES = tst_atts1.c
+tst_atts1_OBJECTS = tst_atts1.$(OBJEXT)
+tst_atts1_LDADD = $(LDADD)
+tst_atts2_SOURCES = tst_atts2.c
+tst_atts2_OBJECTS = tst_atts2.$(OBJEXT)
+tst_atts2_LDADD = $(LDADD)
+tst_camrun_SOURCES = tst_camrun.c
+tst_camrun_OBJECTS = tst_camrun.$(OBJEXT)
+tst_camrun_LDADD = $(LDADD)
+tst_chunk_hdf4_SOURCES = tst_chunk_hdf4.c
+tst_chunk_hdf4_OBJECTS = tst_chunk_hdf4.$(OBJEXT)
+tst_chunk_hdf4_LDADD = $(LDADD)
+tst_chunks_SOURCES = tst_chunks.c
+tst_chunks_OBJECTS = tst_chunks.$(OBJEXT)
+tst_chunks_LDADD = $(LDADD)
+tst_chunks2_SOURCES = tst_chunks2.c
+tst_chunks2_OBJECTS = tst_chunks2.$(OBJEXT)
+tst_chunks2_LDADD = $(LDADD)
+tst_chunks3_SOURCES = tst_chunks3.c
+tst_chunks3_OBJECTS = tst_chunks3.$(OBJEXT)
+tst_chunks3_LDADD = $(LDADD)
+tst_compounds_SOURCES = tst_compounds.c
+tst_compounds_OBJECTS = tst_compounds.$(OBJEXT)
+tst_compounds_LDADD = $(LDADD)
+tst_compounds2_SOURCES = tst_compounds2.c
+tst_compounds2_OBJECTS = tst_compounds2.$(OBJEXT)
+tst_compounds2_LDADD = $(LDADD)
+tst_compounds3_SOURCES = tst_compounds3.c
+tst_compounds3_OBJECTS = tst_compounds3.$(OBJEXT)
+tst_compounds3_LDADD = $(LDADD)
+tst_converts_SOURCES = tst_converts.c
+tst_converts_OBJECTS = tst_converts.$(OBJEXT)
+tst_converts_LDADD = $(LDADD)
+tst_converts2_SOURCES = tst_converts2.c
+tst_converts2_OBJECTS = tst_converts2.$(OBJEXT)
+tst_converts2_LDADD = $(LDADD)
+tst_coords_SOURCES = tst_coords.c
+tst_coords_OBJECTS = tst_coords.$(OBJEXT)
+tst_coords_LDADD = $(LDADD)
+tst_coords2_SOURCES = tst_coords2.c
+tst_coords2_OBJECTS = tst_coords2.$(OBJEXT)
+tst_coords2_LDADD = $(LDADD)
+tst_coords3_SOURCES = tst_coords3.c
+tst_coords3_OBJECTS = tst_coords3.$(OBJEXT)
+tst_coords3_LDADD = $(LDADD)
+tst_create_files_SOURCES = tst_create_files.c
+tst_create_files_OBJECTS = tst_create_files.$(OBJEXT)
+tst_create_files_LDADD = $(LDADD)
+tst_dims_SOURCES = tst_dims.c
+tst_dims_OBJECTS = tst_dims.$(OBJEXT)
+tst_dims_LDADD = $(LDADD)
+tst_dims2_SOURCES = tst_dims2.c
+tst_dims2_OBJECTS = tst_dims2.$(OBJEXT)
+tst_dims2_LDADD = $(LDADD)
+tst_dims3_SOURCES = tst_dims3.c
+tst_dims3_OBJECTS = tst_dims3.$(OBJEXT)
+tst_dims3_LDADD = $(LDADD)
+tst_endian_fill_SOURCES = tst_endian_fill.c
+tst_endian_fill_OBJECTS = tst_endian_fill.$(OBJEXT)
+tst_endian_fill_LDADD = $(LDADD)
+tst_enums_SOURCES = tst_enums.c
+tst_enums_OBJECTS = tst_enums.$(OBJEXT)
+tst_enums_LDADD = $(LDADD)
+tst_files_SOURCES = tst_files.c
+tst_files_OBJECTS = tst_files.$(OBJEXT)
+tst_files_LDADD = $(LDADD)
+am__tst_files2_SOURCES_DIST = tst_files2.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_tst_files2_OBJECTS = tst_files2.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+tst_files2_OBJECTS = $(am_tst_files2_OBJECTS)
+tst_files2_LDADD = $(LDADD)
+tst_files3_SOURCES = tst_files3.c
+tst_files3_OBJECTS = tst_files3.$(OBJEXT)
+tst_files3_LDADD = $(LDADD)
+tst_files4_SOURCES = tst_files4.c
+tst_files4_OBJECTS = tst_files4.$(OBJEXT)
+tst_files4_LDADD = $(LDADD)
+tst_files5_SOURCES = tst_files5.c
+tst_files5_OBJECTS = tst_files5.$(OBJEXT)
+tst_files5_LDADD = $(LDADD)
+tst_files6_SOURCES = tst_files6.c
+tst_files6_OBJECTS = tst_files6.$(OBJEXT)
+tst_files6_LDADD = $(LDADD)
+tst_fillbug_SOURCES = tst_fillbug.c
+tst_fillbug_OBJECTS = tst_fillbug.$(OBJEXT)
+tst_fillbug_LDADD = $(LDADD)
+tst_fills_SOURCES = tst_fills.c
+tst_fills_OBJECTS = tst_fills.$(OBJEXT)
+tst_fills_LDADD = $(LDADD)
+tst_fills2_SOURCES = tst_fills2.c
+tst_fills2_OBJECTS = tst_fills2.$(OBJEXT)
+tst_fills2_LDADD = $(LDADD)
+tst_grps_SOURCES = tst_grps.c
+tst_grps_OBJECTS = tst_grps.$(OBJEXT)
+tst_grps_LDADD = $(LDADD)
+tst_grps2_SOURCES = tst_grps2.c
+tst_grps2_OBJECTS = tst_grps2.$(OBJEXT)
+tst_grps2_LDADD = $(LDADD)
+tst_h_atts2_SOURCES = tst_h_atts2.c
+tst_h_atts2_OBJECTS = tst_h_atts2.$(OBJEXT)
+tst_h_atts2_LDADD = $(LDADD)
+tst_h_files3_SOURCES = tst_h_files3.c
+tst_h_files3_OBJECTS = tst_h_files3.$(OBJEXT)
+tst_h_files3_LDADD = $(LDADD)
+am__tst_h_many_atts_SOURCES_DIST = tst_h_many_atts.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_tst_h_many_atts_OBJECTS = \
+ at BUILD_BENCHMARKS_TRUE@ tst_h_many_atts.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+tst_h_many_atts_OBJECTS = $(am_tst_h_many_atts_OBJECTS)
+tst_h_many_atts_LDADD = $(LDADD)
+tst_h_refs_SOURCES = tst_h_refs.c
+tst_h_refs_OBJECTS = tst_h_refs.$(OBJEXT)
+tst_h_refs_LDADD = $(LDADD)
+tst_h_scalar_SOURCES = tst_h_scalar.c
+tst_h_scalar_OBJECTS = tst_h_scalar.$(OBJEXT)
+tst_h_scalar_LDADD = $(LDADD)
+tst_h_strbug_SOURCES = tst_h_strbug.c
+tst_h_strbug_OBJECTS = tst_h_strbug.$(OBJEXT)
+tst_h_strbug_LDADD = $(LDADD)
+tst_interops_SOURCES = tst_interops.c
+tst_interops_OBJECTS = tst_interops.$(OBJEXT)
+tst_interops_LDADD = $(LDADD)
+tst_interops2_SOURCES = tst_interops2.c
+tst_interops2_OBJECTS = tst_interops2.$(OBJEXT)
+tst_interops2_LDADD = $(LDADD)
+tst_interops3_SOURCES = tst_interops3.c
+tst_interops3_OBJECTS = tst_interops3.$(OBJEXT)
+tst_interops3_LDADD = $(LDADD)
+tst_interops4_SOURCES = tst_interops4.c
+tst_interops4_OBJECTS = tst_interops4.$(OBJEXT)
+tst_interops4_LDADD = $(LDADD)
+tst_interops5_SOURCES = tst_interops5.c
+tst_interops5_OBJECTS = tst_interops5.$(OBJEXT)
+tst_interops5_LDADD = $(LDADD)
+tst_interops6_SOURCES = tst_interops6.c
+tst_interops6_OBJECTS = tst_interops6.$(OBJEXT)
+tst_interops6_LDADD = $(LDADD)
+am__tst_knmi_SOURCES_DIST = tst_knmi.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@am_tst_knmi_OBJECTS = tst_knmi.$(OBJEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_utils.$(OBJEXT)
+tst_knmi_OBJECTS = $(am_tst_knmi_OBJECTS)
+tst_knmi_LDADD = $(LDADD)
+tst_large_SOURCES = tst_large.c
+tst_large_OBJECTS = tst_large.$(OBJEXT)
+tst_large_LDADD = $(LDADD)
+tst_large2_SOURCES = tst_large2.c
+tst_large2_OBJECTS = tst_large2.$(OBJEXT)
+tst_large2_LDADD = $(LDADD)
+tst_mem_SOURCES = tst_mem.c
+tst_mem_OBJECTS = tst_mem.$(OBJEXT)
+tst_mem_LDADD = $(LDADD)
+tst_mpi_parallel_SOURCES = tst_mpi_parallel.c
+tst_mpi_parallel_OBJECTS = tst_mpi_parallel.$(OBJEXT)
+tst_mpi_parallel_LDADD = $(LDADD)
+tst_nc4perf_SOURCES = tst_nc4perf.c
+tst_nc4perf_OBJECTS = tst_nc4perf.$(OBJEXT)
+tst_nc4perf_LDADD = $(LDADD)
+tst_opaques_SOURCES = tst_opaques.c
+tst_opaques_OBJECTS = tst_opaques.$(OBJEXT)
+tst_opaques_LDADD = $(LDADD)
+tst_parallel_SOURCES = tst_parallel.c
+tst_parallel_OBJECTS = tst_parallel.$(OBJEXT)
+tst_parallel_LDADD = $(LDADD)
+tst_parallel3_SOURCES = tst_parallel3.c
+tst_parallel3_OBJECTS = tst_parallel3.$(OBJEXT)
+tst_parallel3_LDADD = $(LDADD)
+tst_parallel4_SOURCES = tst_parallel4.c
+tst_parallel4_OBJECTS = tst_parallel4.$(OBJEXT)
+tst_parallel4_LDADD = $(LDADD)
+tst_rename_SOURCES = tst_rename.c
+tst_rename_OBJECTS = tst_rename.$(OBJEXT)
+tst_rename_LDADD = $(LDADD)
+tst_strings_SOURCES = tst_strings.c
+tst_strings_OBJECTS = tst_strings.$(OBJEXT)
+tst_strings_LDADD = $(LDADD)
+tst_strings2_SOURCES = tst_strings2.c
+tst_strings2_OBJECTS = tst_strings2.$(OBJEXT)
+tst_strings2_LDADD = $(LDADD)
+tst_sync_SOURCES = tst_sync.c
+tst_sync_OBJECTS = tst_sync.$(OBJEXT)
+tst_sync_LDADD = $(LDADD)
+tst_unlim_vars_SOURCES = tst_unlim_vars.c
+tst_unlim_vars_OBJECTS = tst_unlim_vars.$(OBJEXT)
+tst_unlim_vars_LDADD = $(LDADD)
+tst_utf8_SOURCES = tst_utf8.c
+tst_utf8_OBJECTS = tst_utf8.$(OBJEXT)
+tst_utf8_LDADD = $(LDADD)
+tst_v2_SOURCES = tst_v2.c
+tst_v2_OBJECTS = tst_v2.$(OBJEXT)
+tst_v2_LDADD = $(LDADD)
+tst_varms_SOURCES = tst_varms.c
+tst_varms_OBJECTS = tst_varms.$(OBJEXT)
+tst_varms_LDADD = $(LDADD)
+tst_vars_SOURCES = tst_vars.c
+tst_vars_OBJECTS = tst_vars.$(OBJEXT)
+tst_vars_LDADD = $(LDADD)
+tst_vars2_SOURCES = tst_vars2.c
+tst_vars2_OBJECTS = tst_vars2.$(OBJEXT)
+tst_vars2_LDADD = $(LDADD)
+tst_vars3_SOURCES = tst_vars3.c
+tst_vars3_OBJECTS = tst_vars3.$(OBJEXT)
+tst_vars3_LDADD = $(LDADD)
+tst_vars4_SOURCES = tst_vars4.c
+tst_vars4_OBJECTS = tst_vars4.$(OBJEXT)
+tst_vars4_LDADD = $(LDADD)
+tst_vl_SOURCES = tst_vl.c
+tst_vl_OBJECTS = tst_vl.$(OBJEXT)
+tst_vl_LDADD = $(LDADD)
+tst_xplatform_SOURCES = tst_xplatform.c
+tst_xplatform_OBJECTS = tst_xplatform.$(OBJEXT)
+tst_xplatform_LDADD = $(LDADD)
+tst_xplatform2_SOURCES = tst_xplatform2.c
+tst_xplatform2_OBJECTS = tst_xplatform2.$(OBJEXT)
+tst_xplatform2_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(bm_file_SOURCES) $(bm_many_atts_SOURCES) \
+ $(bm_many_objs_SOURCES) $(bm_netcdf4_recs_SOURCES) \
+ cdm_sea_soundings.c renamegroup.c t_type.c $(tst_ar4_SOURCES) \
+ $(tst_ar4_3d_SOURCES) $(tst_ar4_4d_SOURCES) tst_ar5.c \
+ tst_atts.c tst_atts1.c tst_atts2.c tst_camrun.c \
+ tst_chunk_hdf4.c tst_chunks.c tst_chunks2.c tst_chunks3.c \
+ tst_compounds.c tst_compounds2.c tst_compounds3.c \
+ tst_converts.c tst_converts2.c tst_coords.c tst_coords2.c \
+ tst_coords3.c tst_create_files.c tst_dims.c tst_dims2.c \
+ tst_dims3.c tst_endian_fill.c tst_enums.c tst_files.c \
+ $(tst_files2_SOURCES) tst_files3.c tst_files4.c tst_files5.c \
+ tst_files6.c tst_fillbug.c tst_fills.c tst_fills2.c tst_grps.c \
+ tst_grps2.c tst_h_atts2.c tst_h_files3.c \
+ $(tst_h_many_atts_SOURCES) tst_h_refs.c tst_h_scalar.c \
+ tst_h_strbug.c tst_interops.c tst_interops2.c tst_interops3.c \
+ tst_interops4.c tst_interops5.c tst_interops6.c \
+ $(tst_knmi_SOURCES) tst_large.c tst_large2.c tst_mem.c \
+ tst_mpi_parallel.c tst_nc4perf.c tst_opaques.c tst_parallel.c \
+ tst_parallel3.c tst_parallel4.c tst_rename.c tst_strings.c \
+ tst_strings2.c tst_sync.c tst_unlim_vars.c tst_utf8.c tst_v2.c \
+ tst_varms.c tst_vars.c tst_vars2.c tst_vars3.c tst_vars4.c \
+ tst_vl.c tst_xplatform.c tst_xplatform2.c
+DIST_SOURCES = $(am__bm_file_SOURCES_DIST) \
+ $(am__bm_many_atts_SOURCES_DIST) \
+ $(am__bm_many_objs_SOURCES_DIST) \
+ $(am__bm_netcdf4_recs_SOURCES_DIST) cdm_sea_soundings.c \
+ renamegroup.c t_type.c $(am__tst_ar4_SOURCES_DIST) \
+ $(am__tst_ar4_3d_SOURCES_DIST) $(am__tst_ar4_4d_SOURCES_DIST) \
+ tst_ar5.c tst_atts.c tst_atts1.c tst_atts2.c tst_camrun.c \
+ tst_chunk_hdf4.c tst_chunks.c tst_chunks2.c tst_chunks3.c \
+ tst_compounds.c tst_compounds2.c tst_compounds3.c \
+ tst_converts.c tst_converts2.c tst_coords.c tst_coords2.c \
+ tst_coords3.c tst_create_files.c tst_dims.c tst_dims2.c \
+ tst_dims3.c tst_endian_fill.c tst_enums.c tst_files.c \
+ $(am__tst_files2_SOURCES_DIST) tst_files3.c tst_files4.c \
+ tst_files5.c tst_files6.c tst_fillbug.c tst_fills.c \
+ tst_fills2.c tst_grps.c tst_grps2.c tst_h_atts2.c \
+ tst_h_files3.c $(am__tst_h_many_atts_SOURCES_DIST) \
+ tst_h_refs.c tst_h_scalar.c tst_h_strbug.c tst_interops.c \
+ tst_interops2.c tst_interops3.c tst_interops4.c \
+ tst_interops5.c tst_interops6.c $(am__tst_knmi_SOURCES_DIST) \
+ tst_large.c tst_large2.c tst_mem.c tst_mpi_parallel.c \
+ tst_nc4perf.c tst_opaques.c tst_parallel.c tst_parallel3.c \
+ tst_parallel4.c tst_rename.c tst_strings.c tst_strings2.c \
+ tst_sync.c tst_unlim_vars.c tst_utf8.c tst_v2.c tst_varms.c \
+ tst_vars.c tst_vars2.c tst_vars3.c tst_vars4.c tst_vl.c \
+ tst_xplatform.c tst_xplatform2.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+ at BUILD_BENCHMARKS_TRUE@am__EXEEXT_9 = tst_ar4_3d$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_create_files$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ run_bm_test1.sh run_bm_elena.sh \
+ at BUILD_BENCHMARKS_TRUE@ run_bm_test2.sh run_tst_chunks.sh \
+ at BUILD_BENCHMARKS_TRUE@ run_bm_ar4.sh tst_files2$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_files3$(EXEEXT) tst_ar5$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ tst_h_files3$(EXEEXT) tst_mem$(EXEEXT) \
+ at BUILD_BENCHMARKS_TRUE@ run_get_knmi_files.sh tst_knmi$(EXEEXT)
+ at USE_HDF4_TRUE@am__EXEEXT_10 = tst_interops2$(EXEEXT) \
+ at USE_HDF4_TRUE@ tst_formatx_hdf4.sh run_chunk_hdf4.sh
+ at USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE at am__EXEEXT_11 = run_get_hdf4_files.sh \
+ at USE_HDF4_FILE_TESTS_TRUE@@USE_HDF4_TRUE@ tst_interops3$(EXEEXT)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+
+# Link to our assembled library.
+AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# These are netCDF-4 test programs.
+NC4_TESTS = tst_dims tst_dims2 tst_dims3 tst_files tst_files4 tst_vars \
+tst_varms tst_unlim_vars tst_converts tst_converts2 tst_grps tst_grps2 \
+tst_compounds tst_compounds2 tst_compounds3 tst_opaques tst_strings \
+tst_strings2 tst_interops tst_interops4 tst_interops5 tst_interops6 \
+tst_enums tst_coords tst_coords2 tst_coords3 tst_vars3 tst_vars4 \
+tst_chunks tst_chunks2 tst_utf8 tst_fills tst_fills2 tst_fillbug \
+tst_xplatform tst_xplatform2 tst_h_atts2 tst_endian_fill tst_atts \
+t_type cdm_sea_soundings tst_camrun tst_vl tst_atts1 tst_atts2 \
+tst_vars2 tst_files5 tst_files6 tst_sync tst_h_strbug tst_h_refs \
+tst_h_scalar tst_rename
+
+ at BUILD_BENCHMARKS_TRUE@bm_netcdf4_recs_SOURCES = bm_netcdf4_recs.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@bm_many_atts_SOURCES = bm_many_atts.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@bm_many_objs_SOURCES = bm_many_objs.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@tst_ar4_3d_SOURCES = tst_ar4_3d.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@tst_ar4_4d_SOURCES = tst_ar4_4d.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@tst_files2_SOURCES = tst_files2.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@tst_ar4_SOURCES = tst_ar4.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@tst_h_many_atts_SOURCES = tst_h_many_atts.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@bm_file_SOURCES = bm_file.c tst_utils.c
+ at BUILD_BENCHMARKS_TRUE@tst_knmi_SOURCES = tst_knmi.c tst_utils.c
+EXTRA_DIST = run_par_test.sh run_bm.sh run_bm_test1.sh run_bm_test2.sh \
+run_bm_radar_2D.sh run_bm_radar_2D_compression1.sh run_par_bm_test.sh \
+run_bm_elena.sh run_par_bm_radar_2D.sh run_bm_radar_2D_endianness1.sh \
+run_tst_chunks.sh ref_chunks1.cdl ref_chunks2.cdl \
+run_get_hdf4_files.sh run_valgrind_tests.sh run_valgrind_tests2.sh \
+run_bm_ar4.sh ref_tst_compounds.nc run_hdf4_valgrind_tests.sh \
+ref_tst_xplatform2_1.nc ref_tst_xplatform2_2.nc ref_tst_dims.nc \
+ref_tst_interops4.nc run_get_knmi_files.sh CMakeLists.txt \
+run_grp_rename.sh tst_formatx_hdf4.sh \
+run_chunk_hdf4.sh contiguous.hdf4 chunked.hdf4
+
+CLEANFILES = tst_mpi_parallel.bin cdm_sea_soundings.nc bm_chunking.nc \
+bm_radar.nc bm_radar1.nc radar_3d_compression_test.txt \
+radar_3d_compression.txt radar_2d_compression.txt \
+radar_3d_chunking.txt tst_floats_1D.cdl floats_1D_3.nc floats_1D.cdl \
+tst_*.nc tst_floats2_*.cdl tst_ints2_*.cdl tst_shorts2_*.cdl \
+tst_elena_*.cdl tst_simple*.cdl tst_chunks.cdl pr_A1.* tauu_A1.* \
+usi_01.* thetau_01.* tst_*.nc tst_*.h5 \
+tst_grp_rename.cdl tst_grp_rename.nc tst_grp_rename.dmp ref_grp_rename.cdl \
+foo1.nc tst_interops2.h4
+
+ at USE_HDF4_FILE_TESTS_TRUE@DISTCLEANFILES = AMSR_E_L2_Rain_V10_200905312326_A.hdf \
+ at USE_HDF4_FILE_TESTS_TRUE@AMSR_E_L3_DailyLand_V06_20020619.hdf \
+ at USE_HDF4_FILE_TESTS_TRUE@MYD29.A2009152.0000.005.2009153124331.hdf \
+ at USE_HDF4_FILE_TESTS_TRUE@MYD29.A2002185.0000.005.2007160150627.hdf \
+ at USE_HDF4_FILE_TESTS_TRUE@MOD29.A2000055.0005.005.2006267200024.hdf
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign nc_test4/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign nc_test4/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+bm_file$(EXEEXT): $(bm_file_OBJECTS) $(bm_file_DEPENDENCIES) $(EXTRA_bm_file_DEPENDENCIES)
+ @rm -f bm_file$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bm_file_OBJECTS) $(bm_file_LDADD) $(LIBS)
+
+bm_many_atts$(EXEEXT): $(bm_many_atts_OBJECTS) $(bm_many_atts_DEPENDENCIES) $(EXTRA_bm_many_atts_DEPENDENCIES)
+ @rm -f bm_many_atts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bm_many_atts_OBJECTS) $(bm_many_atts_LDADD) $(LIBS)
+
+bm_many_objs$(EXEEXT): $(bm_many_objs_OBJECTS) $(bm_many_objs_DEPENDENCIES) $(EXTRA_bm_many_objs_DEPENDENCIES)
+ @rm -f bm_many_objs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bm_many_objs_OBJECTS) $(bm_many_objs_LDADD) $(LIBS)
+
+bm_netcdf4_recs$(EXEEXT): $(bm_netcdf4_recs_OBJECTS) $(bm_netcdf4_recs_DEPENDENCIES) $(EXTRA_bm_netcdf4_recs_DEPENDENCIES)
+ @rm -f bm_netcdf4_recs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bm_netcdf4_recs_OBJECTS) $(bm_netcdf4_recs_LDADD) $(LIBS)
+
+cdm_sea_soundings$(EXEEXT): $(cdm_sea_soundings_OBJECTS) $(cdm_sea_soundings_DEPENDENCIES) $(EXTRA_cdm_sea_soundings_DEPENDENCIES)
+ @rm -f cdm_sea_soundings$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(cdm_sea_soundings_OBJECTS) $(cdm_sea_soundings_LDADD) $(LIBS)
+
+renamegroup$(EXEEXT): $(renamegroup_OBJECTS) $(renamegroup_DEPENDENCIES) $(EXTRA_renamegroup_DEPENDENCIES)
+ @rm -f renamegroup$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(renamegroup_OBJECTS) $(renamegroup_LDADD) $(LIBS)
+
+t_type$(EXEEXT): $(t_type_OBJECTS) $(t_type_DEPENDENCIES) $(EXTRA_t_type_DEPENDENCIES)
+ @rm -f t_type$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t_type_OBJECTS) $(t_type_LDADD) $(LIBS)
+
+tst_ar4$(EXEEXT): $(tst_ar4_OBJECTS) $(tst_ar4_DEPENDENCIES) $(EXTRA_tst_ar4_DEPENDENCIES)
+ @rm -f tst_ar4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_ar4_OBJECTS) $(tst_ar4_LDADD) $(LIBS)
+
+tst_ar4_3d$(EXEEXT): $(tst_ar4_3d_OBJECTS) $(tst_ar4_3d_DEPENDENCIES) $(EXTRA_tst_ar4_3d_DEPENDENCIES)
+ @rm -f tst_ar4_3d$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_ar4_3d_OBJECTS) $(tst_ar4_3d_LDADD) $(LIBS)
+
+tst_ar4_4d$(EXEEXT): $(tst_ar4_4d_OBJECTS) $(tst_ar4_4d_DEPENDENCIES) $(EXTRA_tst_ar4_4d_DEPENDENCIES)
+ @rm -f tst_ar4_4d$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_ar4_4d_OBJECTS) $(tst_ar4_4d_LDADD) $(LIBS)
+
+tst_ar5$(EXEEXT): $(tst_ar5_OBJECTS) $(tst_ar5_DEPENDENCIES) $(EXTRA_tst_ar5_DEPENDENCIES)
+ @rm -f tst_ar5$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_ar5_OBJECTS) $(tst_ar5_LDADD) $(LIBS)
+
+tst_atts$(EXEEXT): $(tst_atts_OBJECTS) $(tst_atts_DEPENDENCIES) $(EXTRA_tst_atts_DEPENDENCIES)
+ @rm -f tst_atts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_atts_OBJECTS) $(tst_atts_LDADD) $(LIBS)
+
+tst_atts1$(EXEEXT): $(tst_atts1_OBJECTS) $(tst_atts1_DEPENDENCIES) $(EXTRA_tst_atts1_DEPENDENCIES)
+ @rm -f tst_atts1$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_atts1_OBJECTS) $(tst_atts1_LDADD) $(LIBS)
+
+tst_atts2$(EXEEXT): $(tst_atts2_OBJECTS) $(tst_atts2_DEPENDENCIES) $(EXTRA_tst_atts2_DEPENDENCIES)
+ @rm -f tst_atts2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_atts2_OBJECTS) $(tst_atts2_LDADD) $(LIBS)
+
+tst_camrun$(EXEEXT): $(tst_camrun_OBJECTS) $(tst_camrun_DEPENDENCIES) $(EXTRA_tst_camrun_DEPENDENCIES)
+ @rm -f tst_camrun$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_camrun_OBJECTS) $(tst_camrun_LDADD) $(LIBS)
+
+tst_chunk_hdf4$(EXEEXT): $(tst_chunk_hdf4_OBJECTS) $(tst_chunk_hdf4_DEPENDENCIES) $(EXTRA_tst_chunk_hdf4_DEPENDENCIES)
+ @rm -f tst_chunk_hdf4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_chunk_hdf4_OBJECTS) $(tst_chunk_hdf4_LDADD) $(LIBS)
+
+tst_chunks$(EXEEXT): $(tst_chunks_OBJECTS) $(tst_chunks_DEPENDENCIES) $(EXTRA_tst_chunks_DEPENDENCIES)
+ @rm -f tst_chunks$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_chunks_OBJECTS) $(tst_chunks_LDADD) $(LIBS)
+
+tst_chunks2$(EXEEXT): $(tst_chunks2_OBJECTS) $(tst_chunks2_DEPENDENCIES) $(EXTRA_tst_chunks2_DEPENDENCIES)
+ @rm -f tst_chunks2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_chunks2_OBJECTS) $(tst_chunks2_LDADD) $(LIBS)
+
+tst_chunks3$(EXEEXT): $(tst_chunks3_OBJECTS) $(tst_chunks3_DEPENDENCIES) $(EXTRA_tst_chunks3_DEPENDENCIES)
+ @rm -f tst_chunks3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_chunks3_OBJECTS) $(tst_chunks3_LDADD) $(LIBS)
+
+tst_compounds$(EXEEXT): $(tst_compounds_OBJECTS) $(tst_compounds_DEPENDENCIES) $(EXTRA_tst_compounds_DEPENDENCIES)
+ @rm -f tst_compounds$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_compounds_OBJECTS) $(tst_compounds_LDADD) $(LIBS)
+
+tst_compounds2$(EXEEXT): $(tst_compounds2_OBJECTS) $(tst_compounds2_DEPENDENCIES) $(EXTRA_tst_compounds2_DEPENDENCIES)
+ @rm -f tst_compounds2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_compounds2_OBJECTS) $(tst_compounds2_LDADD) $(LIBS)
+
+tst_compounds3$(EXEEXT): $(tst_compounds3_OBJECTS) $(tst_compounds3_DEPENDENCIES) $(EXTRA_tst_compounds3_DEPENDENCIES)
+ @rm -f tst_compounds3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_compounds3_OBJECTS) $(tst_compounds3_LDADD) $(LIBS)
+
+tst_converts$(EXEEXT): $(tst_converts_OBJECTS) $(tst_converts_DEPENDENCIES) $(EXTRA_tst_converts_DEPENDENCIES)
+ @rm -f tst_converts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_converts_OBJECTS) $(tst_converts_LDADD) $(LIBS)
+
+tst_converts2$(EXEEXT): $(tst_converts2_OBJECTS) $(tst_converts2_DEPENDENCIES) $(EXTRA_tst_converts2_DEPENDENCIES)
+ @rm -f tst_converts2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_converts2_OBJECTS) $(tst_converts2_LDADD) $(LIBS)
+
+tst_coords$(EXEEXT): $(tst_coords_OBJECTS) $(tst_coords_DEPENDENCIES) $(EXTRA_tst_coords_DEPENDENCIES)
+ @rm -f tst_coords$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_coords_OBJECTS) $(tst_coords_LDADD) $(LIBS)
+
+tst_coords2$(EXEEXT): $(tst_coords2_OBJECTS) $(tst_coords2_DEPENDENCIES) $(EXTRA_tst_coords2_DEPENDENCIES)
+ @rm -f tst_coords2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_coords2_OBJECTS) $(tst_coords2_LDADD) $(LIBS)
+
+tst_coords3$(EXEEXT): $(tst_coords3_OBJECTS) $(tst_coords3_DEPENDENCIES) $(EXTRA_tst_coords3_DEPENDENCIES)
+ @rm -f tst_coords3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_coords3_OBJECTS) $(tst_coords3_LDADD) $(LIBS)
+
+tst_create_files$(EXEEXT): $(tst_create_files_OBJECTS) $(tst_create_files_DEPENDENCIES) $(EXTRA_tst_create_files_DEPENDENCIES)
+ @rm -f tst_create_files$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_create_files_OBJECTS) $(tst_create_files_LDADD) $(LIBS)
+
+tst_dims$(EXEEXT): $(tst_dims_OBJECTS) $(tst_dims_DEPENDENCIES) $(EXTRA_tst_dims_DEPENDENCIES)
+ @rm -f tst_dims$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_dims_OBJECTS) $(tst_dims_LDADD) $(LIBS)
+
+tst_dims2$(EXEEXT): $(tst_dims2_OBJECTS) $(tst_dims2_DEPENDENCIES) $(EXTRA_tst_dims2_DEPENDENCIES)
+ @rm -f tst_dims2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_dims2_OBJECTS) $(tst_dims2_LDADD) $(LIBS)
+
+tst_dims3$(EXEEXT): $(tst_dims3_OBJECTS) $(tst_dims3_DEPENDENCIES) $(EXTRA_tst_dims3_DEPENDENCIES)
+ @rm -f tst_dims3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_dims3_OBJECTS) $(tst_dims3_LDADD) $(LIBS)
+
+tst_endian_fill$(EXEEXT): $(tst_endian_fill_OBJECTS) $(tst_endian_fill_DEPENDENCIES) $(EXTRA_tst_endian_fill_DEPENDENCIES)
+ @rm -f tst_endian_fill$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_endian_fill_OBJECTS) $(tst_endian_fill_LDADD) $(LIBS)
+
+tst_enums$(EXEEXT): $(tst_enums_OBJECTS) $(tst_enums_DEPENDENCIES) $(EXTRA_tst_enums_DEPENDENCIES)
+ @rm -f tst_enums$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_enums_OBJECTS) $(tst_enums_LDADD) $(LIBS)
+
+tst_files$(EXEEXT): $(tst_files_OBJECTS) $(tst_files_DEPENDENCIES) $(EXTRA_tst_files_DEPENDENCIES)
+ @rm -f tst_files$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_files_OBJECTS) $(tst_files_LDADD) $(LIBS)
+
+tst_files2$(EXEEXT): $(tst_files2_OBJECTS) $(tst_files2_DEPENDENCIES) $(EXTRA_tst_files2_DEPENDENCIES)
+ @rm -f tst_files2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_files2_OBJECTS) $(tst_files2_LDADD) $(LIBS)
+
+tst_files3$(EXEEXT): $(tst_files3_OBJECTS) $(tst_files3_DEPENDENCIES) $(EXTRA_tst_files3_DEPENDENCIES)
+ @rm -f tst_files3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_files3_OBJECTS) $(tst_files3_LDADD) $(LIBS)
+
+tst_files4$(EXEEXT): $(tst_files4_OBJECTS) $(tst_files4_DEPENDENCIES) $(EXTRA_tst_files4_DEPENDENCIES)
+ @rm -f tst_files4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_files4_OBJECTS) $(tst_files4_LDADD) $(LIBS)
+
+tst_files5$(EXEEXT): $(tst_files5_OBJECTS) $(tst_files5_DEPENDENCIES) $(EXTRA_tst_files5_DEPENDENCIES)
+ @rm -f tst_files5$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_files5_OBJECTS) $(tst_files5_LDADD) $(LIBS)
+
+tst_files6$(EXEEXT): $(tst_files6_OBJECTS) $(tst_files6_DEPENDENCIES) $(EXTRA_tst_files6_DEPENDENCIES)
+ @rm -f tst_files6$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_files6_OBJECTS) $(tst_files6_LDADD) $(LIBS)
+
+tst_fillbug$(EXEEXT): $(tst_fillbug_OBJECTS) $(tst_fillbug_DEPENDENCIES) $(EXTRA_tst_fillbug_DEPENDENCIES)
+ @rm -f tst_fillbug$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_fillbug_OBJECTS) $(tst_fillbug_LDADD) $(LIBS)
+
+tst_fills$(EXEEXT): $(tst_fills_OBJECTS) $(tst_fills_DEPENDENCIES) $(EXTRA_tst_fills_DEPENDENCIES)
+ @rm -f tst_fills$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_fills_OBJECTS) $(tst_fills_LDADD) $(LIBS)
+
+tst_fills2$(EXEEXT): $(tst_fills2_OBJECTS) $(tst_fills2_DEPENDENCIES) $(EXTRA_tst_fills2_DEPENDENCIES)
+ @rm -f tst_fills2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_fills2_OBJECTS) $(tst_fills2_LDADD) $(LIBS)
+
+tst_grps$(EXEEXT): $(tst_grps_OBJECTS) $(tst_grps_DEPENDENCIES) $(EXTRA_tst_grps_DEPENDENCIES)
+ @rm -f tst_grps$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_grps_OBJECTS) $(tst_grps_LDADD) $(LIBS)
+
+tst_grps2$(EXEEXT): $(tst_grps2_OBJECTS) $(tst_grps2_DEPENDENCIES) $(EXTRA_tst_grps2_DEPENDENCIES)
+ @rm -f tst_grps2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_grps2_OBJECTS) $(tst_grps2_LDADD) $(LIBS)
+
+tst_h_atts2$(EXEEXT): $(tst_h_atts2_OBJECTS) $(tst_h_atts2_DEPENDENCIES) $(EXTRA_tst_h_atts2_DEPENDENCIES)
+ @rm -f tst_h_atts2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_atts2_OBJECTS) $(tst_h_atts2_LDADD) $(LIBS)
+
+tst_h_files3$(EXEEXT): $(tst_h_files3_OBJECTS) $(tst_h_files3_DEPENDENCIES) $(EXTRA_tst_h_files3_DEPENDENCIES)
+ @rm -f tst_h_files3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_files3_OBJECTS) $(tst_h_files3_LDADD) $(LIBS)
+
+tst_h_many_atts$(EXEEXT): $(tst_h_many_atts_OBJECTS) $(tst_h_many_atts_DEPENDENCIES) $(EXTRA_tst_h_many_atts_DEPENDENCIES)
+ @rm -f tst_h_many_atts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_many_atts_OBJECTS) $(tst_h_many_atts_LDADD) $(LIBS)
+
+tst_h_refs$(EXEEXT): $(tst_h_refs_OBJECTS) $(tst_h_refs_DEPENDENCIES) $(EXTRA_tst_h_refs_DEPENDENCIES)
+ @rm -f tst_h_refs$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_refs_OBJECTS) $(tst_h_refs_LDADD) $(LIBS)
+
+tst_h_scalar$(EXEEXT): $(tst_h_scalar_OBJECTS) $(tst_h_scalar_DEPENDENCIES) $(EXTRA_tst_h_scalar_DEPENDENCIES)
+ @rm -f tst_h_scalar$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_scalar_OBJECTS) $(tst_h_scalar_LDADD) $(LIBS)
+
+tst_h_strbug$(EXEEXT): $(tst_h_strbug_OBJECTS) $(tst_h_strbug_DEPENDENCIES) $(EXTRA_tst_h_strbug_DEPENDENCIES)
+ @rm -f tst_h_strbug$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_strbug_OBJECTS) $(tst_h_strbug_LDADD) $(LIBS)
+
+tst_interops$(EXEEXT): $(tst_interops_OBJECTS) $(tst_interops_DEPENDENCIES) $(EXTRA_tst_interops_DEPENDENCIES)
+ @rm -f tst_interops$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_interops_OBJECTS) $(tst_interops_LDADD) $(LIBS)
+
+tst_interops2$(EXEEXT): $(tst_interops2_OBJECTS) $(tst_interops2_DEPENDENCIES) $(EXTRA_tst_interops2_DEPENDENCIES)
+ @rm -f tst_interops2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_interops2_OBJECTS) $(tst_interops2_LDADD) $(LIBS)
+
+tst_interops3$(EXEEXT): $(tst_interops3_OBJECTS) $(tst_interops3_DEPENDENCIES) $(EXTRA_tst_interops3_DEPENDENCIES)
+ @rm -f tst_interops3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_interops3_OBJECTS) $(tst_interops3_LDADD) $(LIBS)
+
+tst_interops4$(EXEEXT): $(tst_interops4_OBJECTS) $(tst_interops4_DEPENDENCIES) $(EXTRA_tst_interops4_DEPENDENCIES)
+ @rm -f tst_interops4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_interops4_OBJECTS) $(tst_interops4_LDADD) $(LIBS)
+
+tst_interops5$(EXEEXT): $(tst_interops5_OBJECTS) $(tst_interops5_DEPENDENCIES) $(EXTRA_tst_interops5_DEPENDENCIES)
+ @rm -f tst_interops5$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_interops5_OBJECTS) $(tst_interops5_LDADD) $(LIBS)
+
+tst_interops6$(EXEEXT): $(tst_interops6_OBJECTS) $(tst_interops6_DEPENDENCIES) $(EXTRA_tst_interops6_DEPENDENCIES)
+ @rm -f tst_interops6$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_interops6_OBJECTS) $(tst_interops6_LDADD) $(LIBS)
+
+tst_knmi$(EXEEXT): $(tst_knmi_OBJECTS) $(tst_knmi_DEPENDENCIES) $(EXTRA_tst_knmi_DEPENDENCIES)
+ @rm -f tst_knmi$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_knmi_OBJECTS) $(tst_knmi_LDADD) $(LIBS)
+
+tst_large$(EXEEXT): $(tst_large_OBJECTS) $(tst_large_DEPENDENCIES) $(EXTRA_tst_large_DEPENDENCIES)
+ @rm -f tst_large$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_large_OBJECTS) $(tst_large_LDADD) $(LIBS)
+
+tst_large2$(EXEEXT): $(tst_large2_OBJECTS) $(tst_large2_DEPENDENCIES) $(EXTRA_tst_large2_DEPENDENCIES)
+ @rm -f tst_large2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_large2_OBJECTS) $(tst_large2_LDADD) $(LIBS)
+
+tst_mem$(EXEEXT): $(tst_mem_OBJECTS) $(tst_mem_DEPENDENCIES) $(EXTRA_tst_mem_DEPENDENCIES)
+ @rm -f tst_mem$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_mem_OBJECTS) $(tst_mem_LDADD) $(LIBS)
+
+tst_mpi_parallel$(EXEEXT): $(tst_mpi_parallel_OBJECTS) $(tst_mpi_parallel_DEPENDENCIES) $(EXTRA_tst_mpi_parallel_DEPENDENCIES)
+ @rm -f tst_mpi_parallel$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_mpi_parallel_OBJECTS) $(tst_mpi_parallel_LDADD) $(LIBS)
+
+tst_nc4perf$(EXEEXT): $(tst_nc4perf_OBJECTS) $(tst_nc4perf_DEPENDENCIES) $(EXTRA_tst_nc4perf_DEPENDENCIES)
+ @rm -f tst_nc4perf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_nc4perf_OBJECTS) $(tst_nc4perf_LDADD) $(LIBS)
+
+tst_opaques$(EXEEXT): $(tst_opaques_OBJECTS) $(tst_opaques_DEPENDENCIES) $(EXTRA_tst_opaques_DEPENDENCIES)
+ @rm -f tst_opaques$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_opaques_OBJECTS) $(tst_opaques_LDADD) $(LIBS)
+
+tst_parallel$(EXEEXT): $(tst_parallel_OBJECTS) $(tst_parallel_DEPENDENCIES) $(EXTRA_tst_parallel_DEPENDENCIES)
+ @rm -f tst_parallel$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_parallel_OBJECTS) $(tst_parallel_LDADD) $(LIBS)
+
+tst_parallel3$(EXEEXT): $(tst_parallel3_OBJECTS) $(tst_parallel3_DEPENDENCIES) $(EXTRA_tst_parallel3_DEPENDENCIES)
+ @rm -f tst_parallel3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_parallel3_OBJECTS) $(tst_parallel3_LDADD) $(LIBS)
+
+tst_parallel4$(EXEEXT): $(tst_parallel4_OBJECTS) $(tst_parallel4_DEPENDENCIES) $(EXTRA_tst_parallel4_DEPENDENCIES)
+ @rm -f tst_parallel4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_parallel4_OBJECTS) $(tst_parallel4_LDADD) $(LIBS)
+
+tst_rename$(EXEEXT): $(tst_rename_OBJECTS) $(tst_rename_DEPENDENCIES) $(EXTRA_tst_rename_DEPENDENCIES)
+ @rm -f tst_rename$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_rename_OBJECTS) $(tst_rename_LDADD) $(LIBS)
+
+tst_strings$(EXEEXT): $(tst_strings_OBJECTS) $(tst_strings_DEPENDENCIES) $(EXTRA_tst_strings_DEPENDENCIES)
+ @rm -f tst_strings$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_strings_OBJECTS) $(tst_strings_LDADD) $(LIBS)
+
+tst_strings2$(EXEEXT): $(tst_strings2_OBJECTS) $(tst_strings2_DEPENDENCIES) $(EXTRA_tst_strings2_DEPENDENCIES)
+ @rm -f tst_strings2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_strings2_OBJECTS) $(tst_strings2_LDADD) $(LIBS)
+
+tst_sync$(EXEEXT): $(tst_sync_OBJECTS) $(tst_sync_DEPENDENCIES) $(EXTRA_tst_sync_DEPENDENCIES)
+ @rm -f tst_sync$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_sync_OBJECTS) $(tst_sync_LDADD) $(LIBS)
+
+tst_unlim_vars$(EXEEXT): $(tst_unlim_vars_OBJECTS) $(tst_unlim_vars_DEPENDENCIES) $(EXTRA_tst_unlim_vars_DEPENDENCIES)
+ @rm -f tst_unlim_vars$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_unlim_vars_OBJECTS) $(tst_unlim_vars_LDADD) $(LIBS)
+
+tst_utf8$(EXEEXT): $(tst_utf8_OBJECTS) $(tst_utf8_DEPENDENCIES) $(EXTRA_tst_utf8_DEPENDENCIES)
+ @rm -f tst_utf8$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_utf8_OBJECTS) $(tst_utf8_LDADD) $(LIBS)
+
+tst_v2$(EXEEXT): $(tst_v2_OBJECTS) $(tst_v2_DEPENDENCIES) $(EXTRA_tst_v2_DEPENDENCIES)
+ @rm -f tst_v2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_v2_OBJECTS) $(tst_v2_LDADD) $(LIBS)
+
+tst_varms$(EXEEXT): $(tst_varms_OBJECTS) $(tst_varms_DEPENDENCIES) $(EXTRA_tst_varms_DEPENDENCIES)
+ @rm -f tst_varms$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_varms_OBJECTS) $(tst_varms_LDADD) $(LIBS)
+
+tst_vars$(EXEEXT): $(tst_vars_OBJECTS) $(tst_vars_DEPENDENCIES) $(EXTRA_tst_vars_DEPENDENCIES)
+ @rm -f tst_vars$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_vars_OBJECTS) $(tst_vars_LDADD) $(LIBS)
+
+tst_vars2$(EXEEXT): $(tst_vars2_OBJECTS) $(tst_vars2_DEPENDENCIES) $(EXTRA_tst_vars2_DEPENDENCIES)
+ @rm -f tst_vars2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_vars2_OBJECTS) $(tst_vars2_LDADD) $(LIBS)
+
+tst_vars3$(EXEEXT): $(tst_vars3_OBJECTS) $(tst_vars3_DEPENDENCIES) $(EXTRA_tst_vars3_DEPENDENCIES)
+ @rm -f tst_vars3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_vars3_OBJECTS) $(tst_vars3_LDADD) $(LIBS)
+
+tst_vars4$(EXEEXT): $(tst_vars4_OBJECTS) $(tst_vars4_DEPENDENCIES) $(EXTRA_tst_vars4_DEPENDENCIES)
+ @rm -f tst_vars4$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_vars4_OBJECTS) $(tst_vars4_LDADD) $(LIBS)
+
+tst_vl$(EXEEXT): $(tst_vl_OBJECTS) $(tst_vl_DEPENDENCIES) $(EXTRA_tst_vl_DEPENDENCIES)
+ @rm -f tst_vl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_vl_OBJECTS) $(tst_vl_LDADD) $(LIBS)
+
+tst_xplatform$(EXEEXT): $(tst_xplatform_OBJECTS) $(tst_xplatform_DEPENDENCIES) $(EXTRA_tst_xplatform_DEPENDENCIES)
+ @rm -f tst_xplatform$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_xplatform_OBJECTS) $(tst_xplatform_LDADD) $(LIBS)
+
+tst_xplatform2$(EXEEXT): $(tst_xplatform2_OBJECTS) $(tst_xplatform2_DEPENDENCIES) $(EXTRA_tst_xplatform2_DEPENDENCIES)
+ @rm -f tst_xplatform2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_xplatform2_OBJECTS) $(tst_xplatform2_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bm_file.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bm_many_atts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bm_many_objs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bm_netcdf4_recs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cdm_sea_soundings.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/renamegroup.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_type.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_ar4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_ar4_3d.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_ar4_4d.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_ar5.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_atts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_atts1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_atts2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_camrun.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_chunk_hdf4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_chunks.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_chunks2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_chunks3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_compounds.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_compounds2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_compounds3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_converts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_converts2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_coords.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_coords2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_coords3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_create_files.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_dims.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_dims2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_dims3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_endian_fill.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_enums.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_files.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_files2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_files3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_files4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_files5.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_files6.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_fillbug.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_fills.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_fills2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_grps.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_grps2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_atts2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_files3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_many_atts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_refs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_scalar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_strbug.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_interops.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_interops2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_interops3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_interops4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_interops5.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_interops6.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_knmi.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_large.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_large2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_mem.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_mpi_parallel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_nc4perf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_opaques.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_parallel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_parallel3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_parallel4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_rename.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_strings.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_strings2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_sync.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_unlim_vars.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_utf8.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_v2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_varms.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_vars.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_vars2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_vars3.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_vars4.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_vl.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_xplatform.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_xplatform2.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+tst_dims.log: tst_dims$(EXEEXT)
+ @p='tst_dims$(EXEEXT)'; \
+ b='tst_dims'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_dims2.log: tst_dims2$(EXEEXT)
+ @p='tst_dims2$(EXEEXT)'; \
+ b='tst_dims2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_dims3.log: tst_dims3$(EXEEXT)
+ @p='tst_dims3$(EXEEXT)'; \
+ b='tst_dims3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_files.log: tst_files$(EXEEXT)
+ @p='tst_files$(EXEEXT)'; \
+ b='tst_files'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_files4.log: tst_files4$(EXEEXT)
+ @p='tst_files4$(EXEEXT)'; \
+ b='tst_files4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_vars.log: tst_vars$(EXEEXT)
+ @p='tst_vars$(EXEEXT)'; \
+ b='tst_vars'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_varms.log: tst_varms$(EXEEXT)
+ @p='tst_varms$(EXEEXT)'; \
+ b='tst_varms'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_unlim_vars.log: tst_unlim_vars$(EXEEXT)
+ @p='tst_unlim_vars$(EXEEXT)'; \
+ b='tst_unlim_vars'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_converts.log: tst_converts$(EXEEXT)
+ @p='tst_converts$(EXEEXT)'; \
+ b='tst_converts'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_converts2.log: tst_converts2$(EXEEXT)
+ @p='tst_converts2$(EXEEXT)'; \
+ b='tst_converts2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_grps.log: tst_grps$(EXEEXT)
+ @p='tst_grps$(EXEEXT)'; \
+ b='tst_grps'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_grps2.log: tst_grps2$(EXEEXT)
+ @p='tst_grps2$(EXEEXT)'; \
+ b='tst_grps2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_compounds.log: tst_compounds$(EXEEXT)
+ @p='tst_compounds$(EXEEXT)'; \
+ b='tst_compounds'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_compounds2.log: tst_compounds2$(EXEEXT)
+ @p='tst_compounds2$(EXEEXT)'; \
+ b='tst_compounds2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_compounds3.log: tst_compounds3$(EXEEXT)
+ @p='tst_compounds3$(EXEEXT)'; \
+ b='tst_compounds3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_opaques.log: tst_opaques$(EXEEXT)
+ @p='tst_opaques$(EXEEXT)'; \
+ b='tst_opaques'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_strings.log: tst_strings$(EXEEXT)
+ @p='tst_strings$(EXEEXT)'; \
+ b='tst_strings'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_strings2.log: tst_strings2$(EXEEXT)
+ @p='tst_strings2$(EXEEXT)'; \
+ b='tst_strings2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_interops.log: tst_interops$(EXEEXT)
+ @p='tst_interops$(EXEEXT)'; \
+ b='tst_interops'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_interops4.log: tst_interops4$(EXEEXT)
+ @p='tst_interops4$(EXEEXT)'; \
+ b='tst_interops4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_interops5.log: tst_interops5$(EXEEXT)
+ @p='tst_interops5$(EXEEXT)'; \
+ b='tst_interops5'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_interops6.log: tst_interops6$(EXEEXT)
+ @p='tst_interops6$(EXEEXT)'; \
+ b='tst_interops6'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_enums.log: tst_enums$(EXEEXT)
+ @p='tst_enums$(EXEEXT)'; \
+ b='tst_enums'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_coords.log: tst_coords$(EXEEXT)
+ @p='tst_coords$(EXEEXT)'; \
+ b='tst_coords'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_coords2.log: tst_coords2$(EXEEXT)
+ @p='tst_coords2$(EXEEXT)'; \
+ b='tst_coords2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_coords3.log: tst_coords3$(EXEEXT)
+ @p='tst_coords3$(EXEEXT)'; \
+ b='tst_coords3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_vars3.log: tst_vars3$(EXEEXT)
+ @p='tst_vars3$(EXEEXT)'; \
+ b='tst_vars3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_vars4.log: tst_vars4$(EXEEXT)
+ @p='tst_vars4$(EXEEXT)'; \
+ b='tst_vars4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_chunks.log: tst_chunks$(EXEEXT)
+ @p='tst_chunks$(EXEEXT)'; \
+ b='tst_chunks'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_chunks2.log: tst_chunks2$(EXEEXT)
+ @p='tst_chunks2$(EXEEXT)'; \
+ b='tst_chunks2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_utf8.log: tst_utf8$(EXEEXT)
+ @p='tst_utf8$(EXEEXT)'; \
+ b='tst_utf8'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_fills.log: tst_fills$(EXEEXT)
+ @p='tst_fills$(EXEEXT)'; \
+ b='tst_fills'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_fills2.log: tst_fills2$(EXEEXT)
+ @p='tst_fills2$(EXEEXT)'; \
+ b='tst_fills2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_fillbug.log: tst_fillbug$(EXEEXT)
+ @p='tst_fillbug$(EXEEXT)'; \
+ b='tst_fillbug'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_xplatform.log: tst_xplatform$(EXEEXT)
+ @p='tst_xplatform$(EXEEXT)'; \
+ b='tst_xplatform'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_xplatform2.log: tst_xplatform2$(EXEEXT)
+ @p='tst_xplatform2$(EXEEXT)'; \
+ b='tst_xplatform2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_atts2.log: tst_h_atts2$(EXEEXT)
+ @p='tst_h_atts2$(EXEEXT)'; \
+ b='tst_h_atts2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_endian_fill.log: tst_endian_fill$(EXEEXT)
+ @p='tst_endian_fill$(EXEEXT)'; \
+ b='tst_endian_fill'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_atts.log: tst_atts$(EXEEXT)
+ @p='tst_atts$(EXEEXT)'; \
+ b='tst_atts'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+t_type.log: t_type$(EXEEXT)
+ @p='t_type$(EXEEXT)'; \
+ b='t_type'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cdm_sea_soundings.log: cdm_sea_soundings$(EXEEXT)
+ @p='cdm_sea_soundings$(EXEEXT)'; \
+ b='cdm_sea_soundings'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_camrun.log: tst_camrun$(EXEEXT)
+ @p='tst_camrun$(EXEEXT)'; \
+ b='tst_camrun'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_vl.log: tst_vl$(EXEEXT)
+ @p='tst_vl$(EXEEXT)'; \
+ b='tst_vl'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_atts1.log: tst_atts1$(EXEEXT)
+ @p='tst_atts1$(EXEEXT)'; \
+ b='tst_atts1'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_atts2.log: tst_atts2$(EXEEXT)
+ @p='tst_atts2$(EXEEXT)'; \
+ b='tst_atts2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_vars2.log: tst_vars2$(EXEEXT)
+ @p='tst_vars2$(EXEEXT)'; \
+ b='tst_vars2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_files5.log: tst_files5$(EXEEXT)
+ @p='tst_files5$(EXEEXT)'; \
+ b='tst_files5'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_files6.log: tst_files6$(EXEEXT)
+ @p='tst_files6$(EXEEXT)'; \
+ b='tst_files6'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_sync.log: tst_sync$(EXEEXT)
+ @p='tst_sync$(EXEEXT)'; \
+ b='tst_sync'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_strbug.log: tst_h_strbug$(EXEEXT)
+ @p='tst_h_strbug$(EXEEXT)'; \
+ b='tst_h_strbug'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_refs.log: tst_h_refs$(EXEEXT)
+ @p='tst_h_refs$(EXEEXT)'; \
+ b='tst_h_refs'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_scalar.log: tst_h_scalar$(EXEEXT)
+ @p='tst_h_scalar$(EXEEXT)'; \
+ b='tst_h_scalar'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_rename.log: tst_rename$(EXEEXT)
+ @p='tst_rename$(EXEEXT)'; \
+ b='tst_rename'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_grp_rename.sh.log: run_grp_rename.sh
+ @p='run_grp_rename.sh'; \
+ b='run_grp_rename.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_v2.log: tst_v2$(EXEEXT)
+ @p='tst_v2$(EXEEXT)'; \
+ b='tst_v2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_large.log: tst_large$(EXEEXT)
+ @p='tst_large$(EXEEXT)'; \
+ b='tst_large'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_ar4_3d.log: tst_ar4_3d$(EXEEXT)
+ @p='tst_ar4_3d$(EXEEXT)'; \
+ b='tst_ar4_3d'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_create_files.log: tst_create_files$(EXEEXT)
+ @p='tst_create_files$(EXEEXT)'; \
+ b='tst_create_files'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_bm_test1.sh.log: run_bm_test1.sh
+ @p='run_bm_test1.sh'; \
+ b='run_bm_test1.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_bm_elena.sh.log: run_bm_elena.sh
+ @p='run_bm_elena.sh'; \
+ b='run_bm_elena.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_bm_test2.sh.log: run_bm_test2.sh
+ @p='run_bm_test2.sh'; \
+ b='run_bm_test2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_tst_chunks.sh.log: run_tst_chunks.sh
+ @p='run_tst_chunks.sh'; \
+ b='run_tst_chunks.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_bm_ar4.sh.log: run_bm_ar4.sh
+ @p='run_bm_ar4.sh'; \
+ b='run_bm_ar4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_files2.log: tst_files2$(EXEEXT)
+ @p='tst_files2$(EXEEXT)'; \
+ b='tst_files2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_files3.log: tst_files3$(EXEEXT)
+ @p='tst_files3$(EXEEXT)'; \
+ b='tst_files3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_ar5.log: tst_ar5$(EXEEXT)
+ @p='tst_ar5$(EXEEXT)'; \
+ b='tst_ar5'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_files3.log: tst_h_files3$(EXEEXT)
+ @p='tst_h_files3$(EXEEXT)'; \
+ b='tst_h_files3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_mem.log: tst_mem$(EXEEXT)
+ @p='tst_mem$(EXEEXT)'; \
+ b='tst_mem'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_get_knmi_files.sh.log: run_get_knmi_files.sh
+ @p='run_get_knmi_files.sh'; \
+ b='run_get_knmi_files.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_knmi.log: tst_knmi$(EXEEXT)
+ @p='tst_knmi$(EXEEXT)'; \
+ b='tst_knmi'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_par_bm_test.sh.log: run_par_bm_test.sh
+ @p='run_par_bm_test.sh'; \
+ b='run_par_bm_test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_interops2.log: tst_interops2$(EXEEXT)
+ @p='tst_interops2$(EXEEXT)'; \
+ b='tst_interops2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_formatx_hdf4.sh.log: tst_formatx_hdf4.sh
+ @p='tst_formatx_hdf4.sh'; \
+ b='tst_formatx_hdf4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_chunk_hdf4.sh.log: run_chunk_hdf4.sh
+ @p='run_chunk_hdf4.sh'; \
+ b='run_chunk_hdf4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_get_hdf4_files.sh.log: run_get_hdf4_files.sh
+ @p='run_get_hdf4_files.sh'; \
+ b='run_get_hdf4_files.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_interops3.log: tst_interops3$(EXEEXT)
+ @p='tst_interops3$(EXEEXT)'; \
+ b='tst_interops3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_valgrind_tests.sh.log: run_valgrind_tests.sh
+ @p='run_valgrind_tests.sh'; \
+ b='run_valgrind_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_valgrind_tests2.sh.log: run_valgrind_tests2.sh
+ @p='run_valgrind_tests2.sh'; \
+ b='run_valgrind_tests2.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_hdf4_valgrind_tests.sh.log: run_hdf4_valgrind_tests.sh
+ @p='run_hdf4_valgrind_tests.sh'; \
+ b='run_hdf4_valgrind_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_par_test.sh.log: run_par_test.sh
+ @p='run_par_test.sh'; \
+ b='run_par_test.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+ at BUILD_BENCHMARKS_TRUE@benchmarks: check
+ at BUILD_BENCHMARKS_TRUE@ ./run_bm_radar_2D.sh
+ at BUILD_BENCHMARKS_TRUE@ ./run_bm_radar_2D_compression1.sh
+ at BUILD_BENCHMARKS_TRUE@ ./run_bm.sh
+ at BUILD_BENCHMARKS_TRUE@ ./run_tst_chunks.sh
+ at BUILD_BENCHMARKS_TRUE@ ./run_bm_ar4.sh
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/nc_test4/renamegroup.c b/nc_test4/renamegroup.c
index 3189eec..3f59dcf 100644
--- a/nc_test4/renamegroup.c
+++ b/nc_test4/renamegroup.c
@@ -9,7 +9,9 @@
#include <stdio.h>
#include <string.h>
+#ifndef LOGGING
#define LOGGING
+#endif
#include "netcdf.h"
#undef RENAME_DEBUG
diff --git a/nc_test4/run_get_hdf4_files.sh b/nc_test4/run_get_hdf4_files.sh
index 1836238..562969b 100755
--- a/nc_test4/run_get_hdf4_files.sh
+++ b/nc_test4/run_get_hdf4_files.sh
@@ -14,7 +14,7 @@ echo "Getting HDF4 test files $file_list"
for f1 in $file_list
do
if ! test -f $f1; then
- wget ftp://ftp.unidata.ucar.edu/pub/netcdf/sample_data/hdf4/$f1.gz
+ curl -O "ftp://ftp.unidata.ucar.edu/pub/netcdf/sample_data/hdf4/$f1.gz"
gunzip $f1.gz
fi
done
diff --git a/nc_test4/run_grp_rename.sh b/nc_test4/run_grp_rename.sh
index 7930cf1..233d96e 100755
--- a/nc_test4/run_grp_rename.sh
+++ b/nc_test4/run_grp_rename.sh
@@ -81,7 +81,7 @@ FAIL=0
# Create ref_tst_group_rename.nc
rm -f tst_grp_rename.nc
-../ncgen/ncgen -k3 ./tst_grp_rename.cdl
+../ncgen/ncgen -k nc4 ./tst_grp_rename.cdl
# Try to rename 2nd level group
if ! ./renamegroup tst_grp_rename.nc "/inner/inner_inner" "inner_renamed" ; then
diff --git a/nc_test4/tst_dims.c b/nc_test4/tst_dims.c
index a60d051..dc44452 100644
--- a/nc_test4/tst_dims.c
+++ b/nc_test4/tst_dims.c
@@ -91,7 +91,7 @@ main(int argc, char **argv)
int ndims_in, dimids_in[MAX_DIMS];
size_t len_in;
char name_in[NC_MAX_NAME + 1];
- int varid_in;
+ int dimid_in;
/* Create a file with one dim and nothing else. */
if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR;
@@ -102,8 +102,8 @@ main(int argc, char **argv)
if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR;
if (nc_inq_dimids(ncid, &ndims_in, dimids_in, 0)) ERR;
if (ndims_in != 1) ERR;
- if (nc_inq_dimid(ncid, LAT_NAME, &varid_in)) ERR;
- if (varid_in != 0) ERR;
+ if (nc_inq_dimid(ncid, LAT_NAME, &dimid_in)) ERR;
+ if (dimid_in != 0) ERR;
if (nc_inq_dimname(ncid, 0, name_in)) ERR;
if (strcmp(name_in, LAT_NAME)) ERR;
if (nc_inq_dimlen(ncid, 0, &len_in)) ERR;
@@ -118,8 +118,8 @@ main(int argc, char **argv)
if (len_in != LAT_LEN || strcmp(name_in, LAT_NAME)) ERR;
if (nc_inq_dimids(ncid, &ndims_in, dimids_in, 0)) ERR;
if (ndims_in != 1) ERR;
- if (nc_inq_dimid(ncid, LAT_NAME, &varid_in)) ERR;
- if (varid_in != 0) ERR;
+ if (nc_inq_dimid(ncid, LAT_NAME, &dimid_in)) ERR;
+ if (dimid_in != 0) ERR;
if (nc_inq_dimname(ncid, 0, name_in)) ERR;
if (strcmp(name_in, LAT_NAME)) ERR;
if (nc_inq_dimlen(ncid, 0, &len_in)) ERR;
@@ -131,7 +131,7 @@ main(int argc, char **argv)
SUMMARIZE_ERR;
printf("*** Testing renaming of one dimension...");
{
- int ncid, dimid, varid_in;
+ int ncid, dimid, dimid_in;
char name_in[NC_MAX_NAME + 1];
size_t len_in;
int ndims_in, dimids_in[MAX_DIMS];
@@ -147,8 +147,8 @@ main(int argc, char **argv)
if (nc_inq_dimids(ncid, &ndims_in, dimids_in, 0)) ERR;
if (ndims_in != 1) ERR;
if (dimids_in[0] != 0) ERR;
- if (nc_inq_dimid(ncid, BUBBA, &varid_in)) ERR;
- if (varid_in != 0) ERR;
+ if (nc_inq_dimid(ncid, BUBBA, &dimid_in)) ERR;
+ if (dimid_in != 0) ERR;
if (nc_inq_dimname(ncid, 0, name_in)) ERR;
if (strcmp(name_in, BUBBA)) ERR;
if (nc_inq_dimlen(ncid, 0, &len_in)) ERR;
@@ -161,8 +161,8 @@ main(int argc, char **argv)
if (len_in != LAT_LEN || strcmp(name_in, BUBBA)) ERR;
if (nc_inq_dimids(ncid, &ndims_in, dimids_in, 0)) ERR;
if (ndims_in != 1 || dimids_in[0] != 0) ERR;
- if (nc_inq_dimid(ncid, BUBBA, &varid_in)) ERR;
- if (varid_in != 0) ERR;
+ if (nc_inq_dimid(ncid, BUBBA, &dimid_in)) ERR;
+ if (dimid_in != 0) ERR;
if (nc_inq_dimname(ncid, 0, name_in)) ERR;
if (strcmp(name_in, BUBBA)) ERR;
if (nc_inq_dimlen(ncid, 0, &len_in)) ERR;
diff --git a/nc_test4/tst_parallel3.c b/nc_test4/tst_parallel3.c
index 9fa534f..737ff5d 100644
--- a/nc_test4/tst_parallel3.c
+++ b/nc_test4/tst_parallel3.c
@@ -92,9 +92,6 @@ int main(int argc, char **argv)
return -1;
}
- if (facc_type != NC_MPIPOSIX)
- facc_type = NC_MPIIO;
-
facc_type = NC_NETCDF4|NC_MPIIO;
facc_type_open = NC_MPIIO;
diff --git a/nc_test4/tst_rename.c b/nc_test4/tst_rename.c
new file mode 100644
index 0000000..85c4020
--- /dev/null
+++ b/nc_test4/tst_rename.c
@@ -0,0 +1,161 @@
+/*
+ * Demonstrate netcdf-4 rename bug.
+ */
+
+#include <netcdf.h>
+#include <stdio.h>
+
+/* On error, prints line number and file of test program. */
+#define ERR do { \
+fflush(stdout); \
+fprintf(stderr, "Unexpected result, %s, line: %d\n", \
+ __FILE__, __LINE__); \
+return 2; \
+} while (0)
+
+#define FILE_NAME3 "tst_rnfix3.nc"
+#define FILE_NAME4 "tst_rnfix4.nc"
+#define ODIM_NAME "lat" /* name for coord dim */
+#define NDIM_NAME "tal" /* new name for coord dim */
+#define OVAR_NAME "lat" /* name for coord var */
+#define NVAR_NAME "tal" /* new name for coord var */
+#define OVAR2_NAME "rh" /* name for non-coord var that uses coord dim */
+#define VAR_RANK 1 /* all vars in this test are of same rank */
+#define DIM_LEN 2 /* all dims in this test are of same len */
+
+/* For renaming tests. Create small test file of specified format
+ * with a coordinate dimension, corresponding coordinate variable, and
+ * a non-coordinate variable that uses the coordinate dimension.
+ */
+int
+create_test_file(
+ char *path, /* filename */
+ int format /* NC_FORMAT_CLASSIC, NC_FORMAT_64BIT,
+ NC_FORMAT_NETCDF4, or NC_FORMAT_NETCDF4_CLASSIC */
+ )
+{
+ int ncid, dimid, varid, var2id;
+ int dims[VAR_RANK];
+ int lats[DIM_LEN] = {-90, 90};
+ float rh[DIM_LEN] = {0.25, 0.75};
+ switch (format) {
+ case (NC_FORMAT_CLASSIC):
+ if (nc_create(path, 0, &ncid)) ERR;
+ break;
+ case (NC_FORMAT_64BIT):
+ if (nc_create(path, NC_64BIT_OFFSET, &ncid)) ERR;
+ break;
+ case (NC_FORMAT_NETCDF4):
+ if (nc_create(path, NC_NETCDF4, &ncid)) ERR;
+ break;
+ case(NC_FORMAT_NETCDF4_CLASSIC):
+ if (nc_create(path, NC_NETCDF4 | NC_CLASSIC_MODEL, &ncid)) ERR;
+ break;
+ default:
+ ERR;
+ return NC_ENOTNC;
+ }
+ if (nc_def_dim(ncid, ODIM_NAME, DIM_LEN, &dimid)) ERR;
+ dims[0] = dimid;
+ if (nc_def_var(ncid, OVAR_NAME, NC_INT, VAR_RANK, dims, &varid)) ERR;
+ if (nc_def_var(ncid, OVAR2_NAME, NC_FLOAT, VAR_RANK, dims, &var2id)) ERR;
+ if (nc_enddef(ncid)) ERR; /* not necessary for netCDF-4 files */
+ if (nc_put_var_int(ncid, varid, lats)) ERR;
+ if (nc_put_var_float(ncid, var2id, rh)) ERR;
+ if (nc_close(ncid)) ERR;
+ return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+#define NUM_FORMATS 2
+ int formats[NUM_FORMATS] = {NC_FORMAT_NETCDF4, NC_FORMAT_NETCDF4_CLASSIC};
+ char *fmt_names[] = {"netCDF-4", "netCDF-4 classic model"};
+ char *file_names[] = {FILE_NAME3, FILE_NAME4};
+ int format;
+
+ fprintf(stderr,"*** Testing netcdf rename bugs and fixes.\n");
+
+ for(format = 0; format < NUM_FORMATS; format++)
+ {
+ int ncid, dimid, varid, var2id;
+ int lats[DIM_LEN] = {-90, 90};
+ int lats_in[DIM_LEN];
+ float rh[DIM_LEN] = {0.25, 0.75};
+ float rh_in[DIM_LEN];
+ int ii;
+
+ fprintf(stderr,"*** Test renaming coordinate variable and its dimension for %s...\n",
+ fmt_names[format]);
+ if (create_test_file(file_names[format], formats[format])) ERR;
+ if (nc_open(file_names[format], NC_WRITE, &ncid)) ERR;
+ if (nc_inq_dimid(ncid, ODIM_NAME, &dimid)) ERR;
+ if (nc_inq_varid(ncid, OVAR_NAME, &varid)) ERR;
+ if (nc_inq_varid(ncid, OVAR2_NAME, &var2id)) ERR;
+ if (nc_redef(ncid)) ERR; /* omitting this and nc_enddef call eliminates bug */
+ if (nc_rename_dim(ncid, dimid, NDIM_NAME)) ERR;
+ if (nc_rename_var(ncid, varid, NVAR_NAME)) ERR;
+ if (nc_enddef(ncid)) ERR;
+ if (nc_get_var_int(ncid, varid, lats_in)) ERR;
+ for (ii = 0; ii < DIM_LEN; ii++) {
+ if (lats_in[ii] != lats[ii])
+ fprintf(stderr, "\tlats_in[%d] is %d, should be %d\n", ii, lats_in[ii], lats[ii]);
+ }
+ if (nc_get_var_float(ncid, var2id, rh_in)) ERR;
+ for (ii = 0; ii < DIM_LEN; ii++) {
+ if (rh_in[ii] != rh[ii])
+ fprintf(stderr, "\trh_in[%d] is %g, should be %g\n", ii, rh_in[ii], rh[ii]);
+ }
+ if (nc_close(ncid)) ERR;
+
+ fprintf(stderr,"*** Test renaming just coordinate variable for %s...\n",
+ fmt_names[format]);
+ if (create_test_file(file_names[format], formats[format])) ERR;
+ if (nc_open(file_names[format], NC_WRITE, &ncid)) ERR;
+ if (nc_inq_dimid(ncid, ODIM_NAME, &dimid)) ERR;
+ if (nc_inq_varid(ncid, OVAR_NAME, &varid)) ERR;
+ if (nc_inq_varid(ncid, OVAR2_NAME, &var2id)) ERR;
+ if (nc_redef(ncid)) ERR; /* omitting this and nc_enddef call eliminates bug */
+ /* if (nc_rename_dim(ncid, dimid, NDIM_NAME)) ERR; */
+ if (nc_rename_var(ncid, varid, NVAR_NAME)) ERR;
+ if (nc_enddef(ncid)) ERR;
+ if (nc_get_var_int(ncid, varid, lats_in)) ERR;
+ for (ii = 0; ii < DIM_LEN; ii++) {
+ if (lats_in[ii] != lats[ii])
+ fprintf(stderr, "\tlats_in[%d] is %d, should be %d\n", ii, lats_in[ii], lats[ii]);
+ }
+ if (nc_get_var_float(ncid, var2id, rh_in)) ERR;
+ for (ii = 0; ii < DIM_LEN; ii++) {
+ if (rh_in[ii] != rh[ii])
+ fprintf(stderr, "\trh_in[%d] is %g, should be %g\n", ii, rh_in[ii], rh[ii]);
+ }
+ if (nc_close(ncid)) ERR;
+
+
+ fprintf(stderr,"*** Test renaming just coordinate dimension for %s...\n",
+ fmt_names[format]);
+ if (create_test_file(file_names[format], formats[format])) ERR;
+ if (nc_open(file_names[format], NC_WRITE, &ncid)) ERR;
+ if (nc_inq_dimid(ncid, ODIM_NAME, &dimid)) ERR;
+ if (nc_inq_varid(ncid, OVAR_NAME, &varid)) ERR;
+ if (nc_inq_varid(ncid, OVAR2_NAME, &var2id)) ERR;
+ if (nc_redef(ncid)) ERR; /* omitting this and nc_enddef call eliminates bug */
+ if (nc_rename_dim(ncid, dimid, NDIM_NAME)) ERR;
+ /* if (nc_rename_var(ncid, varid, NVAR_NAME)) ERR; */
+ if (nc_enddef(ncid)) ERR;
+ if (nc_get_var_int(ncid, varid, lats_in)) ERR;
+ for (ii = 0; ii < DIM_LEN; ii++) {
+ if (lats_in[ii] != lats[ii])
+ fprintf(stderr, "\tlats_in[%d] is %d, should be %d\n", ii, lats_in[ii], lats[ii]);
+ }
+ if (nc_get_var_float(ncid, var2id, rh_in)) ERR;
+ for (ii = 0; ii < DIM_LEN; ii++) {
+ if (rh_in[ii] != rh[ii])
+ fprintf(stderr, "\trh_in[%d] is %g, should be %g\n", ii, rh_in[ii], rh[ii]);
+ }
+ if (nc_close(ncid)) ERR;
+ }
+
+ return(0);
+}
diff --git a/ncdap_test/CMakeLists.txt b/ncdap_test/CMakeLists.txt
index 5fd2816..792eee9 100644
--- a/ncdap_test/CMakeLists.txt
+++ b/ncdap_test/CMakeLists.txt
@@ -20,7 +20,7 @@ IF(ENABLE_TESTS)
# Binary Test Macro
add_sh_test(ncdap tst_ncdap3)
-
+
IF(NOT MSVC)
add_bin_env_test(ncdap t_dap3a)
add_bin_env_test(ncdap test_cvt)
@@ -34,19 +34,21 @@ IF(ENABLE_TESTS)
IF(ENABLE_DAP_LONG_TESTS)
add_sh_test(ncdap tst_longremote3)
ENDIF()
+ add_sh_test(ncdap testurl)
add_bin_test(ncdap test_nstride_cached)
add_bin_test(ncdap t_misc)
IF(ENABLE_DAP_AUTH_TESTS)
add_bin_test(ncdap t_auth)
+ add_sh_test(ncdap testauth)
ENDIF()
add_bin_test(ncdap test_varm3)
ENDIF()
-
ENDIF()
+
ADD_SUBDIRECTORY(testdata3)
ADD_SUBDIRECTORY(expected3)
ADD_SUBDIRECTORY(expected4)
diff --git a/ncdap_test/Makefile.am b/ncdap_test/Makefile.am
index 1eb7645..be9b45f 100644
--- a/ncdap_test/Makefile.am
+++ b/ncdap_test/Makefile.am
@@ -20,7 +20,7 @@ t_dap3a_SOURCES = t_dap3a.c
test_cvt3_SOURCES = test_cvt.c
test_vara_SOURCES = test_vara.c
-check_PROGRAMS += t_dap3a test_cvt3 test_vara
+check_PROGRAMS += t_dap3a test_cvt3 test_vara
TESTS += t_dap3a test_cvt3 test_vara
@@ -33,7 +33,7 @@ if ENABLE_DAP_REMOTE_TESTS
check_PROGRAMS += nctestserver
nctestserver_SOURCES = nctestserver.c
-TESTS += tst_remote3.sh tst_formatx.sh test_partvar
+TESTS += tst_remote3.sh tst_formatx.sh test_partvar testurl.sh
if ENABLE_DAP_LONG_TESTS
TESTS += tst_longremote3.sh
@@ -41,11 +41,11 @@ endif
test_partvar_SOURCES = test_partvar.c
test_nstride_cached_SOURCE = test_nstride_cached.c
-t_auth_SOURCES = t_auth.c
+#t_auth_SOURCES = t_auth.c
+#t_auth1_SOURCES = t_auth1.c
t_misc_SOURCES = t_misc.c
test_varm3_SOURCES = test_varm3.c
-
TESTS += test_varm3
TESTS += test_nstride_cached
TESTS += t_misc
@@ -56,13 +56,13 @@ check_PROGRAMS += t_misc
check_PROGRAMS += test_varm3
if ENABLE_DAP_AUTH_TESTS
-check_PROGRAMS += t_auth
-TESTS += t_auth
+#check_PROGRAMS += t_auth t_auth1
+#TESTS += t_auth
+TESTS += testauth.sh
endif
endif #ENABLE_DAP_REMOTE_TESTS
-
if USE_NETCDF4
#TESTS += tst_ncdap4.sh
@@ -93,7 +93,7 @@ EXTRA_DIST = tst_ncdap3.sh tst_ncdap4.sh \
tst_remote3.sh tst_remote4.sh \
tst_longremote3.sh tst_longremote4.sh \
tst_ncdap.sh tst_ncdap_shared.sh tst_remote.sh \
- t_dap.c CMakeLists.txt tst_formatx.sh
+ t_dap.c CMakeLists.txt tst_formatx.sh testauth.sh testurl.sh
CLEANFILES = test_varm3 test_cvt3 results/*.dmp results/*.das results/*.dds datadds* t_dap3a test_nstride_cached
diff --git a/ncdap_test/Makefile.in b/ncdap_test/Makefile.in
new file mode 100644
index 0000000..1265502
--- /dev/null
+++ b/ncdap_test/Makefile.in
@@ -0,0 +1,1391 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2011, see the COPYRIGHT file for more information.
+
+# This file builds and runs DAP tests.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+check_PROGRAMS = t_dap3a$(EXEEXT) test_cvt3$(EXEEXT) \
+ test_vara$(EXEEXT) $(am__EXEEXT_1)
+TESTS = tst_ncdap3.sh t_dap3a$(EXEEXT) test_cvt3$(EXEEXT) \
+ test_vara$(EXEEXT) $(am__EXEEXT_2) $(am__append_5) \
+ $(am__EXEEXT_3) $(am__append_7)
+
+# remote tests are optional
+# because the server may be down or inaccessible
+
+# Make nctestserver be the first test to be built
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_3 = nctestserver test_partvar \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached t_misc \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_varm3
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_4 = tst_remote3.sh tst_formatx.sh test_partvar testurl.sh
+ at ENABLE_DAP_LONG_TESTS_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE at am__append_5 = tst_longremote3.sh
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am__append_6 = test_varm3 \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached t_misc
+
+#check_PROGRAMS += t_auth t_auth1
+#TESTS += t_auth
+ at ENABLE_DAP_AUTH_TESTS_TRUE@@ENABLE_DAP_REMOTE_TESTS_TRUE at am__append_7 = testauth.sh
+ at USE_NETCDF4_TRUE@am__append_8 = test_cvt4 t_dap4
+subdir = ncdap_test
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am__EXEEXT_1 = nctestserver$(EXEEXT) \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_partvar$(EXEEXT) \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached$(EXEEXT) \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ t_misc$(EXEEXT) \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_varm3$(EXEEXT)
+am__nctestserver_SOURCES_DIST = nctestserver.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am_nctestserver_OBJECTS = \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ nctestserver.$(OBJEXT)
+nctestserver_OBJECTS = $(am_nctestserver_OBJECTS)
+nctestserver_LDADD = $(LDADD)
+nctestserver_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+am_t_dap3a_OBJECTS = t_dap3a.$(OBJEXT)
+t_dap3a_OBJECTS = $(am_t_dap3a_OBJECTS)
+t_dap3a_LDADD = $(LDADD)
+t_dap3a_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+am__t_misc_SOURCES_DIST = t_misc.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am_t_misc_OBJECTS = t_misc.$(OBJEXT)
+t_misc_OBJECTS = $(am_t_misc_OBJECTS)
+t_misc_LDADD = $(LDADD)
+t_misc_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+am_test_cvt3_OBJECTS = test_cvt.$(OBJEXT)
+test_cvt3_OBJECTS = $(am_test_cvt3_OBJECTS)
+test_cvt3_LDADD = $(LDADD)
+test_cvt3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+test_nstride_cached_SOURCES = test_nstride_cached.c
+test_nstride_cached_OBJECTS = test_nstride_cached.$(OBJEXT)
+test_nstride_cached_LDADD = $(LDADD)
+test_nstride_cached_DEPENDENCIES = \
+ ${top_builddir}/liblib/libnetcdf.la
+am__test_partvar_SOURCES_DIST = test_partvar.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am_test_partvar_OBJECTS = \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_partvar.$(OBJEXT)
+test_partvar_OBJECTS = $(am_test_partvar_OBJECTS)
+test_partvar_LDADD = $(LDADD)
+test_partvar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+am_test_vara_OBJECTS = test_vara.$(OBJEXT)
+test_vara_OBJECTS = $(am_test_vara_OBJECTS)
+test_vara_LDADD = $(LDADD)
+test_vara_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+am__test_varm3_SOURCES_DIST = test_varm3.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am_test_varm3_OBJECTS = \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_varm3.$(OBJEXT)
+test_varm3_OBJECTS = $(am_test_varm3_OBJECTS)
+test_varm3_LDADD = $(LDADD)
+test_varm3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(nctestserver_SOURCES) $(t_dap3a_SOURCES) $(t_misc_SOURCES) \
+ $(test_cvt3_SOURCES) test_nstride_cached.c \
+ $(test_partvar_SOURCES) $(test_vara_SOURCES) \
+ $(test_varm3_SOURCES)
+DIST_SOURCES = $(am__nctestserver_SOURCES_DIST) $(t_dap3a_SOURCES) \
+ $(am__t_misc_SOURCES_DIST) $(test_cvt3_SOURCES) \
+ test_nstride_cached.c $(am__test_partvar_SOURCES_DIST) \
+ $(test_vara_SOURCES) $(am__test_varm3_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am__EXEEXT_2 = tst_remote3.sh \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ tst_formatx.sh \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_partvar$(EXEEXT) testurl.sh
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@am__EXEEXT_3 = test_varm3$(EXEEXT) \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ test_nstride_cached$(EXEEXT) \
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@ t_misc$(EXEEXT)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2) \
+ -I$(top_builddir)/liblib
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+LDADD = ${top_builddir}/liblib/libnetcdf.la
+TESTS_ENVIRONMENT = TOPSRCDIR=${abs_top_srcdir}
+t_dap3a_SOURCES = t_dap3a.c
+test_cvt3_SOURCES = test_cvt.c
+test_vara_SOURCES = test_vara.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@nctestserver_SOURCES = nctestserver.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@test_partvar_SOURCES = test_partvar.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@test_nstride_cached_SOURCE = test_nstride_cached.c
+#t_auth_SOURCES = t_auth.c
+#t_auth1_SOURCES = t_auth1.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@t_misc_SOURCES = t_misc.c
+ at ENABLE_DAP_REMOTE_TESTS_TRUE@test_varm3_SOURCES = test_varm3.c
+
+#TESTS += tst_ncdap4.sh
+
+#TESTS += tst_remote4.sh
+
+#TESTS += tst_longremote4.sh
+
+# Conversion tests
+
+#test_cvt4_SOURCES = test_cvt.c
+#t_dap4_SOURCES = t_dap4.c
+#check_PROGRAMS += test_cvt4 t_dap4
+#TESTS += test_cvt4 t_dap4
+
+# Need to add subdirs
+SUBDIRS = testdata3 expected3 expected4 expectremote3 expectremote4
+EXTRA_DIST = tst_ncdap3.sh tst_ncdap4.sh \
+ tst_remote3.sh tst_remote4.sh \
+ tst_longremote3.sh tst_longremote4.sh \
+ tst_ncdap.sh tst_ncdap_shared.sh tst_remote.sh \
+ t_dap.c CMakeLists.txt tst_formatx.sh testauth.sh testurl.sh
+
+CLEANFILES = test_varm3 test_cvt3 results/*.dmp results/*.das \
+ results/*.dds datadds* t_dap3a test_nstride_cached \
+ $(am__append_8)
+
+# One last thing
+BUILT_SOURCES = .dodsrc
+DISTCLEANFILES = .dodsrc results/* results
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdap_test/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdap_test/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+nctestserver$(EXEEXT): $(nctestserver_OBJECTS) $(nctestserver_DEPENDENCIES) $(EXTRA_nctestserver_DEPENDENCIES)
+ @rm -f nctestserver$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nctestserver_OBJECTS) $(nctestserver_LDADD) $(LIBS)
+
+t_dap3a$(EXEEXT): $(t_dap3a_OBJECTS) $(t_dap3a_DEPENDENCIES) $(EXTRA_t_dap3a_DEPENDENCIES)
+ @rm -f t_dap3a$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t_dap3a_OBJECTS) $(t_dap3a_LDADD) $(LIBS)
+
+t_misc$(EXEEXT): $(t_misc_OBJECTS) $(t_misc_DEPENDENCIES) $(EXTRA_t_misc_DEPENDENCIES)
+ @rm -f t_misc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t_misc_OBJECTS) $(t_misc_LDADD) $(LIBS)
+
+test_cvt3$(EXEEXT): $(test_cvt3_OBJECTS) $(test_cvt3_DEPENDENCIES) $(EXTRA_test_cvt3_DEPENDENCIES)
+ @rm -f test_cvt3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_cvt3_OBJECTS) $(test_cvt3_LDADD) $(LIBS)
+
+test_nstride_cached$(EXEEXT): $(test_nstride_cached_OBJECTS) $(test_nstride_cached_DEPENDENCIES) $(EXTRA_test_nstride_cached_DEPENDENCIES)
+ @rm -f test_nstride_cached$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_nstride_cached_OBJECTS) $(test_nstride_cached_LDADD) $(LIBS)
+
+test_partvar$(EXEEXT): $(test_partvar_OBJECTS) $(test_partvar_DEPENDENCIES) $(EXTRA_test_partvar_DEPENDENCIES)
+ @rm -f test_partvar$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_partvar_OBJECTS) $(test_partvar_LDADD) $(LIBS)
+
+test_vara$(EXEEXT): $(test_vara_OBJECTS) $(test_vara_DEPENDENCIES) $(EXTRA_test_vara_DEPENDENCIES)
+ @rm -f test_vara$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_vara_OBJECTS) $(test_vara_LDADD) $(LIBS)
+
+test_varm3$(EXEEXT): $(test_varm3_OBJECTS) $(test_varm3_DEPENDENCIES) $(EXTRA_test_varm3_DEPENDENCIES)
+ @rm -f test_varm3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_varm3_OBJECTS) $(test_varm3_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nctestserver.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_dap3a.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_misc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_cvt.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_nstride_cached.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_partvar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_vara.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_varm3.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+tst_ncdap3.sh.log: tst_ncdap3.sh
+ @p='tst_ncdap3.sh'; \
+ b='tst_ncdap3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+t_dap3a.log: t_dap3a$(EXEEXT)
+ @p='t_dap3a$(EXEEXT)'; \
+ b='t_dap3a'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test_cvt3.log: test_cvt3$(EXEEXT)
+ @p='test_cvt3$(EXEEXT)'; \
+ b='test_cvt3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test_vara.log: test_vara$(EXEEXT)
+ @p='test_vara$(EXEEXT)'; \
+ b='test_vara'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_remote3.sh.log: tst_remote3.sh
+ @p='tst_remote3.sh'; \
+ b='tst_remote3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_formatx.sh.log: tst_formatx.sh
+ @p='tst_formatx.sh'; \
+ b='tst_formatx.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test_partvar.log: test_partvar$(EXEEXT)
+ @p='test_partvar$(EXEEXT)'; \
+ b='test_partvar'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+testurl.sh.log: testurl.sh
+ @p='testurl.sh'; \
+ b='testurl.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_longremote3.sh.log: tst_longremote3.sh
+ @p='tst_longremote3.sh'; \
+ b='tst_longremote3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test_varm3.log: test_varm3$(EXEEXT)
+ @p='test_varm3$(EXEEXT)'; \
+ b='test_varm3'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+test_nstride_cached.log: test_nstride_cached$(EXEEXT)
+ @p='test_nstride_cached$(EXEEXT)'; \
+ b='test_nstride_cached'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+t_misc.log: t_misc$(EXEEXT)
+ @p='t_misc$(EXEEXT)'; \
+ b='t_misc'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+testauth.sh.log: testauth.sh
+ @p='testauth.sh'; \
+ b='testauth.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) all check check-am install install-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-TESTS check-am clean clean-checkPROGRAMS clean-generic \
+ clean-libtool cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+ uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# This rule are used if someone wants to rebuild t_dap3a.c
+# Otherwise never invoked, but records how to do it.
+t_dap3a.c: t_dap.c
+ echo "#define NETCDF3ONLY" > ./t_dap3a.c
+ cat t_dap.c >> t_dap3a.c
+
+t_dap4a.c: t_dap.c
+ cat t_dap.c >> ./t_dap4a.c
+
+.dodsrc:
+ echo "#DODSRC" >.dodsrc
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdap_test/expected3/Makefile.am b/ncdap_test/expected3/Makefile.am
index c70d17e..9c920c6 100644
--- a/ncdap_test/expected3/Makefile.am
+++ b/ncdap_test/expected3/Makefile.am
@@ -34,6 +34,7 @@ test.sds4.dmp test.sds5.dmp test.sds6.dmp \
test.sds7.dmp test.vs1.dmp test.vs2.dmp \
test.vs3.dmp test.vs4.dmp test.vs5.dmp \
text.nc.dmp whoi.dmp \
+testData.nc.dmp \
CMakeLists.txt
diff --git a/ncdap_test/expected3/Makefile.in b/ncdap_test/expected3/Makefile.in
new file mode 100644
index 0000000..e6910b5
--- /dev/null
+++ b/ncdap_test/expected3/Makefile.in
@@ -0,0 +1,520 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2007, see the COPYRIGHT file for more information.
+
+# This is to include the libnc-dap test comparison files
+
+# $Id: Makefile.am,v 1.9 2009/11/20 03:06:32 dmh Exp $
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = ncdap_test/expected3
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+123bears.nc.dmp 123.nc.dmp 1990-S1700101.HDF.WVC_Lat.dmp \
+1998-6-avhrr.dat.dmp b31a.dmp b31.dmp \
+bears.nc.dmp ber-2002-10-01.nc.dmp ceopL2AIRS2-2.nc.dmp \
+coads_climatology2.nc.dmp D1.dmp data.nc.dmp \
+Drifters.dmp EOSDB.dmp fnoc1.nc.dmp \
+in1.nc.dmp in_2.nc.dmp ingrid.dmp \
+in.nc.dmp in_no_three_double_dmn.nc.dmp in_v.nc.dmp \
+nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \
+OverideExample.dmp pbug0001b.dmp saco1.nc.dmp \
+SimpleDrdsExample.dmp synth1.dmp synth2.dmp \
+synth3.dmp synth4.dmp synth5.dmp \
+synth6.dmp synth7.dmp synth8.dmp synth9.dmp synth10.dmp \
+test.01.dmp test.02.dmp test.03.dmp \
+test.04.dmp test.05.dmp test.06a.dmp \
+test.07a.dmp test.07.dmp test.21.dmp \
+test.22.dmp test.23.dmp test.31.dmp \
+test.50.dmp test.53.dmp test.55.dmp \
+test.56.dmp test.57.dmp test.66.dmp \
+test.67.dmp test.68.dmp test.69.dmp \
+test.an1.dmp test.dfp1.dmp test.dfr1.dmp \
+test.dfr2.dmp test.dfr3.dmp test.gr1.dmp \
+test.gr2.dmp test.gr3.dmp test.gr4.dmp \
+test.gr5.dmp test.nc.dmp test.PointFile.dmp \
+test.sds1.dmp test.sds2.dmp test.sds3.dmp \
+test.sds4.dmp test.sds5.dmp test.sds6.dmp \
+test.sds7.dmp test.vs1.dmp test.vs2.dmp \
+test.vs3.dmp test.vs4.dmp test.vs5.dmp \
+text.nc.dmp whoi.dmp \
+testData.nc.dmp \
+CMakeLists.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdap_test/expected3/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdap_test/expected3/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdap_test/expected3/testData.nc.dmp b/ncdap_test/expected3/testData.nc.dmp
new file mode 100644
index 0000000..7ee6141
--- /dev/null
+++ b/ncdap_test/expected3/testData.nc.dmp
@@ -0,0 +1,81 @@
+netcdf testData {
+dimensions:
+ record = UNLIMITED ; // (1 currently)
+ maxStrlen64 = 64 ;
+ nav = 1 ;
+ ngrids = 1 ;
+ nmodels = 1 ;
+ x = 135 ;
+ y = 95 ;
+variables:
+ double reftime(record) ;
+ reftime:long_name = "reference time" ;
+ reftime:units = "hours since 1992-1-1" ;
+ double valtime(record) ;
+ valtime:long_name = "valid time" ;
+ valtime:units = "hours since 1992-1-1" ;
+ char datetime(record, maxStrlen64) ;
+ datetime:long_name = "reference date and time" ;
+ float valtime_offset(record) ;
+ valtime_offset:long_name = "hours from reference time" ;
+ valtime_offset:units = "hours" ;
+ int model_id(nmodels) ;
+ model_id:long_name = "generating process ID number" ;
+ char nav_model(nav, maxStrlen64) ;
+ nav_model:long_name = "navigation model name" ;
+ int grid_type_code(nav) ;
+ grid_type_code:long_name = "GRIB-1 GDS data representation type" ;
+ char grid_type(nav, maxStrlen64) ;
+ grid_type:long_name = "GRIB-1 grid type" ;
+ char grid_name(nav, maxStrlen64) ;
+ grid_name:long_name = "grid name" ;
+ int grid_center(nav) ;
+ grid_center:long_name = "GRIB-1 originating center ID" ;
+ int grid_number(nav, ngrids) ;
+ grid_number:long_name = "GRIB-1 catalogued grid numbers" ;
+ grid_number:_FillValue = -9999 ;
+ char x_dim(nav, maxStrlen64) ;
+ x_dim:long_name = "x dimension name" ;
+ char y_dim(nav, maxStrlen64) ;
+ y_dim:long_name = "y dimension name" ;
+ int Nx(nav) ;
+ Nx:long_name = "number of points along x-axis" ;
+ int Ny(nav) ;
+ Ny:long_name = "number of points along y-axis" ;
+ float La1(nav) ;
+ La1:long_name = "latitude of first grid point" ;
+ La1:units = "degrees_north" ;
+ float Lo1(nav) ;
+ Lo1:long_name = "longitude of first grid point" ;
+ Lo1:units = "degrees_east" ;
+ float Lov(nav) ;
+ Lov:long_name = "orientation of the grid" ;
+ Lov:units = "degrees_east" ;
+ float Dx(nav) ;
+ Dx:long_name = "x-direction grid length" ;
+ Dx:units = "km" ;
+ float Dy(nav) ;
+ Dy:long_name = "y-direction grid length" ;
+ Dy:units = "km" ;
+ byte ProjFlag(nav) ;
+ ProjFlag:_Unsigned = "false" ;
+ ProjFlag:long_name = "projection center flag" ;
+ byte ResCompFlag(nav) ;
+ ResCompFlag:_Unsigned = "false" ;
+ ResCompFlag:long_name = "resolution and component flags" ;
+ float Z_sfc(record, y, x) ;
+ Z_sfc:long_name = "Geopotential height, gpm" ;
+ Z_sfc:units = "gp m" ;
+ Z_sfc:_FillValue = -9999.f ;
+ Z_sfc:navigation = "nav" ;
+
+// global attributes:
+ :record = "reftime, valtime" ;
+ :history = "2003-09-25 16:09:26 - created by gribtocdl 1.4 - 12.12.2002" ;
+ :title = "CMC_reg_HGT_SFC_0_ps60km_2003092500_P000.grib" ;
+ :Conventions = "NUWG" ;
+ :version = 0. ;
+ :DODS.strlen = 100 ;
+ :DODS.dimName = "nav_len" ;
+ :DODS_EXTRA.Unlimited_Dimension = "record" ;
+}
diff --git a/ncdap_test/expected4/Makefile.in b/ncdap_test/expected4/Makefile.in
new file mode 100644
index 0000000..d5ba7da
--- /dev/null
+++ b/ncdap_test/expected4/Makefile.in
@@ -0,0 +1,518 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2007, see the COPYRIGHT file for more information.
+
+# This is to include the libnc-dap test comparison files
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = ncdap_test/expected4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# $Id: Makefile.am,v 1.4 2009/11/20 03:06:37 dmh Exp $
+EXTRA_DIST = \
+123bears.nc.dmp 123.nc.dmp 1990-S1700101.HDF.WVC_Lat.dmp \
+1998-6-avhrr.dat.dmp b31a.dmp b31.dmp \
+bears.nc.dmp ber-2002-10-01.nc.dmp ceopL2AIRS2-2.nc.dmp \
+D1.dmp data.nc.dmp Drifters.dmp \
+EOSDB.dmp fnoc1.nc.dmp in1.nc.dmp \
+in_2.nc.dmp ingrid.dmp in.nc.dmp \
+in_no_three_double_dmn.nc.dmp in_v.nc.dmp nestedDAS.dmp \
+NestedSeq2.dmp NestedSeq.dmp OverideExample.dmp \
+pbug0001b.dmp saco1.nc.dmp SimpleDrdsExample.dmp \
+synth1.dmp synth2.dmp synth3.dmp \
+synth4.dmp synth5.dmp synth6.dmp \
+synth7.dmp synth8.dmp test.01.dmp \
+test.02.dmp test.03.dmp test.04.dmp \
+test.05.dmp test.06a.dmp test.07a.dmp \
+test.07.dmp test.21.dmp test.22.dmp \
+test.23.dmp test.31.dmp test.50.dmp \
+test.53.dmp test.55.dmp test.56.dmp \
+test.57.dmp test.66.dmp test.67.dmp \
+test.68.dmp test.69.dmp test.an1.dmp \
+test.dfp1.dmp test.dfr1.dmp test.dfr2.dmp \
+test.dfr3.dmp test.gr1.dmp test.gr2.dmp \
+test.gr3.dmp test.gr4.dmp test.gr5.dmp \
+test.nc.dmp test.PointFile.dmp test.sds1.dmp \
+test.sds2.dmp test.sds3.dmp test.sds4.dmp \
+test.sds5.dmp test.sds6.dmp test.sds7.dmp \
+test.vs1.dmp test.vs2.dmp test.vs3.dmp \
+test.vs4.dmp test.vs5.dmp text.nc.dmp \
+whoi.dmp CMakeLists.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdap_test/expected4/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdap_test/expected4/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdap_test/expectremote3/Makefile.in b/ncdap_test/expectremote3/Makefile.in
new file mode 100644
index 0000000..7cbacb5
--- /dev/null
+++ b/ncdap_test/expectremote3/Makefile.in
@@ -0,0 +1,514 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2007, see the COPYRIGHT file for more information.
+
+# This is to include the libnc-dap test comparison files
+
+# $Id: Makefile.am,v 1.7 2009/11/22 06:17:54 dmh Exp $
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = ncdap_test/expectremote3
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+b31a.dmp b31.dmp D1.dmp \
+Drifters.dmp EOSDB.dmp ingrid.dmp \
+nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \
+OverideExample.dmp SimpleDrdsExample.dmp \
+test.01.1.dmp test.01.dmp test.02.1.dmp \
+test.02.dmp test.03.1.dmp test.03.2.dmp \
+test.03.dmp test.04.1.dmp test.04.dmp \
+test.05.1.dmp test.05.dmp test.06.1.dmp \
+test.06.dmp test.06a.dmp test.07.1.dmp test.07.3.dmp \
+test.07.4.dmp test.07a.dmp test.07.dmp \
+test.21.dmp test.22.dmp test.23.dmp \
+test.31.dmp test.50.dmp test.53.dmp \
+test.55.dmp test.56.dmp test.57.dmp \
+test.66.dmp test.67.dmp test.68.dmp \
+test.69.dmp test.an1.dmp test.dfp1.dmp \
+test.gr1.dmp test.gr2.dmp test.gr3.dmp \
+test.gr4.dmp test.gr5.dmp test.nc.dmp \
+test.sds1.dmp test.sds2.dmp test.sds3.dmp \
+test.sds4.dmp test.sds5.dmp test.vs1.dmp \
+test.vs2.dmp test.vs3.dmp test.vs4.dmp \
+test.vs5.dmp whoi.dmp \
+GLOBEC_cetaceans.1.dmp GLOBEC_cetaceans.2.dmp \
+Surface_METAR_20120101_0000.nc.1.dmp \
+CMakeLists.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdap_test/expectremote3/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdap_test/expectremote3/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdap_test/expectremote4/Makefile.in b/ncdap_test/expectremote4/Makefile.in
new file mode 100644
index 0000000..86e9627
--- /dev/null
+++ b/ncdap_test/expectremote4/Makefile.in
@@ -0,0 +1,513 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2007, see the COPYRIGHT file for more information.
+
+# This is to include the libnc-dap test comparison files
+
+# $Id: Makefile.am,v 1.7 2009/11/22 06:17:54 dmh Exp $
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = ncdap_test/expectremote4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+b31a.dmp b31.dmp D1.dmp \
+Drifters.dmp EOSDB.dmp ingrid.dmp \
+nestedDAS.dmp NestedSeq2.dmp NestedSeq.dmp \
+OverideExample.dmp SimpleDrdsExample.dmp \
+test.01.1.dmp test.01.dmp test.02.1.dmp \
+test.02.dmp test.03.1.dmp test.03.2.dmp \
+test.03.dmp test.04.1.dmp test.04.dmp \
+test.05.1.dmp test.05.dmp test.06.1.dmp \
+test.06a.dmp test.07.1.dmp test.07.3.dmp \
+test.07.4.dmp test.07a.dmp test.07.dmp \
+test.21.dmp test.22.dmp test.23.dmp \
+test.31.dmp test.50.dmp test.53.dmp \
+test.55.dmp test.56.dmp test.57.dmp \
+test.66.dmp test.67.dmp test.68.dmp \
+test.69.dmp test.an1.dmp test.dfp1.dmp \
+test.gr1.dmp test.gr2.dmp test.gr3.dmp \
+test.gr4.dmp test.gr5.dmp test.sds1.dmp \
+test.sds2.dmp test.sds3.dmp test.sds4.dmp \
+test.sds5.dmp test.vs1.dmp test.vs2.dmp \
+test.vs3.dmp test.vs4.dmp test.vs5.dmp \
+whoi.dmp \
+GLOBEC_cetaceans.1.dmp GLOBEC_cetaceans.2.dmp \
+CMakeLists.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdap_test/expectremote4/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdap_test/expectremote4/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdap_test/nctestserver.c b/ncdap_test/nctestserver.c
index cb324d9..e2f87df 100644
--- a/ncdap_test/nctestserver.c
+++ b/ncdap_test/nctestserver.c
@@ -5,21 +5,39 @@
#include "netcdf.h"
#include "ncdispatch.h"
+/**
+Given a partial suffix path,
+try to find a server for which
+a request to that server + path
+returns some kind of result.
+This indicates that the server is up
+and running.
+Return the complete url for the server
+plus the path.
+*/
+
int
main(int argc, char** argv)
{
const char* url = NULL;
- if(argc == 1) {
- fprintf(stderr,"no path specified");
- printf("%s","");
- exit(1);
+ const char* path = NULL;
+ char* serverlist[64];
+ int nservers = 0;
+
+ if(argc == 1)
+ path = "";
+ else if(argc >= 2)
+ path = argv[1];
+ if(argc >= 3) {
+ int i;
+ for(i=2;i<argc;i++,nservers++)
+ serverlist[i-2] = argv[i];
+ serverlist[nservers] = NULL;
}
- url = NC_findtestserver(argv[1]);
+ url = NC_findtestserver(path,(nservers==0?(const char**)NULL:(const char**)serverlist));
if(url == NULL)
url = "";
printf("%s",url);
fflush(stdout);
exit(0);
}
-
-
diff --git a/ncdap_test/t_auth.c b/ncdap_test/t_auth.c
index 5df5df2..62cb0b5 100644
--- a/ncdap_test/t_auth.c
+++ b/ncdap_test/t_auth.c
@@ -2,71 +2,206 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#define DEBUG
+
#include "netcdf.h"
+#undef NOEMBED
+#undef NOLOCAL
+#undef NOHOME
+#define NOREDIR
+
+#define KEEPRC
+
+#define RC ".ocrc"
+#define SPECRC "./ocrc"
+
+#define DEFAULTTESTSERVER "remotetest.unidata.ucar.edu"
+#define USERPWD "tiggeUser:tigge"
+#define COOKIEFILE "./cookies"
+
+#define URL1 "https://%s@%s/thredds/dodsC/restrict/testData.nc"
+#define URL2 "https://%s/thredds/dodsC/restrict/testData.nc"
+#define URL3 "https://%s@thredds-test.ucar.edu/thredds/dodsC/restrict/testData.nc"
+
/* Embedded user:pwd */
-static char* URL1 =
-"http://tiggeUser:tigge@remotetest.unidata.ucar.edu/thredds/dodsC/restrict/testData.nc";
-/* user:pwd from .dodsrc*/
-static char* URL2 =
-"http://remotetest.unidata.ucar.edu/thredds/dodsC/restrict/testData.nc";
+static char url1[1024];
+
+/* user:pwd from RC*/
+static char url2[1024];
+
+/* Test redirect from different machine*/
+static char url3[1024];
-/* .dodsrc file */
-static char* CONTENT = "HTTP.CREDENTIALS.USER=tiggeUser\nHTTP.CREDENTIALS.PASSWORD=tigge\n";
+static int testrc(const char* prefix, const char* url);
+static void fillrc(const char* path);
+static void killrc();
+#ifdef DEBUG
static void
CHECK(int e, const char* msg)
{
if(e == NC_NOERR) return;
if(msg == NULL) msg = "Error";
- printf("%s: %s\n", msg, nc_strerror(e));
+ fprintf(stderr,"%s: %s\n", msg, nc_strerror(e));
exit(1);
}
-
+#endif
int
main(int argc, char** argv)
{
int ncid,retval,pass;
- char** url;
- FILE* dodsrc;
- pass = 1; /* assume success */
+ FILE* rc;
+ const char* dfaltsvc;
+ char buffer[8192];
+ const char* home;
- dodsrc = fopen(".dodsrc","w");
- if(dodsrc == NULL) {
- fprintf(stderr,"Cannot create .dodsrc\n");
- exit(1);
- }
- fprintf(dodsrc,CONTENT);
- fclose(dodsrc);
+ fprintf(stderr,"Testing: Authorization\n");
+
+ dfaltsvc = DEFAULTTESTSERVER;
+ snprintf(url1,sizeof(url1),URL1,USERPWD,dfaltsvc); /* embedded */
+ snprintf(url2,sizeof(url2),URL2,dfaltsvc); /* using rc file */
+
+#ifdef DEBUG
+fprintf(stderr,"url1: %s\n",url1);
+fprintf(stderr,"url2: %s\n",url2);
+fflush(stderr);
+#endif
+
+ pass = 1; /* assume success */
+ killrc();
- printf("Testing: Http Basic Authorization\n\n");
- if(1) {
- printf("Embedded user:pwd: %s\n",URL1);
- retval = nc_open(URL1, 0, &ncid);
+ fprintf(stderr,"Testing: Http Basic Authorization\n\n");
+#ifndef NOEMBED
+ {
+ fprintf(stderr,"Testing: Embedded user:pwd: %s\n",url1);
+ retval = nc_open(url1, 0, &ncid);
if(retval != NC_NOERR) {
pass = 0;
- printf("*** FAIL: Embedded user:pwd\n");
+ fprintf(stderr,"*** FAIL: Testing embedded user:pwd\n");
} else {
- printf("*** PASS: Embedded user:pwd\n");
+ fprintf(stderr,"*** PASS: Testing embedded user:pwd\n");
retval = nc_close(ncid);
}
- fflush(stdout);
+ fflush(stderr);
}
+#endif
- if(1) {
- printf(".dodsrc user:pwd: %s\n",URL1);
+#ifndef NOLOCAL
+ {
+ /* Test 1: RC in ./ */
+ fprintf(stderr,"Testing: user:pwd in %s/%s: %s\n",".",RC);
+ if(!testrc(".",url2)) {
+ fprintf(stderr,"user:pwd in %s/%s failed\n",".",RC);
+ exit(1);
+ }
+ }
+#endif
+
+#ifndef NOHOME
+ {
+ /* Test 1: RC in HOME */
+ home = getenv("HOME");
+ fprintf(stderr,"user:pwd in %s/%s: %s\n",home,RC);
+ if(!testrc(home,url2)) {
+ fprintf(stderr,"user:pwd in %s/%s failed\n",home,RC);
+ exit(1);
+ }
+ }
+#endif
- retval = nc_open(URL2, 0, &ncid);
+#ifndef NOREDIR
+ {
+ fprintf(stderr,"Testing: Http Basic Redirect\n\n");
+ snprintf(url3,sizeof(url3),URL3,USERPWD);
+ fprintf(stderr,"Basic redirect: %s\n",url3);
+ retval = nc_open(url3, 0, &ncid);
if(retval != NC_NOERR) {
- pass = 0;
- printf("*** FAIL: .dodsrc user:pwd\n");
+ fprintf(stderr,"*** XFAIL: Basic redirect\n");
} else {
+ fprintf(stderr,"*** PASS: Basic redirect\n");
retval = nc_close(ncid);
- printf("*** PASS: .dodsrc user:pwd\n");
- }
- fflush(stdout);
+ }
+ fflush(stderr);
}
- unlink(".dodsrc"); /* delete the file */
+#endif
+
return !pass;
}
+
+static int
+testrc(const char* prefix, const char* url)
+{
+ int pass = 1;
+ int retval;
+ int ncid;
+ char rcpath[8192];
+ FILE* rc;
+
+ snprintf(rcpath,sizeof(rcpath),"%s/%s",prefix,RC);
+ rc = fopen(rcpath,"w");
+ if(rc == NULL) {
+ fprintf(stderr,"Cannot create ./%s\n",RC);
+ exit(1);
+ }
+ fclose(rc);
+ fillrc(rcpath);
+ retval = nc_open(url, 0, &ncid);
+ if(retval != NC_NOERR) {
+ pass = 0;
+ fprintf(stderr,"*** FAIL: Testing: user:pwd in %s\n",rcpath);
+ } else {
+ retval = nc_close(ncid);
+ fprintf(stderr,"*** PASS: Testing: user:pwd in %s\n",rcpath);
+ }
+ fflush(stderr);
+#ifndef KEEPRC
+ unlink(rcpath); /* delete the file */
+#endif
+ return pass;
+}
+
+static void
+fillrc(const char* path)
+{
+ FILE* rc;
+ killrc();
+
+ rc = fopen(path,"w");
+ if(rc == NULL) {
+ fprintf(stderr,"cannot create rc file: %s\n",path);
+ exit(1);
+ }
+#ifdef DEBUG
+ fprintf(rc,"HTTP.VERBOSE=1\n");
+#endif
+ fprintf(rc,"HTTP.COOKIEJAR=%s\n",COOKIEFILE);
+ fprintf(rc,"HTTP.VALIDATE=1\n");
+ fprintf(rc,"HTTP.CREDENTIALS.USERPASSWORD=%s\n",USERPWD);
+ fclose(rc);
+}
+
+static void
+killrc()
+{
+ const char* home;
+ char path[1024];
+#ifdef KEEPRC
+ fprintf(stderr,"kill: ./%s\n",RC);
+#else
+ snprintf(path,sizeof(path),"%s/%s",".",RC);
+ unlink(path); /* delete the file */
+#endif
+ home = getenv("HOME");
+#ifdef KEEPRC
+ fprintf(stderr,"kill: %s/%s\n",home,RC);
+#else
+ snprintf(path,sizeof(path),"%s/%s",home,RC);
+ unlink(path);
+#endif
+}
diff --git a/ncdap_test/t_misc.c b/ncdap_test/t_misc.c
index 579d516..c68d8a1 100644
--- a/ncdap_test/t_misc.c
+++ b/ncdap_test/t_misc.c
@@ -5,8 +5,10 @@
#include <netcdf.h>
-#define URL1 "http://remotetest.unidata.ucar.edu" /* test that no trailing / is ok */
+#define URL1 "http://%s" /* test that no trailing / is ok */
+static char url1[1024];
+#ifdef DEBUG
static void
CHECK(int e, const char* msg)
{
@@ -15,6 +17,7 @@ CHECK(int e, const char* msg)
printf("%s: %s\n", msg, nc_strerror(e));
exit(1);
}
+#endif
static void
XFAIL(int e, const char* msg)
@@ -29,8 +32,15 @@ main()
{
int ncid,retval;
+ {
+ char* evv = getenv("DTSTESTSERVER");
+ if(evv == NULL)
+ evv = "remotetest.unidata.ucar.edu";
+ snprintf(url1,sizeof(url1),URL1,evv);
+ }
+
printf("Testing: Misc. Tests \n");
- retval = nc_open(URL1, 0, &ncid);
+ retval = nc_open(url1, 0, &ncid);
XFAIL(retval,"*** XFail : No trailing slash in url");
retval = nc_close(ncid);
return 0;
diff --git a/ncdap_test/test_nstride_cached.c b/ncdap_test/test_nstride_cached.c
index bcb0892..f98ce48 100644
--- a/ncdap_test/test_nstride_cached.c
+++ b/ncdap_test/test_nstride_cached.c
@@ -41,22 +41,39 @@ Problem was two-fold:
cc vars_whoi_test.c -g -o vars_whoi_test_4211 /usr/local/netcdf_4211/lib/libnetcdf.a /usr/local/hdf5_189/lib/libhdf5_hl.a /usr/local/hdf5_189/lib/libhdf5.a /usr/local/lib/libz.a -L/usr/lib64 -lc -lm -lcurl
cc vars_whoi_test.c -g -o vars_whoi_test /home/users/ansley/local/x86_nc43/lib/libnetcdf.a /usr/local/hdf5_189/lib/libhdf5_hl.a /usr/local/hdf5_189/lib/libhdf5.a /usr/local/lib/libz.a -L/usr/lib64 -lc -lm -lcurl
-*/
-
-/* Closing and reopening the dataset between the two reads fixes the
-incorrect data return */
+Closing and reopening the dataset between the two reads fixes the
+incorrect data return
-/* Setting the count to one less in the full data read also fixes the
-incorrect data return */
+Setting the count to one less in the full data read also fixes the
+incorrect data return
+*/
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include "netcdf.h"
+#include "ncdispatch.h"
-static int verbose = 0;
+#define VERBOSE 1
+/*
+2014-07-01: (DMH) Changed the URL to use one from remotetest server.
+to remove dependence on an external server.
+*/
+
+/*
static char* URL="http://geoport.whoi.edu/thredds/dodsC/coawst_4/use/fmrc/coawst_4_use_best.ncd";
+Float64 lon_rho[eta_rho = 336][xi_rho = 896];
+Float64 lat_rho[eta_rho = 336][xi_rho = 896];
+*/
+
+#define URL "%s/dodsC/testdods/rtofs.nc"
+#define VAR1 "Latitude"
+#define VAR2 "Longitude"
+#define XSIZE 850
+#define YSIZE 712
+
+static char url[1024];
int
main()
@@ -67,13 +84,31 @@ main()
int i;
int ncstatus;
size_t start[5], count[5];
- ptrdiff_t stride[5], tmp_ptrdiff_t;
+ ptrdiff_t stride[5];
int pass = 1;
-
+ int nelems = XSIZE*YSIZE;
int idim, ndim;
- //float dat[301060];
- float *dat = (float*)malloc(sizeof(float)*301060);
+ float *dat = (float*)malloc(sizeof(float)*nelems);
float sdat[10];
+ char* svc;
+
+ /* Find Test Server */
+ svc = getenv("THREDDSTESTSERVER");
+ if(svc != NULL) {
+ const char* testserver[2];
+ testserver[0] = svc;
+ testserver[1] = NULL;
+ svc = NC_findtestserver("thredds",testserver);
+ } else
+ svc = NC_findtestserver("thredds",NULL);
+
+ if(svc == NULL) {
+ fprintf(stderr,"Cannot locate test server\n");
+ exit(0);
+ }
+
+ strcpy(url,URL);
+ snprintf(url,sizeof(url),URL,svc);
for (idim=0; idim<5; idim++) {
start[idim] = 0;
@@ -85,135 +120,136 @@ main()
printf(" \n");
printf("********************\n");
- printf("open URL %s\n",URL);
+ printf("open URL %s\n",url);
printf(" \n");
- ncstatus = nc_open(URL, NC_NOWRITE, &ncid);
+ ncstatus = nc_open(url, NC_NOWRITE, &ncid);
if(ncstatus != NC_NOERR) {
- fprintf(stderr,"Could not open: %s; server may be down; test ignored\n",URL);
+ fprintf(stderr,"Could not open: %s; server may be down; test ignored\n",url);
exit(0);
}
- ncstatus = nc_inq_varid(ncid, "lon_rho", &varid);
+ ncstatus = nc_inq_varid(ncid, VAR1, &varid);
ndim=2;
-if(verbose) {
+#ifdef VERBOSE
printf(" \n");
printf("********************\n");
- printf("Read lon_rho data w/o strides\n");
+ printf("Read %s data w/o strides\n",VAR1);
printf(" \n");
-}
+#endif
start[0] = 0;
start[1] = 0;
start[2] = 0;
start[3] = 0;
- count[0] = 336;
- count[1] = 896;
+ count[0] = XSIZE;
+ count[1] = YSIZE;
stride[0] = 1;
stride[1] = 1;
-if(verbose) {
+#ifdef VERBOSE
for (idim=0; idim<ndim; idim++)
printf("start[%1d]=%3lu count[%1d]=%3lu stride[%1d]=%3lu\n",
idim,start[idim],idim,count[idim],idim,stride[idim]);
-}
+#endif
ncstatus = nc_get_vars_float (ncid, varid, start, count, stride, (float*) dat);
-if(verbose) {
+#ifdef VERBOSE
printf(" \n");
printf("********************\n");
- printf("Print some of lon_rho\n");
+ printf("Print some of %s\n",VAR1);
printf(" \n");
for (i=0; i<10; i++)
- printf("lon_rho[%d] = %f\n",i,dat[i]);
+ printf("%s[%d] = %f\n",VAR1,i,dat[i]);
printf(" \n");
- for (i=301045; i<301055; i++)
- printf("lon_rho[%d] = %f\n",i,dat[i]);
+
+ for (i=(nelems-11); i<(nelems-1); i++)
+ printf("%s[%d] = %f\n",VAR1,i,dat[i]);
printf(" \n");
-}
+#endif
memset((void*)dat,0,sizeof(dat));
/* Read a second variable */
- ncstatus = nc_inq_varid(ncid, "lat_rho", &varid);
+ ncstatus = nc_inq_varid(ncid, VAR2, &varid);
ndim=2;
-if(verbose) {
+#ifdef VERBOSE
printf(" \n");
printf("********************\n");
- printf("Read lat_rho data w/o strides\n");
+ printf("Read %s data w/o strides\n",VAR2);
printf(" \n");
-}
+#endif
start[0] = 0;
start[1] = 0;
start[2] = 0;
start[3] = 0;
- count[0] = 336;
- count[1] = 896;
+ count[0] = XSIZE;
+ count[1] = YSIZE;
stride[0] = 1;
stride[1] = 1;
-if(verbose) {
+#ifdef VERBOSE
for (idim=0; idim<ndim; idim++)
printf("start[%d]=%3lu count[%d]=%3lu stride[%d]=%3lu\n",
idim, start[idim], idim, count[idim], idim, stride[idim]);
-}
+#endif
ncstatus = nc_get_vars_float (ncid, varid, start, count, stride, (float*) dat);
-if(verbose) {
+#ifdef VERBOSE
printf(" \n");
printf("********************\n");
- printf("Print some of lat_rho\n");
+ printf("Print some of %s\n",VAR2);
printf(" \n");
for (i=0; i<10; i++)
- printf("lat_rho[%d] = %f\n",i,dat[i]);
+ printf("%s[%d] = %f\n",VAR2,i,dat[i]);
printf(" \n");
printf(" \n");
- for (i=301045; i<301055; i++)
- printf("lon_rho[%d] = %f\n",i,dat[i]);
+ for (i=(nelems-11); i<(nelems-1); i++)
+ printf("%s[%d] = %f\n",VAR2,i,dat[i]);
printf(" \n");
-}
+#endif
memset((void*)dat,0,sizeof(dat));
/* close and reopen the dataset, then the below read is correct */
-if(verbose) {
+#ifdef VERBOSE
printf(" \n");
printf("********************\n");
printf("Close and reopen the dataset\n");
-}
+#endif
ncstatus = nc_close (ncid);
- ncstatus = nc_open(URL, NC_NOWRITE, &ncid);
+ ncstatus = nc_open(url, NC_NOWRITE, &ncid);
/* ----------------------------------------------------- */
/* Read a subset of the data with strides */
- ncstatus = nc_inq_varid(ncid, "lon_rho", &varid);
+ ncstatus = nc_inq_varid(ncid, VAR1, &varid);
-if(verbose) {
+#ifdef VERBOSE
printf(" \n");
printf("********************\n");
- printf("Read a subset of lon_rho data with strides\n");
+ printf("Read a subset of %s data with strides\n",VAR1);
printf(" \n");
-}
+#endif
start[0] = 250;
start[1] = 704;
@@ -224,38 +260,39 @@ if(verbose) {
stride[0] = 2;
stride[1] = 4;
-if(verbose) {
+#ifdef VERBOSE
for (idim=0; idim<ndim; idim++)
printf("start[%1d]=%3lu count[%1d]=%3lu stride[%1d]=%3lu\n",
idim,start[idim],idim,count[idim],idim,stride[idim]);
-}
+#endif
memset((void*)sdat,0,sizeof(sdat));
ncstatus = nc_get_vars_float (ncid, varid, start, count, stride, (float*) sdat);
printf("status = %d\n", ncstatus);
- /* Verify that all read values are 67 <= n < 68 */
+ /* Verify that all read values are 50 <= n < 51 */
for (i=0; i<10; i++) {
- if(!(sdat[i] <= -67 && sdat[i] > -68)) {
- printf("lon_rho[%d] = %f\n",i,sdat[i]);
+ if(sdat[i] <= 50.0 || sdat[i] > 51.0) {
+ printf("Out of range: %s[%d] = %f\n",VAR1, i,sdat[i]);
pass = 0;
}
}
-if(verbose) {
+
+#ifdef VERBOSE
printf(" \n");
printf("********************\n");
- printf("Print values read. They should all be -67.xxxx \n");
+ printf("Print values read. They should all be 50.xxxx \n");
printf(" \n");
for (i=0; i<10; i++)
- printf("lon_rho[%d] = %f\n",i,sdat[i]);
-}
+ printf("%s[%d] = %f\n",VAR1,i,sdat[i]);
+#endif
ncstatus = nc_close (ncid);
if(!pass) {
- printf("*** FAIL: lon_rho value out of range.\n");
+ printf("*** FAIL: %s value out of range.\n",VAR1);
exit(1);
}
diff --git a/ncdap_test/test_partvar.c b/ncdap_test/test_partvar.c
index d208bd3..16a06b4 100644
--- a/ncdap_test/test_partvar.c
+++ b/ncdap_test/test_partvar.c
@@ -21,7 +21,7 @@ variables:
*/
#define PARAMS ""
-#define DTSTEST "/dts/ingrid"
+#define DTSTEST "/ingrid"
#define VAR "v3H"
#define ISTA 35
#define IZ 44
@@ -99,7 +99,15 @@ main()
const char* svc = NULL;
/* Find Test Server */
- svc = NC_findtestserver("dts");
+ svc = getenv("DTSTESTSERVER");
+ if(svc != NULL) {
+ const char* dtstestserver[2];
+ dtstestserver[0] = svc;
+ dtstestserver[1] = NULL;
+ svc = NC_findtestserver("dts",dtstestserver);
+ } else
+ svc = NC_findtestserver("dts",NULL);
+
if(svc == NULL) {
fprintf(stderr,"Cannot locate test server\n");
exit(0);
diff --git a/ncdap_test/test_partvar2.c b/ncdap_test/test_partvar2.c
index 95d0b9d..973a5e3 100644
--- a/ncdap_test/test_partvar2.c
+++ b/ncdap_test/test_partvar2.c
@@ -26,7 +26,7 @@ variables:
double PolarGrid.Data\\ Fields.Spectra(Bands\:PolarGrid, YDim\:PolarGrid, XDim\:PolarGrid) ;
*/
-#define DTSTEST "/dts/test.GridFile"
+#define DTSTEST "/test.GridFile"
#define PARAMS ""
#define VAR "UTMGrid.Data Fields.Vegetation"
@@ -88,7 +88,15 @@ main()
char url[4096];
/* Find Test Server */
- svc = NC_findtestserver("dts");
+ svc = getenv("DTSTESTSERVER");
+ if(svc != NULL) {
+ const char* testserver[2];
+ testserver[0] = svc;
+ testserver[1] = NULL;
+ svc = NC_findtestserver("dts",testserver);
+ } else
+ svc = NC_findtestserver("dts",NULL);
+
if(svc == NULL) {
fprintf(stderr,"Cannot locate test server\n");
exit(1);
diff --git a/ncdap_test/test_varm3.c b/ncdap_test/test_varm3.c
index 960d2a2..353f1eb 100644
--- a/ncdap_test/test_varm3.c
+++ b/ncdap_test/test_varm3.c
@@ -26,7 +26,7 @@ netcdf-4.1-beta2-snapshot2009091100
#undef DEBUG
-#define TESTPATH "/thredds/dodsC/testdods/coads_climatology.nc"
+#define TESTPATH "/dodsC/testdods/coads_climatology.nc"
#define VAR "SST"
static float expected_stride1[12] = {
@@ -80,6 +80,7 @@ main()
int idim;
float dat[20];
char url[4096];
+ char* svc;
#ifdef STANDALONE
int ndim;
#endif
@@ -90,16 +91,22 @@ main()
oc_logopen(NULL);
#endif
- {
- /* Find Test Server */
- const char* svc = NC_findtestserver("thredds");
- if(svc == NULL) {
- fprintf(stderr,"Cannot locate test server\n");
- exit(0);
- }
- strcpy(url,svc);
- strcat(url,TESTPATH);
+ /* Find Test Server */
+ svc = getenv("THREDDSTESTSERVER");
+ if(svc != NULL) {
+ const char* testserver[2];
+ testserver[0] = svc;
+ testserver[1] = NULL;
+ svc = NC_findtestserver("thredds",testserver);
+ } else
+ svc = NC_findtestserver("thredds",NULL);
+
+ if(svc == NULL) {
+ fprintf(stderr,"Cannot locate test server\n");
+ exit(0);
}
+ strcpy(url,svc);
+ strcat(url,TESTPATH);
printf("*** Test: varm on URL: %s\n",url);
@@ -142,7 +149,7 @@ main()
#endif
check(err = nc_get_varm_float (ncid, varid, start, count, stride, imap,(float*) dat),__FILE__,__LINE__);
-// check(err = nc_get_vara_float (ncid, varid, start, count, (float*) dat),__FILE__,__LINE__);
+ /* check(err = nc_get_vara_float (ncid, varid, start, count, (float*) dat),__FILE__,__LINE__); */
#ifdef STANDALONE
printf("varm: %s =",VAR);
@@ -253,5 +260,3 @@ main()
return fail;
}
-
-
diff --git a/ncdap_test/testauth.sh b/ncdap_test/testauth.sh
new file mode 100755
index 0000000..afee4e0
--- /dev/null
+++ b/ncdap_test/testauth.sh
@@ -0,0 +1,197 @@
+#!/bin/sh
+#set -x
+
+#NOEMBED=1
+#NOLOCAL=1
+#NOHOME=1
+
+SHOW=1
+#DBG=1
+#GDB=1
+
+CMP=1
+
+WD=`pwd`
+
+# if this is part of a distcheck action, then this script
+# will be executed in a different directory
+# than the one containing it; so capture the path to this script
+# as the location of the source directory.
+
+# capture the build directory
+builddir=`pwd`/..
+if test "x$TOPSRCDIR" != x ; then
+srcdir="$TOPSRCDIR/ncdap_test"
+else
+srcdir=`dirname $0`
+fi
+# canonical
+cd $srcdir
+srcdir=`pwd`
+
+# Hack for CYGWIN
+if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then
+ srcdir=`echo $srcdir | sed 's/\/c\//c:\//g'`
+ builddir=`echo $builddir | sed 's/\/c\//c:\//g'`
+fi
+cd ${builddir}/ncdap_test
+
+NETRCFILE=$WD/test_auth_netrc
+# This is the control variable
+NETRC=$NETRCFILE
+COOKIES="${WD}/test_auth_cookies"
+RC=.ocrc
+EXPECT=$srcdir/expected3/testData.nc.dmp
+OCLOGFILE=stderr
+
+
+# Major parameters
+
+BASICCOMBO="tiggeUser:tigge"
+URLSERVER="remotetest.unidata.ucar.edu"
+URLPATH="thredds/dodsC/restrict/testData.nc"
+
+# See if we need to override
+if test "x$URS" != "x" ; then
+#https://54.86.135.31/opendap/data/nc/fnoc1.nc.dds
+URLSERVER="54.86.135.31"
+URLPATH="opendap/data/nc/fnoc1.nc"
+BASICCOMBO="$URS"
+NOEMBED=1
+NETRC=$NETRCFILE
+CMP=
+else
+NETRC=
+fi
+
+if test "x$CMP" = x1 ; then SHOW= ; else SHOW=1; fi
+if test "x$DBG" = x1 ; then SHOW=1; fi
+
+# Split the combo
+BASICUSER=`echo $BASICCOMBO | cut -d: -f1`
+BASICPWD=`echo $BASICCOMBO | cut -d: -f2`
+
+NCDUMP=$builddir/ncdump/ncdump
+
+LOCALRC=./$RC
+HOMERC=${HOME}/$RC
+HOMERC=`echo "$HOMERC" | sed -e "s|//|/|g"`
+SPECRC=$TEMP
+if test "x$TEMP" = x ; then
+ SPECRC="/tmp"
+fi
+SPECRC="$SPECRC/temprc"
+
+function createrc {
+ if test "x$1" = x ; then
+ echo "createrc: no rc file specified"
+ else
+ rm -f $1
+ RCP=$1
+ NRC=$2
+ echo "Creating rc file $RCP"
+ if test "x${DBG}" != x ; then
+ echo "HTTP.VERBOSE=1" >>$RCP
+ fi
+ echo "HTTP.COOKIEJAR=${COOKIES}" >>$RCP
+ if test "x${URS}" = x ; then
+ echo "HTTP.CREDENTIALS.USERPASSWORD=${BASICCOMBO}" >>$RCP
+ fi
+ if test "x${NRC}" != x ; then
+ echo "HTTP.NETRC=${NRC}" >>$RCP
+ fi
+ fi
+}
+
+function createnetrc {
+ if test "x$1" != x ; then
+ rm -f $1
+ echo "Creating netrc file $1"
+ echo "machine uat.urs.earthdata.nasa.gov login $BASICUSER password $BASICPWD" >>$1
+# echo "machine 54.86.135.31 login $BASICUSER password $BASICPWD" >>$1
+ fi
+}
+
+function reset {
+ for f in ./$RC $HOME/$RC $SPECRC $COOKIES $NETRC ; do
+ if test "x$DBG" = x1 ; then echo "Deleting $f"; fi
+ rm -f ${f}
+ if test -f ${f}.save ; then
+ if test "x$DBG" = x1 ; then echo "restoring old ${f}" ; fi
+ cp ${f}.save ${f}
+ fi
+ done
+ # unconditional
+ rm -f ./tmp
+}
+
+function save {
+ for f in ./$RC $HOME/$RC $SPECRC $COOKIES $NETRC ; do
+ if test -f $f ; then
+ if test -f ${f}.save ; then
+ ignore=1
+ else
+ if test "x$DBG" = x1 ; then echo "saving $f"; fi
+ cp ${f} ${f}.save
+ fi
+ fi
+ done
+}
+
+function compare {
+ if test "x$CMP" = x1 ; then
+ if diff -w ./tmp $EXPECT ; then
+ echo "***Pass"
+ else
+ echo "***FAIL"
+ pass=1
+ fi
+ fi
+}
+
+# Invoke ncdump to extract the URL
+function doit {
+ reset
+ createnetrc $2
+ createrc $1 $2
+ echo "command: ${NCDUMP} -h $URL"
+ ${NCDUMP} -h "$URL" >./tmp
+ if test "x$CMP" = x1 ; then compare ; fi
+ if test "x${SHOW}" = x1 ; then cat ./tmp ; fi
+}
+
+pass=0
+
+# Assemble the ncdump command
+if test "x$GDB" = x1 ; then
+ NCDUMP="gdb --args $NCDUMP"
+fi
+
+# Initialize
+save
+reset
+
+if test "x$NOEMBED" != x1 ; then
+echo "***Testing rc file with embedded user:pwd"
+URL="https://${BASICCOMBO}@${URLSERVER}/$URLPATH"
+# Invoke ncdump to extract the URL
+doit
+fi
+
+URL="https://${URLSERVER}/$URLPATH"
+if test "x$NOLOCAL" != x1 ; then
+ URL="https://${URLSERVER}/$URLPATH"
+ echo "***Testing rc file in local directory"
+ doit $LOCALRC $NETRC
+fi
+
+if test "x$NOHOME" != x1 ; then
+ URL="https://${URLSERVER}/$URLPATH"
+ echo "***Testing rc file in home directory"
+ doit $HOMERC $NETRC
+fi
+
+#cleanup
+reset
+
+exit $pass
diff --git a/ncdap_test/testdata3/Makefile.in b/ncdap_test/testdata3/Makefile.in
new file mode 100644
index 0000000..e6f9b01
--- /dev/null
+++ b/ncdap_test/testdata3/Makefile.in
@@ -0,0 +1,580 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2007, see the COPYRIGHT file for more information.
+
+# This is to include the libnc-dap test comparison files
+
+# $Id: Makefile.am,v 1.7 2009/05/30 21:28:53 dmh Exp $
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = ncdap_test/testdata3
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+synth1.das synth1.dds synth1.dods \
+synth2.das synth2.dds synth2.dods \
+synth3.das synth3.dds synth3.dods \
+synth4.das synth4.dds synth4.dods \
+synth5.das synth5.dds synth5.dods \
+synth6.das synth6.dds synth6.dods \
+synth7.das synth7.dds synth7.dods \
+synth8.das synth8.dds synth8.dods \
+synth9.das synth9.dds synth9.dods \
+synth10.das synth10.dds synth10.dods \
+123bears.nc.das 123bears.nc.dds 123bears.nc.dods \
+123.nc.das 123.nc.dds 123.nc.dods \
+1990-S1700101.HDF.WVC_Lat.das 1990-S1700101.HDF.WVC_Lat.dds 1990-S1700101.HDF.WVC_Lat.dods \
+1998-6-avhrr.dat.das 1998-6-avhrr.dat.dds 1998-6-avhrr.dat.dods \
+b31.das b31.dds b31.dods \
+b31a.das b31a.dds b31a.dods \
+bears.nc.das bears.nc.dds bears.nc.dods \
+ber-2002-10-01.nc.das ber-2002-10-01.nc.dds ber-2002-10-01.nc.dods \
+ceopL2AIRS2-2.nc.das ceopL2AIRS2-2.nc.dds ceopL2AIRS2-2.nc.dods \
+ceopL2AIRS2.nc.das ceopL2AIRS2.nc.dds ceopL2AIRS2.nc.dods \
+D1.das D1.dds D1.dods \
+data.nc.das data.nc.dds data.nc.dods \
+Drifters.das Drifters.dds Drifters.dods \
+EOSDB.das EOSDB.dds EOSDB.dods \
+fnoc1.nc.das fnoc1.nc.dds fnoc1.nc.dods \
+in1.nc.das in1.nc.dds in1.nc.dods \
+in_2.nc.das in_2.nc.dds in_2.nc.dods \
+ingrid.das ingrid.dds ingrid.dods \
+in.nc.das in.nc.dds in.nc.dods \
+in_no_three_double_dmn.nc.das in_no_three_double_dmn.nc.dds in_no_three_double_dmn.nc.dods \
+in_v.nc.das in_v.nc.dds in_v.nc.dods \
+nestedDAS.das nestedDAS.dds nestedDAS.dods \
+NestedSeq.das NestedSeq.dds NestedSeq.dods \
+NestedSeq2.das NestedSeq2.dds NestedSeq2.dods \
+OverideExample.das OverideExample.dds OverideExample.dods \
+pbug0001b.das pbug0001b.dds pbug0001b.dods \
+saco1.nc.das saco1.nc.dds saco1.nc.dods \
+SimpleDrdsExample.das SimpleDrdsExample.dds SimpleDrdsExample.dods \
+test.01.das test.01.dds test.01.dods \
+test.02.das test.02.dds test.02.dods \
+test.03.das test.03.dds test.03.dods \
+test.04.das test.04.dds test.04.dods \
+test.05.das test.05.dds test.05.dods \
+test.06.das test.06.dds test.06.dods \
+test.06a.das test.06a.dds test.06a.dods \
+test.07.das test.07.dds test.07.dods \
+test.07a.das test.07a.dds test.07a.dods \
+test.21.das test.21.dds test.21.dods \
+test.22.das test.22.dds test.22.dods \
+test.23.das test.23.dds test.23.dods \
+test.31.das test.31.dds test.31.dods \
+test.32.das test.32.dds test.32.dods \
+test.50.das test.50.dds test.50.dods \
+test.53.das test.53.dds test.53.dods \
+test.55.das test.55.dds test.55.dods \
+test.56.das test.56.dds test.56.dods \
+test.57.das test.57.dds test.57.dods \
+test.66.das test.66.dds test.66.dods \
+test.67.das test.67.dds test.67.dods \
+test.68.das test.68.dds test.68.dods \
+test.69.das test.69.dds test.69.dods \
+test.an1.das test.an1.dds test.an1.dods \
+test.dfp1.das test.dfp1.dds test.dfp1.dods \
+test.dfr1.das test.dfr1.dds test.dfr1.dods \
+test.dfr2.das test.dfr2.dds test.dfr2.dods \
+test.dfr3.das test.dfr3.dds test.dfr3.dods \
+testfile.nc.das testfile.nc.dds testfile.nc.dods \
+test.gr1.das test.gr1.dds test.gr1.dods \
+test.gr2.das test.gr2.dds test.gr2.dods \
+test.gr3.das test.gr3.dds test.gr3.dods \
+test.gr4.das test.gr4.dds test.gr4.dods \
+test.gr5.das test.gr5.dds test.gr5.dods \
+test.nc.das test.nc.dds test.nc.dods \
+test.PointFile.das test.PointFile.dds test.PointFile.dods \
+test.sds1.das test.sds1.dds test.sds1.dods \
+test.sds2.das test.sds2.dds test.sds2.dods \
+test.sds3.das test.sds3.dds test.sds3.dods \
+test.sds4.das test.sds4.dds test.sds4.dods \
+test.sds5.das test.sds5.dds test.sds5.dods \
+test.sds6.das test.sds6.dds test.sds6.dods \
+test.sds7.das test.sds7.dds test.sds7.dods \
+test.SwathFile.das test.SwathFile.dds test.SwathFile.dods \
+test.vs1.das test.vs1.dds test.vs1.dods \
+test.vs2.das test.vs2.dds test.vs2.dods \
+test.vs3.das test.vs3.dds test.vs3.dods \
+test.vs4.das test.vs4.dds test.vs4.dods \
+test.vs5.das test.vs5.dds test.vs5.dods \
+text.nc.das text.nc.dds text.nc.dods \
+whoi.das whoi.dds whoi.dods \
+CMakeLists.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdap_test/testdata3/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdap_test/testdata3/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdap_test/testurl.sh b/ncdap_test/testurl.sh
new file mode 100755
index 0000000..c9f88f7
--- /dev/null
+++ b/ncdap_test/testurl.sh
@@ -0,0 +1,110 @@
+#!/bin/sh
+#set -x
+
+#NOP=1
+#NOS=1
+#NOB=1
+
+#SHOW=1
+#DBG=1
+#GDB=1
+
+# if this is part of a distcheck action, then this script
+# will be executed in a different directory
+# than the one containing it; so capture the path to this script
+# as the location of the source directory.
+
+# capture the build directory
+# Do a hack to remove e.g. c: for CYGWIN
+builddir=`pwd`/..
+if test "x$TOPSRCDIR" != x ; then
+srcdir="$TOPSRCDIR/ncdap_test"
+else
+srcdir=`dirname $0`
+fi
+# canonical
+cd $srcdir
+srcdir=`pwd`
+
+# Hack for CYGWIN
+if [ `uname | cut -d "_" -f 1` = "MINGW32" ]; then
+ srcdir=`echo $srcdir | sed 's/\/c\//c:\//g'`
+ builddir=`echo $builddir | sed 's/\/c\//c:\//g'`
+fi
+cd ${builddir}/ncdap_test
+
+OCLOGFILE=stderr
+if test "x$DBG" = x1 ; then
+SHOW=1
+fi
+
+NCDUMP=$builddir/ncdump/ncdump
+
+URL="http://remotetest.unidata.ucar.edu/dts/test.03"
+
+PREFIX="[log][show=fetch]"
+SUFFIX="log&show=fetch"
+BOTHP="[log][show=fetch]"
+BOTHS="noprefetch&fetch=disk"
+
+locreset () {
+ rm -f ./tmp ./errtmp
+}
+
+buildurl () {
+ front="$1"
+ back="$2"
+ url="${front}${URL}"
+ if test "x$back" != x ; then
+ url="${url}#${back}"
+ fi
+}
+
+pass=1
+
+if test "x$GDB" = x1 ; then
+NCDUMP="gdb --args $NCDUMP"
+fi
+
+# Initialize
+locreset
+
+if test "x$NOP" != x1 ; then
+echo "***Testing url prefix parameters"
+buildurl $PREFIX ""
+# Invoke ncdump to extract the URL
+echo "command: ${NCDUMP} -h $url"
+${NCDUMP} -h "$url" >./tmp 2> ./errtmp
+if test "x${SHOW}" = x1 ; then cat ./tmp ; fi
+fi
+
+locreset
+if test "x$NOS" != x1 ; then
+echo "***Testing url suffix parameters"
+buildurl "" $SUFFIX
+# Invoke ncdump to extract the URL
+echo "command: ${NCDUMP} -h $url"
+${NCDUMP} -h "$url" >./tmp 2> ./errtmp
+if test "x${SHOW}" = x1 ; then cat ./tmp ; fi
+fi
+
+locreset
+if test "x$NOB" != x1 ; then
+echo "***Testing url prefix+suffix parameters"
+buildurl $BOTHP $BOTHS
+# Invoke ncdump to extract the URL
+echo "command: ${NCDUMP} -h $url"
+${NCDUMP} -h "$url" >./tmp 2> ./errtmp
+if test "x${SHOW}" = x1 ; then cat ./tmp ; fi
+fi
+
+locreset
+
+if test "x$pass" = x0 ; then
+ echo "***FAIL"
+ exit 1
+fi
+echo "***PASS"
+exit 0
+
+
diff --git a/ncdap_test/tst_formatx.sh b/ncdap_test/tst_formatx.sh
index 235888c..31883ac 100755
--- a/ncdap_test/tst_formatx.sh
+++ b/ncdap_test/tst_formatx.sh
@@ -8,12 +8,12 @@ echo "*** Testing extended file format output."
set -e
# Figure our dst server
-SVC=`./nctestserver dts`
-if test "x$SVC" = "x" ; then
-echo "cannot locate test server"
+DTS=`./nctestserver dts ${DTSTESTSERVER}`
+if test "x$DTS" = "x" ; then
+echo "cannot locate test server for dts"
exit
fi
-URL="$SVC/dts/test.03"
+URL="$DTS/test.03"
ECODE=0
echo "Test extended format output for a DAP2 file"
diff --git a/ncdap_test/tst_ncdap.sh b/ncdap_test/tst_ncdap.sh
index 7e978e6..7669db5 100755
--- a/ncdap_test/tst_ncdap.sh
+++ b/ncdap_test/tst_ncdap.sh
@@ -67,6 +67,7 @@ fi
rm -fr ${RESULTSDIR}
mkdir "${RESULTSDIR}"
+rm -f ./.dodsrc ./.ocrc
passcount=0
xfailcount=0
failcount=0
@@ -76,8 +77,6 @@ echo " Base URL: ${TESTURL}"
echo " Client Parameters: ${PARAMS}"
cd ${RESULTSDIR}
-rm -f ./.dodsrc
-echo '#DODSRC' >./.dodsrc
for x in ${TESTSET} ; do
url="${PARAMS}${TESTURL}/$x"
diff --git a/ncdap_test/tst_remote.sh b/ncdap_test/tst_remote.sh
index d34922a..1840626 100755
--- a/ncdap_test/tst_remote.sh
+++ b/ncdap_test/tst_remote.sh
@@ -6,12 +6,11 @@ leakcheck=0
timing=0
# Figure our dst server
-SVC=`./nctestserver dts`
-if test "x$SVC" = "x" ; then
-echo "cannot locate test server"
+DTS=`./nctestserver dts ${DTSTESTSERVER}`
+if test "x$DTS" = "x" ; then
+echo "cannot locate test server for dts"
exit
fi
-DTS="$SVC/dts"
PARAMS="[log]"
#PARAMS="${PARAMS}[show=fetch]"
@@ -245,9 +244,8 @@ for i in $WHICHTESTS ; do
*) echo "Unknown which test: $i" ;;
esac
+rm -f ./.dodsrc ./.ocrc
cd ${RESULTSDIR}
-rm -f ./.dodsrc
-echo '#DODSRC' >./.dodsrc
for t in ${TESTSET} ; do
# see if we are using constraints
diff --git a/ncdap_test/tst_remote3.sh b/ncdap_test/tst_remote3.sh
index 91bbbd3..10620ad 100755
--- a/ncdap_test/tst_remote3.sh
+++ b/ncdap_test/tst_remote3.sh
@@ -6,7 +6,6 @@
# as the location of the source directory.
srcdir=`dirname $0`
-
# compute the build directory
builddir=`pwd`/..
# Hack for CYGWIN
diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt
index 732dfc4..9a3364a 100644
--- a/ncdump/CMakeLists.txt
+++ b/ncdump/CMakeLists.txt
@@ -140,15 +140,15 @@ SET(MAN_FILES nccopy.1 ncdump.1)
FILE(GLOB COPY_FILES ${CMAKE_BINARY_DIR}/ncgen/*.nc ${CMAKE_BINARY_DIR}/nc_test4/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.ncml ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.1)
FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE)
-ADD_SUBDIRECTORY(cdl4)
-ADD_SUBDIRECTORY(expected4)
+ADD_SUBDIRECTORY(cdl)
+ADD_SUBDIRECTORY(expected)
## Specify files to be distributed by 'make dist'
FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh)
-SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} test0.cdl ref_ctest1_nc4.cdl ref_ctest1_nc4c.cdl ref_tst_solar_1.cdl ref_tst_solar_2.cdl ref_tst_small.cdl tst_ncml.cdl ref1.ncml ref_tst_group_data.cdl ref_tst_enum_data.cdl ref_tst_opaque_data.cdl ref_tst_string_data.cdl ref_tst_vlen_data.cdl ref_tst_comp.cdl ref_tst_unicode.cdl ref_tst_nans.cdl small.cdl small2.cdl ref_tst_utf8.cdl ref_tst_fillbug.cdl tst_calendars.cdl ref_times.cdl ref_tst_special_atts.cdl ref_tst_noncoord.cdl ref_tst_compounds2.n [...]
+SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} test0.cdl ref_ctest1_nc4.cdl ref_ctest1_nc4c.cdl ref_tst_solar_1.cdl ref_tst_solar_2.cdl ref_tst_small.cdl tst_ncml.cdl ref1.ncml ref_tst_group_data.cdl ref_tst_enum_data.cdl ref_tst_opaque_data.cdl ref_tst_string_data.cdl ref_tst_vlen_data.cdl ref_tst_comp.cdl ref_tst_unicode.cdl ref_tst_nans.cdl small.cdl small2.cdl ref_tst_utf8.cdl ref_tst_fillbug.cdl tst_calendars.cdl ref_times.cdl ref_tst_special_atts.cdl ref_tst_noncoord.cdl ref_tst_compounds2.n [...]
ADD_EXTRA_DIST("${CUR_EXTRA_DIST}")
-SET(CLEANFILES test0.nc test1.cdl test1.nc test2.cdl ctest1.cdl ctest.c ctest64.c ctest0.nc ctest0_64.nc c1.cdl c1_4.cdl ctest1_64.cdl c0.nc c0_4.nc small.nc small2.nc c0tmp.nc c1.ncml utf8.cdl utf8_64.cdl utf8.nc utf8_64.nc tmp.cdl tst_vlen_data.nc tst_utf8.nc tst_special_atts.nc tst_unicode.nc tst_solar_2.nc tst_string_data.nc tst_calendars.nc tst_nans.nc tst_opaque_data.nc tst_solar_cmp.nc tst_enum_data.nc tst_solar_1.nc tst_mslp_64.nc tst_mslp.nc tst_comp2.nc tst_ncml.nc tst_fillbug [...]
+SET(CLEANFILES test0.nc test1.cdl test1.nc test2.cdl ctest1.cdl ctest.c ctest64.c ctest0.nc ctest0_64.nc c1.cdl c1_4.cdl ctest1_64.cdl c0.nc c0_4.nc small.nc small2.nc c0tmp.nc c1.ncml utf8.cdl utf8_64.cdl utf8.nc utf8_64.nc tmp.cdl tst_vlen_data.nc tst_utf8.nc tst_special_atts.nc tst_unicode.nc tst_solar_2.nc tst_string_data.nc tst_calendars.nc tst_nans.nc tst_opaque_data.nc tst_solar_cmp.nc tst_enum_data.nc tst_solar_1.nc tst_mslp_64.nc tst_mslp.nc tst_bug321.nc tst_comp2.nc tst_ncml. [...]
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")
diff --git a/ncdump/Makefile.am b/ncdump/Makefile.am
index e3fe39b..1733372 100644
--- a/ncdump/Makefile.am
+++ b/ncdump/Makefile.am
@@ -6,12 +6,12 @@
# Put together AM_CPPFLAGS and AM_LDFLAGS.
include $(top_srcdir)/lib_flags.am
-LDADD = ${top_builddir}/liblib/libnetcdf.la
+LDADD = ${top_builddir}/liblib/libnetcdf.la
TESTS_ENVIRONMENT=CC=${CC}
# This is the program we're building, and it's sources.
-bin_PROGRAMS = ncdump
+bin_PROGRAMS = ncdump
ncdump_SOURCES = ncdump.c vardata.c dumplib.c indent.c nctime0.c \
ncdump.h vardata.h dumplib.h indent.h isnan.h nctime0.h cdl.h \
utils.h utils.c nciter.h nciter.c nccomps.h
@@ -90,7 +90,7 @@ small2.nc c0tmp.nc c1.ncml utf8.cdl utf8_64.cdl utf8.nc utf8_64.nc \
tmp.cdl tst_vlen_data.nc tst_utf8.nc tst_special_atts.nc \
tst_unicode.nc tst_solar_2.nc tst_string_data.nc tst_calendars.nc \
tst_nans.nc tst_opaque_data.nc tst_solar_cmp.nc tst_enum_data.nc \
-tst_solar_1.nc tst_mslp_64.nc tst_mslp.nc tst_comp2.nc tst_ncml.nc \
+tst_solar_1.nc tst_mslp_64.nc tst_mslp.nc tst_bug321.nc tst_comp2.nc tst_ncml.nc \
tst_fillbug.nc tst_group_data.nc tst_small.nc tst_comp.nc \
tst_unicode.cdl tst_group_data.cdl tst_compounds2.cdl tst_comp.cdl \
tst_enum_data.cdl tst_small.cdl tst_times.cdl tst_solar_2.cdl \
@@ -102,7 +102,8 @@ tmp_subset.cdl tst_inflated4.nc tst_deflated.nc tst_chunking.nc tmp*.nc \
tst_charfill.nc tmp_tst_charfill.cdl \
iter.* \
tst_nc_test_netcdf4_4_0.cdl tst_mud4.nc tst_mud4.cdl tst_mud4-bc.cdl \
-tst_ncf213.cdl tst_ncf213.nc tst_h_scalar.cdl tst_h_scalar.nc
+tst_ncf213.cdl tst_ncf213.nc tst_h_scalar.cdl tst_h_scalar.nc \
+tst_mud4_chars.cdl tst_mud4_chars.nc
# These files all have to be included with the distribution.
EXTRA_DIST = run_tests.sh tst_64bit.sh tst_output.sh test0.cdl \
@@ -116,20 +117,21 @@ ref_tst_utf8.cdl ref_tst_fillbug.cdl tst_fillbug.sh tst_calendars.cdl \
tst_calendars.sh ref_times.cdl ref_tst_special_atts.cdl \
ref_tst_noncoord.cdl ref_tst_compounds2.nc ref_tst_compounds2.cdl \
ref_tst_compounds3.nc ref_tst_compounds3.cdl ref_tst_compounds4.nc \
-ref_tst_compounds4.cdl ref_tst_group_data_v23.cdl tst_mslp.cdl \
+ref_tst_compounds4.cdl ref_tst_group_data_v23.cdl tst_mslp.cdl tst_bug321.cdl \
ref_tst_format_att.cdl ref_tst_format_att_64.cdl tst_nccopy3.sh \
tst_nccopy4.sh ref_nc_test_netcdf4_4_0.nc run_back_comp_tests.sh \
ref_nc_test_netcdf4.cdl ref_tst_special_atts3.cdl tst_brecs.cdl \
ref_tst_grp_spec0.cdl ref_tst_grp_spec.cdl tst_grp_spec.sh \
ref_tst_charfill.cdl tst_charfill.cdl tst_charfill.sh \
tst_iter.sh tst_mud.sh ref_tst_mud4.cdl ref_tst_mud4-bc.cdl \
-ref_tst_ncf213.cdl cdl4/ref_tst_h_scalar.cdl tst_h_scalar.sh \
+ref_tst_mud4_chars.cdl \
+ref_tst_ncf213.cdl tst_h_scalar.sh \
tst_formatx3.sh tst_formatx4.sh \
CMakeLists.txt XGetopt.c tst_bom.sh
-# NCGEN4 additions
-SUBDIRS=cdl4 expected4
-EXTRA_DIST += tst_ncgen4_shared.sh tst_ncgen4.sh tst_ncgen4_classic.sh \
+# CDL files and Expected results
+SUBDIRS=cdl expected
+EXTRA_DIST += tst_ncgen_shared.sh tst_ncgen4.sh tst_ncgen4_classic.sh \
tst_ncgen4_diff.sh tst_ncgen4_cycle.sh ref_ctest.c ref_ctest64.c \
ctest.c ctest64.c
diff --git a/ncdump/Makefile.in b/ncdump/Makefile.in
new file mode 100644
index 0000000..0053b89
--- /dev/null
+++ b/ncdump/Makefile.in
@@ -0,0 +1,1909 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+# This file builds and runs the ncdump program.
+
+# $Id: Makefile.am,v 1.147 2010/05/29 00:50:39 dmh Exp $
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+bin_PROGRAMS = ncdump$(EXEEXT) nccopy$(EXEEXT)
+ at BUILD_TESTSETS_TRUE@check_PROGRAMS = rewrite-scalar$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@ ctest$(EXEEXT) ctest64$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@ ncdump$(EXEEXT) tst_utf8$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@ bom$(EXEEXT) $(am__EXEEXT_1)
+ at BUILD_TESTSETS_TRUE@TESTS = run_tests.sh tst_64bit.sh ctest$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@ ctest64$(EXEEXT) tst_output.sh \
+ at BUILD_TESTSETS_TRUE@ tst_lengths.sh tst_calendars.sh \
+ at BUILD_TESTSETS_TRUE@ tst_utf8$(EXEEXT) run_utf8_tests.sh \
+ at BUILD_TESTSETS_TRUE@ tst_nccopy3.sh tst_charfill.sh \
+ at BUILD_TESTSETS_TRUE@ tst_iter.sh tst_formatx3.sh tst_bom.sh \
+ at BUILD_TESTSETS_TRUE@ $(am__append_3) $(am__EXEEXT_2) \
+ at BUILD_TESTSETS_TRUE@ $(am__append_6) tst_ncgen4_classic.sh \
+ at BUILD_TESTSETS_TRUE@ $(am__append_7)
+ at BUILD_TESTSETS_TRUE@@LARGE_FILE_TESTS_TRUE at am__append_3 = tst_iter.sh
+
+# NetCDF-4 has some extra tests.
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at am__append_4 = tst_create_files tst_h_rdc0 tst_group_data \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_enum_data tst_opaque_data tst_string_data tst_vlen_data tst_comp \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_comp2 tst_nans tst_special_atts tst_unicode tst_fillbug tst_compress \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_chunking tst_h_scalar
+
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at am__append_5 = tst_create_files tst_group_data tst_enum_data tst_opaque_data \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_string_data tst_vlen_data tst_comp tst_comp2 tst_nans \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_special_atts tst_netcdf4.sh tst_h_rdc0 tst_unicode tst_fillbug \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_fillbug.sh tst_netcdf4_4.sh tst_compress tst_nccopy4.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_grp_spec.sh tst_mud.sh tst_h_scalar tst_h_scalar.sh tst_formatx4.sh
+
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@@USE_NETCDF4_TRUE at am__append_6 = run_back_comp_tests.sh
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at am__append_7 = tst_ncgen4.sh
+subdir = ncdump
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_1 = tst_create_files$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_rdc0$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_group_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_enum_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_opaque_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_string_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_vlen_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp2$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_nans$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_special_atts$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_unicode$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_fillbug$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_compress$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_chunking$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_scalar$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+bom_SOURCES = bom.c
+bom_OBJECTS = bom.$(OBJEXT)
+bom_LDADD = $(LDADD)
+bom_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+ctest_SOURCES = ctest.c
+ctest_OBJECTS = ctest.$(OBJEXT)
+ctest_LDADD = $(LDADD)
+ctest_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+ctest64_SOURCES = ctest64.c
+ctest64_OBJECTS = ctest64.$(OBJEXT)
+ctest64_LDADD = $(LDADD)
+ctest64_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+am_nccopy_OBJECTS = nccopy.$(OBJEXT) nciter.$(OBJEXT) \
+ chunkspec.$(OBJEXT) utils.$(OBJEXT) dimmap.$(OBJEXT)
+nccopy_OBJECTS = $(am_nccopy_OBJECTS)
+nccopy_LDADD = $(LDADD)
+nccopy_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+am_ncdump_OBJECTS = ncdump.$(OBJEXT) vardata.$(OBJEXT) \
+ dumplib.$(OBJEXT) indent.$(OBJEXT) nctime0.$(OBJEXT) \
+ utils.$(OBJEXT) nciter.$(OBJEXT)
+ncdump_OBJECTS = $(am_ncdump_OBJECTS)
+ncdump_LDADD = $(LDADD)
+ncdump_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+rewrite_scalar_SOURCES = rewrite-scalar.c
+rewrite_scalar_OBJECTS = rewrite-scalar.$(OBJEXT)
+rewrite_scalar_LDADD = $(LDADD)
+rewrite_scalar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_chunking_SOURCES = tst_chunking.c
+tst_chunking_OBJECTS = tst_chunking.$(OBJEXT)
+tst_chunking_LDADD = $(LDADD)
+tst_chunking_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_comp_SOURCES = tst_comp.c
+tst_comp_OBJECTS = tst_comp.$(OBJEXT)
+tst_comp_LDADD = $(LDADD)
+tst_comp_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_comp2_SOURCES = tst_comp2.c
+tst_comp2_OBJECTS = tst_comp2.$(OBJEXT)
+tst_comp2_LDADD = $(LDADD)
+tst_comp2_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_compress_SOURCES = tst_compress.c
+tst_compress_OBJECTS = tst_compress.$(OBJEXT)
+tst_compress_LDADD = $(LDADD)
+tst_compress_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_create_files_SOURCES = tst_create_files.c
+tst_create_files_OBJECTS = tst_create_files.$(OBJEXT)
+tst_create_files_LDADD = $(LDADD)
+tst_create_files_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_enum_data_SOURCES = tst_enum_data.c
+tst_enum_data_OBJECTS = tst_enum_data.$(OBJEXT)
+tst_enum_data_LDADD = $(LDADD)
+tst_enum_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_fillbug_SOURCES = tst_fillbug.c
+tst_fillbug_OBJECTS = tst_fillbug.$(OBJEXT)
+tst_fillbug_LDADD = $(LDADD)
+tst_fillbug_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_group_data_SOURCES = tst_group_data.c
+tst_group_data_OBJECTS = tst_group_data.$(OBJEXT)
+tst_group_data_LDADD = $(LDADD)
+tst_group_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_h_rdc0_SOURCES = tst_h_rdc0.c
+tst_h_rdc0_OBJECTS = tst_h_rdc0-tst_h_rdc0.$(OBJEXT)
+tst_h_rdc0_LDADD = $(LDADD)
+tst_h_rdc0_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_h_scalar_SOURCES = tst_h_scalar.c
+tst_h_scalar_OBJECTS = tst_h_scalar.$(OBJEXT)
+tst_h_scalar_LDADD = $(LDADD)
+tst_h_scalar_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_nans_SOURCES = tst_nans.c
+tst_nans_OBJECTS = tst_nans.$(OBJEXT)
+tst_nans_LDADD = $(LDADD)
+tst_nans_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_opaque_data_SOURCES = tst_opaque_data.c
+tst_opaque_data_OBJECTS = tst_opaque_data.$(OBJEXT)
+tst_opaque_data_LDADD = $(LDADD)
+tst_opaque_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_special_atts_SOURCES = tst_special_atts.c
+tst_special_atts_OBJECTS = tst_special_atts.$(OBJEXT)
+tst_special_atts_LDADD = $(LDADD)
+tst_special_atts_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_string_data_SOURCES = tst_string_data.c
+tst_string_data_OBJECTS = tst_string_data.$(OBJEXT)
+tst_string_data_LDADD = $(LDADD)
+tst_string_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_unicode_SOURCES = tst_unicode.c
+tst_unicode_OBJECTS = tst_unicode.$(OBJEXT)
+tst_unicode_LDADD = $(LDADD)
+tst_unicode_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_utf8_SOURCES = tst_utf8.c
+tst_utf8_OBJECTS = tst_utf8.$(OBJEXT)
+tst_utf8_LDADD = $(LDADD)
+tst_utf8_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+tst_vlen_data_SOURCES = tst_vlen_data.c
+tst_vlen_data_OBJECTS = tst_vlen_data.$(OBJEXT)
+tst_vlen_data_LDADD = $(LDADD)
+tst_vlen_data_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = bom.c ctest.c ctest64.c $(nccopy_SOURCES) $(ncdump_SOURCES) \
+ rewrite-scalar.c tst_chunking.c tst_comp.c tst_comp2.c \
+ tst_compress.c tst_create_files.c tst_enum_data.c \
+ tst_fillbug.c tst_group_data.c tst_h_rdc0.c tst_h_scalar.c \
+ tst_nans.c tst_opaque_data.c tst_special_atts.c \
+ tst_string_data.c tst_unicode.c tst_utf8.c tst_vlen_data.c
+DIST_SOURCES = bom.c ctest.c ctest64.c $(nccopy_SOURCES) \
+ $(ncdump_SOURCES) rewrite-scalar.c tst_chunking.c tst_comp.c \
+ tst_comp2.c tst_compress.c tst_create_files.c tst_enum_data.c \
+ tst_fillbug.c tst_group_data.c tst_h_rdc0.c tst_h_scalar.c \
+ tst_nans.c tst_opaque_data.c tst_special_atts.c \
+ tst_string_data.c tst_unicode.c tst_utf8.c tst_vlen_data.c
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ check recheck distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at am__EXEEXT_2 = tst_create_files$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_group_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_enum_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_opaque_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_string_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_vlen_data$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_comp2$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_nans$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_special_atts$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_netcdf4.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_rdc0$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_unicode$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_fillbug$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_fillbug.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_netcdf4_4.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_compress$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_nccopy4.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_grp_spec.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_mud.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_scalar$(EXEEXT) \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_h_scalar.sh \
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE@ tst_formatx4.sh
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+LDADD = ${top_builddir}/liblib/libnetcdf.la
+TESTS_ENVIRONMENT = CC=${CC}
+ncdump_SOURCES = ncdump.c vardata.c dumplib.c indent.c nctime0.c \
+ncdump.h vardata.h dumplib.h indent.h isnan.h nctime0.h cdl.h \
+utils.h utils.c nciter.h nciter.c nccomps.h
+
+nccopy_SOURCES = nccopy.c nciter.c nciter.h chunkspec.h chunkspec.c \
+utils.h utils.c dimmap.h dimmap.c
+
+
+# This is the man page.
+man_MANS = ncdump.1 nccopy.1
+ at BUILD_TESTSETS_TRUE@@USE_NETCDF4_TRUE at tst_h_rdc0_CPPFLAGS = -I${top_srcdir}/nc_test ${AM_CPPFLAGS}
+
+#endif #!BUILD_DLL
+
+# Can't run ncgen to generate ctest.c and ctest64.c on cross-compiles.
+ at BUILD_TESTSETS_TRUE@BUILT_SOURCES = ctest.c ctest64.c
+#endif
+CLEANFILES = test0.nc test1.cdl test1.nc test2.cdl ctest1.cdl \
+ ctest0.nc ctest0_64.nc c1.cdl c1_4.cdl ctest1_64.cdl c0.nc \
+ c0_4.nc small.nc small2.nc c0tmp.nc c1.ncml utf8.cdl \
+ utf8_64.cdl utf8.nc utf8_64.nc tmp.cdl tst_vlen_data.nc \
+ tst_utf8.nc tst_special_atts.nc tst_unicode.nc tst_solar_2.nc \
+ tst_string_data.nc tst_calendars.nc tst_nans.nc \
+ tst_opaque_data.nc tst_solar_cmp.nc tst_enum_data.nc \
+ tst_solar_1.nc tst_mslp_64.nc tst_mslp.nc tst_bug321.nc \
+ tst_comp2.nc tst_ncml.nc tst_fillbug.nc tst_group_data.nc \
+ tst_small.nc tst_comp.nc tst_unicode.cdl tst_group_data.cdl \
+ tst_compounds2.cdl tst_comp.cdl tst_enum_data.cdl \
+ tst_small.cdl tst_times.cdl tst_solar_2.cdl \
+ tst_string_data.cdl tst_fillbug.cdl tst_opaque_data.cdl \
+ tst_compounds4.cdl tst_utf8.cdl tst_compounds3.cdl \
+ tst_special_atts.cdl tst_nans.cdl tst_format_att_64.cdl \
+ tst_vlen_data.cdl tst_solar_1.cdl tst_format_att.cdl \
+ tst_inflated.nc tmp_subset.cdl tst_inflated4.nc \
+ tst_deflated.nc tst_chunking.nc tmp*.nc tst_charfill.nc \
+ tmp_tst_charfill.cdl iter.* tst_nc_test_netcdf4_4_0.cdl \
+ tst_mud4.nc tst_mud4.cdl tst_mud4-bc.cdl tst_ncf213.cdl \
+ tst_ncf213.nc tst_h_scalar.cdl tst_h_scalar.nc \
+ tst_mud4_chars.cdl tst_mud4_chars.nc results/*.nc \
+ results/*.dmp results/*.dmp2 tmp*.cdl
+
+# These files all have to be included with the distribution.
+EXTRA_DIST = run_tests.sh tst_64bit.sh tst_output.sh test0.cdl \
+ ref_ctest1_nc4.cdl ref_ctest1_nc4c.cdl ref_tst_solar_1.cdl \
+ ref_tst_solar_2.cdl tst_netcdf4.sh tst_netcdf4_4.sh \
+ ref_tst_small.cdl tst_lengths.sh tst_ncml.cdl ref1.ncml \
+ ref_tst_group_data.cdl ref_tst_enum_data.cdl \
+ ref_tst_opaque_data.cdl ref_tst_string_data.cdl \
+ ref_tst_vlen_data.cdl ref_tst_comp.cdl ref_tst_unicode.cdl \
+ ref_tst_nans.cdl small.cdl small2.cdl $(man_MANS) \
+ run_utf8_tests.sh ref_tst_utf8.cdl ref_tst_fillbug.cdl \
+ tst_fillbug.sh tst_calendars.cdl tst_calendars.sh \
+ ref_times.cdl ref_tst_special_atts.cdl ref_tst_noncoord.cdl \
+ ref_tst_compounds2.nc ref_tst_compounds2.cdl \
+ ref_tst_compounds3.nc ref_tst_compounds3.cdl \
+ ref_tst_compounds4.nc ref_tst_compounds4.cdl \
+ ref_tst_group_data_v23.cdl tst_mslp.cdl tst_bug321.cdl \
+ ref_tst_format_att.cdl ref_tst_format_att_64.cdl \
+ tst_nccopy3.sh tst_nccopy4.sh ref_nc_test_netcdf4_4_0.nc \
+ run_back_comp_tests.sh ref_nc_test_netcdf4.cdl \
+ ref_tst_special_atts3.cdl tst_brecs.cdl ref_tst_grp_spec0.cdl \
+ ref_tst_grp_spec.cdl tst_grp_spec.sh ref_tst_charfill.cdl \
+ tst_charfill.cdl tst_charfill.sh tst_iter.sh tst_mud.sh \
+ ref_tst_mud4.cdl ref_tst_mud4-bc.cdl ref_tst_mud4_chars.cdl \
+ ref_tst_ncf213.cdl tst_h_scalar.sh tst_formatx3.sh \
+ tst_formatx4.sh CMakeLists.txt XGetopt.c tst_bom.sh \
+ tst_ncgen_shared.sh tst_ncgen4.sh tst_ncgen4_classic.sh \
+ tst_ncgen4_diff.sh tst_ncgen4_cycle.sh ref_ctest.c \
+ ref_ctest64.c ctest.c ctest64.c
+
+# CDL files and Expected results
+SUBDIRS = cdl expected
+DISTCLEANFILES = results
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdump/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdump/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+bom$(EXEEXT): $(bom_OBJECTS) $(bom_DEPENDENCIES) $(EXTRA_bom_DEPENDENCIES)
+ @rm -f bom$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(bom_OBJECTS) $(bom_LDADD) $(LIBS)
+
+ctest$(EXEEXT): $(ctest_OBJECTS) $(ctest_DEPENDENCIES) $(EXTRA_ctest_DEPENDENCIES)
+ @rm -f ctest$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ctest_OBJECTS) $(ctest_LDADD) $(LIBS)
+
+ctest64$(EXEEXT): $(ctest64_OBJECTS) $(ctest64_DEPENDENCIES) $(EXTRA_ctest64_DEPENDENCIES)
+ @rm -f ctest64$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ctest64_OBJECTS) $(ctest64_LDADD) $(LIBS)
+
+nccopy$(EXEEXT): $(nccopy_OBJECTS) $(nccopy_DEPENDENCIES) $(EXTRA_nccopy_DEPENDENCIES)
+ @rm -f nccopy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nccopy_OBJECTS) $(nccopy_LDADD) $(LIBS)
+
+ncdump$(EXEEXT): $(ncdump_OBJECTS) $(ncdump_DEPENDENCIES) $(EXTRA_ncdump_DEPENDENCIES)
+ @rm -f ncdump$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ncdump_OBJECTS) $(ncdump_LDADD) $(LIBS)
+
+rewrite-scalar$(EXEEXT): $(rewrite_scalar_OBJECTS) $(rewrite_scalar_DEPENDENCIES) $(EXTRA_rewrite_scalar_DEPENDENCIES)
+ @rm -f rewrite-scalar$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(rewrite_scalar_OBJECTS) $(rewrite_scalar_LDADD) $(LIBS)
+
+tst_chunking$(EXEEXT): $(tst_chunking_OBJECTS) $(tst_chunking_DEPENDENCIES) $(EXTRA_tst_chunking_DEPENDENCIES)
+ @rm -f tst_chunking$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_chunking_OBJECTS) $(tst_chunking_LDADD) $(LIBS)
+
+tst_comp$(EXEEXT): $(tst_comp_OBJECTS) $(tst_comp_DEPENDENCIES) $(EXTRA_tst_comp_DEPENDENCIES)
+ @rm -f tst_comp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_comp_OBJECTS) $(tst_comp_LDADD) $(LIBS)
+
+tst_comp2$(EXEEXT): $(tst_comp2_OBJECTS) $(tst_comp2_DEPENDENCIES) $(EXTRA_tst_comp2_DEPENDENCIES)
+ @rm -f tst_comp2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_comp2_OBJECTS) $(tst_comp2_LDADD) $(LIBS)
+
+tst_compress$(EXEEXT): $(tst_compress_OBJECTS) $(tst_compress_DEPENDENCIES) $(EXTRA_tst_compress_DEPENDENCIES)
+ @rm -f tst_compress$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_compress_OBJECTS) $(tst_compress_LDADD) $(LIBS)
+
+tst_create_files$(EXEEXT): $(tst_create_files_OBJECTS) $(tst_create_files_DEPENDENCIES) $(EXTRA_tst_create_files_DEPENDENCIES)
+ @rm -f tst_create_files$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_create_files_OBJECTS) $(tst_create_files_LDADD) $(LIBS)
+
+tst_enum_data$(EXEEXT): $(tst_enum_data_OBJECTS) $(tst_enum_data_DEPENDENCIES) $(EXTRA_tst_enum_data_DEPENDENCIES)
+ @rm -f tst_enum_data$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_enum_data_OBJECTS) $(tst_enum_data_LDADD) $(LIBS)
+
+tst_fillbug$(EXEEXT): $(tst_fillbug_OBJECTS) $(tst_fillbug_DEPENDENCIES) $(EXTRA_tst_fillbug_DEPENDENCIES)
+ @rm -f tst_fillbug$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_fillbug_OBJECTS) $(tst_fillbug_LDADD) $(LIBS)
+
+tst_group_data$(EXEEXT): $(tst_group_data_OBJECTS) $(tst_group_data_DEPENDENCIES) $(EXTRA_tst_group_data_DEPENDENCIES)
+ @rm -f tst_group_data$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_group_data_OBJECTS) $(tst_group_data_LDADD) $(LIBS)
+
+tst_h_rdc0$(EXEEXT): $(tst_h_rdc0_OBJECTS) $(tst_h_rdc0_DEPENDENCIES) $(EXTRA_tst_h_rdc0_DEPENDENCIES)
+ @rm -f tst_h_rdc0$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_rdc0_OBJECTS) $(tst_h_rdc0_LDADD) $(LIBS)
+
+tst_h_scalar$(EXEEXT): $(tst_h_scalar_OBJECTS) $(tst_h_scalar_DEPENDENCIES) $(EXTRA_tst_h_scalar_DEPENDENCIES)
+ @rm -f tst_h_scalar$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_h_scalar_OBJECTS) $(tst_h_scalar_LDADD) $(LIBS)
+
+tst_nans$(EXEEXT): $(tst_nans_OBJECTS) $(tst_nans_DEPENDENCIES) $(EXTRA_tst_nans_DEPENDENCIES)
+ @rm -f tst_nans$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_nans_OBJECTS) $(tst_nans_LDADD) $(LIBS)
+
+tst_opaque_data$(EXEEXT): $(tst_opaque_data_OBJECTS) $(tst_opaque_data_DEPENDENCIES) $(EXTRA_tst_opaque_data_DEPENDENCIES)
+ @rm -f tst_opaque_data$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_opaque_data_OBJECTS) $(tst_opaque_data_LDADD) $(LIBS)
+
+tst_special_atts$(EXEEXT): $(tst_special_atts_OBJECTS) $(tst_special_atts_DEPENDENCIES) $(EXTRA_tst_special_atts_DEPENDENCIES)
+ @rm -f tst_special_atts$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_special_atts_OBJECTS) $(tst_special_atts_LDADD) $(LIBS)
+
+tst_string_data$(EXEEXT): $(tst_string_data_OBJECTS) $(tst_string_data_DEPENDENCIES) $(EXTRA_tst_string_data_DEPENDENCIES)
+ @rm -f tst_string_data$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_string_data_OBJECTS) $(tst_string_data_LDADD) $(LIBS)
+
+tst_unicode$(EXEEXT): $(tst_unicode_OBJECTS) $(tst_unicode_DEPENDENCIES) $(EXTRA_tst_unicode_DEPENDENCIES)
+ @rm -f tst_unicode$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_unicode_OBJECTS) $(tst_unicode_LDADD) $(LIBS)
+
+tst_utf8$(EXEEXT): $(tst_utf8_OBJECTS) $(tst_utf8_DEPENDENCIES) $(EXTRA_tst_utf8_DEPENDENCIES)
+ @rm -f tst_utf8$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_utf8_OBJECTS) $(tst_utf8_LDADD) $(LIBS)
+
+tst_vlen_data$(EXEEXT): $(tst_vlen_data_OBJECTS) $(tst_vlen_data_DEPENDENCIES) $(EXTRA_tst_vlen_data_DEPENDENCIES)
+ @rm -f tst_vlen_data$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_vlen_data_OBJECTS) $(tst_vlen_data_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/chunkspec.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ctest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ctest64.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dimmap.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dumplib.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/indent.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nccopy.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ncdump.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nciter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nctime0.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rewrite-scalar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_chunking.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_comp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_comp2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_compress.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_create_files.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_enum_data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_fillbug.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_group_data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_h_scalar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_nans.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_opaque_data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_special_atts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_string_data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_unicode.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_utf8.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_vlen_data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vardata.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+tst_h_rdc0-tst_h_rdc0.o: tst_h_rdc0.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tst_h_rdc0-tst_h_rdc0.o -MD -MP -MF $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo -c -o tst_h_rdc0-tst_h_rdc0.o `test -f 'tst_h_rdc0.c' || echo '$(srcdir)/'`tst_h_rdc0.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tst_h_rdc0.c' object='tst_h_rdc0-tst_h_rdc0.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tst_h_rdc0-tst_h_rdc0.o `test -f 'tst_h_rdc0.c' || echo '$(srcdir)/'`tst_h_rdc0.c
+
+tst_h_rdc0-tst_h_rdc0.obj: tst_h_rdc0.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tst_h_rdc0-tst_h_rdc0.obj -MD -MP -MF $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo -c -o tst_h_rdc0-tst_h_rdc0.obj `if test -f 'tst_h_rdc0.c'; then $(CYGPATH_W) 'tst_h_rdc0.c'; else $(CYGPATH_W) '$(srcdir)/tst_h_rdc0.c'; fi`
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Tpo $(DEPDIR)/tst_h_rdc0-tst_h_rdc0.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tst_h_rdc0.c' object='tst_h_rdc0-tst_h_rdc0.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tst_h_rdc0_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tst_h_rdc0-tst_h_rdc0.obj `if test -f 'tst_h_rdc0.c'; then $(CYGPATH_W) 'tst_h_rdc0.c'; else $(CYGPATH_W) '$(srcdir)/tst_h_rdc0.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+run_tests.sh.log: run_tests.sh
+ @p='run_tests.sh'; \
+ b='run_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_64bit.sh.log: tst_64bit.sh
+ @p='tst_64bit.sh'; \
+ b='tst_64bit.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ctest.log: ctest$(EXEEXT)
+ @p='ctest$(EXEEXT)'; \
+ b='ctest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ctest64.log: ctest64$(EXEEXT)
+ @p='ctest64$(EXEEXT)'; \
+ b='ctest64'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_output.sh.log: tst_output.sh
+ @p='tst_output.sh'; \
+ b='tst_output.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_lengths.sh.log: tst_lengths.sh
+ @p='tst_lengths.sh'; \
+ b='tst_lengths.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_calendars.sh.log: tst_calendars.sh
+ @p='tst_calendars.sh'; \
+ b='tst_calendars.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_utf8.log: tst_utf8$(EXEEXT)
+ @p='tst_utf8$(EXEEXT)'; \
+ b='tst_utf8'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_utf8_tests.sh.log: run_utf8_tests.sh
+ @p='run_utf8_tests.sh'; \
+ b='run_utf8_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_nccopy3.sh.log: tst_nccopy3.sh
+ @p='tst_nccopy3.sh'; \
+ b='tst_nccopy3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_charfill.sh.log: tst_charfill.sh
+ @p='tst_charfill.sh'; \
+ b='tst_charfill.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_iter.sh.log: tst_iter.sh
+ @p='tst_iter.sh'; \
+ b='tst_iter.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_formatx3.sh.log: tst_formatx3.sh
+ @p='tst_formatx3.sh'; \
+ b='tst_formatx3.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_bom.sh.log: tst_bom.sh
+ @p='tst_bom.sh'; \
+ b='tst_bom.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_create_files.log: tst_create_files$(EXEEXT)
+ @p='tst_create_files$(EXEEXT)'; \
+ b='tst_create_files'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_group_data.log: tst_group_data$(EXEEXT)
+ @p='tst_group_data$(EXEEXT)'; \
+ b='tst_group_data'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_enum_data.log: tst_enum_data$(EXEEXT)
+ @p='tst_enum_data$(EXEEXT)'; \
+ b='tst_enum_data'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_opaque_data.log: tst_opaque_data$(EXEEXT)
+ @p='tst_opaque_data$(EXEEXT)'; \
+ b='tst_opaque_data'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_string_data.log: tst_string_data$(EXEEXT)
+ @p='tst_string_data$(EXEEXT)'; \
+ b='tst_string_data'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_vlen_data.log: tst_vlen_data$(EXEEXT)
+ @p='tst_vlen_data$(EXEEXT)'; \
+ b='tst_vlen_data'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_comp.log: tst_comp$(EXEEXT)
+ @p='tst_comp$(EXEEXT)'; \
+ b='tst_comp'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_comp2.log: tst_comp2$(EXEEXT)
+ @p='tst_comp2$(EXEEXT)'; \
+ b='tst_comp2'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_nans.log: tst_nans$(EXEEXT)
+ @p='tst_nans$(EXEEXT)'; \
+ b='tst_nans'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_special_atts.log: tst_special_atts$(EXEEXT)
+ @p='tst_special_atts$(EXEEXT)'; \
+ b='tst_special_atts'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_netcdf4.sh.log: tst_netcdf4.sh
+ @p='tst_netcdf4.sh'; \
+ b='tst_netcdf4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_rdc0.log: tst_h_rdc0$(EXEEXT)
+ @p='tst_h_rdc0$(EXEEXT)'; \
+ b='tst_h_rdc0'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_unicode.log: tst_unicode$(EXEEXT)
+ @p='tst_unicode$(EXEEXT)'; \
+ b='tst_unicode'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_fillbug.log: tst_fillbug$(EXEEXT)
+ @p='tst_fillbug$(EXEEXT)'; \
+ b='tst_fillbug'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_fillbug.sh.log: tst_fillbug.sh
+ @p='tst_fillbug.sh'; \
+ b='tst_fillbug.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_netcdf4_4.sh.log: tst_netcdf4_4.sh
+ @p='tst_netcdf4_4.sh'; \
+ b='tst_netcdf4_4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_compress.log: tst_compress$(EXEEXT)
+ @p='tst_compress$(EXEEXT)'; \
+ b='tst_compress'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_nccopy4.sh.log: tst_nccopy4.sh
+ @p='tst_nccopy4.sh'; \
+ b='tst_nccopy4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_grp_spec.sh.log: tst_grp_spec.sh
+ @p='tst_grp_spec.sh'; \
+ b='tst_grp_spec.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_mud.sh.log: tst_mud.sh
+ @p='tst_mud.sh'; \
+ b='tst_mud.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_scalar.log: tst_h_scalar$(EXEEXT)
+ @p='tst_h_scalar$(EXEEXT)'; \
+ b='tst_h_scalar'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_h_scalar.sh.log: tst_h_scalar.sh
+ @p='tst_h_scalar.sh'; \
+ b='tst_h_scalar.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_formatx4.sh.log: tst_formatx4.sh
+ @p='tst_formatx4.sh'; \
+ b='tst_formatx4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_back_comp_tests.sh.log: run_back_comp_tests.sh
+ @p='run_back_comp_tests.sh'; \
+ b='run_back_comp_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_ncgen4_classic.sh.log: tst_ncgen4_classic.sh
+ @p='tst_ncgen4_classic.sh'; \
+ b='tst_ncgen4_classic.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_ncgen4.sh.log: tst_ncgen4.sh
+ @p='tst_ncgen4.sh'; \
+ b='tst_ncgen4.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(PROGRAMS) $(MANS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+ clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: $(am__recursive_targets) all check check-am install install-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-TESTS check-am clean clean-binPROGRAMS \
+ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-man1 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+ uninstall uninstall-am uninstall-binPROGRAMS uninstall-man \
+ uninstall-man1
+
+.PRECIOUS: Makefile
+
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE at ctest.c:
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@ $(top_builddir)/ncgen/ncgen -lc -o ctest0.nc $(top_srcdir)/ncgen/c0.cdl >$(srcdir)/ctest.c
+
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE at ctest64.c:
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_TRUE@ $(top_builddir)/ncgen/ncgen -v2 -lc -o ctest0_64.nc $(top_srcdir)/ncgen/c0.cdl > $(srcdir)/ctest64.c
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE at ctest.c:
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE@ cp $(top_srcdir)/ncdump/ref_ctest.c $(top_srcdir)/ncdump/ctest.c
+
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE at ctest64.c:
+ at BUILD_TESTSETS_TRUE@@EXTRA_TESTS_FALSE@ cp $(top_srcdir)/ncdump/ref_ctest64.c $(top_srcdir)/ncdump/ctest64.c
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdump/cdl4/CMakeLists.txt b/ncdump/cdl/CMakeLists.txt
similarity index 100%
rename from ncdump/cdl4/CMakeLists.txt
rename to ncdump/cdl/CMakeLists.txt
diff --git a/ncdump/cdl4/Makefile.am b/ncdump/cdl/Makefile.am
similarity index 96%
rename from ncdump/cdl4/Makefile.am
rename to ncdump/cdl/Makefile.am
index 6801178..569d429 100644
--- a/ncdump/cdl4/Makefile.am
+++ b/ncdump/cdl/Makefile.am
@@ -24,6 +24,7 @@ ref_tst_opaque_data.cdl \
ref_tst_vlen_data.cdl ref_tst_vlen_data2.cdl \
ref_niltest.cdl ref_tst_h_scalar.cdl ref_tst_econst.cdl \
ref_tst_nul3.cdl ref_tst_nul4.cdl ref_tst_names.cdl \
+ref_tst_long_charconst.cdl tst_chararray.cdl \
CMakeLists.txt
diff --git a/ncdump/cdl/Makefile.in b/ncdump/cdl/Makefile.in
new file mode 100644
index 0000000..215b767
--- /dev/null
+++ b/ncdump/cdl/Makefile.in
@@ -0,0 +1,510 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2007, see the COPYRIGHT file for more information.
+
+# This is to include the libnc-dap test comparison files
+
+# $Id: Makefile.am,v 1.5 2010/04/27 18:50:44 dmh Exp $
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = ncdump/cdl
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+c0.cdl example_good.cdl fills.cdl nc_enddef.cdl nc_sync.cdl pres_temp_4D.cdl \
+ref_const_test.cdl ref_ctest1_nc4.cdl ref_ctest1_nc4c.cdl ref_dimscope.cdl \
+ref_nctst.cdl ref_nctst_64bit_offset.cdl ref_nctst_netcdf4.cdl \
+ref_nctst_netcdf4_classic.cdl \
+ref_tst_comp.cdl ref_tst_comp2.cdl ref_tst_comp3.cdl \
+ref_tst_enum_data.cdl ref_tst_group_data.cdl \
+ref_tst_nans.cdl ref_tst_opaque_data.cdl ref_tst_small.cdl \
+ref_tst_solar_1.cdl ref_tst_solar_2.cdl ref_tst_special_atts.cdl \
+ref_tst_string_data.cdl ref_tst_unicode.cdl ref_tst_utf8.cdl \
+ref_typescope.cdl sfc_pres_temp.cdl \
+simple_xy.cdl small.cdl small2.cdl test0.cdl tst_ncml.cdl \
+bigf1.cdl bigf2.cdl bigf3.cdl bigr1.cdl bigr2.cdl bigr3.cdl \
+n3time.cdl ref_tst_special_atts3.cdl ref_tst_unlim2.cdl ref_tst_chardata.cdl \
+ref_solar.cdl unlimtest1.cdl unlimtest2.cdl \
+ref_tst_opaque_data.cdl \
+ref_tst_vlen_data.cdl ref_tst_vlen_data2.cdl \
+ref_niltest.cdl ref_tst_h_scalar.cdl ref_tst_econst.cdl \
+ref_tst_nul3.cdl ref_tst_nul4.cdl ref_tst_names.cdl \
+ref_tst_long_charconst.cdl tst_chararray.cdl \
+CMakeLists.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdump/cdl/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdump/cdl/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdump/cdl4/bigf1.cdl b/ncdump/cdl/bigf1.cdl
similarity index 100%
rename from ncdump/cdl4/bigf1.cdl
rename to ncdump/cdl/bigf1.cdl
diff --git a/ncdump/cdl4/bigf2.cdl b/ncdump/cdl/bigf2.cdl
similarity index 100%
rename from ncdump/cdl4/bigf2.cdl
rename to ncdump/cdl/bigf2.cdl
diff --git a/ncdump/cdl4/bigf3.cdl b/ncdump/cdl/bigf3.cdl
similarity index 100%
rename from ncdump/cdl4/bigf3.cdl
rename to ncdump/cdl/bigf3.cdl
diff --git a/ncdump/cdl4/bigr1.cdl b/ncdump/cdl/bigr1.cdl
similarity index 100%
rename from ncdump/cdl4/bigr1.cdl
rename to ncdump/cdl/bigr1.cdl
diff --git a/ncdump/cdl4/bigr2.cdl b/ncdump/cdl/bigr2.cdl
similarity index 100%
rename from ncdump/cdl4/bigr2.cdl
rename to ncdump/cdl/bigr2.cdl
diff --git a/ncdump/cdl4/bigr3.cdl b/ncdump/cdl/bigr3.cdl
similarity index 100%
rename from ncdump/cdl4/bigr3.cdl
rename to ncdump/cdl/bigr3.cdl
diff --git a/ncdump/cdl4/c0.cdl b/ncdump/cdl/c0.cdl
similarity index 100%
rename from ncdump/cdl4/c0.cdl
rename to ncdump/cdl/c0.cdl
diff --git a/ncdump/cdl4/c0.jdl b/ncdump/cdl/c0.jdl
similarity index 100%
rename from ncdump/cdl4/c0.jdl
rename to ncdump/cdl/c0.jdl
diff --git a/ncdump/cdl4/example_good.cdl b/ncdump/cdl/example_good.cdl
similarity index 100%
rename from ncdump/cdl4/example_good.cdl
rename to ncdump/cdl/example_good.cdl
diff --git a/ncdump/cdl4/fills.cdl b/ncdump/cdl/fills.cdl
similarity index 100%
rename from ncdump/cdl4/fills.cdl
rename to ncdump/cdl/fills.cdl
diff --git a/ncdump/cdl4/gfs1.cdl b/ncdump/cdl/gfs1.cdl
similarity index 100%
rename from ncdump/cdl4/gfs1.cdl
rename to ncdump/cdl/gfs1.cdl
diff --git a/ncdump/cdl4/n3time.cdl b/ncdump/cdl/n3time.cdl
similarity index 100%
rename from ncdump/cdl4/n3time.cdl
rename to ncdump/cdl/n3time.cdl
diff --git a/ncdump/cdl4/nc_enddef.cdl b/ncdump/cdl/nc_enddef.cdl
similarity index 100%
rename from ncdump/cdl4/nc_enddef.cdl
rename to ncdump/cdl/nc_enddef.cdl
diff --git a/ncdump/cdl4/nc_sync.cdl b/ncdump/cdl/nc_sync.cdl
similarity index 100%
rename from ncdump/cdl4/nc_sync.cdl
rename to ncdump/cdl/nc_sync.cdl
diff --git a/ncdump/cdl4/pres_temp_4D.cdl b/ncdump/cdl/pres_temp_4D.cdl
similarity index 100%
rename from ncdump/cdl4/pres_temp_4D.cdl
rename to ncdump/cdl/pres_temp_4D.cdl
diff --git a/ncdump/cdl4/ref_const_test.cdl b/ncdump/cdl/ref_const_test.cdl
similarity index 100%
rename from ncdump/cdl4/ref_const_test.cdl
rename to ncdump/cdl/ref_const_test.cdl
diff --git a/ncdump/cdl4/ref_ctest1_nc4.cdl b/ncdump/cdl/ref_ctest1_nc4.cdl
similarity index 100%
rename from ncdump/cdl4/ref_ctest1_nc4.cdl
rename to ncdump/cdl/ref_ctest1_nc4.cdl
diff --git a/ncdump/cdl4/ref_ctest1_nc4.jdl b/ncdump/cdl/ref_ctest1_nc4.jdl
similarity index 100%
rename from ncdump/cdl4/ref_ctest1_nc4.jdl
rename to ncdump/cdl/ref_ctest1_nc4.jdl
diff --git a/ncdump/cdl4/ref_ctest1_nc4c.cdl b/ncdump/cdl/ref_ctest1_nc4c.cdl
similarity index 100%
rename from ncdump/cdl4/ref_ctest1_nc4c.cdl
rename to ncdump/cdl/ref_ctest1_nc4c.cdl
diff --git a/ncdump/cdl4/ref_ctest1_nc4c.jdl b/ncdump/cdl/ref_ctest1_nc4c.jdl
similarity index 100%
rename from ncdump/cdl4/ref_ctest1_nc4c.jdl
rename to ncdump/cdl/ref_ctest1_nc4c.jdl
diff --git a/ncdump/cdl4/ref_dimscope.cdl b/ncdump/cdl/ref_dimscope.cdl
similarity index 100%
rename from ncdump/cdl4/ref_dimscope.cdl
rename to ncdump/cdl/ref_dimscope.cdl
diff --git a/ncdump/cdl4/ref_nctst.cdl b/ncdump/cdl/ref_nctst.cdl
similarity index 100%
rename from ncdump/cdl4/ref_nctst.cdl
rename to ncdump/cdl/ref_nctst.cdl
diff --git a/ncdump/cdl4/ref_nctst_64bit_offset.cdl b/ncdump/cdl/ref_nctst_64bit_offset.cdl
similarity index 100%
rename from ncdump/cdl4/ref_nctst_64bit_offset.cdl
rename to ncdump/cdl/ref_nctst_64bit_offset.cdl
diff --git a/ncdump/cdl4/ref_nctst_netcdf4.cdl b/ncdump/cdl/ref_nctst_netcdf4.cdl
similarity index 100%
rename from ncdump/cdl4/ref_nctst_netcdf4.cdl
rename to ncdump/cdl/ref_nctst_netcdf4.cdl
diff --git a/ncdump/cdl4/ref_nctst_netcdf4_classic.cdl b/ncdump/cdl/ref_nctst_netcdf4_classic.cdl
similarity index 100%
rename from ncdump/cdl4/ref_nctst_netcdf4_classic.cdl
rename to ncdump/cdl/ref_nctst_netcdf4_classic.cdl
diff --git a/ncdump/cdl4/ref_niltest.cdl b/ncdump/cdl/ref_niltest.cdl
similarity index 100%
rename from ncdump/cdl4/ref_niltest.cdl
rename to ncdump/cdl/ref_niltest.cdl
diff --git a/ncdump/cdl4/ref_solar.cdl b/ncdump/cdl/ref_solar.cdl
similarity index 100%
rename from ncdump/cdl4/ref_solar.cdl
rename to ncdump/cdl/ref_solar.cdl
diff --git a/ncdump/cdl4/ref_tst_chardata.cdl b/ncdump/cdl/ref_tst_chardata.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_chardata.cdl
rename to ncdump/cdl/ref_tst_chardata.cdl
diff --git a/ncdump/cdl4/ref_tst_comp.cdl b/ncdump/cdl/ref_tst_comp.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_comp.cdl
rename to ncdump/cdl/ref_tst_comp.cdl
diff --git a/ncdump/cdl4/ref_tst_comp2.cdl b/ncdump/cdl/ref_tst_comp2.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_comp2.cdl
rename to ncdump/cdl/ref_tst_comp2.cdl
diff --git a/ncdump/cdl4/ref_tst_comp3.cdl b/ncdump/cdl/ref_tst_comp3.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_comp3.cdl
rename to ncdump/cdl/ref_tst_comp3.cdl
diff --git a/ncdump/cdl4/ref_tst_econst.cdl b/ncdump/cdl/ref_tst_econst.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_econst.cdl
rename to ncdump/cdl/ref_tst_econst.cdl
diff --git a/ncdump/cdl4/ref_tst_enum_data.cdl b/ncdump/cdl/ref_tst_enum_data.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_enum_data.cdl
rename to ncdump/cdl/ref_tst_enum_data.cdl
diff --git a/ncdump/cdl4/ref_tst_group_data.cdl b/ncdump/cdl/ref_tst_group_data.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_group_data.cdl
rename to ncdump/cdl/ref_tst_group_data.cdl
diff --git a/ncdump/cdl4/ref_tst_h_scalar.cdl b/ncdump/cdl/ref_tst_h_scalar.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_h_scalar.cdl
rename to ncdump/cdl/ref_tst_h_scalar.cdl
diff --git a/ncdump/cdl/ref_tst_long_charconst.cdl b/ncdump/cdl/ref_tst_long_charconst.cdl
new file mode 100644
index 0000000..14eae89
--- /dev/null
+++ b/ncdump/cdl/ref_tst_long_charconst.cdl
@@ -0,0 +1,9 @@
+netcdf tst_long_charconst {
+dimensions:
+ obs = 60000 ;
+variables:
+ char PRCP_MFLAG(obs) ;
+data:
+
+ PRCP_MFLAG = " PPPP PP PP PP PPP PPPPPPPPP PP P PPP PPP P P PP PPP PPPPP PPPPPPP P P P PPPPP PPPP P P PP P PPPPPP PP TTPPPP PPPPP PP T P PPP PPPPP P P PPPPPPP PPPP PPPP PPPPP PPPP PP PPP PPPP PPP PPPPPPPPPPPP PPPPPP P P PPP PP PPPP PPPP PPPPP PPPPP PP PPPP P PPP PPPP PP P PPP P PP PPPP PPPPP PP P PP PPP PPP PPPPPPPP PPP PPPP PP P P PP PP PP [...]
+}
diff --git a/ncdump/cdl4/ref_tst_names.cdl b/ncdump/cdl/ref_tst_names.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_names.cdl
rename to ncdump/cdl/ref_tst_names.cdl
diff --git a/ncdump/cdl4/ref_tst_nans.cdl b/ncdump/cdl/ref_tst_nans.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_nans.cdl
rename to ncdump/cdl/ref_tst_nans.cdl
diff --git a/ncdump/cdl4/ref_tst_nul3.cdl b/ncdump/cdl/ref_tst_nul3.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_nul3.cdl
rename to ncdump/cdl/ref_tst_nul3.cdl
diff --git a/ncdump/cdl4/ref_tst_nul4.cdl b/ncdump/cdl/ref_tst_nul4.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_nul4.cdl
rename to ncdump/cdl/ref_tst_nul4.cdl
diff --git a/ncdump/cdl4/ref_tst_opaque_data.cdl b/ncdump/cdl/ref_tst_opaque_data.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_opaque_data.cdl
rename to ncdump/cdl/ref_tst_opaque_data.cdl
diff --git a/ncdump/cdl4/ref_tst_small.cdl b/ncdump/cdl/ref_tst_small.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_small.cdl
rename to ncdump/cdl/ref_tst_small.cdl
diff --git a/ncdump/cdl4/ref_tst_solar_1.cdl b/ncdump/cdl/ref_tst_solar_1.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_solar_1.cdl
rename to ncdump/cdl/ref_tst_solar_1.cdl
diff --git a/ncdump/cdl4/ref_tst_solar_2.cdl b/ncdump/cdl/ref_tst_solar_2.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_solar_2.cdl
rename to ncdump/cdl/ref_tst_solar_2.cdl
diff --git a/ncdump/cdl4/ref_tst_special_atts.cdl b/ncdump/cdl/ref_tst_special_atts.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_special_atts.cdl
rename to ncdump/cdl/ref_tst_special_atts.cdl
diff --git a/ncdump/cdl4/ref_tst_special_atts3.cdl b/ncdump/cdl/ref_tst_special_atts3.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_special_atts3.cdl
rename to ncdump/cdl/ref_tst_special_atts3.cdl
diff --git a/ncdump/cdl4/ref_tst_string_data.cdl b/ncdump/cdl/ref_tst_string_data.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_string_data.cdl
rename to ncdump/cdl/ref_tst_string_data.cdl
diff --git a/ncdump/cdl4/ref_tst_unicode.cdl b/ncdump/cdl/ref_tst_unicode.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_unicode.cdl
rename to ncdump/cdl/ref_tst_unicode.cdl
diff --git a/ncdump/cdl4/ref_tst_unlim2.cdl b/ncdump/cdl/ref_tst_unlim2.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_unlim2.cdl
rename to ncdump/cdl/ref_tst_unlim2.cdl
diff --git a/ncdump/cdl4/ref_tst_utf8.cdl b/ncdump/cdl/ref_tst_utf8.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_utf8.cdl
rename to ncdump/cdl/ref_tst_utf8.cdl
diff --git a/ncdump/cdl4/ref_tst_vlen_data.cdl b/ncdump/cdl/ref_tst_vlen_data.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_vlen_data.cdl
rename to ncdump/cdl/ref_tst_vlen_data.cdl
diff --git a/ncdump/cdl4/ref_tst_vlen_data2.cdl b/ncdump/cdl/ref_tst_vlen_data2.cdl
similarity index 100%
rename from ncdump/cdl4/ref_tst_vlen_data2.cdl
rename to ncdump/cdl/ref_tst_vlen_data2.cdl
diff --git a/ncdump/cdl4/ref_typescope.cdl b/ncdump/cdl/ref_typescope.cdl
similarity index 100%
rename from ncdump/cdl4/ref_typescope.cdl
rename to ncdump/cdl/ref_typescope.cdl
diff --git a/ncdump/cdl4/sfc_pres_temp.cdl b/ncdump/cdl/sfc_pres_temp.cdl
similarity index 100%
rename from ncdump/cdl4/sfc_pres_temp.cdl
rename to ncdump/cdl/sfc_pres_temp.cdl
diff --git a/ncdump/cdl4/simple_xy.cdl b/ncdump/cdl/simple_xy.cdl
similarity index 100%
rename from ncdump/cdl4/simple_xy.cdl
rename to ncdump/cdl/simple_xy.cdl
diff --git a/ncdump/cdl4/small.cdl b/ncdump/cdl/small.cdl
similarity index 100%
rename from ncdump/cdl4/small.cdl
rename to ncdump/cdl/small.cdl
diff --git a/ncdump/cdl4/small2.cdl b/ncdump/cdl/small2.cdl
similarity index 100%
rename from ncdump/cdl4/small2.cdl
rename to ncdump/cdl/small2.cdl
diff --git a/ncdump/cdl4/test0.cdl b/ncdump/cdl/test0.cdl
similarity index 100%
rename from ncdump/cdl4/test0.cdl
rename to ncdump/cdl/test0.cdl
diff --git a/ncdump/cdl/tst_chararray.cdl b/ncdump/cdl/tst_chararray.cdl
new file mode 100644
index 0000000..dfb67a6
--- /dev/null
+++ b/ncdump/cdl/tst_chararray.cdl
@@ -0,0 +1,24 @@
+netcdf ref_tst_array {
+dimensions:
+ F2 = 2 ;
+ F3 = 3 ;
+variables:
+ char ch1(F2, F3) ;
+ char ch2(F2, F3) ;
+ char ch3(F2, F3) ;
+ char ch4(F2, F3) ;
+data:
+
+ ch1 =
+ "abc",
+ "def" ;
+
+ ch2 =
+ "abcdef" ; // equivalent to how ff is specified, and works fine
+
+ ch3 =
+ "a", "b" ;
+
+ ch4 =
+ 'a', 'b', 'c', 'd', 'e', 'f';
+}
diff --git a/ncdump/cdl4/tst_ncml.cdl b/ncdump/cdl/tst_ncml.cdl
similarity index 100%
rename from ncdump/cdl4/tst_ncml.cdl
rename to ncdump/cdl/tst_ncml.cdl
diff --git a/ncdump/cdl4/unlimtest1.cdl b/ncdump/cdl/unlimtest1.cdl
similarity index 100%
rename from ncdump/cdl4/unlimtest1.cdl
rename to ncdump/cdl/unlimtest1.cdl
diff --git a/ncdump/cdl4/unlimtest2.cdl b/ncdump/cdl/unlimtest2.cdl
similarity index 100%
rename from ncdump/cdl4/unlimtest2.cdl
rename to ncdump/cdl/unlimtest2.cdl
diff --git a/ncdump/ctests.sh b/ncdump/ctests.sh
index 52938c7..defc25b 100755
--- a/ncdump/ctests.sh
+++ b/ncdump/ctests.sh
@@ -119,7 +119,7 @@ LIBS="${LIBS} -L ${CURLPATH}/lib -lcurl"
fi
# Define the set of tests that can be
-# processed with either the -k1 or -k3 flag
+# processed with either the -k nc3 or -k nc4 flag
TESTS3="\
test0 \
@@ -145,7 +145,7 @@ ref_nctst_netcdf4 \
ref_nctst_netcdf4_classic"
# Define the set of tests that must be
-# processed with the -k3 flag
+# processed with the -k nc4 flag
TESTS4="\
ref_dimscope \
diff --git a/ncdump/env b/ncdump/env
index a998e21..e1185ef 100644
--- a/ncdump/env
+++ b/ncdump/env
@@ -1,6 +1,10 @@
-F="tst_small.nc"
+NC="avhrr.hdf"
+
+NCDUMP="./ncdump"
+#NCDUMP="./.libs/ncdump"
+
+alias q0="${NCDUMP} ${NC}"
+alias qh="${NCDUMP} -h ${NC}"
+alias qq="gdb --args ${NCDUMP} ${NC}"
+alias qqh="gdb --args ${NCDUMP} -h ${NC}"
-alias q0="./ncdump $F"
-alias qh="./ncdump -h $F"
-alias qq="gdb --args ./ncdump $F"
-alias qqh="gdb --args ./ncdump -h $F"
diff --git a/ncdump/expected4/CMakeLists.txt b/ncdump/expected/CMakeLists.txt
similarity index 100%
rename from ncdump/expected4/CMakeLists.txt
rename to ncdump/expected/CMakeLists.txt
diff --git a/ncdump/expected4/Makefile.am b/ncdump/expected/Makefile.am
similarity index 91%
rename from ncdump/expected4/Makefile.am
rename to ncdump/expected/Makefile.am
index 310c49f..b4601d7 100644
--- a/ncdump/expected4/Makefile.am
+++ b/ncdump/expected/Makefile.am
@@ -1,9 +1,7 @@
## This is a automake file, part of Unidata's netCDF package.
# Copyright 2007, see the COPYRIGHT file for more information.
-# This is to include the libnc-dap test comparison files
-
-# $Id: Makefile.am,v 1.4 2010/04/27 18:50:45 dmh Exp $
+# This is to include the test comparison files
EXTRA_DIST = \
c0.dmp example_good.dmp fills.dmp nc_enddef.dmp nc_sync.dmp pres_temp_4D.dmp \
@@ -22,6 +20,7 @@ ref_solar.dmp unlimtest1.dmp unlimtest2.dmp \
ref_tst_vlen_data.dmp ref_tst_vlen_data2.dmp \
ref_niltest.dmp ref_tst_h_scalar.dmp ref_tst_econst.dmp \
ref_tst_nul3.dmp ref_tst_nul4.dmp ref_tst_names.dmp \
+ref_tst_long_charconst.dmp tst_chararray.dmp \
CMakeLists.txt
# These do not exist because they are not run as usual tests
diff --git a/ncdump/expected/Makefile.in b/ncdump/expected/Makefile.in
new file mode 100644
index 0000000..87441d6
--- /dev/null
+++ b/ncdump/expected/Makefile.in
@@ -0,0 +1,509 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2007, see the COPYRIGHT file for more information.
+
+# This is to include the test comparison files
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = ncdump/expected
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+c0.dmp example_good.dmp fills.dmp nc_enddef.dmp nc_sync.dmp pres_temp_4D.dmp \
+ref_const_test.dmp ref_ctest1_nc4.dmp ref_ctest1_nc4c.dmp ref_dimscope.dmp \
+ref_nctst.dmp ref_nctst_64bit_offset.dmp ref_nctst_netcdf4.dmp \
+ref_nctst_netcdf4_classic.dmp \
+ref_tst_comp.dmp ref_tst_comp2.dmp ref_tst_comp3.dmp \
+ref_tst_enum_data.dmp ref_tst_group_data.dmp \
+ref_tst_nans.dmp ref_tst_opaque_data.dmp ref_tst_small.dmp \
+ref_tst_solar_1.dmp ref_tst_solar_2.dmp ref_tst_special_atts.dmp \
+ref_tst_string_data.dmp ref_tst_unicode.dmp ref_tst_utf8.dmp \
+ref_typescope.dmp sfc_pres_temp.dmp \
+simple_xy.dmp small.dmp small2.dmp test0.dmp tst_ncml.dmp \
+n3time.dmp ref_tst_special_atts3.dmp ref_tst_chardata.dmp ref_tst_unlim2.dmp \
+ref_solar.dmp unlimtest1.dmp unlimtest2.dmp \
+ref_tst_vlen_data.dmp ref_tst_vlen_data2.dmp \
+ref_niltest.dmp ref_tst_h_scalar.dmp ref_tst_econst.dmp \
+ref_tst_nul3.dmp ref_tst_nul4.dmp ref_tst_names.dmp \
+ref_tst_long_charconst.dmp tst_chararray.dmp \
+CMakeLists.txt
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncdump/expected/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncdump/expected/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# These do not exist because they are not run as usual tests
+# bigf1.dmp bigf2.dmp bigf3.dmp bigr1.dmp bigr2.dmp bigr3.dmp gfs1.dmp
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncdump/expected4/c0.dmp b/ncdump/expected/c0.dmp
similarity index 100%
rename from ncdump/expected4/c0.dmp
rename to ncdump/expected/c0.dmp
diff --git a/ncdump/expected4/example_good.dmp b/ncdump/expected/example_good.dmp
similarity index 100%
rename from ncdump/expected4/example_good.dmp
rename to ncdump/expected/example_good.dmp
diff --git a/ncdump/expected4/fills.dmp b/ncdump/expected/fills.dmp
similarity index 100%
rename from ncdump/expected4/fills.dmp
rename to ncdump/expected/fills.dmp
diff --git a/ncdump/expected4/n3time.dmp b/ncdump/expected/n3time.dmp
similarity index 100%
rename from ncdump/expected4/n3time.dmp
rename to ncdump/expected/n3time.dmp
diff --git a/ncdump/expected4/nc_enddef.dmp b/ncdump/expected/nc_enddef.dmp
similarity index 100%
rename from ncdump/expected4/nc_enddef.dmp
rename to ncdump/expected/nc_enddef.dmp
diff --git a/ncdump/expected4/nc_sync.dmp b/ncdump/expected/nc_sync.dmp
similarity index 100%
rename from ncdump/expected4/nc_sync.dmp
rename to ncdump/expected/nc_sync.dmp
diff --git a/ncdump/expected4/pres_temp_4D.dmp b/ncdump/expected/pres_temp_4D.dmp
similarity index 100%
rename from ncdump/expected4/pres_temp_4D.dmp
rename to ncdump/expected/pres_temp_4D.dmp
diff --git a/ncdump/expected4/ref_const_test.dmp b/ncdump/expected/ref_const_test.dmp
similarity index 100%
rename from ncdump/expected4/ref_const_test.dmp
rename to ncdump/expected/ref_const_test.dmp
diff --git a/ncdump/expected4/ref_ctest1_nc4.dmp b/ncdump/expected/ref_ctest1_nc4.dmp
similarity index 100%
rename from ncdump/expected4/ref_ctest1_nc4.dmp
rename to ncdump/expected/ref_ctest1_nc4.dmp
diff --git a/ncdump/expected4/ref_ctest1_nc4c.dmp b/ncdump/expected/ref_ctest1_nc4c.dmp
similarity index 100%
rename from ncdump/expected4/ref_ctest1_nc4c.dmp
rename to ncdump/expected/ref_ctest1_nc4c.dmp
diff --git a/ncdump/expected4/ref_dimscope.dmp b/ncdump/expected/ref_dimscope.dmp
similarity index 100%
rename from ncdump/expected4/ref_dimscope.dmp
rename to ncdump/expected/ref_dimscope.dmp
diff --git a/ncdump/expected4/ref_nctst.dmp b/ncdump/expected/ref_nctst.dmp
similarity index 100%
rename from ncdump/expected4/ref_nctst.dmp
rename to ncdump/expected/ref_nctst.dmp
diff --git a/ncdump/expected4/ref_nctst_64bit_offset.dmp b/ncdump/expected/ref_nctst_64bit_offset.dmp
similarity index 100%
rename from ncdump/expected4/ref_nctst_64bit_offset.dmp
rename to ncdump/expected/ref_nctst_64bit_offset.dmp
diff --git a/ncdump/expected4/ref_nctst_netcdf4.dmp b/ncdump/expected/ref_nctst_netcdf4.dmp
similarity index 100%
rename from ncdump/expected4/ref_nctst_netcdf4.dmp
rename to ncdump/expected/ref_nctst_netcdf4.dmp
diff --git a/ncdump/expected4/ref_nctst_netcdf4_classic.dmp b/ncdump/expected/ref_nctst_netcdf4_classic.dmp
similarity index 100%
rename from ncdump/expected4/ref_nctst_netcdf4_classic.dmp
rename to ncdump/expected/ref_nctst_netcdf4_classic.dmp
diff --git a/ncdump/expected4/ref_niltest.dmp b/ncdump/expected/ref_niltest.dmp
similarity index 100%
rename from ncdump/expected4/ref_niltest.dmp
rename to ncdump/expected/ref_niltest.dmp
diff --git a/ncdump/expected4/ref_solar.dmp b/ncdump/expected/ref_solar.dmp
similarity index 100%
rename from ncdump/expected4/ref_solar.dmp
rename to ncdump/expected/ref_solar.dmp
diff --git a/ncdump/expected4/ref_tst_chardata.dmp b/ncdump/expected/ref_tst_chardata.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_chardata.dmp
rename to ncdump/expected/ref_tst_chardata.dmp
diff --git a/ncdump/expected4/ref_tst_comp.dmp b/ncdump/expected/ref_tst_comp.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_comp.dmp
rename to ncdump/expected/ref_tst_comp.dmp
diff --git a/ncdump/expected4/ref_tst_comp2.dmp b/ncdump/expected/ref_tst_comp2.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_comp2.dmp
rename to ncdump/expected/ref_tst_comp2.dmp
diff --git a/ncdump/expected4/ref_tst_comp3.dmp b/ncdump/expected/ref_tst_comp3.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_comp3.dmp
rename to ncdump/expected/ref_tst_comp3.dmp
diff --git a/ncdump/expected4/ref_tst_econst.dmp b/ncdump/expected/ref_tst_econst.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_econst.dmp
rename to ncdump/expected/ref_tst_econst.dmp
diff --git a/ncdump/expected4/ref_tst_enum_data.dmp b/ncdump/expected/ref_tst_enum_data.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_enum_data.dmp
rename to ncdump/expected/ref_tst_enum_data.dmp
diff --git a/ncdump/expected4/ref_tst_group_data.dmp b/ncdump/expected/ref_tst_group_data.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_group_data.dmp
rename to ncdump/expected/ref_tst_group_data.dmp
diff --git a/ncdump/expected4/ref_tst_h_scalar.dmp b/ncdump/expected/ref_tst_h_scalar.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_h_scalar.dmp
rename to ncdump/expected/ref_tst_h_scalar.dmp
diff --git a/ncdump/expected/ref_tst_long_charconst.dmp b/ncdump/expected/ref_tst_long_charconst.dmp
new file mode 100644
index 0000000..cb020fd
--- /dev/null
+++ b/ncdump/expected/ref_tst_long_charconst.dmp
@@ -0,0 +1,9 @@
+netcdf ref_tst_long_charconst {
+dimensions:
+ obs = 60000 ;
+variables:
+ char PRCP_MFLAG(obs) ;
+data:
+
+ PRCP_MFLAG = " PPPP PP PP PP PPP PPPPPPPPP PP P PPP PPP P P PP PPP PPPPP PPPPPPP P P P PPPPP PPPP P P PP P PPPPPP PP TTPPPP PPPPP PP T P PPP PPPPP P P PPPPPPP PPPP PPPP PPPPP PPPP PP PPP PPPP PPP PPPPPPPPPPPP PPPPPP P P PPP PP PPPP PPPP PPPPP PPPPP PP PPPP P PPP PPPP PP P PPP P PP PPPP PPPPP PP P PP PPP PPP PPPPPPPP PPP PPPP PP P P PP PP PP [...]
+}
diff --git a/ncdump/expected4/ref_tst_names.dmp b/ncdump/expected/ref_tst_names.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_names.dmp
rename to ncdump/expected/ref_tst_names.dmp
diff --git a/ncdump/expected4/ref_tst_nans.dmp b/ncdump/expected/ref_tst_nans.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_nans.dmp
rename to ncdump/expected/ref_tst_nans.dmp
diff --git a/ncdump/expected4/ref_tst_nul3.dmp b/ncdump/expected/ref_tst_nul3.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_nul3.dmp
rename to ncdump/expected/ref_tst_nul3.dmp
diff --git a/ncdump/expected4/ref_tst_nul4.dmp b/ncdump/expected/ref_tst_nul4.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_nul4.dmp
rename to ncdump/expected/ref_tst_nul4.dmp
diff --git a/ncdump/expected4/ref_tst_opaque_data.dmp b/ncdump/expected/ref_tst_opaque_data.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_opaque_data.dmp
rename to ncdump/expected/ref_tst_opaque_data.dmp
diff --git a/ncdump/expected4/ref_tst_small.dmp b/ncdump/expected/ref_tst_small.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_small.dmp
rename to ncdump/expected/ref_tst_small.dmp
diff --git a/ncdump/expected4/ref_tst_solar_1.dmp b/ncdump/expected/ref_tst_solar_1.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_solar_1.dmp
rename to ncdump/expected/ref_tst_solar_1.dmp
diff --git a/ncdump/expected4/ref_tst_solar_2.dmp b/ncdump/expected/ref_tst_solar_2.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_solar_2.dmp
rename to ncdump/expected/ref_tst_solar_2.dmp
diff --git a/ncdump/expected4/ref_tst_special_atts.dmp b/ncdump/expected/ref_tst_special_atts.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_special_atts.dmp
rename to ncdump/expected/ref_tst_special_atts.dmp
diff --git a/ncdump/expected4/ref_tst_special_atts3.dmp b/ncdump/expected/ref_tst_special_atts3.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_special_atts3.dmp
rename to ncdump/expected/ref_tst_special_atts3.dmp
diff --git a/ncdump/expected4/ref_tst_string_data.dmp b/ncdump/expected/ref_tst_string_data.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_string_data.dmp
rename to ncdump/expected/ref_tst_string_data.dmp
diff --git a/ncdump/expected4/ref_tst_unicode.dmp b/ncdump/expected/ref_tst_unicode.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_unicode.dmp
rename to ncdump/expected/ref_tst_unicode.dmp
diff --git a/ncdump/expected4/ref_tst_unlim2.dmp b/ncdump/expected/ref_tst_unlim2.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_unlim2.dmp
rename to ncdump/expected/ref_tst_unlim2.dmp
diff --git a/ncdump/expected4/ref_tst_utf8.dmp b/ncdump/expected/ref_tst_utf8.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_utf8.dmp
rename to ncdump/expected/ref_tst_utf8.dmp
diff --git a/ncdump/expected4/ref_tst_vlen_data.dmp b/ncdump/expected/ref_tst_vlen_data.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_vlen_data.dmp
rename to ncdump/expected/ref_tst_vlen_data.dmp
diff --git a/ncdump/expected4/ref_tst_vlen_data2.dmp b/ncdump/expected/ref_tst_vlen_data2.dmp
similarity index 100%
rename from ncdump/expected4/ref_tst_vlen_data2.dmp
rename to ncdump/expected/ref_tst_vlen_data2.dmp
diff --git a/ncdump/expected4/ref_typescope.dmp b/ncdump/expected/ref_typescope.dmp
similarity index 100%
rename from ncdump/expected4/ref_typescope.dmp
rename to ncdump/expected/ref_typescope.dmp
diff --git a/ncdump/expected4/sfc_pres_temp.dmp b/ncdump/expected/sfc_pres_temp.dmp
similarity index 100%
rename from ncdump/expected4/sfc_pres_temp.dmp
rename to ncdump/expected/sfc_pres_temp.dmp
diff --git a/ncdump/expected4/simple_xy.dmp b/ncdump/expected/simple_xy.dmp
similarity index 100%
rename from ncdump/expected4/simple_xy.dmp
rename to ncdump/expected/simple_xy.dmp
diff --git a/ncdump/expected4/small.dmp b/ncdump/expected/small.dmp
similarity index 100%
rename from ncdump/expected4/small.dmp
rename to ncdump/expected/small.dmp
diff --git a/ncdump/expected4/small2.dmp b/ncdump/expected/small2.dmp
similarity index 100%
rename from ncdump/expected4/small2.dmp
rename to ncdump/expected/small2.dmp
diff --git a/ncdump/expected4/test0.dmp b/ncdump/expected/test0.dmp
similarity index 100%
rename from ncdump/expected4/test0.dmp
rename to ncdump/expected/test0.dmp
diff --git a/ncdump/expected/tst_chararray.dmp b/ncdump/expected/tst_chararray.dmp
new file mode 100644
index 0000000..eb5fc80
--- /dev/null
+++ b/ncdump/expected/tst_chararray.dmp
@@ -0,0 +1,27 @@
+netcdf tst_chararray {
+dimensions:
+ F2 = 2 ;
+ F3 = 3 ;
+variables:
+ char ch1(F2, F3) ;
+ char ch2(F2, F3) ;
+ char ch3(F2, F3) ;
+ char ch4(F2, F3) ;
+data:
+
+ ch1 =
+ "abc",
+ "def" ;
+
+ ch2 =
+ "abc",
+ "def" ;
+
+ ch3 =
+ "a",
+ "b" ;
+
+ ch4 =
+ "abc",
+ "def" ;
+}
diff --git a/ncdump/expected4/tst_ncml.dmp b/ncdump/expected/tst_ncml.dmp
similarity index 100%
rename from ncdump/expected4/tst_ncml.dmp
rename to ncdump/expected/tst_ncml.dmp
diff --git a/ncdump/expected4/unlimtest1.dmp b/ncdump/expected/unlimtest1.dmp
similarity index 100%
rename from ncdump/expected4/unlimtest1.dmp
rename to ncdump/expected/unlimtest1.dmp
diff --git a/ncdump/expected4/unlimtest2.dmp b/ncdump/expected/unlimtest2.dmp
similarity index 100%
rename from ncdump/expected4/unlimtest2.dmp
rename to ncdump/expected/unlimtest2.dmp
diff --git a/ncdump/nccopy.1 b/ncdump/nccopy.1
index 30d1267..6e00aac 100644
--- a/ncdump/nccopy.1
+++ b/ncdump/nccopy.1
@@ -1,14 +1,14 @@
.\" $Id: nccopy.1 400 2010-08-27 21:02:52Z russ $
.TH NCCOPY 1 "2012-03-08" "Release 4.2" "UNIDATA UTILITIES"
.SH NAME
-nccopy \- Copy a netCDF file to specified variant of netCDF format,
-optionally compressing or chunking data in the output copy.
+nccopy \- Copy a netCDF file, optionally changing format, compression, or chunking in the output.
.SH SYNOPSIS
.ft B
.HP
nccopy
.nh
-\%[-k \fI kind \fP]
+\%[-k \fI kind_name \fP]
+\%[-\fIkind_code\fP]
\%[-d \fI n \fP]
\%[-s]
\%[-c \fI chunkspec \fP]
@@ -37,6 +37,17 @@ a netCDF-4 classic model file as well, permitting data compression,
efficient schema changes, larger variable sizes, and use of other
netCDF-4 features.
.LP
+If no output format is specified, with either -k \fIkind_name\fP
+or \fI-kind_code\fP, then the output will use the same
+format as the input, unless the input is classic or 64-bit offset
+and either chunking or compression is specified, in which case the
+output will be netCDF-4 classic model format. Attempting
+some kinds of format conversion will result in an error, if the
+conversion is not possible. For example, an attempt to copy a
+netCDF-4 file that uses features of the enhanced model, such as
+groups or variable-length strings, to any of the other kinds of netCDF
+formats that use the classic model will result in an error.
+.LP
\fBnccopy\fP also serves as an example of a generic netCDF-4 program,
with its ability to read any valid netCDF file and handle nested
groups, strings, and user-defined types, including arbitrarily
@@ -47,28 +58,39 @@ If DAP support was enabled when \fBnccopy\fP was built, the file name may
specify a DAP URL. This may be used to convert data on DAP servers to
local netCDF files.
.SH OPTIONS
-.IP "\fB -k \fP \fI kind \fP"
-Specifies the kind of file to be created (that is, the format variant)
+.IP "\fB -k \fP \fI kind_name \fP"
+Use format name to specify the kind of file to be created
+and, by inference, the data model (i.e. netcdf-3 (classic) or
+netcdf-4 (enhanced)). The possible arguments are:
+.RS
+.RS
+.IP "'nc3' or 'classic' => netCDF classic format"
+.IP "'nc6' or '64-bit offset' => netCDF 64-bit format"
+.IP "'nc4' or 'netCDF-4' => netCDF-4 format (enhanced data model)"
+.IP "'nc7' or 'netCDF-4 classic model' => netCDF-4 classic model format"
+.RE
+.RE
+.IP
+Note: The old format numbers '1', '2', '3', '4', equivalent
+to the format names 'nc3', 'nc6', 'nc4', or 'nc7' respectively, are
+also still accepted but deprecated, due to easy confusion between
+format numbers and format names.
+.IP "[\fB-\fP\fIkind_code\fP]"
+Use format numeric code (instead of format name) to specify the kind of file to be created
and, by inference, the data model (i.e. netcdf-3 (classic) versus
-netcdf-4 (enhanced)). The possible arguments are as follows.
+netcdf-4 (enhanced)). The numeric codes are:
.RS
.RS
-.IP "'1' or 'classic' => netcdf classic format"
-.IP "'2', '64-bit-offset', or '64-bit offset' => netCDF 64-bit format"
-.IP "'3', 'hdf5', 'netCDF-4', or 'enhanced' => netCDF-4 format (enhanced data model)"
-.IP "'4', 'hdf5-nc3', 'netCDF-4 classic model', or 'enhanced-nc3' => netCDF-4 classic model format"
+.IP "3 => netcdf classic format"
+.IP "6 => netCDF 64-bit format"
+.IP "4 => netCDF-4 format (enhanced data model)"
+.IP "7 => netCDF-4 classic model format"
.RE
.RE
-.IP
-If no value for -k is specified, then the output will use the same
-format as the input, except if the input is classic or 64-bit offset
-and either chunking or compression is specified, in which case the
-output will be netCDF-4 classic model format. Note that attempting
-some kinds of format conversion will result in an error, if the
-conversion is not possible. For example, an attempt to copy a
-netCDF-4 file that uses features of the enhanced model, such as
-groups or variable-length strings, to any of the other kinds of netCDF
-formats that use the classic model will result in an error.
+The numeric code "7" is used because "7=3+4", specifying the format
+that uses the netCDF-3 data model for compatibility with the netCDF-4
+storage format for performance. Credit is due to NCO for use of these
+numeric codes instead of the old and confusing format numbers.
.IP "\fB -d \fP \fI n \fP"
For netCDF-4 output, including netCDF-4 classic model, specify
deflation level (level of compression) for variable data output. 0
@@ -83,16 +105,19 @@ specified and the input file has compressed variables, the compression
will still be preserved in the output, using the same chunking as in
the input by default.
.IP
-Note that specifying output deflation level with \fBnccopy\fP results in
-all output variables compressed using
-the same compression level, but the API has no such restriction. With
+Note that \fBnccopy\fP requires all variables to be compressed using the
+same compression level, but the API has no such restriction. With
a program you can customize compression for each variable independently.
.IP "\fB -s \fP"
For netCDF-4 output, including netCDF-4 classic model, specify
shuffling of variable data bytes before compression or after
-decompression. This option is ignored unless a non-zero deflation
-level is specified. Turning shuffling on sometimes improves
-compression.
+decompression. Shuffling refers to interlacing of bytes in a chunk so
+that the first bytes of all values are contiguous in storage, followed
+by all the second bytes, and so on, which often improves compression.
+This option is ignored unless a non-zero deflation level is specified.
+Using -d0 to specify no deflation on input data that has been
+compressed and shuffled turns off both compression and shuffling in
+the output.
.IP "\fB -u \fP"
Convert any unlimited size dimensions in the input to fixed size
dimensions in the output. This can speed up variable-at-a-time
@@ -114,28 +139,34 @@ other filters such as checksums. Changing the chunking in a netCDF
file can also greatly speedup access, by choosing chunk shapes that
are appropriate for the most common access patterns.
.IP
-The \fIchunkspec\fP argument is a string of comma-separated
-associations, each specifying a dimension name, a '/' character, and
-optionally the corresponding chunk length for that dimension. No
-blanks should appear in the chunkspec string, except possibly escaped
-blanks that are part of a dimension name. A chunkspec must name at
-least one dimension, and may omit dimensions which are not to be
-chunked or for which the default chunk length is desired. If a
-dimension name is followed by a '/' character but no subsequent chunk
-length, the actual dimension length is assumed. If copying a classic
-model file to a netCDF-4 output file and not naming all dimensions in
-the chunkspec, unnamed dimensions will also use the actual dimension
-length for the chunk length. An example of a chunkspec for variables
-that use 'm' and 'n' dimensions might be 'm/100,n/200' to specify
-100 by 200 chunks. To see the chunking resulting from copying with a
-chunkspec, use the '-s' option of ncdump on the output file.
+The \fIchunkspec\fP argument is a string of comma-separated associations,
+each specifying a dimension name, a '/' character, and optionally the
+corresponding chunk length for that dimension. No blanks should
+appear in the chunkspec string, except possibly escaped blanks that
+are part of a dimension name. A chunkspec names at least one
+dimension, and may omit dimensions which are not to be chunked or for
+which the default chunk length is desired. If a dimension name is
+followed by a '/' character but no subsequent chunk length, the actual
+dimension length is assumed. If copying a classic model file to a
+netCDF-4 output file and not naming all dimensions in the chunkspec,
+unnamed dimensions will also use the actual dimension length for the
+chunk length. An example of a chunkspec for variables that use 'm'
+and 'n' dimensions might be 'm/100,n/200' to specify 100 by 200
+chunks. To see the chunking resulting from copying with a chunkspec,
+use the '-s' option of ncdump on the output file.
+.IP
+The chunkspec '/' that omits all dimension names and
+corresponding chunk lengths specifies that no chunking is to occur in
+the output, so can be used to unchunk all the chunked variables.
+To see the chunking resulting from copying with a chunkspec,
+use the '-s' option of ncdump on the output file.
.IP
As an I/O optimization, \fBnccopy\fP has a threshold for the minimum size of
non-record variables that get chunked, currently 8192 bytes. In the future,
use of this threshold and its size may be settable in an option.
.IP
-Note that \fBnccopy\fP requires variables that share a dimension to
-also share the chunk size associated with that dimension, but the
+Note that \fBnccopy\fP requires variables that share a dimension to also
+share the chunk size associated with that dimension, but the
programming interface has no such restriction. If you need to
customize chunking for variables independently, you will need to use
the library API in a custom utility program.
@@ -148,8 +179,8 @@ argument to the command, hence cannot contain unescaped blanks or
other white space characters. The named variables must be valid netCDF
variables in the input-file. A variable within a group in a netCDF-4
file may be specified with an absolute path name, such as
-'/GroupA/GroupA2/var'. Use of a relative path name such as 'var' or
-'grp/var' specifies all matching variable names in the file. The
+"/GroupA/GroupA2/var". Use of a relative path name such as 'var' or
+"grp/var" specifies all matching variable names in the file. The
default, without this option, is to include data values for \fI all \fP variables
in the output.
.IP "\fB -V \fP \fI var1,... \fP"
@@ -190,21 +221,21 @@ performance, if the output fits in memory.
.IP "\fB -h \fP \fI chunk_cache \fP"
For netCDF-4 output, including netCDF-4 classic model, an integer or
floating-point number that specifies the size in bytes of chunk cache
-for each chunked variable. This is not a property of the file, but merely
+allocated for each chunked variable. This is not a property of the file, but merely
a performance tuning parameter for avoiding compressing or
decompressing the same data multiple times while copying and changing
chunk shapes. A suffix of K, M, G, or T multiplies the chunk cache
size by one thousand, million, billion, or trillion, respectively.
The default is 4.194304 Mbytes (or whatever was specified for the
configure-time constant CHUNK_CACHE_SIZE when the netCDF library was
-built). Ideally, the \fBnccopy\fP utility should accept only one
-memory buffer size and divide it optimally between a copy buffer and
-chunk cache, but no general algorithm for computing the optimum chunk
-cache size has been implemented yet. Using the '-w' option may
-provide better performance, if the output fits in memory.
+built). Ideally, the \fBnccopy\fP utility should accept only one memory
+buffer size and divide it optimally between a copy buffer and chunk
+cache, but no general algorithm for computing the optimum chunk cache
+size has been implemented yet. Using the '-w' option may provide
+better performance, if the output fits in memory.
.IP "\fB -e \fP \fI cache_elems \fP"
For netCDF-4 output, including netCDF-4 classic model, specifies
-number of chunkss that the chunk cache can hold. A suffix of K, M, G,
+number of chunks that the chunk cache can hold. A suffix of K, M, G,
or T multiplies the number of chunks that can be held in the cache
by one thousand, million, billion, or trillion, respectively. This is not a
property of the file, but merely a performance tuning parameter for
@@ -212,13 +243,13 @@ avoiding compressing or decompressing the same data multiple times
while copying and changing chunk shapes. The default is 1009 (or
whatever was specified for the configure-time constant
CHUNK_CACHE_NELEMS when the netCDF library was built). Ideally, the
-\fBnccopy\fP utility should determine an optimum value for this
-parameter, but no general algorithm for computing the optimum number
-of chunk cache elements has been implemented yet.
+\fBnccopy\fP utility should determine an optimum value for this parameter,
+but no general algorithm for computing the optimum number of chunk
+cache elements has been implemented yet.
.IP "\fB -r \fP"
Read netCDF classic or 64-bit offset input file into a diskless netCDF
file in memory before copying. Requires that input file be small
-enough to fit into memory. For nccopy, this doesn't seem to provide
+enough to fit into memory. For \fBnccopy\fP, this doesn't seem to provide
any significant speedup, so may not be a useful option.
.SH EXAMPLES
.LP
@@ -230,13 +261,11 @@ nccopy foo1.nc foo2.nc
.RE
.LP
Note that the above copy will not be as fast as use of cp or other
-simple copy utility, because the file is copied using
-only the netCDF
-API. If the input file has extra bytes
-after the end of the
-netCDF data, those will not be copied, because they are not accessible
+simple copy utility, because the file is copied using only the netCDF
+API. If the input file has extra bytes after the end of the netCDF
+data, those will not be copied, because they are not accessible
through the netCDF interface. If the original file was generated in
-'No fill' mode so that fill values are not stored for padding for data
+"No fill" mode so that fill values are not stored for padding for data
alignment, the output file may have different padding bytes.
.LP
Convert a netCDF-4 classic model file, compressed.nc, that uses compression,
@@ -246,7 +275,7 @@ to a netCDF-3 file classic.nc:
nccopy -k classic compressed.nc classic.nc
.RE
.LP
-Note that '1' could be used instead of 'classic'.
+Note that 'nc3' could be used instead of 'classic'.
.LP
Download the variable 'time_bnds' and its associated attributes from
an OPeNDAP server and copy the result to a netCDF file named 'tb.nc':
diff --git a/ncdump/nccopy.c b/ncdump/nccopy.c
index 31477c4..0242c4c 100644
--- a/ncdump/nccopy.c
+++ b/ncdump/nccopy.c
@@ -604,7 +604,7 @@ set_var_chunked(int ogrp, int o_varid)
int odimid = dimids[odim];
int idimid = dimmap_idimid(odimid); /* corresponding dimid in input file */
if(dimmap_ounlim(odimid))
- is_unlimited = 1;
+ is_unlimited = 1; /* whether vriable is unlimited */
if(idimid != -1) {
size_t chunksize = chunkspec_size(idimid); /* from chunkspec */
size_t dimlen;
@@ -612,7 +612,9 @@ set_var_chunked(int ogrp, int o_varid)
if( (chunksize > 0) || dimmap_ounlim(odimid)) {
chunked = 1;
}
- varsize *= dimlen;
+ if(dimlen > 0) { /* dimlen for unlimited dims is still 0 before copying data */
+ varsize *= dimlen;
+ }
}
}
/* Don't chunk small variables that don't use an unlimited
@@ -622,7 +624,7 @@ set_var_chunked(int ogrp, int o_varid)
if(chunked) {
/* Allocate chunksizes and set defaults to dimsize for any
- * dimensions not mentioned in chunkspec. */
+ * dimensions not mentioned in chunkspec, except use 1 for unlimited dims. */
size_t *chunkp = (size_t *) emalloc(ndims * sizeof(size_t));
for(odim = 0; odim < ndims; odim++) {
int odimid = dimids[odim];
@@ -631,7 +633,11 @@ set_var_chunked(int ogrp, int o_varid)
if(chunksize > 0) {
chunkp[odim] = chunksize;
} else {
- NC_CHECK(nc_inq_dimlen(ogrp, odimid, &chunkp[odim]));
+ if(dimmap_ounlim(odimid)){
+ chunkp[odim] = 1;
+ } else {
+ NC_CHECK(nc_inq_dimlen(ogrp, odimid, &chunkp[odim]));
+ }
}
}
NC_CHECK(nc_def_var_chunking(ogrp, o_varid, NC_CHUNKED, chunkp));
@@ -1349,16 +1355,14 @@ copy(char* infile, char* outfile)
NC_CHECK(nc_inq_format(igrp, &inkind));
-/* option_kind specifies which netCDF format for output:
- * -1 -> same as input,
- * 1 -> classic
- * 2 -> 64-bit offset
- * 3 -> netCDF-4,
- * 4 -> netCDF-4 classic model
+/* option_kind specifies which netCDF format for output, one of
+ *
+ * SAME_AS_INPUT, NC_FORMAT_CLASSIC, NC_FORMAT_64BIT,
+ * NC_FORMAT_NETCDF4, NC_FORMAT_NETCDF4_CLASSIC
*
- * However, if compression or shuffling was specified and kind was -1,
- * kind is changed to format 4 that supports compression for input of
- * type 1 or 2.
+ * However, if compression or shuffling was specified and kind was SAME_AS_INPUT,
+ * option_kind is changed to NC_FORMAT_NETCDF4_CLASSIC, if input format is
+ * NC_FORMAT_CLASSIC or NC_FORMAT_64BIT .
*/
outkind = option_kind;
if (option_kind == SAME_AS_INPUT) { /* default, kind not specified */
@@ -1415,11 +1419,11 @@ copy(char* infile, char* outfile)
#else
case NC_FORMAT_NETCDF4:
case NC_FORMAT_NETCDF4_CLASSIC:
- error("nccopy built with --disable-netcdf4, can't create netCDF-4 files");
+ error("netCDF library built with --disable-netcdf4, can't create netCDF-4 files");
break;
#endif /* USE_NETCDF4 */
default:
- error("bad value (%d) for -k option\n", option_kind);
+ error("bad value for option specifying desired output format, see usage\n");
break;
}
NC_CHECK(nc_create(outfile, create_mode, &ogrp));
@@ -1509,9 +1513,14 @@ static void
usage(void)
{
#define USAGE "\
- [-k n] specify kind of netCDF format for output file, default same as input\n\
- 1 classic, 2 64-bit offset, 3 netCDF-4, 4 netCDF-4 classic model\n\
- [-d n] set deflation compression level, default same as input (0=none 9=max)\n\
+ [-k kind] specify kind of netCDF format for output file, default same as input\n\
+ kind strings: 'classic', '64-bit offset',\n\
+ 'netCDF-4', 'netCDF-4 classic model'\n\
+ [-3] netCDF classic output (same as -k 'classic')\n\
+ [-6] 64-bit-offset output (same as -k '64-bit offset')\n\
+ [-4] netCDF-4 output (same as -k 'netCDF-4')\n\
+ [-7] netCDF-4-classic output (same as -k 'netCDF-4 classic model')\n\
+ [-d n] set output deflation compression level, default same as input (0=none 9=max)\n\
[-s] add shuffle option to deflation compression\n\
[-c chunkspec] specify chunking for dimensions, e.g. \"dim1/N1,dim2/N2,...\"\n\
[-u] convert unlimited dimensions to fixed-size dimensions in output copy\n\
@@ -1530,8 +1539,8 @@ usage(void)
/* Don't document this flaky option until it works better */
/* [-x] use experimental computed estimates for variable-specific chunk caches\n\ */
- error("%s [-k n] [-d n] [-s] [-c chunkspec] [-u] [-w] [-[v|V] varlist] [-[g|G] grplist] [-m n] [-h n] [-e n] [-r] infile outfile\n%s",
- progname, USAGE);
+ error("%s [-k kind] [-[3|4|6|7]] [-d n] [-s] [-c chunkspec] [-u] [-w] [-[v|V] varlist] [-[g|G] grplist] [-m n] [-h n] [-e n] [-r] infile outfile\n%s\nnetCDF library version %s",
+ progname, USAGE, nc_inq_libvers());
}
int
@@ -1546,26 +1555,33 @@ main(int argc, char**argv)
char* name;
int kind;
} legalkinds[] = {
- {"1", NC_FORMAT_CLASSIC},
- {"classic", NC_FORMAT_CLASSIC},
+ /* NetCDF-3 classic format (32-bit offsets) */
+ {"classic", NC_FORMAT_CLASSIC}, /* canonical format name */
+ {"nc3", NC_FORMAT_CLASSIC}, /* short format name */
+ {"1", NC_FORMAT_CLASSIC}, /* deprecated, use "-3" or "-k nc3" instead */
- /* The 64-bit offset kind (2) */
- {"2", NC_FORMAT_64BIT},
- {"64-bit-offset", NC_FORMAT_64BIT},
- {"64-bit offset", NC_FORMAT_64BIT},
+ /* NetCDF-3 64-bit offset format */
+ {"64-bit offset", NC_FORMAT_64BIT}, /* canonical format name */
+ {"nc6", NC_FORMAT_64BIT}, /* short format name */
+ {"2", NC_FORMAT_64BIT}, /* deprecated, use "-6" or "-k nc6" instead */
+ {"64-bit-offset", NC_FORMAT_64BIT}, /* deprecated alias */
- /* NetCDF-4 HDF5 format */
- {"3", NC_FORMAT_NETCDF4},
+ /* NetCDF-4 HDF5-based format */
+ {"netCDF-4", NC_FORMAT_NETCDF4}, /* canonical format name */
+ {"nc4", NC_FORMAT_NETCDF4}, /* short format name */
+ {"3", NC_FORMAT_NETCDF4}, /* deprecated, use "-4" or "-k nc4" instead */
+ {"netCDF4", NC_FORMAT_NETCDF4}, /* deprecated aliases */
{"hdf5", NC_FORMAT_NETCDF4},
- {"netCDF-4", NC_FORMAT_NETCDF4},
- {"netCDF4", NC_FORMAT_NETCDF4},
{"enhanced", NC_FORMAT_NETCDF4},
- /* NetCDF-4 HDF5 format, but using only nc3 data model */
- {"4", NC_FORMAT_NETCDF4_CLASSIC},
- {"hdf5-nc3", NC_FORMAT_NETCDF4_CLASSIC},
- {"netCDF-4 classic model", NC_FORMAT_NETCDF4_CLASSIC},
+ /* NetCDF-4 HDF5-based format, restricted to classic data model */
+ {"netCDF-4 classic model", NC_FORMAT_NETCDF4_CLASSIC}, /* canonical format name */
+ {"nc7", NC_FORMAT_NETCDF4_CLASSIC}, /* short format name */
+ {"4", NC_FORMAT_NETCDF4_CLASSIC}, /* deprecated, use "-7" or -k nc7" */
+ {"netCDF-4-classic", NC_FORMAT_NETCDF4_CLASSIC}, /* deprecated aliases */
+ {"netCDF-4_classic", NC_FORMAT_NETCDF4_CLASSIC},
{"netCDF4_classic", NC_FORMAT_NETCDF4_CLASSIC},
+ {"hdf5-nc3", NC_FORMAT_NETCDF4_CLASSIC},
{"enhanced-nc3", NC_FORMAT_NETCDF4_CLASSIC},
/* null terminate*/
@@ -1580,20 +1596,19 @@ main(int argc, char**argv)
usage();
}
- while ((c = getopt(argc, argv, "k:d:sum:c:h:e:rwxg:G:v:V:")) != -1) {
+ while ((c = getopt(argc, argv, "k:3467d:sum:c:h:e:rwxg:G:v:V:")) != -1) {
switch(c) {
case 'k': /* for specifying variant of netCDF format to be generated
- Possible values are:
- 1 (=> classic 32 bit)
- 2 (=> classic 64 bit offsets)
- 3 (=> netCDF-4/HDF5)
- 4 (=> classic, but stored in netCDF-4/HDF5 format)
- Also allow string versions of above
- "classic"
- "64-bit-offset"
- "64-bit offset"
- "enhanced" | "hdf5" | "netCDF-4"
- "enhanced-nc3" | "hdf5-nc3" | "netCDF-4 classic model"
+ Format names:
+ "classic" or "nc3"
+ "64-bit offset" or "nc6"
+ "netCDF-4" or "nc4"
+ "netCDF-4 classic model" or "nc7"
+ Format version numbers (deprecated):
+ 1 (=> classic)
+ 2 (=> 64-bit offset)
+ 3 (=> netCDF-4)
+ 4 (=> netCDF-4 classic model)
*/
{
struct Kvalues* kvalue;
@@ -1606,10 +1621,22 @@ main(int argc, char**argv)
}
}
if(kvalue->name == NULL) {
- error("invalid format: %s", kind_name);
+ error("invalid output format: %s", kind_name);
}
}
break;
+ case '3': /* output format is classic (netCDF-3) */
+ option_kind = NC_FORMAT_CLASSIC;
+ break;
+ case '6': /* output format is 64-bit-offset (netCDF-3 version 2) */
+ option_kind = NC_FORMAT_64BIT;
+ break;
+ case '4': /* output format is netCDF-4 (variant of HDF5) */
+ option_kind = NC_FORMAT_NETCDF4;
+ break;
+ case '7': /* output format is netCDF-4 (restricted to classic model)*/
+ option_kind = NC_FORMAT_NETCDF4_CLASSIC;
+ break;
case 'd': /* non-default compression level specified */
option_deflate_level = strtol(optarg, NULL, 10);
if(option_deflate_level < 0 || option_deflate_level > 9) {
diff --git a/ncdump/ncdump.1 b/ncdump/ncdump.1
index d663b9d..b76c912 100644
--- a/ncdump/ncdump.1
+++ b/ncdump/ncdump.1
@@ -121,8 +121,7 @@ be used. If \fIlang\fP begins with `F' or `f', then Fortran language
conventions will be used. In either case, the data will be presented
in the same order; only the annotations will differ. This option may
be useful for piping data into other filters, since each data value
-appears on a separate line, fully identified. (At most one of '-b' or
-'-f' options may be present.)
+appears on a separate line, fully identified. (At most one of '-b' or '-f' options may be present.)
.IP "\fB-l\fP \fIlength\fP"
Changes the default maximum line length (80) used in formatting lists of
non-character data values.
diff --git a/ncdump/nciter.c b/ncdump/nciter.c
index 0223752..aa9a7f0 100644
--- a/ncdump/nciter.c
+++ b/ncdump/nciter.c
@@ -56,7 +56,7 @@ nc_blkio_init(size_t bufsize, /* size in bytes of in-memory copy buffer */
iter->rows = dims[0];
iter->inc = 0;
return stat;
- }
+ }
/* else, handle chunked case */
for(i = 0; i < rank; i++) {
prod *= iter->chunksizes[i];
@@ -75,7 +75,7 @@ nc_blkio_init(size_t bufsize, /* size in bytes of in-memory copy buffer */
static int
inq_value_size(int igrp, nc_type vartype, size_t *value_sizep) {
int stat = NC_NOERR;
-
+
#ifdef USE_NETCDF4
NC_CHECK(nc_inq_type(igrp, vartype, NULL, value_sizep));
#else
@@ -175,12 +175,12 @@ int
nc_get_iter(int ncid,
int varid,
size_t bufsize, /* size in bytes of memory buffer */
- nciter_t **iterpp /* returned opaque iteration state */)
+ nciter_t **iterpp /* returned opaque iteration state */)
{
int stat = NC_NOERR;
nciter_t *iterp;
nc_type vartype;
- size_t value_size; /* size in bytes of each variable element */
+ size_t value_size = 0; /* size in bytes of each variable element */
int ndims; /* number of dimensions for variable */
int *dimids;
long long nvalues = 1;
@@ -192,9 +192,9 @@ nc_get_iter(int ncid,
memset((void*)iterp,0,sizeof(nciter_t)); /* make sure it is initialized */
NC_CHECK(nc_inq_varndims(ncid, varid, &ndims));
-
+
dimids = (int *) emalloc((ndims + 1) * sizeof(int));
-
+
iterp->dimsizes = (size_t *) emalloc((ndims + 1) * sizeof(size_t));
iterp->chunksizes = (size_t *) emalloc((ndims + 1) * sizeof(size_t));
@@ -207,7 +207,7 @@ nc_get_iter(int ncid,
}
NC_CHECK(nc_inq_vartype(ncid, varid, &vartype));
NC_CHECK(inq_value_size(ncid, vartype, &value_size));
-#ifdef USE_NETCDF4
+#ifdef USE_NETCDF4
{
int contig = 1;
if(ndims > 0) {
@@ -229,11 +229,11 @@ nc_get_iter(int ncid,
/* Iterate on blocks for variables, by updating start and count vector
* for next vara call. Assumes nc_get_iter called first. Returns
* number of variable values to get, 0 if done, negative number if
- * error, so use like this:
+ * error, so use like this:
size_t to_get;
- while((to_get = nc_next_iter(&iter, start, count)) > 0) {
- ... iteration ...
- }
+ while((to_get = nc_next_iter(&iter, start, count)) > 0) {
+ ... iteration ...
+ }
if(to_get < 0) { ... handle error ... }
*/
size_t
@@ -269,7 +269,7 @@ nc_next_iter(nciter_t *iter, /* returned opaque iteration state */
iter->first = 0;
} else {
if(!iter->chunked) { /* contiguous storage */
- iter->more = up_start(iter->rank, iter->dimsizes, iter->right_dim,
+ iter->more = up_start(iter->rank, iter->dimsizes, iter->right_dim,
iter->inc, start);
/* iterate on pieces of variable */
if(iter->cur < iter->numrows) {
@@ -284,7 +284,7 @@ nc_next_iter(nciter_t *iter, /* returned opaque iteration state */
}
}
} else { /* chunked storage */
- iter->more = up_start_by_chunks(iter->rank, iter->dimsizes,
+ iter->more = up_start_by_chunks(iter->rank, iter->dimsizes,
iter->chunksizes, start);
/* adjust count to stay in range of dimsizes */
for(i = 0; i < iter->rank; i++) {
@@ -293,7 +293,7 @@ nc_next_iter(nciter_t *iter, /* returned opaque iteration state */
count[i] = iter->chunksizes[i];
else /* can happen for variables with only unlimited dimensions */
count[i] = iter->dimsizes[i];
- if(leftover < count[i])
+ if(leftover < count[i])
count[i] = leftover;
}
}
diff --git a/ncdump/ref_tst_mud4_chars.cdl b/ncdump/ref_tst_mud4_chars.cdl
new file mode 100644
index 0000000..953dcca
--- /dev/null
+++ b/ncdump/ref_tst_mud4_chars.cdl
@@ -0,0 +1,114 @@
+netcdf tst_mud4_chars {
+dimensions:
+ F1 = 1 ;
+ F2 = 2 ;
+ F3 = 3 ;
+ F5 = 5 ;
+ U1 = UNLIMITED ; // (1 currently)
+ U2 = UNLIMITED ; // (2 currently)
+ U3 = UNLIMITED ; // (3 currently)
+ U5 = UNLIMITED ; // (5 currently)
+variables:
+ char ff(F2, F3) ;
+ char uf(U2, F3) ;
+ char fu(F2, U3) ;
+ char uu(U2, U3) ;
+ char ufff(U1, F2, F3, F5) ;
+ char uffu(U1, F2, F3, U5) ;
+ char ufuf(U1, F2, U3, F5) ;
+ char ufuu(U1, F2, U3, U5) ;
+ char uuff(U1, U2, F3, F5) ;
+ char uufu(U1, U2, F3, U5) ;
+ char uuuf(U1, U2, U3, F5) ;
+ char uuuu(U1, U2, U3, U5) ;
+ char ffff(F1, F2, F3, F5) ;
+data:
+
+ ff =
+ "abc",
+ "def" ;
+
+ uf =
+ "abc",
+ "def" ;
+
+ fu =
+ {"efg"},
+ {"hij"} ;
+
+ uu =
+ {"efg"},
+ {"hij"} ;
+
+ ufff =
+ "efghi",
+ "jklmJ",
+ "KLMNO",
+ "PQRST",
+ "UVWXY",
+ "Zabcd" ;
+
+ uffu =
+ {"efghi"},
+ {"jklmJ"},
+ {"KLMNO"},
+ {"PQRST"},
+ {"UVWXY"},
+ {"Zabcd"} ;
+
+ ufuf =
+ {"efghi",
+ "jklmJ",
+ "KLMNO"},
+ {"PQRST",
+ "UVWXY",
+ "Zabcd"} ;
+
+ ufuu =
+ {{"efghi"},
+ {"jklmJ"},
+ {"KLMNO"}},
+ {{"PQRST"},
+ {"UVWXY"},
+ {"Zabcd"}} ;
+
+ uuff =
+ {"efghi",
+ "jklmJ",
+ "KLMNO",
+ "PQRST",
+ "UVWXY",
+ "Zabcd"} ;
+
+ uufu =
+ {{"efghi"},
+ {"jklmJ"},
+ {"KLMNO"},
+ {"PQRST"},
+ {"UVWXY"},
+ {"Zabcd"}} ;
+
+ uuuf =
+ {{"efghi",
+ "jklmJ",
+ "KLMNO"},
+ {"PQRST",
+ "UVWXY",
+ "Zabcd"}} ;
+
+ uuuu =
+ {{{"efghi"},
+ {"jklmJ"},
+ {"KLMNO"}},
+ {{"PQRST"},
+ {"UVWXY"},
+ {"Zabcd"}}} ;
+
+ ffff =
+ "efghi",
+ "jklmJ",
+ "KLMNO",
+ "PQRST",
+ "UVWXY",
+ "Zabcd" ;
+}
diff --git a/ncdump/run_back_comp_tests.sh b/ncdump/run_back_comp_tests.sh
index ea04fc4..0bfb747 100755
--- a/ncdump/run_back_comp_tests.sh
+++ b/ncdump/run_back_comp_tests.sh
@@ -14,14 +14,14 @@ diff -b -w $srcdir/ref_nc_test_netcdf4.cdl tst_nc_test_netcdf4_4_0.cdl
# echo "*** Testing that old versions can read data produced by this version of netCDF."
# echo "*** checking version 4.0..."
-# ../ncgen/ncgen -b -o tst_nc_test_netcdf4 -k 4 $srcdir/ref_nc_test_netcdf4.cdl
+# ../ncgen/ncgen -b -o tst_nc_test_netcdf4 -k nc7 $srcdir/ref_nc_test_netcdf4.cdl
# /machine/local_4.0/bin/ncdump tst_nc_test_netcdf4.nc > tst_nc_test_netcdf4.cdl
# tail -n +2 <$srcdir/ref_nc_test_netcdf4.cdl > tmp.cdl
# tail -n +2 <tst_nc_test_netcdf4.cdl > tmp_4_0.cdl
# diff -b -w tmp.cdl tmp_4_0.cdl
# echo "*** checking version 4.1.1..."
-# ../ncgen/ncgen -b -o tst_nc_test_netcdf4 -k 4 $srcdir/ref_nc_test_netcdf4.cdl
+# ../ncgen/ncgen -b -o tst_nc_test_netcdf4 -k nc7 $srcdir/ref_nc_test_netcdf4.cdl
# /machine/local_4.1.1/bin/ncdump tst_nc_test_netcdf4.nc > tst_nc_test_netcdf4.cdl
# tail -n +2 <$srcdir/ref_nc_test_netcdf4.cdl > tmp.cdl
# tail -n +2 <tst_nc_test_netcdf4.cdl > tmp_4_0.cdl
diff --git a/ncdump/run_tests.sh b/ncdump/run_tests.sh
index 6101677..4afaca4 100755
--- a/ncdump/run_tests.sh
+++ b/ncdump/run_tests.sh
@@ -3,6 +3,11 @@
# $Id: run_tests.sh,v 1.18 2010/05/19 13:43:39 ed Exp $
set -e
+
+if test "x$srcdir" = x ; then
+srcdir=`pwd`
+fi
+
echo ""
echo "*** Testing ncgen and ncdump using some test CDL files."
echo "*** creating tst_small.nc from ref_tst_small.cdl..."
diff --git a/ncdump/tst_bom.sh b/ncdump/tst_bom.sh
index 156d5b1..bd9b4eb 100755
--- a/ncdump/tst_bom.sh
+++ b/ncdump/tst_bom.sh
@@ -28,7 +28,7 @@ echo "*** Generate a cdl file with leading UTF-8 BOM."
cat tst_bom.cdl >> tst_bom8.cdl
echo "*** Verify .nc file"
-../ncgen/ncgen -k1 -o tst_bom8.nc tst_bom8.cdl
+../ncgen/ncgen -k nc3 -o tst_bom8.nc tst_bom8.cdl
../ncdump/ncdump -n tst_bom tst_bom8.nc > tmp.cdl
diff -w tst_bom.cdl tmp.cdl
@@ -41,7 +41,7 @@ echo "*** Generate a cdl file with leading UTF-16 BOM."
cat tst_bom.cdl >> tst_bom16.cdl
echo "*** Verify UTF-16 file fails"
-if ../ncgen/ncgen -k1 -o tst_bom16.nc tst_bom16.cdl ; then
+if ../ncgen/ncgen -k nc3 -o tst_bom16.nc tst_bom16.cdl ; then
echo 'BOM Big Endian 16 succeeded, but should not'
exit 1
else
diff --git a/ncdump/tst_bug321.cdl b/ncdump/tst_bug321.cdl
new file mode 100644
index 0000000..6a8993a
--- /dev/null
+++ b/ncdump/tst_bug321.cdl
@@ -0,0 +1,40 @@
+netcdf tst_bug321 {
+dimensions:
+ lat = 6 ;
+ lon = 4 ;
+ time = UNLIMITED ; // (2 currently)
+variables:
+ float lat(lat) ;
+ lat:units = "degrees_north" ;
+ float lon(lon) ;
+ lon:units = "degrees_east" ;
+ double time(time) ;
+ time:units = "seconds since 2009-01-01" ;
+ float pr(time, lat, lon) ;
+ pr:standard_name = "air_pressure_at_sea_level" ;
+ pr:units = "hPa" ;
+
+// global attributes:
+ :title = "example for workshop" ;
+data:
+
+ lat = 25, 30, 35, 40, 45, 50 ;
+
+ lon = -125, -110, -95, -80 ;
+
+ time = 7776000, 15552000 ;
+
+ pr =
+ 900.5, 901, 902, 903,
+ 904, 905, 906, 907,
+ 908, 909, 910, 911,
+ 912, 913, 914, 915,
+ 916, 917, 918, 919,
+ 920, 921, 922, 923,
+ 972, 973, 974, 975,
+ 976, 977, 978, 979,
+ 980, 981, 982, 983,
+ 984, 985, 986, 987,
+ 988, 989, 990, 991,
+ 992, 993, 994, 995 ;
+}
diff --git a/ncdump/tst_formatx3.sh b/ncdump/tst_formatx3.sh
index d9ec38d..771e2c6 100755
--- a/ncdump/tst_formatx3.sh
+++ b/ncdump/tst_formatx3.sh
@@ -14,7 +14,7 @@ echo "*** Testing extended file format output."
set -e
echo "Test extended format output for a netcdf-3 file"
rm -f tmp
-../ncgen/ncgen -k1 -b -o ./test.nc $srcdir/ref_tst_small.cdl
+../ncgen/ncgen -k nc3 -b -o ./test.nc $srcdir/ref_tst_small.cdl
./ncdump -K test.nc >tmp
if ! fgrep 'classic mode=00000000' <tmp ; then
echo "*** Fail: extended format for a classic file"
@@ -23,7 +23,7 @@ fi
echo "Test extended format output for a 64-bit netcdf-3 file"
rm -f tmp
-../ncgen/ncgen -k2 -b -o ./test.nc $srcdir/ref_tst_small.cdl
+../ncgen/ncgen -k nc6 -b -o ./test.nc $srcdir/ref_tst_small.cdl
./ncdump -K test.nc >tmp
if ! fgrep '64-bit offset mode=00000200' <tmp ; then
echo "*** Fail: extended format for a 64-bit classic file"
diff --git a/ncdump/tst_formatx4.sh b/ncdump/tst_formatx4.sh
index a7efde3..27a780e 100755
--- a/ncdump/tst_formatx4.sh
+++ b/ncdump/tst_formatx4.sh
@@ -12,7 +12,7 @@ echo "*** Testing extended file format output."
set -e
echo "Test extended format output for a netcdf-4 file"
rm -f tmp
-../ncgen/ncgen -k3 -b -o ./test.nc $srcdir/ref_tst_small.cdl
+../ncgen/ncgen -k nc4 -b -o ./test.nc $srcdir/ref_tst_small.cdl
./ncdump -K test.nc >tmp
if ! fgrep 'HDF5 mode=00001000' <tmp ; then
echo "*** Fail: extended format for a netcdf-4 file"
@@ -21,7 +21,7 @@ fi
echo "Test extended format output for a classic netcdf-4 file"
rm -f tmp
-../ncgen/ncgen -k4 -b -o ./test.nc $srcdir/ref_tst_small.cdl
+../ncgen/ncgen -k nc7 -b -o ./test.nc $srcdir/ref_tst_small.cdl
./ncdump -K test.nc >tmp
if ! fgrep 'HDF5 mode=00001000' <tmp ; then
echo "*** Fail: extended format for a classic netcdf-4 file"
diff --git a/ncdump/tst_grp_spec.sh b/ncdump/tst_grp_spec.sh
index 6429a59..c334595 100755
--- a/ncdump/tst_grp_spec.sh
+++ b/ncdump/tst_grp_spec.sh
@@ -7,7 +7,7 @@ set -e
echo ""
echo "*** Testing ncdump -g output for specifying group subsets"
echo "*** creating netcdf file tst_grp_spec.nc from ref_tst_grp_spec0.cdl..."
-../ncgen/ncgen -k3 -o tmp_all.nc -b $srcdir/ref_tst_grp_spec0.cdl
+../ncgen/ncgen -knc4 -o tmp_all.nc -b $srcdir/ref_tst_grp_spec0.cdl
echo "*** creating tmp_subset.cdl from tmp_all.nc with ncdump -g ..."
./ncdump -g g1,g4 -n tmp_subset tmp_all.nc > tmp_subset.cdl
echo "*** comparing tmp_subset.cdl with ref_tst_grp_spec.cdl..."
diff --git a/ncdump/tst_h_scalar.sh b/ncdump/tst_h_scalar.sh
index cb37255..62b16dc 100755
--- a/ncdump/tst_h_scalar.sh
+++ b/ncdump/tst_h_scalar.sh
@@ -8,7 +8,7 @@ echo "*** Running ncdump scalar test."
# echo "*** dumping tst_h_scalar.nc to tst_h_scalar.cdl..."
./ncdump tst_h_scalar.nc > tst_h_scalar.cdl
# echo "*** comparing tst_h_scalar.cdl with ref_tst_h_scalar.cdl..."
-diff -b tst_h_scalar.cdl $srcdir/cdl4/ref_tst_h_scalar.cdl
+diff -b tst_h_scalar.cdl $srcdir/cdl/ref_tst_h_scalar.cdl
echo "*** All ncdump scalar test output for netCDF-4 format passed!"
exit 0
diff --git a/ncdump/tst_iter.sh b/ncdump/tst_iter.sh
index 27b96a8..68327a6 100755
--- a/ncdump/tst_iter.sh
+++ b/ncdump/tst_iter.sh
@@ -40,7 +40,7 @@ $CC ./iter.c -o iter.exe
./iter.exe >>iter.cdl
# echo "*** create iter.nc "
-../ncgen/ncgen -k1 -o iter.nc ./iter.cdl
+../ncgen/ncgen -k nc3 -o iter.nc ./iter.cdl
echo "*** dumping iter.nc to iter.dmp"
./ncdump iter.nc > iter.dmp
echo "*** reformat iter.dmp"
diff --git a/ncdump/tst_mud.sh b/ncdump/tst_mud.sh
index 4e8571b..2b63484 100755
--- a/ncdump/tst_mud.sh
+++ b/ncdump/tst_mud.sh
@@ -14,7 +14,7 @@ export srcdir;
echo ""
echo "*** Testing ncdump output for multiple unlimited dimensions"
echo "*** creating netcdf file tst_mud4.nc from ref_tst_mud4.cdl ..."
-../ncgen/ncgen -k3 -b -o tst_mud4.nc $srcdir/ref_tst_mud4.cdl
+../ncgen/ncgen -4 -b -o tst_mud4.nc $srcdir/ref_tst_mud4.cdl
echo "*** creating tst_mud4.cdl from tst_mud4.nc ..."
./ncdump tst_mud4.nc > tst_mud4.cdl
# echo "*** comparing tst_mud4.cdl with ref_tst_mud4.cdl..."
@@ -22,5 +22,15 @@ diff -b tst_mud4.cdl $srcdir/ref_tst_mud4.cdl
# echo "*** comparing annotation from ncdump -bc tst_mud4.nc with expected output..."
./ncdump -bc tst_mud4.nc > tst_mud4-bc.cdl
diff -b tst_mud4-bc.cdl $srcdir/ref_tst_mud4-bc.cdl
+# Now test with char arrays instead of ints
+echo "*** creating netcdf file tst_mud4_chars.nc from ref_tst_mud4_chars.cdl ..."
+../ncgen/ncgen -4 -b -o tst_mud4_chars.nc $srcdir/ref_tst_mud4_chars.cdl
+echo "*** creating tst_mud4_chars.cdl from tst_mud4_chars.nc ..."
+./ncdump tst_mud4_chars.nc > tst_mud4_chars.cdl
+# echo "*** comparing tst_mud4_chars.cdl with ref_tst_mud4_chars.cdl..."
+diff -b tst_mud4_chars.cdl $srcdir/ref_tst_mud4_chars.cdl
+# echo "*** comparing annotation from ncdump -bc tst_mud4_chars.nc with expected output..."
+# ./ncdump -bc tst_mud4_chars.nc > tst_mud4_chars-bc.cdl
+# diff -b tst_mud4_chars-bc.cdl $srcdir/ref_tst_mud4_chars-bc.cdl
echo "*** All ncdump test output for multiple unlimited dimensions passed!"
exit 0
diff --git a/ncdump/tst_nans.c b/ncdump/tst_nans.c
index c9c28af..be835ee 100644
--- a/ncdump/tst_nans.c
+++ b/ncdump/tst_nans.c
@@ -46,11 +46,11 @@ main(int argc, char **argv)
double dvals[NVALS], dvals_in[NVALS];
- float fnan = NC_FNAN;//(NC_INFINITE-NC_INFINITE);//0.f/0.f;
- double dnan = NC_DNAN;//(NC_INFINITE-NC_INFINITE);//0.0/0.0;
- float fpinf = NC_FPINF;//NC_INFINITE;//1.0f/0.0f;
+ float fnan = NC_FNAN;/*(NC_INFINITE-NC_INFINITE);//0.f/0.f; */
+ double dnan = NC_DNAN;/*(NC_INFINITE-NC_INFINITE);//0.0/0.0; */
+ float fpinf = NC_FPINF;/*NC_INFINITE;//1.0f/0.0f; */
float fninf = -fpinf;
- double dpinf = NC_DPINF;//NC_INFINITE;//1.0/0.0;
+ double dpinf = NC_DPINF;/*NC_INFINITE;//1.0/0.0; */
double dninf = -dpinf;
nc_type att_type;
size_t att_len;
diff --git a/ncdump/tst_nccopy4.sh b/ncdump/tst_nccopy4.sh
index b08e51a..012e4ba 100755
--- a/ncdump/tst_nccopy4.sh
+++ b/ncdump/tst_nccopy4.sh
@@ -78,6 +78,11 @@ diff tmp.cdl tmp-unchunked.cdl
./nccopy -c / tmp-chunked.nc tmp-unchunked.nc
./ncdump -n tmp tmp-unchunked.nc > tmp-unchunked.cdl
diff tmp.cdl tmp-unchunked.cdl
+echo "*** Test that nccopy -c works as intended for record dimension default (1)"
+../ncgen/ncgen -b -o tst_bug321.nc $srcdir/tst_bug321.cdl
+./nccopy -k nc7 -c"lat/2,lon/2" tst_bug321.nc tmp.nc
+./ncdump -n tst_bug321 tmp.nc > tmp.cdl
+diff $srcdir/tst_bug321.cdl tmp.cdl
# echo "*** Test that nccopy compression with chunking can improve compression"
rm tst_chunking.nc tmp.nc tmp.cdl tmp-chunked.nc tmp-chunked.cdl tmp-unchunked.nc tmp-unchunked.cdl
diff --git a/ncdump/tst_ncgen4.sh b/ncdump/tst_ncgen4.sh
index 4c200d0..a047e72 100755
--- a/ncdump/tst_ncgen4.sh
+++ b/ncdump/tst_ncgen4.sh
@@ -6,7 +6,7 @@ set -e
# 1. put the .cdl file in the 'cdl4' directory
# 2. put the result of running ncgen then ncdump
# into the directory 'expected4' as .dmp
-# 3. Modify the file tst_ncgen4_shared.sh to add
+# 3. Modify the file tst_ncgen_shared.sh to add
# the test to the end of the TESTS4 variable
# 4. Add the new files into cdl4/Makefile.am
# and expected4/Makefile.am
diff --git a/ncdump/tst_ncgen4_cycle.sh b/ncdump/tst_ncgen4_cycle.sh
index e88515a..5fb2ef1 100755
--- a/ncdump/tst_ncgen4_cycle.sh
+++ b/ncdump/tst_ncgen4_cycle.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-. ${srcdir}/tst_ncgen4_shared.sh
+. ${srcdir}/tst_ncgen_shared.sh
if test "${MODE}" = 3 ; then
TESTSET="${TESTS3} ${BIGTESTS3} ${BIGBIG3}"
diff --git a/ncdump/tst_ncgen4_diff.sh b/ncdump/tst_ncgen4_diff.sh
index 6ee9c57..5a67143 100755
--- a/ncdump/tst_ncgen4_diff.sh
+++ b/ncdump/tst_ncgen4_diff.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-. ${srcdir}/tst_ncgen4_shared.sh
+. ${srcdir}/tst_ncgen_shared.sh
ALLXFAIL="${XFAILTESTS} ${SPECIALTESTS}"
diff --git a/ncdump/tst_ncgen4_shared.sh b/ncdump/tst_ncgen_shared.sh
similarity index 83%
rename from ncdump/tst_ncgen4_shared.sh
rename to ncdump/tst_ncgen_shared.sh
index 4e6ff11..c8ffd2f 100755
--- a/ncdump/tst_ncgen4_shared.sh
+++ b/ncdump/tst_ncgen_shared.sh
@@ -1,21 +1,22 @@
#!/bin/sh
# To add a new test,
-# 1. put the .cdl file in the 'cdl4' directory
+# 1. put the .cdl file in the 'cdl' directory
# 2. put the result of running ncgen then ncdump
-# into the directory 'expected4' as .dmp
-# 3. Modify the file tst_ncgen4_shared.sh to add
+# into the directory 'expected' as .dmp
+# 3. Modify the file tst_ncgen_shared.sh to add
# the test to the end of the TESTS4 variable
-# 4. Add the new files into cdl4/Makfile.am
-# and expected4/Makefile.am
+# or CLASSIC variable.
+# 4. Add the new files into cdl/Makfile.am
+# and expected/Makefile.am
set -e
RESULTSDIR="./results"
#SHOWXFAILS=1
# Locate the cdl and expected directory
-cdl="${srcdir}/cdl4"
-expected="${srcdir}/expected4"
+cdl="${srcdir}/cdl"
+expected="${srcdir}/expected"
case "x${KFLAG}" in
x1) CLASSIC=1; MODE=3;;
@@ -26,7 +27,7 @@ x4) CLASSIC=1; MODE=3;;
esac
# Define the set of tests that can be
-# processed with either the -k1 or -k3 or -k4 flag
+# processed with either the -k nc3 or -k nc4 or -k nc7 flag
# The netcdf-3 tests are divided into two parts
# These test can be run when --enable-netcdf-4 is false
@@ -43,6 +44,8 @@ tst_ncml
n3time \
ref_tst_chardata \
ref_tst_nul3 \
+ref_tst_long_charconst \
+tst_chararray \
unlimtest1"
NONCLASSIC3="\
@@ -69,7 +72,7 @@ TESTS3="${CLASSIC3} ${NONCLASSIC3}"
fi
# Define the set of tests that must be
-# processed with the -k3 flag
+# processed with the -k nc4 flag
TESTS4="\
ref_dimscope \
@@ -107,7 +110,7 @@ XFAILTESTS="ref_const_test $XFAILTESTS"
# Fails because ?
XFAILTESTS="ref_tst_chardata $XFAILTESTS"
# Fails because ncdump is crashing
-XFAILTESTS="ref_tst_econst $XFAILTESTS"
+#XFAILTESTS="ref_tst_econst $XFAILTESTS"
# Following are generally not run
# Because of the size of their output
diff --git a/ncdump/tst_netcdf4.sh b/ncdump/tst_netcdf4.sh
index 5eed46b..4bce8cb 100755
--- a/ncdump/tst_netcdf4.sh
+++ b/ncdump/tst_netcdf4.sh
@@ -13,7 +13,7 @@ export srcdir;
echo ""
echo "*** Testing ncgen and ncdump test output for netCDF-4 format."
# echo "*** creating netcdf-4 file c0_4.nc from c0_4.cdl..."
-../ncgen/ncgen -k3 -b -o c0_4.nc $srcdir/../ncgen/c0_4.cdl
+../ncgen/ncgen -k nc4 -b -o c0_4.nc $srcdir/../ncgen/c0_4.cdl
# echo "*** creating c1_4.cdl from c0_4.nc..."
./ncdump -n c1 c0_4.nc | sed 's/e+0/e+/g' > c1_4.cdl
# echo "*** comparing c1_4.cdl with ref_ctest1_nc4.cdl..."
@@ -21,9 +21,9 @@ diff -b c1_4.cdl $srcdir/ref_ctest1_nc4.cdl
echo "*** Testing ncgen and ncdump test output for netCDF-4 classic format."
# echo "*** creating netcdf-4 classic file c0.nc from c0.cdl..."
-../ncgen/ncgen -k4 -b -o c0.nc $srcdir/../ncgen/c0.cdl
+../ncgen/ncgen -k nc7 -b -o c0.nc $srcdir/../ncgen/c0.cdl
# echo "*** creating c1.cdl from c0.nc..."
-./ncdump -n c1 c0.nc | sed 's/e+0/e+/g' > c1.cdl
+
# echo "*** comparing c1.cdl with ref_ctest1_nc4c.cdl..."
diff -b c1.cdl $srcdir/ref_ctest1_nc4c.cdl
diff --git a/ncdump/tst_output.sh b/ncdump/tst_output.sh
index faba077..0ec4a74 100755
--- a/ncdump/tst_output.sh
+++ b/ncdump/tst_output.sh
@@ -1,10 +1,14 @@
#!/bin/sh
-# This shell script tests the output several previous tests.
-# $Id: tst_output.sh,v 1.17 2010/05/14 16:21:15 ed Exp $
+# This shell script tests the output from several previous tests.
+
+set -e
+
+if test "x$srcdir" = x ; then
+srcdir=`pwd`
+fi
echo ""
echo "*** Testing ncgen and ncdump test output for classic format."
-set -e
echo "*** creating ctest1.cdl from ctest0.nc..."
./ncdump -n c1 ctest0.nc > ctest1.cdl
echo "*** creating c0.nc from c0.cdl..."
@@ -40,19 +44,19 @@ echo "*** Testing ncgen and ncdump test output for 64-bit offset format."
echo "*** creating ctest1.cdl from test0_64.nc..."
./ncdump -n c1 ctest0_64.nc > ctest1_64.cdl
echo "*** creating c0.nc from c0.cdl..."
-../ncgen/ncgen -k 2 -b -o c0.nc $srcdir/../ncgen/c0.cdl
+../ncgen/ncgen -k nc6 -b -o c0.nc $srcdir/../ncgen/c0.cdl
echo "*** creating c1.cdl from c0.nc..."
./ncdump -n c1 c0.nc > c1.cdl
echo "*** comparing ncdump of C program output (ctest1_64.cdl) with c1.cdl..."
diff -b c1.cdl ctest1_64.cdl
echo "*** test output for ncdump -k"
test "`./ncdump -k c0.nc`" = "64-bit offset";
-../ncgen/ncgen -k 2 -b -o c0tmp.nc $srcdir/../ncgen/c0.cdl
+../ncgen/ncgen -k nc6 -b -o c0tmp.nc $srcdir/../ncgen/c0.cdl
cmp c0tmp.nc c0.nc
echo "*** test output for ncdump -s"
echo "*** creating tst_mslp_64.nc from tst_mslp.cdl"
-../ncgen/ncgen -k 2 -b -o tst_mslp_64.nc $srcdir/tst_mslp.cdl
+../ncgen/ncgen -k nc6 -b -o tst_mslp_64.nc $srcdir/tst_mslp.cdl
echo "*** creating tst_format_att_64.cdl from tst_mslp_64.nc"
./ncdump -s tst_mslp_64.nc > tst_format_att_64.cdl
echo "*** comparing ncdump -s of generated file with ref_tst_format_att_64.cdl ..."
diff --git a/ncdump/vardata.c b/ncdump/vardata.c
index 83691c4..32be695 100644
--- a/ncdump/vardata.c
+++ b/ncdump/vardata.c
@@ -323,9 +323,6 @@ static void
pr_tvals(
const ncvar_t *vp, /* variable */
size_t len, /* number of values to print */
- bool_t lastrow, /* true if this is the last row for this
- * variable, so terminate with ";" instead
- * of "," */
const char *vals, /* pointer to block of values */
const size_t *cor /* corner coordinates */
)
@@ -377,13 +374,10 @@ pr_tvals(
}
}
printf("\"");
- /* if (fsp && formatting_specs.full_data_cmnts) { */
- if (formatting_specs.full_data_cmnts) {
- lastdelim (0, lastrow);
- annotate (vp, (size_t *)cor, 0L);
- } else {
- lastdelim2 (0, lastrow);
- }
+ /* if (formatting_specs.full_data_cmnts) { */
+ /* lastdelim (0, lastrow); */
+ /* annotate (vp, (size_t *)cor, 0L); */
+ /* } */
}
@@ -428,8 +422,6 @@ print_rows(
int ncid, /* netcdf id */
int varid, /* variable id */
const ncvar_t *vp, /* variable */
- size_t ncols, /* number of values in a row */
- int rank, /* number of elements in following 3 arrays */
size_t vdims[], /* variable dimension sizes */
size_t cor[], /* corner coordinates */
size_t edg[], /* edges of hypercube */
@@ -437,6 +429,8 @@ print_rows(
int marks_pending /* number of pending closing "}" record markers */
)
{
+ int rank = vp->ndims;
+ size_t ncols = rank > 0 ? vdims[rank - 1] : 1; /* number of values in a row */
int d0 = 0;
size_t inc = 1;
int i;
@@ -461,11 +455,11 @@ print_rows(
local_cor[level] = 0;
local_edg[level] = 1;
for(i = 0; i < d0 - 1; i++) {
- print_rows(level + 1, ncid, varid, vp, ncols, rank, vdims,
+ print_rows(level + 1, ncid, varid, vp, vdims,
local_cor, local_edg, vals, 0);
local_cor[level] += 1;
}
- print_rows(level + 1, ncid, varid, vp, ncols, rank, vdims,
+ print_rows(level + 1, ncid, varid, vp, vdims,
local_cor, local_edg, vals, marks_pending);
free(local_edg);
free(local_cor);
@@ -473,22 +467,28 @@ print_rows(
char *valp = vals;
bool_t lastrow;
int j;
- if(formatting_specs.brief_data_cmnts && rank > 1) {
+ if(formatting_specs.brief_data_cmnts && rank > 1 && ncols > 0) {
annotate_brief(vp, cor, vdims);
}
NC_CHECK(nc_get_vara(ncid, varid, cor, edg, (void *)valp));
- for(i=0; i < d0 - 1; i++) {
- print_any_val(sb, vp, (void *)valp);
- valp += vp->tinfo->size; /* next value according to type */
- if (formatting_specs.full_data_cmnts) {
- printf("%s, ", sb->buf);
- annotate (vp, cor, i);
- } else {
- sbuf_cat(sb, ", ");
- lput(sbuf_str(sb));
+
+ /* Test if we should treat array of chars as strings along last dimension */
+ if(vp->type == NC_CHAR && (vp->fmt == 0 || STREQ(vp->fmt,"%s") || STREQ(vp->fmt,""))) {
+ pr_tvals(vp, ncols, vals, cor);
+ } else { /* for non-text variables */
+ for(i=0; i < d0 - 1; i++) {
+ print_any_val(sb, vp, (void *)valp);
+ valp += vp->tinfo->size; /* next value according to type */
+ if (formatting_specs.full_data_cmnts) {
+ printf("%s, ", sb->buf);
+ annotate (vp, cor, i);
+ } else {
+ sbuf_cat(sb, ", ");
+ lput(sbuf_str(sb));
+ }
}
+ print_any_val(sb, vp, (void *)valp);
}
- print_any_val(sb, vp, (void *)valp);
/* determine if this is the last row */
lastrow = true;
for(j = 0; j < rank - 1; j++) {
@@ -503,7 +503,7 @@ print_rows(
}
printf("%s", sbuf_str(sb));
lastdelim (0, lastrow);
- annotate (vp, cor, i);
+ annotate (vp, cor, 0L);
} else {
for (j = 0; j < marks_pending; j++) {
sbuf_cat(sb, "}");
@@ -516,7 +516,6 @@ print_rows(
return NC_NOERR;
}
-
/* Output the data for a single variable, in CDL syntax. */
int
vardata(
@@ -532,12 +531,14 @@ vardata(
void *vals;
int id;
- int ir;
size_t nels;
size_t ncols;
size_t nrows;
int vrank = vp->ndims;
+ int level = 0;
+ int marks_pending = 0;
+
cor = (size_t *) emalloc((1 + vrank) * sizeof(size_t));
edg = (size_t *) emalloc((1 + vrank) * sizeof(size_t));
add = (size_t *) emalloc((1 + vrank) * sizeof(size_t));
@@ -578,28 +579,7 @@ vardata(
nrows = nels/ncols; /* number of "rows" */
vals = emalloc(ncols * vp->tinfo->size);
- /* Test if we should treat array of chars as a string */
- if(vp->type == NC_CHAR && (vp->fmt == 0 || STREQ(vp->fmt,"%s") || STREQ(vp->fmt,""))) {
- for (ir = 0; ir < nrows; ir++) {
- if (vrank > 0) {
- if (formatting_specs.brief_data_cmnts != false && vrank > 1 && ncols > 0) {
- annotate_brief(vp, cor, vdims);
- }
- }
- NC_CHECK(nc_get_vara(ncid, varid, cor, edg, vals));
- pr_tvals(vp, ncols, (ir == nrows-1), (char *) vals, cor);
- if (ir < nrows-1)
- if (!upcorner(vdims, vp->ndims, cor, add))
- error("vardata: odometer overflowed!");
- set_indent(2);
- }
- } else {
- int level = 0;
- int rank = vp->ndims;
- int marks_pending = 0;
- NC_CHECK(print_rows(level, ncid, varid, vp, ncols, rank, vdims, cor, edg,
- vals, marks_pending));
- }
+ NC_CHECK(print_rows(level, ncid, varid, vp, vdims, cor, edg, vals, marks_pending));
free(vals);
free(cor);
free(edg);
@@ -775,7 +755,7 @@ vardatax(
vals = emalloc(ncols * vp->tinfo->size);
for (ir = 0; ir < nrows; ir++) {
- size_t corsav;
+ size_t corsav = 0;
bool_t lastrow;
if (vrank > 0) {
diff --git a/ncgen/CMakeLists.txt b/ncgen/CMakeLists.txt
index 369344d..71af0ee 100644
--- a/ncgen/CMakeLists.txt
+++ b/ncgen/CMakeLists.txt
@@ -31,6 +31,11 @@ ENDIF()
SET(CLEANFILES c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c)
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")
+# These rules are used if someone wants to rebuild ncgenyy.c or ncgentab.c
+# Otherwise never invoked, but records how to do it.
+# BTW: note that renaming is essential because otherwise
+# autoconf will forcibly delete files of the name *.tab.*
+
ADD_CUSTOM_COMMAND(
OUTPUT ncgentab.h
COMMAND flex -Pncg -B ncgen.l
@@ -45,7 +50,6 @@ ADD_CUSTOM_COMMAND(
COMMAND mv ncgenyy.c ${CMAKE_CURRENT_SOURCE_DIR}
)
-
ADD_CUSTOM_TARGET(makeparser DEPENDS ncgentab.h)
## Specify files to be distributed by 'make dist'
diff --git a/ncgen/Make0 b/ncgen/Make0
index 9a23a75..cc0f191 100644
--- a/ncgen/Make0
+++ b/ncgen/Make0
@@ -1,5 +1,5 @@
# Test c output
-T=test_opaque
+T=test0
K=1
#VG=valgrind --leak-check=full
diff --git a/ncgen/Makefile.am b/ncgen/Makefile.am
index 636e364..e88dc05 100644
--- a/ncgen/Makefile.am
+++ b/ncgen/Makefile.am
@@ -36,7 +36,7 @@ endif # USE_NETCDF4
CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c \
ncf199.nc
-# These rule are used if someone wants to rebuild ncgenyy.c or ncgentab.c
+# These rules are used if someone wants to rebuild ncgenyy.c or ncgentab.c
# Otherwise never invoked, but records how to do it.
# BTW: note that renaming is essential because otherwise
# autoconf will forcibly delete files of the name *.tab.*
diff --git a/ncgen/Makefile.in b/ncgen/Makefile.in
new file mode 100644
index 0000000..1f4630e
--- /dev/null
+++ b/ncgen/Makefile.in
@@ -0,0 +1,1200 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+# This file builds and runs the ncgen program.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+bin_PROGRAMS = ncgen$(EXEEXT)
+ at USE_NETCDF4_TRUE@am__append_3 = run_nc4_tests.sh
+subdir = ncgen
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_ncgen_OBJECTS = generate.$(OBJEXT) main.$(OBJEXT) cdata.$(OBJEXT) \
+ bindata.$(OBJEXT) genchar.$(OBJEXT) cvt.$(OBJEXT) \
+ data.$(OBJEXT) debug.$(OBJEXT) escapes.$(OBJEXT) \
+ genc.$(OBJEXT) genbin.$(OBJEXT) generr.$(OBJEXT) \
+ genlib.$(OBJEXT) getfill.$(OBJEXT) odom.$(OBJEXT) \
+ offsets.$(OBJEXT) semantics.$(OBJEXT) ncgentab.$(OBJEXT) \
+ dump.$(OBJEXT) util.$(OBJEXT) bytebuffer.$(OBJEXT) \
+ list.$(OBJEXT) genf77.$(OBJEXT) f77data.$(OBJEXT) \
+ genj.$(OBJEXT) jdata.$(OBJEXT) nc_iter.$(OBJEXT) \
+ ConvertUTF.$(OBJEXT)
+ncgen_OBJECTS = $(am_ncgen_OBJECTS)
+ncgen_LDADD = $(LDADD)
+ncgen_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(ncgen_SOURCES)
+DIST_SOURCES = $(ncgen_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+LDADD = ${top_builddir}/liblib/libnetcdf.la
+ncgen_SOURCES = generate.c main.c cdata.c bindata.c genchar.c cvt.c data.c debug.c \
+escapes.c genc.c genbin.c generr.c genlib.c getfill.c odom.c offsets.c \
+semantics.c ncgentab.c dump.c util.c bytebuffer.c list.c data.h \
+debug.h generr.h genlib.h includes.h ncgen.h odom.h offsets.h dump.h \
+util.h bytebuffer.h list.h genf77.c f77data.c genj.c jdata.c nc_iter.h \
+nc_iter.c ConvertUTF.c ConvertUTF.h
+
+
+# This is the man page.
+man_MANS = ncgen.1
+
+# These files all need to be distributed.
+EXTRA_DIST = ncgen.y ncgenyy.c ncgen.l $(man_MANS) internals.html \
+run_tests.sh run_nc4_tests.sh c0.cdl c0_4.cdl ref_camrun.cdl \
+ncf199.cdl CMakeLists.txt XGetopt.c
+
+
+# This shell script causes ncgen to build a classic and a 64-bit
+# offset file from a cdl file shipped with the distribution.
+#if !BUILD_DLL
+TESTS = run_tests.sh $(am__append_3)
+#endif # !BUILD_DLL
+CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc ref_camrun.c \
+ ncf199.nc
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncgen/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncgen/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+ncgen$(EXEEXT): $(ncgen_OBJECTS) $(ncgen_DEPENDENCIES) $(EXTRA_ncgen_DEPENDENCIES)
+ @rm -f ncgen$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ncgen_OBJECTS) $(ncgen_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ConvertUTF.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bindata.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bytebuffer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cdata.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cvt.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/debug.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dump.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/escapes.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/f77data.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/genbin.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/genc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/genchar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/generate.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/generr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/genf77.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/genj.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/genlib.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getfill.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/jdata.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/list.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nc_iter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ncgentab.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/odom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/offsets.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/semantics.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/util.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+run_tests.sh.log: run_tests.sh
+ @p='run_tests.sh'; \
+ b='run_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_nc4_tests.sh.log: run_nc4_tests.sh
+ @p='run_nc4_tests.sh'; \
+ b='run_nc4_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS) $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-man1 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am recheck tags tags-am uninstall \
+ uninstall-am uninstall-binPROGRAMS uninstall-man \
+ uninstall-man1
+
+.PRECIOUS: Makefile
+
+
+# These rules are used if someone wants to rebuild ncgenyy.c or ncgentab.c
+# Otherwise never invoked, but records how to do it.
+# BTW: note that renaming is essential because otherwise
+# autoconf will forcibly delete files of the name *.tab.*
+
+makeparser::
+ flex -Pncg -8 ncgen.l
+ rm -f ncgenyy.c
+ sed -e s/lex.ncg.c/ncgenyy.c/g <lex.ncg.c >ncgenyy.c
+ bison -pncg -t -d ncgen.y
+ rm -f ncgentab.c ncgentab.h
+ sed -e s/ncgen.tab.c/ncgentab.c/g -e s/ncgen.tab.h/ncgentab.h/g <ncgen.tab.c >ncgentab.c
+ sed -e s/ncgen.tab.c/ncgentab.c/g -e s/ncgen.tab.h/ncgentab.h/g <ncgen.tab.h >ncgentab.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncgen/bytebuffer.c b/ncgen/bytebuffer.c
index 357212a..fd68dc6 100644
--- a/ncgen/bytebuffer.c
+++ b/ncgen/bytebuffer.c
@@ -41,7 +41,7 @@ bbNew(void)
bb->length=0;
bb->content=NULL;
bb->nonextendible = 0;
- return bb;
+ return bb;
}
int
@@ -87,7 +87,7 @@ bbFill(Bytebuffer* bb, const char fill)
{
unsigned int i;
if(bb == NULL) return bbFail();
- for(i=0;i<bb->length;i++) bb->content[i] = fill;
+ for(i=0;i<bb->length;i++) bb->content[i] = fill;
return TRUE;
}
@@ -113,7 +113,10 @@ bbAppend(Bytebuffer* bb, char elem)
{
if(bb == NULL) return bbFail();
/* We need space for the char + null */
- while(bb->length+1 >= bb->alloc) if(!bbSetalloc(bb,0)) return bbFail();
+ while(bb->length+1 >= bb->alloc) {
+ if(!bbSetalloc(bb,0))
+ return bbFail();
+ }
bb->content[bb->length] = elem;
bb->length++;
bb->content[bb->length] = '\0';
@@ -166,13 +169,16 @@ bbInsertn(Bytebuffer* bb, const unsigned int index, const char* elem, const unsi
{
unsigned int i;
int j;
- unsigned int newlen = bb->length + n;
+ unsigned int newlen = 0;
if(bb == NULL) return bbFail();
+
+ newlen = bb->length + n;
+
if(newlen >= bb->alloc) {
if(!bbExtend(bb,n)) return bbFail();
}
-/*
+ /*
index=0
n=3
len=3
@@ -194,16 +200,23 @@ j=5 4 3
return TRUE;
}
-int
-bbHeadpop(Bytebuffer* bb, char* pelem)
+/*! Pop head off of a byte buffer.
+ *
+ * @param Bytebuffer bb Pointer to Bytebuffer.
+ * @param char* pelem pointer to location for head element.
+ *
+ * @return Returns TRUE on success.
+ */
+int bbHeadpop(Bytebuffer* bb, char* pelem)
{
if(bb == NULL) return bbFail();
if(bb->length == 0) return bbFail();
*pelem = bb->content[0];
- memcpy((void*)&bb->content[0],(void*)&bb->content[1],
- sizeof(char)*(bb->length - 1));
- bb->length--;
- return TRUE;
+ memmove((void*)&bb->content[0],
+ (void*)&bb->content[1],
+ sizeof(char)*(bb->length - 1));
+ bb->length--;
+ return TRUE;
}
int
@@ -212,8 +225,8 @@ bbTailpop(Bytebuffer* bb, char* pelem)
if(bb == NULL) return bbFail();
if(bb->length == 0) return bbFail();
*pelem = bb->content[bb->length-1];
- bb->length--;
- return TRUE;
+ bb->length--;
+ return TRUE;
}
int
@@ -222,7 +235,7 @@ bbHeadpeek(Bytebuffer* bb, char* pelem)
if(bb == NULL) return bbFail();
if(bb->length == 0) return bbFail();
*pelem = bb->content[0];
- return TRUE;
+ return TRUE;
}
int
@@ -231,7 +244,7 @@ bbTailpeek(Bytebuffer* bb, char* pelem)
if(bb == NULL) return bbFail();
if(bb->length == 0) return bbFail();
*pelem = bb->content[bb->length - 1];
- return TRUE;
+ return TRUE;
}
char*
diff --git a/ncgen/ctests.sh b/ncgen/ctests.sh
index 4d15694..652efa3 100755
--- a/ncgen/ctests.sh
+++ b/ncgen/ctests.sh
@@ -45,7 +45,7 @@ LIBS="-L${INSTALL}/lib -lnetcdf"
RPATH="-Wl,-rpath,${INSTALL}/lib"
# Define the set of tests that can be
-# processed with either the -k1 or -k3 flag
+# processed with either the -k nc3 or -k nc4 flag
TESTS3="\
test0 \
@@ -71,7 +71,7 @@ ref_nctst_netcdf4 \
ref_nctst_netcdf4_classic"
# Define the set of tests that must be
-# processed with the -k3 flag
+# processed with the -k nc4 flag
TESTS4="\
ref_dimscope \
diff --git a/ncgen/data.c b/ncgen/data.c
index 65e3890..3c8fd6f 100644
--- a/ncgen/data.c
+++ b/ncgen/data.c
@@ -15,10 +15,15 @@
extern int lvsnprintf(char*, size_t, const char*, va_list);
*/
+#define DATALISTINIT 32
+
+/* Track all known datalist*/
+Datalist* alldatalists = NULL;
+
NCConstant nullconstant;
NCConstant fillconstant;
-Datalist nildatalist; // to support NIL keyword
+Datalist nildatalist; /* to support NIL keyword */
Bytebuffer* codebuffer;
Bytebuffer* codetmp;
@@ -673,3 +678,87 @@ indented(int n)
return indentation;
}
+void
+dlextend(Datalist* dl)
+{
+ size_t newalloc;
+ newalloc = (dl->alloc > 0?2*dl->alloc:1);
+ dlsetalloc(dl,newalloc);
+}
+
+void
+dlsetalloc(Datalist* dl, size_t newalloc)
+{
+ NCConstant* newdata;
+ if(newalloc <= 0) newalloc = 1;
+ if(dl->alloc > 0)
+ newdata = (NCConstant*)erealloc((void*)dl->data,sizeof(NCConstant)*newalloc);
+ else {
+ newdata = (NCConstant*)emalloc(sizeof(NCConstant)*newalloc);
+ memset((void*)newdata,0,sizeof(NCConstant)*newalloc);
+ }
+ dl->alloc = newalloc;
+ dl->data = newdata;
+}
+
+
+Datalist*
+builddatalist(int initial)
+{
+ Datalist* ci;
+ if(initial <= 0) initial = DATALISTINIT;
+ initial++; /* for header*/
+ ci = (Datalist*)emalloc(sizeof(Datalist));
+ memset((void*)ci,0,sizeof(Datalist)); /* only clear the hdr*/
+ ci->data = (NCConstant*)emalloc(sizeof(NCConstant)*initial);
+ memset((void*)ci->data,0,sizeof(NCConstant)*initial);
+ ci->alloc = initial;
+ ci->length = 0;
+ return ci;
+}
+
+void
+dlappend(Datalist* dl, NCConstant* constant)
+{
+ if(dl->length >= dl->alloc) dlextend(dl);
+ if(constant == NULL) constant = &nullconstant;
+ dl->data[dl->length++] = *constant;
+}
+
+NCConstant
+builddatasublist(Datalist* dl)
+{
+
+ NCConstant d;
+ d.nctype = NC_COMPOUND;
+ d.lineno = (dl->length > 0?dl->data[0].lineno:0);
+ d.value.compoundv = dl;
+ d.filled = 0;
+ return d;
+
+}
+
+/*! Function to free an allocated datalist.
+
+ This function is used to free an individual datalist
+ object. It is possible, hypothetically, that a
+ datalist will appear in the middle of a set of datalists,
+ in which case we'll need to determine that and shuffle around
+ 'next' pointers. For the time being, this assumes that
+ we are freeing a datalist which was allocated locally
+ and must be discarded.
+
+ Using this function instead of an inline 'free' just in
+ case we ever want to extend it, we won't have to go back
+ and re-write a bunch of stuff. I hope.
+
+ @param dlist Pointer to datalist object being freed.
+
+ */
+void dlfree(Datalist **dlist) {
+
+ if(*dlist) free(*dlist);
+ dlist = NULL;
+}
+
+
diff --git a/ncgen/data.h b/ncgen/data.h
index 0c33a57..2fde09a 100644
--- a/ncgen/data.h
+++ b/ncgen/data.h
@@ -88,13 +88,19 @@ struct Vlendata {
unsigned long count;
};
extern struct Vlendata* vlendata;
+extern Datalist* alldatalists;
/* from: data.c */
-int issublist(Datasrc* src);
-int isstring(Datasrc* src);
-int isfillvalue(Datasrc* src);
-int istype(Datasrc* src, nc_type);
-int isstringable(nc_type nctype);
+extern Datalist* builddatalist(int initialize);
+extern void dlfree(Datalist **dlist);
+extern void dlappend(Datalist*, NCConstant*);
+extern NCConstant builddatasublist(Datalist* dl);
+extern void dlextend(Datalist* dl);
+extern void dlsetalloc(Datalist* dl, size_t newalloc);
+
+int datalistline(Datalist*);
+#define datalistith(dl,i) ((dl)==NULL?NULL:((i) >= (dl)->length?NULL:&(dl)->data[i]))
+#define datalistlen(dl) ((dl)==NULL?0:(dl)->length)
Datasrc* datalist2src(Datalist* list);
Datasrc* const2src(NCConstant*);
@@ -102,16 +108,17 @@ NCConstant list2const(Datalist*);
Datalist* const2list(NCConstant* con);
void freedatasrc(Datasrc* src);
+int issublist(Datasrc* src);
+int isstring(Datasrc* src);
+int isfillvalue(Datasrc* src);
+int istype(Datasrc* src, nc_type);
+int isstringable(nc_type nctype);
+
void srcpush(Datasrc*);
void srcpushlist(Datasrc* src, Datalist* cmpd);
void srcpop(Datasrc*);
void srcsetfill(Datasrc* ds, Datalist* list);
-int datalistline(Datalist*);
-#define datalistith(dl,i) ((dl)==NULL?NULL:((i) >= (dl)->length?NULL:&(dl)->data[i]))
-#define datalistlen(dl) ((dl)==NULL?0:(dl)->length)
-
-
NCConstant* srcnext(Datasrc*);
int srcmore(Datasrc*);
int srcline(Datasrc* ds);
@@ -119,8 +126,10 @@ int srcline(Datasrc* ds);
#define islistconst(con) ((con)!=NULL && (con)->nctype == NC_COMPOUND)
#define isfillconst(con) ((con)!=NULL && (con)->nctype == NC_FILLVALUE)
#define constline(con) (con==NULL?0:(con)->lineno)
+#define consttype(con) (con==NULL?NC_NAT:(con)->nctype)
#define isnilconst(con) ((con)!=NULL && (con)->nctype == NC_NIL)
+#define compoundfor(con) ((con)==NULL?NULL:(con)->value.compoundv)
NCConstant* emptystringconst(int,NCConstant*);
@@ -164,10 +173,7 @@ extern NCConstant nilconstant;
/* From genchar.c */
void gen_charattr(Datalist*, Bytebuffer*);
void gen_charvlen(Datalist*, Bytebuffer*);
-void gen_chararray(struct Dimset*, Datalist*, Bytebuffer*, Datalist* fillsrc);
-#ifndef CHARBUG
-void gen_leafchararray(struct Dimset*,int,Datalist*,Bytebuffer* databuf, Datalist* fillsrc);
-#endif
+void gen_chararray(struct Dimset*, int, Datalist*, Bytebuffer*, Datalist* fillsrc);
/* Mnemonic */
#define UNKNOWN ((size_t)0)
@@ -190,7 +196,7 @@ struct Generator {
extern int generator_getstate(Generator*,void**);
extern int generator_reset(Generator*,void*);
-typedef int (*Writer)(Generator*,struct Symbol*,Bytebuffer*,int,size_t*,size_t*);
+typedef int (*Writer)(Generator*,struct Symbol*,Bytebuffer*,int,const size_t*,const size_t*);
extern void generate_attrdata(struct Symbol*, Generator*, Writer writer, Bytebuffer*);
extern void generate_vardata(struct Symbol*, Generator*, Writer writer,Bytebuffer*);
diff --git a/ncgen/env b/ncgen/env
index 33e78d9..2465e54 100644
--- a/ncgen/env
+++ b/ncgen/env
@@ -1,18 +1,28 @@
# test: ../ncdump/cdl4/ref_const_test.cdl
# test: ../ncdump/cdl4/ref_tst_chardata.cdl
-K="-k3"
-F="test.cdl"
+K="-k nc4"
+F="z.cdl"
#B="-B12"
DBG="-d"
+L=b
+#L=c
#DBG="-D2"
-#NCGEN="./.libs/ncgen"
+if test -f ./.libs/ncgen ; then
+NCGEN="./.libs/ncgen"
+else
NCGEN="./ncgen"
-alias q0="$NCGEN ${DBG} $K -lb $B $F"
-alias qh="$NCGEN ${DBG} $K -lb $B -h $F"
+fi
+alias q0="$NCGEN ${DBG} $K -l${L} $B $F"
+alias qh="$NCGEN ${DBG} $K -l${L} $B -h $F"
alias qc="$NCGEN ${DBG} $K -lc $B $F"
-alias qq="gdb --args $NCGEN ${DBG} $K -lb $B $F"
+alias qq="gdb --args $NCGEN ${DBG} $K -l${L} $B $F"
+alias qqh="gdb --args $NCGEN ${DBG} $K -l${L} $B -h $F"
alias qqc="gdb --args $NCGEN ${DBG} $K -lc $B $F"
-alias qv="valgrind --leak-check=full $NCGEN ${DBG} $K -lb $B $F"
+alias qv="valgrind --leak-check=full $NCGEN ${DBG} $K -l${L} $B $F"
+
+NCGEN3="../ncgen3/ncgen3"
+alias p0="$NCGEN3 -b $F"
+alias pc="$NCGEN3 -lc $F"
diff --git a/ncgen/escapes.c b/ncgen/escapes.c
index 6d1cb88..ed411f8 100644
--- a/ncgen/escapes.c
+++ b/ncgen/escapes.c
@@ -461,13 +461,13 @@ Convert a java name that might possibly
contain utf8 characters to one that is
acceptable to the Java compiler.
Basically this means convert the printables
-using codify (above) equivalent and then escape
+using ccodify (above) equivalent and then escape
all the utf chars.
*/
static char*
jcodify (const char *name)
{
- return codify(name);
+ return ccodify(name);
}
/**************************************************/
diff --git a/ncgen/ftests.sh b/ncgen/ftests.sh
index e00206a..ba87743 100755
--- a/ncgen/ftests.sh
+++ b/ncgen/ftests.sh
@@ -43,7 +43,7 @@ LIBS="-L${INSTALL}/lib -lnetcdf"
RPATH="-Wl,-rpath,${INSTALL}/lib"
# Define the set of tests that can be
-# processed with either the -k1 or -k3 flag
+# processed with either the -k nc3 or -k nc4 flag
TESTS3="\
test0 \
@@ -72,7 +72,7 @@ FTNFAIL="ref_tst_unicode"
# Define the set of tests that must be
-# processed with the -k3 flag
+# processed with the -k nc4 flag
TESTS4="\
ref_dimscope \
diff --git a/ncgen/genbin.c b/ncgen/genbin.c
index 39cbd54..4597be5 100644
--- a/ncgen/genbin.c
+++ b/ncgen/genbin.c
@@ -17,7 +17,6 @@ static void genbin_definevardata(Symbol* vsym);
static int genbin_write(Generator*,Symbol*,Bytebuffer*,int,size_t*,size_t*);
static int genbin_writevar(Generator*,Symbol*,Bytebuffer*,int,size_t*,size_t*);
static int genbin_writeattr(Generator*,Symbol*,Bytebuffer*,int,size_t*,size_t*);
-
#ifdef USE_NETCDF4
static void genbin_deftype(Symbol* tsym);
static void genbin_definespecialattributes(Symbol* var);
@@ -57,7 +56,7 @@ gen_netcdf(const char *filename)
stat = nc_create(filename, cmode_modifier, &ncid);
check_err(stat,__LINE__,__FILE__);
-
+
/* ncid created above is also root group*/
rootgroup->ncid = ncid;
@@ -136,10 +135,10 @@ gen_netcdf(const char *filename)
if(ngatts > 0) {
for(iatt = 0; iatt < ngatts; iatt++) {
Symbol* gasym = (Symbol*)listget(gattdefs,iatt);
- genbin_defineattr(gasym);
+ genbin_defineattr(gasym);
}
}
-
+
/* define per-variable attributes */
if(natts > 0) {
for(iatt = 0; iatt < natts; iatt++) {
@@ -187,7 +186,7 @@ genbin_defineglobalspecials(void)
/* Watch out, this is a global Attribute */
format = kind_string(/*Main.*/format_flag);
stat = nc_put_att_text(rootgroup->ncid,NC_GLOBAL,"_Format",strlen(format),format);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
}
#endif /*0*/
@@ -206,7 +205,7 @@ genbin_definespecialattributes(Symbol* var)
:NC_CHUNKED),
chunks);
check_err(stat,__LINE__,__FILE__);
- }
+ }
if(special->flags & _FLETCHER32_FLAG) {
stat = nc_def_var_fletcher32(var->container->ncid,
var->ncid,
@@ -221,7 +220,7 @@ genbin_definespecialattributes(Symbol* var)
(special->_DeflateLevel >= 0?special->_DeflateLevel
:0));
check_err(stat,__LINE__,__FILE__);
- }
+ }
if(special->flags & _ENDIAN_FLAG) {
stat = nc_def_var_endian(var->container->ncid,
var->ncid,
@@ -229,14 +228,14 @@ genbin_definespecialattributes(Symbol* var)
NC_ENDIAN_LITTLE
:NC_ENDIAN_BIG));
check_err(stat,__LINE__,__FILE__);
- }
+ }
if(special->flags & _NOFILL_FLAG) {
stat = nc_def_var_fill(var->container->ncid,
var->ncid,
(special->_Fill?NC_FILL:NC_NOFILL),
NULL);
check_err(stat,__LINE__,__FILE__);
- }
+ }
}
#endif /*USE_NETCDF4*/
@@ -266,9 +265,9 @@ genbin_deftype(Symbol* tsym)
tsym->typ.size,
tsym->name,
&tsym->ncid);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
break;
- case NC_ENUM:
+ case NC_ENUM:
{
Bytebuffer* datum;
Datalist* ecdl;
@@ -276,7 +275,7 @@ genbin_deftype(Symbol* tsym)
tsym->typ.basetype->typ.typecode,
tsym->name,
&tsym->ncid);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
datum = bbNew();
ecdl = builddatalist(1);
dlextend(ecdl); /* make room for one constant*/
@@ -291,29 +290,29 @@ genbin_deftype(Symbol* tsym)
tsym->ncid,
econst->name,
bbContents(datum));
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
}
bbFree(datum);
-
- }
+ dlfree(&ecdl);
+ }
break;
case NC_VLEN:
stat = nc_def_vlen(tsym->container->ncid,
tsym->name,
tsym->typ.basetype->ncid,
&tsym->ncid);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
break;
case NC_COMPOUND:
stat = nc_def_compound(tsym->container->ncid,
- tsym->typ.size,
+ tsym->typ.size,
tsym->name,
- &tsym->ncid);
- check_err(stat,__LINE__,__FILE__);
+ &tsym->ncid);
+ check_err(stat,__LINE__,__FILE__);
for(i=0;i<listlength(tsym->subnodes);i++) {
Symbol* efield = (Symbol*)listget(tsym->subnodes,i);
ASSERT(efield->subclass == NC_FIELD);
- if(efield->typ.dimset.ndims == 0){
+ if(efield->typ.dimset.ndims == 0){
stat = nc_insert_compound(
tsym->container->ncid,
tsym->ncid,
@@ -337,7 +336,7 @@ genbin_deftype(Symbol* tsym)
efield->typ.dimset.ndims,
dimsizes);
}
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
}
break;
default: panic("definectype: unexpected type subclass");
@@ -391,7 +390,7 @@ genbin_writevar(Generator* generator, Symbol* vsym, Bytebuffer* memory,
int stat = NC_NOERR;
char* data = bbContents(memory);
#ifdef USE_NOFILL
- size_t count[NC_MAX_VAR_DIMS];
+ size_t count[NC_MAX_VAR_DIMS];
{ int i; for(i=0;i<rank;i++) count[i] = indices[i] - start[i];}
#endif
@@ -409,7 +408,7 @@ genbin_writevar(Generator* generator, Symbol* vsym, Bytebuffer* memory,
fflush(stderr);
}
#endif
-
+
if(rank == 0) {
size_t count[1] = {1};
stat = nc_put_var1(vsym->container->ncid, vsym->ncid, count, data);
@@ -444,7 +443,7 @@ genbin_writeattr(Generator* generator, Symbol* asym, Bytebuffer* databuf,
case NC_BYTE: {
signed char* data = (signed char*)bbContents(databuf);
stat = nc_put_att_schar(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_CHAR: {
char* data = (char*)bbContents(databuf);
@@ -452,27 +451,27 @@ genbin_writeattr(Generator* generator, Symbol* asym, Bytebuffer* databuf,
/* Revise length if slen == 0 */
if(slen == 0) {bbAppend(databuf,'\0'); slen++;}
stat = nc_put_att_text(grpid,varid,asym->name,slen,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_SHORT: {
short* data = (short*)bbContents(databuf);
stat = nc_put_att_short(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_INT: {
int* data = (int*)bbContents(databuf);
stat = nc_put_att_int(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_FLOAT: {
float* data = (float*)bbContents(databuf);
stat = nc_put_att_float(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_DOUBLE: {
double* data = (double*)bbContents(databuf);
stat = nc_put_att_double(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
#ifdef USE_NETCDF4
case NC_STRING: {
@@ -485,29 +484,29 @@ genbin_writeattr(Generator* generator, Symbol* asym, Bytebuffer* databuf,
case NC_UBYTE: {
unsigned char* data = (unsigned char*)bbContents(databuf);
stat = nc_put_att_uchar(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_USHORT: {
unsigned short* data = (unsigned short*)bbContents(databuf);
stat = nc_put_att_ushort(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_UINT: {
unsigned int* data = (unsigned int*)bbContents(databuf);
stat = nc_put_att_uint(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
case NC_INT64: {
long long* data = (long long*)bbContents(databuf);
stat = nc_put_att_longlong(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err2(stat,asym->lineno,__LINE__,__FILE__);
} break;
case NC_UINT64: {
unsigned long long* data = (unsigned long long*)bbContents(databuf);
stat = nc_put_att_ulonglong(grpid,varid,asym->name,typid,len,data);
- check_err(stat,__LINE__,__FILE__);
+ check_err(stat,__LINE__,__FILE__);
} break;
-#endif
+#endif
default: PANIC1("genbin_defineattr: unexpected basetype: %d",basetype->typ.typecode);
}
} else { /* use the generic put_attribute for user defined types*/
diff --git a/ncgen/genchar.c b/ncgen/genchar.c
index 73ab618..3570a40 100644
--- a/ncgen/genchar.c
+++ b/ncgen/genchar.c
@@ -4,28 +4,34 @@
*********************************************************************/
#include "includes.h"
+#include "odom.h"
/******************************************************/
/* Code for generating char variables etc; mostly
language independent */
/******************************************************/
+/*Forward*/
static size_t gen_charconstant(NCConstant*, Bytebuffer*, int fillchar);
static int getfillchar(Datalist* fillsrc);
+static void gen_leafchararray(Dimset*,int,Datalist*,Bytebuffer*, int);
+#if 0
static void gen_chararrayr(Dimset*,int,int,Bytebuffer*,Datalist*,int,int,int);
+#endif
+static NCConstant* makeconst(int lineno, int len, char* str);
/*
Matching strings to char variables, attributes, and vlen
constants is challenging because it is desirable to mimic
-the original ncgen. The "algorithms" used there have no
+the original ncgen(3). The "algorithms" used there have no
simple characterization (such as "abc" == {'a','b','c'}).
So, this rather ugly code is kept in this file
-and a variety of heuristics are used to mimic ncgen.
+and a variety of heuristics are used to mimic ncgen3.
The core algorithm is as follows.
-1. Assume we have a set of dimensions D1..Dn,
- where D1 may optionally be an Unlimited dimension.
- It is assumed that the sizes of the Di are all known.
+1. Assume we have a set of dimensions D1..Dn.
+ Any of the Di may be unlimited,
+ but it is assumed that the sizes of the Di are all known.
2. Given a sequence of string or character constants
C1..Cm, our goal is to construct a single string
whose length is the cross product of D1 thru Dn.
@@ -40,7 +46,7 @@ The core algorithm is as follows.
8. If S is longer than the Dx * Dn, then truncate
and generate a warning.
-Two other cases:
+Two special cases:
1. character vlen: char(*) vlen_t.
For this case, we simply concat all the elements.
2. character attribute.
@@ -48,90 +54,76 @@ Two other cases:
*/
void
-gen_chararray(Dimset* dimset, Datalist* data, Bytebuffer* databuf, Datalist* fillsrc)
+gen_chararray(Dimset* dimset, int dimindex, Datalist* data, Bytebuffer* charbuf, Datalist* fillsrc)
{
- int ndims,lastunlim;
int fillchar = getfillchar(fillsrc);
- size_t expectedsize,xproduct;
- size_t unitsize;
+ int rank = rankfor(dimset);
+ int firstunlim = findunlimited(dimset,0);
+ int nunlim = countunlimited(dimset);
+ int nc3unlim = (nunlim <= 1 && (firstunlim == 0 || firstunlim == rank)); /* netcdf-3 case of at most 1 unlim in 0th dimension */
- ASSERT(bbLength(databuf) == 0);
-
- ndims = dimset->ndims;
-
-
- /* Find the last unlimited */
- lastunlim = findlastunlimited(dimset);
- if(lastunlim < 0) lastunlim = 0; /* pretend */
-
- /* Compute crossproduct upto the last dimension,
- starting at the last unlimited
- */
- xproduct = crossproduct(dimset,lastunlim,ndims-1);
- if(ndims == 0) {
- unitsize = 1;
- } else if(lastunlim == ndims-1) {/* last dimension is unlimited */
- unitsize = 1;
- } else { /* last dim is not unlimited */
- unitsize = dimset->dimsyms[ndims-1]->dim.declsize;
+ /* Case: netcdf3 case */
+ if(nc3unlim) {
+ gen_leafchararray(dimset,0,data,charbuf,fillchar);
+ return;
}
- expectedsize = (xproduct * unitsize);
-
-
-
- gen_chararrayr(dimset,0,lastunlim,databuf,data,fillchar,unitsize,expectedsize);
+ /* else generate should have done all the hard work */
+ gen_leafchararray(dimset,dimindex,data,charbuf,fillchar);
}
+#if 0
/* Recursive helper */
static void
-gen_chararrayr(Dimset* dimset, int dimindex, int lastunlimited,
+gen_chararrayr(Dimset* dimset, int dimindex,
Bytebuffer* databuf, Datalist* data, int fillchar,
int unitsize, int expectedsize)
{
int i;
- size_t dimsize = dimset->dimsyms[dimindex]->dim.declsize;
+ size_t dimsize = declsizefor(dimset,dimindex);
+ int rank = dimset->ndims;
+ int firstunlim = findunlimited(dimset,0);
+ int lastunlimited = findlastunlimited(dimset);
+ int nextunlimited = findunlimited(dimset,dimindex+1);
+ int islastgroup = (lastunlimited == rank || dimindex >= lastunlimited || dimindex == rank-1);
+ Odometer* subodom = NULL;
+
+ ASSERT(rank > 0);
+ ASSERT((islastgroup));
+
+ /* we should be at a list of simple constants */
+ for(i=0;i<data->length;i++) {
+ NCConstant* c = datalistith(data,i);
+ ASSERT(!islistconst(c));
+ if(isstringable(c->nctype)) {
+ int j;
+ size_t constsize;
+ constsize = gen_charconstant(c,databuf,fillchar);
+ if(constsize % unitsize > 0) {
+ size_t padsize = unitsize - (constsize % unitsize);
+ for(j=0;j<padsize;j++) bbAppend(databuf,fillchar);
+ }
+ } else {
+ semwarn(constline(c),
+ "Encountered non-string and non-char constant in datalist; ignored");
+ }
+ }/* for */
- if(dimindex < lastunlimited) {
- /* keep recursing */
- for(i=0;i<dimsize;i++) {
- NCConstant* c = datalistith(data,i);
- ASSERT(islistconst(c));
- gen_chararrayr(dimset,dimindex+1,lastunlimited,databuf,
- c->value.compoundv,fillchar,unitsize,expectedsize);
- }
- } else {/* we should be at a list of simple constants */
- for(i=0;i<data->length;i++) {
- NCConstant* c = datalistith(data,i);
- ASSERT(!islistconst(c));
- if(isstringable(c->nctype)) {
- int j;
- size_t constsize;
- constsize = gen_charconstant(c,databuf,fillchar);
- if(constsize % unitsize > 0) {
- size_t padsize = unitsize - (constsize % unitsize);
- for(j=0;j<padsize;j++) bbAppend(databuf,fillchar);
- }
- } else {
- semwarn(constline(c),
- "Encountered non-string and non-char constant in datalist; ignored");
- }
- }
- }
/* If |databuf| > expectedsize, complain: exception is zero length */
if(bbLength(databuf) == 0 && expectedsize == 1) {
- /* this is okay */
+ /* this is okay */
} else if(bbLength(databuf) > expectedsize) {
- semwarn(data->data[0].lineno,"character data list too long");
+ semwarn(data->data[0].lineno,"character data list too long; expected %d character constant, found %d: ",expectedsize,bbLength(databuf));
} else {
- size_t bufsize = bbLength(databuf);
- /* Pad to size dimproduct size */
- if(bufsize % expectedsize > 0) {
- size_t padsize = expectedsize - (bufsize % expectedsize);
+ size_t bufsize = bbLength(databuf);
+ /* Pad to size dimproduct size */
+ if(bufsize % expectedsize > 0) {
+ size_t padsize = expectedsize - (bufsize % expectedsize);
for(i=0;i<padsize;i++) bbAppend(databuf,fillchar);
- }
+ }
}
}
+#endif
void
gen_charattr(Datalist* data, Bytebuffer* databuf)
@@ -148,14 +140,14 @@ gen_charvlen(Datalist* data, Bytebuffer* databuf)
ASSERT(bbLength(databuf) == 0);
for(i=0;i<data->length;i++) {
- c = datalistith(data,i);
- if(isstringable(c->nctype)) {
- (void)gen_charconstant(c,databuf,NC_FILL_CHAR);
- } else {
- semerror(constline(c),
- "Encountered non-string and non-char constant in datalist");
- return;
- }
+ c = datalistith(data,i);
+ if(isstringable(c->nctype)) {
+ (void)gen_charconstant(c,databuf,NC_FILL_CHAR);
+ } else {
+ semerror(constline(c),
+ "Encountered non-string and non-char constant in datalist");
+ return;
+ }
}
}
@@ -175,7 +167,7 @@ gen_charconstant(NCConstant* con, Bytebuffer* databuf, int fillchar)
bbAppend(databuf,con->value.uint8v);
break;
case NC_STRING:
- constsize = con->value.stringv.len;
+ constsize = con->value.stringv.len;
bbAppendn(databuf,con->value.stringv.stringv,
con->value.stringv.len);
bbNull(databuf);
@@ -184,7 +176,7 @@ gen_charconstant(NCConstant* con, Bytebuffer* databuf, int fillchar)
bbAppend(databuf,fillchar);
break;
default:
- PANIC("unexpected constant type");
+ PANIC("unexpected constant type");
}
return constsize;
}
@@ -195,84 +187,165 @@ getfillchar(Datalist* fillsrc)
/* Determine the fill char */
int fillchar = 0;
if(fillsrc != NULL && fillsrc->length > 0) {
- NCConstant* ccon = fillsrc->data;
- if(ccon->nctype == NC_CHAR) {
- fillchar = ccon->value.charv;
- } else if(ccon->nctype == NC_STRING) {
- if(ccon->value.stringv.len > 0) {
- fillchar = ccon->value.stringv.stringv[0];
- }
- }
+ NCConstant* ccon = fillsrc->data;
+ if(ccon->nctype == NC_CHAR) {
+ fillchar = ccon->value.charv;
+ } else if(ccon->nctype == NC_STRING) {
+ if(ccon->value.stringv.len > 0) {
+ fillchar = ccon->value.stringv.stringv[0];
+ }
+ }
}
if(fillchar == 0) fillchar = NC_FILL_CHAR; /* default */
return fillchar;
}
-#ifndef CHARBUG
-void
-gen_leafchararray(Dimset* dimset, int lastunlim, Datalist* data,
- Bytebuffer* databuf, Datalist* fillsrc)
+/* I think there is a flaw in the ncgen manual
+ about handling something like this:
+ dimensions:
+ n = 8 ;
+ variables:
+ char cdata2(n) ;
+ data:
+ cdata2 = '\000','\001','\002','\177','\200','\201','\376','\377';
+ The rules would say that each of the 8 char constants must
+ be padded to length 8. I think this is only true if the dimension
+ is unlimited, and even then, I am not sure.
+ */
+
+static void
+gen_leafchararray(Dimset* dimset, int dimindex, Datalist* data,
+ Bytebuffer* charbuf, int fillchar)
{
int i;
size_t expectedsize,xproduct,unitsize;
- int ndims = dimset->ndims;
- int fillchar = getfillchar(fillsrc);
+ int rank = rankfor(dimset);
- ASSERT(bbLength(databuf) == 0);
+ ASSERT(bbLength(charbuf) == 0);
+ ASSERT((findlastunlimited(dimset) == rank
+ || findlastunlimited(dimset) == dimindex));
- /* Assume dimindex is the last unlimited (or 0 if their are
- no unlimiteds => we should be at a list of simple constants
- */
+ /*
+ There are a number of special cases that must be
+ considered, mostly driven by the need to keep consistent
+ with ncgen3. These cases are driven by the number of
+ dimensions, which dimensions are unlimited (if any), etc.
- /* Compute crossproduct upto the last dimension,
- starting at the last unlimited
- */
- xproduct = crossproduct(dimset,lastunlim,ndims-1);
+ The general rule is based on the size of the last
+ dimension, we compute the required size (after padding)
+ of each string constant. Expected size is then the size
+ of concat of the string constants after padding.
- /* Compute the required size (after padding) of each string constant */
- /* expected size is the size of concat of the string constants
- after padding
+ There is another special case used for back compatability with ncgen3.
+ In the datalist, all sequences of character constants (i.e. 'X')
+ are concatenated into a single string; the result, however is not
+ concatenated with any trailing or leading string (with double quotes).
*/
- if(ndims == 0) {
- unitsize = 1;
+
+ /* Rebuild the datalist to merge 'x' constants */
+ {
+ int i,cccount = 0;
+ /* Do initial walk */
+ for(i=0;i<datalistlen(data);i++) {
+ NCConstant* con = datalistith(data,i);
+ if(consttype(con) == NC_CHAR || consttype(con) == NC_BYTE) {
+ cccount++;
+ }
+ }
+ if(cccount > 1) {
+ char* accum = (char*)malloc(cccount+1);
+ int len = 0;
+ Datalist* newlist = builddatalist(datalistlen(data));
+ int lineno = 0;
+ NCConstant* con;
+ for(i=0;i<datalistlen(data);i++) {
+ con = datalistith(data,i);
+ if(consttype(con) == NC_CHAR || consttype(con) == NC_BYTE) {
+ if(len == 0)
+ lineno = constline(con);
+ accum[len] = con->value.charv;
+ len++;
+ } else {
+ if(len > 0) {
+ con = makeconst(lineno,len,accum);
+ len = 0;
+ lineno = 0;
+ }
+ dlappend(newlist,con);
+ }
+ }
+ /* deal with any unclosed strings */
+ if(len > 0) {
+ con = makeconst(lineno,len,accum);
+ len = 0;
+ lineno = 0;
+ dlappend(newlist,con);
+ }
+ free(accum);
+ data = newlist;
+ }
+ }
+
+ /* Compute crossproduct upto (but not includng) the last dimension */
+ xproduct = crossproduct(dimset,dimindex,rank-1);
+
+ /* Start casing it out */
+ if(rank == 0) {
+ unitsize = 1;
expectedsize = (xproduct * unitsize);
- } else
- if(lastunlim == ndims-1) {/* last dimension is unlimited */
+ } else if(rank == 1) {
+ unitsize = 1;
+ expectedsize = (xproduct * declsizefor(dimset,rank-1));
+ } else if(isunlimited(dimset,rank-1)) {/* last dimension is unlimited */
unitsize = 1;
- expectedsize = (xproduct*dimset->dimsyms[lastunlim]->dim.declsize);
- } else
- { /* last dim is not unlimited */
- unitsize = dimset->dimsyms[ndims-1]->dim.declsize;
+ expectedsize = (xproduct*declsizefor(dimset,rank-1));
+ } else { /* rank > 0 && last dim is not unlimited */
+ unitsize = declsizefor(dimset,rank-1);
expectedsize = (xproduct * unitsize);
}
for(i=0;i<data->length;i++) {
- NCConstant* c = datalistith(data,i);
- ASSERT(!islistconst(c));
- if(isstringable(c->nctype)) {
- int j;
- size_t constsize;
- constsize = gen_charconstant(c,databuf,fillchar);
- if(constsize == 0 || constsize % unitsize > 0) {
- size_t padsize = unitsize - (constsize % unitsize);
- for(j=0;j<padsize;j++) bbAppend(databuf,fillchar);
- }
- } else {
- semwarn(constline(c),"Encountered non-string and non-char constant in datalist; ignored");
- }
+ NCConstant* c = datalistith(data,i);
+ ASSERT(!islistconst(c));
+ if(isstringable(c->nctype)) {
+ int j;
+ size_t constsize;
+ constsize = gen_charconstant(c,charbuf,fillchar);
+ if(constsize == 0 || constsize % unitsize > 0) {
+ size_t padsize = unitsize - (constsize % unitsize);
+ for(j=0;j<padsize;j++) bbAppend(charbuf,fillchar);
+ }
+ } else {
+ semwarn(constline(c),"Encountered non-string and non-char constant in datalist; ignored");
+ }
}
/* If |databuf| > expectedsize, complain: exception is zero length */
- if(bbLength(databuf) == 0 && expectedsize == 1) {
- /* this is okay */
- } else if(bbLength(databuf) > expectedsize) {
- semwarn(data->data[0].lineno,"character data list too long");
+ if(bbLength(charbuf) == 0 && expectedsize == 1) {
+ /* this is okay */
+ } else if(bbLength(charbuf) > expectedsize) {
+ semwarn(data->data[0].lineno,"character data list too long; expected %d character constant, found %d: ",expectedsize,bbLength(charbuf));
} else {
- size_t bufsize = bbLength(databuf);
- /* Pad to size dimproduct size */
- if(bufsize % expectedsize > 0) {
- size_t padsize = expectedsize - (bufsize % expectedsize);
- for(i=0;i<padsize;i++) bbAppend(databuf,fillchar);
- }
+ size_t bufsize = bbLength(charbuf);
+ /* Pad to size dimproduct size */
+ if(bufsize % expectedsize > 0) {
+ size_t padsize = expectedsize - (bufsize % expectedsize);
+ for(i=0;i<padsize;i++) bbAppend(charbuf,fillchar);
+ }
}
}
-#endif /*!CHARBUG*/
+
+/* Create a new string constant */
+static NCConstant*
+makeconst(int lineno, int len, char* str)
+{
+ NCConstant* con = (NCConstant*)malloc(sizeof(NCConstant));
+ con->nctype = NC_STRING;
+ con->lineno = lineno;
+ con->filled = 0;
+ con->value.stringv.len = len;
+ /* We cannot use strdup because str might have embedded nuls */
+ con->value.stringv.stringv = (char*)malloc(len+1);
+ memcpy((void*)con->value.stringv.stringv,(void*)str,len);
+ con->value.stringv.stringv[len] = '\0';
+ return con;
+}
diff --git a/ncgen/generate.c b/ncgen/generate.c
index 091a2bc..af7801a 100644
--- a/ncgen/generate.c
+++ b/ncgen/generate.c
@@ -24,7 +24,7 @@ static void generate_fieldarray(Symbol*, NCConstant*, Dimset*, Bytebuffer*, Data
#define FIELDARRAY 1
/**************************************************/
-/* Generator general procedures */
+
int
generator_getstate(Generator* generator ,void** statep)
@@ -65,8 +65,8 @@ generate_attrdata(Symbol* asym, Generator* generator, Writer writer, Bytebuffer*
size_t count;
generator->listbegin(generator,LISTATTR,asym->data->length,codebuf,&uid);
for(count=0;count<asym->data->length;count++) {
- NCConstant* con = datalistith(asym->data,count);
- generator->list(generator,LISTATTR,uid,count,codebuf);
+ NCConstant* con = datalistith(asym->data,count);
+ generator->list(generator,LISTATTR,uid,count,codebuf);
generate_basetype(asym->typ.basetype,con,codebuf,NULL,generator);
}
generator->listend(generator,LISTATTR,uid,count,codebuf);
@@ -81,21 +81,45 @@ generate_vardata(Symbol* vsym, Generator* generator, Writer writer, Bytebuffer*
int rank = dimset->ndims;
Symbol* basetype = vsym->typ.basetype;
Datalist* filler = getfiller(vsym);
+ const size_t* start;
+ const size_t* count;
+ Odometer* odom;
if(vsym->data == NULL) return;
/* give the buffer a running start to be large enough*/
- bbSetalloc(code, nciterbuffersize);
+ if(!bbSetalloc(code, nciterbuffersize))
+ return;
if(rank == 0) {/*scalar case*/
NCConstant* c0 = datalistith(vsym->data,0);
generate_basetype(basetype,c0,code,filler,generator);
writer(generator,vsym,code,0,NULL,NULL);
} else {/*rank > 0*/
+ /* First, create an odometer using all of the dimensions */
+ odom = newodometer(dimset,NULL,NULL);
+ start = odometerstartvector(odom);
+ count = odometercountvector(odom);
generate_array(vsym,code,filler,generator,writer);
}
}
-
+
+
+/**
+
+The basic idea is to split the set of dimensions into
+groups and iterate over each group by recursion.
+
+A group is defined as the range of indices starting at an
+unlimited dimension upto (but not including) the next
+unlimited.
+
+The first group starts at index 0, even if dimension 0 is not
+unlimited. The last group is everything from the last
+unlimited dimension thru the last dimension (index rank-1).
+
+*/
+
static void
generate_array(Symbol* vsym,
Bytebuffer* code,
@@ -108,194 +132,154 @@ generate_array(Symbol* vsym,
int rank = dimset->ndims;
Symbol* basetype = vsym->typ.basetype;
nc_type typecode = basetype->typ.typecode;
- Odometer* odom;
+ Odometer* odom = NULL;
nciter_t iter;
+ int firstunlim = findunlimited(dimset,1);
+ int nunlim = countunlimited(dimset);
+ int isnc3unlim = (nunlim <= 1 && (firstunlim == 0 || firstunlim == rank)); /* netcdf-3 case of at most 1 unlim in 0th dimension */
ASSERT(rank > 0);
- /* Start by doing easy cases */
-
-#ifdef CHARBUG
- if(typecode == NC_CHAR) { /* case: character typed variable, rank > 0 */
- Bytebuffer* charbuf = bbNew();
- gen_chararray(dimset,vsym->data,charbuf,filler);
- generator->charconstant(generator,code,charbuf);
- bbFree(charbuf);
- odom = newodometer(dimset,NULL,NULL);
- writer(generator,vsym,code,odom->rank,odom->start,odom->count);
- } else
-#else /*!CHARBUG*/
- /* Case: char var && dim 1..n are not unlimited */
- if(findunlimited(dimset,1) == rank && typecode == NC_CHAR) {
- Bytebuffer* charbuf = bbNew();
- gen_leafchararray(dimset,0,vsym->data,charbuf,filler);
- generator->charconstant(generator,code,charbuf);
- bbFree(charbuf);
- odom = newodometer(dimset,NULL,NULL);
- writer(generator,vsym,code,odom->rank,odom->start,odom->count);
- } else
-#endif
- /* Case 2: dim 1..n are not unlimited */
- if(findunlimited(dimset,1) == rank) {
- size_t offset = 0; /* where are we in the data list */
- size_t nelems = 0; /* # of data list items to read */
- /* Create an iterator and odometer and just walk the datalist */
- nc_get_iter(vsym,nciterbuffersize,&iter);
- odom = newodometer(dimset,NULL,NULL);
- for(;;offset+=nelems) {
- int i,uid;
- nelems=nc_next_iter(&iter,odom->start,odom->count);
- if(nelems == 0) break;
- bbClear(code);
- generator->listbegin(generator,LISTDATA,vsym->data->length,code,&uid);
- for(i=0;i<nelems;i++) {
-#ifdef ITERBUG
- Constant* con = datalistith(vsym->data,i);
-#else
- NCConstant* con = datalistith(vsym->data,i+offset);
-#endif
- generator->list(generator,LISTDATA,uid,i,code);
-#ifdef USE_NOFILL
- if(nofill_flag && con == NULL)
+ if(isnc3unlim) {
+ /* Handle NC_CHAR case separately */
+ if(typecode == NC_CHAR) {
+ Bytebuffer* charbuf = bbNew();
+ gen_chararray(dimset,0,vsym->data,charbuf,filler);
+ generator->charconstant(generator,code,charbuf);
+ /* Create an odometer to get the dimension info */
+ odom = newodometer(dimset,NULL,NULL);
+ writer(generator,vsym,code,odom->rank,odom->start,odom->count);
+// writer(generator,vsym,code,odom->rank,0,bbLength(charbuf));
+ bbFree(charbuf);
+ } else { /* typecode != NC_CHAR */
+ /* Case: dim 1..rank-1 are not unlimited, dim 0 might be */
+ size_t offset = 0; /* where are we in the data list */
+ size_t nelems = 0; /* # of data list items to generate */
+ /* Create an iterator and odometer and just walk the datalist */
+ nc_get_iter(vsym,nciterbuffersize,&iter);
+ odom = newodometer(dimset,NULL,NULL);
+ for(;;offset+=nelems) {
+ int i,uid;
+ nelems=nc_next_iter(&iter,odometerstartvector(odom),odometercountvector(odom));
+ if(nelems == 0)
break;
- else
-#endif
+ bbClear(code);
+ generator->listbegin(generator,LISTDATA,vsym->data->length,code,&uid);
+ for(i=0;i<nelems;i++) {
+ NCConstant* con = datalistith(vsym->data,i+offset);
+ generator->list(generator,LISTDATA,uid,i,code);
generate_basetype(basetype,con,code,filler,generator);
- }
- generator->listend(generator,LISTDATA,uid,i,code);
-#ifdef USE_NOFILL
- writer(generator,vsym,code,rank,odom->start,odom->index);
-#else
- writer(generator,vsym,code,rank,odom->start,odom->count);
-#endif
+ }
+ generator->listend(generator,LISTDATA,uid,i,code);
+ writer(generator,vsym,code,rank,odom->start,odom->count);
+ }
}
- } else
-
- { /* Hard case: multiple unlimited dimensions */
+ } else { /* Hard case: multiple unlimited dimensions or unlim in dim > 0*/
/* Setup iterator and odometer */
-#ifdef CHARBUG
- nc_get_iter(vsym,nciterbuffersize,&iter);
-#else
- nc_get_iter(vsym,NC_MAX_UINT,&iter); /* effectively infinite */
-#endif
+ nc_get_iter(vsym,NC_MAX_UINT,&iter); /* effectively infinite */
odom = newodometer(dimset,NULL,NULL);
- for(;;) {/* iterate in nelem chunks */
- /* get nelems count and modify odometer */
- size_t nelems=nc_next_iter(&iter,odom->start,odom->count);
- if(nelems == 0) break;
+ for(;;) {/* iterate in nelem chunks */
+ /* get nelems count and modify odometer */
+ size_t nelems=nc_next_iter(&iter,odom->start,odom->count);
+ if(nelems == 0) break;
generate_arrayr(vsym,code,vsym->data,
- odom,
+ odom,
/*dim index=*/0,
- filler,generator
- );
-#ifdef USE_NOFILL
- writer(generator,vsym,code,odom->rank,odom->start,odom->index);
-#else
+ filler,generator
+ );
writer(generator,vsym,code,odom->rank,odom->start,odom->count);
-#endif
}
}
- odometerfree(odom);
+ if(odom != NULL)
+ odometerfree(odom);
}
+/**
+The basic idea is to split the set of dimensions into groups
+and iterate over each group. A group is defined as the
+range of indices starting at an unlimited dimension upto
+(but not including) the next unlimited. The first group
+starts at index 0, even if dimension 0 is not unlimited.
+The last group is everything from the last unlimited
+dimension thru the last dimension (index rank-1).
+*/
static void
generate_arrayr(Symbol* vsym,
Bytebuffer* code,
Datalist* list,
- Odometer* odom,
+ Odometer* odom,
int dimindex,
Datalist* filler,
Generator* generator
)
{
+ int uid,i;
Symbol* basetype = vsym->typ.basetype;
Dimset* dimset = &vsym->typ.dimset;
int rank = dimset->ndims;
- int lastunlimited;
+ int lastunlimited = findlastunlimited(dimset);
+ int nextunlimited = findunlimited(dimset,dimindex+1);
int typecode = basetype->typ.typecode;
-
- lastunlimited = findlastunlimited(dimset);
- if(lastunlimited == rank) lastunlimited = 0;
+ int islastgroup = (lastunlimited == rank || dimindex >= lastunlimited || dimindex == rank-1);
+ Odometer* subodom = NULL;
ASSERT(rank > 0);
- ASSERT(dimindex >= 0 && dimindex < rank);
-
-#ifdef CHARBUG
- ASSERT(typecode != NC_CHAR);
-#else /*!CHARBUG*/
- if(dimindex == lastunlimited && typecode == NC_CHAR) {
- Bytebuffer* charbuf = bbNew();
- gen_leafchararray(dimset,dimindex,list,charbuf,filler);
- generator->charconstant(generator,code,charbuf);
- bbFree(charbuf);
- } else
-#endif /*!CHARBUG*/
- if(dimindex == lastunlimited) {
- int uid,i;
- Odometer* slabodom;
- /* build a special odometer to walk the last few dimensions
- (similar to case 2 above)
- */
- slabodom = newsubodometer(odom,dimset,dimindex,rank);
- /* compute the starting offset in our datalist
- (Assumes that slabodom->index[i] == slabodom->start[i])
- */
- generator->listbegin(generator,LISTDATA,list->length,code,&uid);
- for(i=0;odometermore(slabodom);i++) {
- size_t offset = odometeroffset(slabodom);
- NCConstant* con = datalistith(list,offset);
-#ifdef USE_NOFILL
- if(nofill_flag && con == NULL)
- break;
-#endif
- generator->list(generator,LISTDATA,uid,i,code);
- generate_basetype(basetype,con,code,filler,generator);
- odometerincr(slabodom);
- }
- generator->listend(generator,LISTDATA,uid,i,code);
- odometerfree(slabodom);
- } else {
- /* If we are strictly to the left of the next unlimited
- then our datalist is a list of compounds representing
+ ASSERT((dimindex >= 0 && dimindex < rank));
+
+ if(islastgroup) {
+ /* Handle NC_CHAR case separately */
+ if(typecode == NC_CHAR) {
+ Bytebuffer* charbuf = bbNew();
+ gen_chararray(dimset,dimindex,list,charbuf,filler);
+ generator->charconstant(generator,code,charbuf);
+ bbFree(charbuf);
+ } else {
+ /* build a special odometer to walk the last few dimensions */
+ subodom = newsubodometer(odom,dimset,dimindex,rank);
+ generator->listbegin(generator,LISTDATA,list->length,code,&uid);
+ for(i=0;odometermore(subodom);i++) {
+ size_t offset = odometeroffset(subodom);
+ NCConstant* con = datalistith(list,offset);
+ generator->list(generator,LISTDATA,uid,i,code);
+ generate_basetype(basetype,con,code,filler,generator);
+ odometerincr(subodom);
+ }
+ generator->listend(generator,LISTDATA,uid,i,code);
+ odometerfree(subodom); subodom = NULL;
+ }
+ } else {/* !islastgroup */
+ /* Our datalist must be a list of compounds representing
the next unlimited; so walk the subarray from this index
- upto next unlimited.
- */
- int i;
- Odometer* slabodom;
- int nextunlimited = findunlimited(dimset,dimindex+1);
- ASSERT((dimindex < nextunlimited
- && (dimset->dimsyms[nextunlimited]->dim.isunlimited)));
- /* build a sub odometer */
- slabodom = newsubodometer(odom,dimset,dimindex,nextunlimited);
- /* compute the starting offset in our datalist
- (Assumes that slabodom->index[i] == slabodom->start[i])
+ upto next unlimited.
*/
- for(i=0;odometermore(slabodom);i++) {
- size_t offset = odometeroffset(slabodom);
- NCConstant* con = datalistith(list,offset);
-#ifdef USE_NOFILL
- if(nofill_flag && con == NULL)
- break;
-#endif
- if(con == NULL || con->nctype == NC_FILL) {
- if(filler == NULL)
- filler = getfiller(vsym);
- generate_arrayr(vsym,code,filler,odom,nextunlimited,NULL,generator);
-
- } else if(!islistconst(con))
- semwarn(constline(con),"Expected {...} representing unlimited list");
- else {
- Datalist* sublist = con->value.compoundv;
- generate_arrayr(vsym,code,sublist,odom,nextunlimited,filler,generator);
- }
- odometerincr(slabodom);
+ ASSERT((dimindex < nextunlimited));
+ ASSERT((isunlimited(dimset,nextunlimited)));
+ /* build a sub odometer */
+ subodom = newsubodometer(odom,dimset,dimindex,nextunlimited);
+ for(i=0;odometermore(subodom);i++) {
+ size_t offset = odometeroffset(subodom);
+ NCConstant* con = datalistith(list,offset);
+ if(con == NULL || con->nctype == NC_FILL) {
+ if(filler == NULL)
+ filler = getfiller(vsym);
+ generate_arrayr(vsym,code,filler,odom,nextunlimited,NULL,generator);
+
+ } else if(islistconst(con)) {
+ Datalist* sublist = compoundfor(con);
+ generate_arrayr(vsym,code,sublist,odom,nextunlimited,filler,generator);
+ } else {
+ semerror(constline(con),"Expected {...} representing unlimited list");
+ return;
+ }
+ odometerincr(subodom);
}
- odometerfree(slabodom);
+ odometerfree(subodom); subodom = NULL;
}
+ if(subodom != NULL)
+ odometerfree(subodom);
return;
}
-
/* Generate an instance of the basetype */
void
generate_basetype(Symbol* tsym, NCConstant* con, Bytebuffer* codebuf, Datalist* filler, Generator* generator)
@@ -307,88 +291,93 @@ generate_basetype(Symbol* tsym, NCConstant* con, Bytebuffer* codebuf, Datalist*
case NC_ENUM:
case NC_OPAQUE:
case NC_PRIM:
- if(islistconst(con)) {
- semerror(constline(con),"Expected primitive found {..}");
- }
- generate_primdata(tsym,con,codebuf,filler,generator);
- break;
+ if(islistconst(con)) {
+ semerror(constline(con),"Expected primitive found {..}");
+ }
+ generate_primdata(tsym,con,codebuf,filler,generator);
+ break;
case NC_COMPOUND: {
- int i,uid, nfields, dllen;
- if(con == NULL || isfillconst(con)) {
- Datalist* fill = (filler==NULL?getfiller(tsym):filler);
- ASSERT(fill->length == 1);
- con = &fill->data[0];
- if(!islistconst(con))
- semerror(con->lineno,"Compound data fill value is not enclosed in {..}");
- }
- if(!islistconst(con)) {/* fail on no compound*/
- semerror(constline(con),"Compound data must be enclosed in {..}");
+ int i,uid, nfields, dllen;
+ if(con == NULL || isfillconst(con)) {
+ Datalist* fill = (filler==NULL?getfiller(tsym):filler);
+ ASSERT(fill->length == 1);
+ con = &fill->data[0];
+ if(!islistconst(con)) {
+
+ if(con)
+ semerror(con->lineno,"Compound data fill value is not enclosed in {..}");
+ else
+ semerror(0,"Compound data fill value not enclosed in {..}, con is NULL.");
+ }
+ }
+ if(!islistconst(con)) {/* fail on no compound*/
+ semerror(constline(con),"Compound data must be enclosed in {..}");
}
- data = con->value.compoundv;
+ data = con->value.compoundv;
nfields = listlength(tsym->subnodes);
- dllen = datalistlen(data);
- if(dllen > nfields) {
- semerror(con->lineno,"Datalist longer than the number of compound fields");
- break;
- }
- generator->listbegin(generator,LISTCOMPOUND,listlength(tsym->subnodes),codebuf,&uid);
+ dllen = datalistlen(data);
+ if(dllen > nfields) {
+ semerror(con->lineno,"Datalist longer than the number of compound fields");
+ break;
+ }
+ generator->listbegin(generator,LISTCOMPOUND,listlength(tsym->subnodes),codebuf,&uid);
for(i=0;i<nfields;i++) {
Symbol* field = (Symbol*)listget(tsym->subnodes,i);
- con = datalistith(data,i);
- generator->list(generator,LISTCOMPOUND,uid,i,codebuf);
+ con = datalistith(data,i);
+ generator->list(generator,LISTCOMPOUND,uid,i,codebuf);
generate_basetype(field,con,codebuf,NULL,generator);
- }
- generator->listend(generator,LISTCOMPOUND,uid,i,codebuf);
- } break;
+ }
+ generator->listend(generator,LISTCOMPOUND,uid,i,codebuf);
+ } break;
case NC_VLEN: {
- Bytebuffer* vlenbuf;
+ Bytebuffer* vlenbuf;
int uid;
- size_t count;
-
- if(con == NULL || isfillconst(con)) {
- Datalist* fill = (filler==NULL?getfiller(tsym):filler);
- ASSERT(fill->length == 1);
- con = &fill->data[0];
- if(con->nctype != NC_COMPOUND) {
- semerror(con->lineno,"Vlen data fill value is not enclosed in {..}");
- }
- }
+ size_t count;
+
+ if(con == NULL || isfillconst(con)) {
+ Datalist* fill = (filler==NULL?getfiller(tsym):filler);
+ ASSERT(fill->length == 1);
+ con = &fill->data[0];
+ if(con->nctype != NC_COMPOUND) {
+ semerror(con->lineno,"Vlen data fill value is not enclosed in {..}");
+ }
+ }
- if(!islistconst(con)) {
- semerror(constline(con),"Vlen data must be enclosed in {..}");
+ if(!islistconst(con)) {
+ semerror(constline(con),"Vlen data must be enclosed in {..}");
}
data = con->value.compoundv;
/* generate the nc_vlen_t instance*/
- vlenbuf = bbNew();
- if(tsym->typ.basetype->typ.typecode == NC_CHAR) {
- gen_charvlen(data,vlenbuf);
- generator->vlenstring(generator,vlenbuf,&uid,&count);
- } else {
- generator->listbegin(generator,LISTVLEN,data->length,codebuf,&uid);
+ vlenbuf = bbNew();
+ if(tsym->typ.basetype->typ.typecode == NC_CHAR) {
+ gen_charvlen(data,vlenbuf);
+ generator->vlenstring(generator,vlenbuf,&uid,&count);
+ } else {
+ generator->listbegin(generator,LISTVLEN,data->length,codebuf,&uid);
for(count=0;count<data->length;count++) {
- NCConstant* con;
- generator->list(generator,LISTVLEN,uid,count,vlenbuf);
- con = datalistith(data,count);
+ NCConstant* con;
+ generator->list(generator,LISTVLEN,uid,count,vlenbuf);
+ con = datalistith(data,count);
generate_basetype(tsym->typ.basetype,con,vlenbuf,NULL,generator);
- }
- generator->listend(generator,LISTVLEN,uid,count,codebuf,(void*)vlenbuf);
- }
- generator->vlendecl(generator,codebuf,tsym,uid,count,vlenbuf);
- bbFree(vlenbuf);
+ }
+ generator->listend(generator,LISTVLEN,uid,count,codebuf,(void*)vlenbuf);
+ }
+ generator->vlendecl(generator,codebuf,tsym,uid,count,vlenbuf);
+ bbFree(vlenbuf);
} break;
case NC_FIELD:
- if(tsym->typ.dimset.ndims > 0) {
- /* Verify that we have a sublist (or fill situation) */
- if(con != NULL && !isfillconst(con) && !islistconst(con))
- semerror(constline(con),"Dimensioned fields must be enclose in {...}");
+ if(tsym->typ.dimset.ndims > 0) {
+ /* Verify that we have a sublist (or fill situation) */
+ if(con != NULL && !isfillconst(con) && !islistconst(con))
+ semerror(constline(con),"Dimensioned fields must be enclose in {...}");
generate_fieldarray(tsym->typ.basetype,con,&tsym->typ.dimset,codebuf,filler,generator);
- } else {
- generate_basetype(tsym->typ.basetype,con,codebuf,NULL,generator);
- }
- break;
+ } else {
+ generate_basetype(tsym->typ.basetype,con,codebuf,NULL,generator);
+ }
+ break;
default: PANIC1("generate_basetype: unexpected subclass %d",tsym->subclass);
}
@@ -397,34 +386,34 @@ generate_basetype(Symbol* tsym, NCConstant* con, Bytebuffer* codebuf, Datalist*
/* Used only for structure field arrays*/
static void
generate_fieldarray(Symbol* basetype, NCConstant* con, Dimset* dimset,
- Bytebuffer* codebuf, Datalist* filler, Generator* generator)
+ Bytebuffer* codebuf, Datalist* filler, Generator* generator)
{
int i;
int chartype = (basetype->typ.typecode == NC_CHAR);
Datalist* data;
+ int rank = rankfor(dimset);
ASSERT(dimset->ndims > 0);
if(con != NULL && !isfillconst(con))
data = con->value.compoundv;
else
- data = NULL;
+ data = NULL;
if(chartype) {
- /* Collect the char field in a separate buffer */
- Bytebuffer* charbuf = bbNew();
- gen_chararray(dimset,data,charbuf,filler);
- generator->charconstant(generator,codebuf,charbuf);
- bbFree(charbuf);
+ Bytebuffer* charbuf = bbNew();
+ gen_chararray(dimset,0,data,charbuf,filler);
+ generator->charconstant(generator,codebuf,charbuf);
+ bbFree(charbuf);
} else {
- int uid;
- size_t xproduct = crossproduct(dimset,0,0); /* compute total number of elements */
+ int uid;
+ size_t xproduct = crossproduct(dimset,0,rank); /* compute total number of elements */
generator->listbegin(generator,LISTFIELDARRAY,xproduct,codebuf,&uid);
for(i=0;i<xproduct;i++) {
- con = (data == NULL ? NULL : datalistith(data,i));
- generator->list(generator,LISTFIELDARRAY,uid,i,codebuf);
+ con = (data == NULL ? NULL : datalistith(data,i));
+ generator->list(generator,LISTFIELDARRAY,uid,i,codebuf);
generate_basetype(basetype,con,codebuf,NULL,generator);
- }
+ }
generator->listend(generator,LISTFIELDARRAY,uid,i,codebuf);
}
}
@@ -441,37 +430,37 @@ normalizeopaquelength(NCConstant* prim, unsigned long nbytes)
{
int nnibs = 2*nbytes;
ASSERT(prim->nctype==NC_OPAQUE);
- if(prim->value.opaquev.len == nnibs) {
+ if(prim->value.opaquev.len == nnibs) {
/* do nothing*/
} else if(prim->value.opaquev.len > nnibs) { /* truncate*/
- prim->value.opaquev.stringv[nnibs] = '\0';
- prim->value.opaquev.len = nnibs;
+ prim->value.opaquev.stringv[nnibs] = '\0';
+ prim->value.opaquev.len = nnibs;
} else {/* prim->value.opaquev.len < nnibs => expand*/
char* s;
- s = (char*)emalloc(nnibs+1);
- memset(s,'0',nnibs); /* Fill with '0' characters */
- memcpy(s,prim->value.opaquev.stringv,prim->value.opaquev.len);
- s[nnibs] = '\0';
- efree(prim->value.opaquev.stringv);
- prim->value.opaquev.stringv=s;
- prim->value.opaquev.len = nnibs;
+ s = (char*)emalloc(nnibs+1);
+ memset(s,'0',nnibs); /* Fill with '0' characters */
+ memcpy(s,prim->value.opaquev.stringv,prim->value.opaquev.len);
+ s[nnibs] = '\0';
+ efree(prim->value.opaquev.stringv);
+ prim->value.opaquev.stringv=s;
+ prim->value.opaquev.len = nnibs;
}
}
static void
generate_primdata(Symbol* basetype, NCConstant* prim, Bytebuffer* codebuf,
- Datalist* filler, Generator* generator)
+ Datalist* filler, Generator* generator)
{
NCConstant target;
int match;
if(prim == NULL || isfillconst(prim)) {
- Datalist* fill = (filler==NULL?getfiller(basetype):filler);
- ASSERT(fill->length == 1);
- prim = datalistith(fill,0);
+ Datalist* fill = (filler==NULL?getfiller(basetype):filler);
+ ASSERT(fill->length == 1);
+ prim = datalistith(fill,0);
}
- ASSERT(prim->nctype != NC_COMPOUND);
+ ASSERT((prim->nctype != NC_COMPOUND));
/* Verify that the constant is consistent with the type */
match = 1;
@@ -488,55 +477,55 @@ generate_primdata(Symbol* basetype, NCConstant* prim, Bytebuffer* codebuf,
case NC_INT64:
case NC_UINT64:
case NC_STRING:
- match = (basetype->subclass == NC_PRIM ? 1 : 0);
- break;
+ match = (basetype->subclass == NC_PRIM ? 1 : 0);
+ break;
#ifdef USE_NETCDF4
case NC_NIL:
- match = (basetype->subclass == NC_PRIM && basetype->typ.typecode == NC_STRING ? 1 : 0);
- break;
+ match = (basetype->subclass == NC_PRIM && basetype->typ.typecode == NC_STRING ? 1 : 0);
+ break;
case NC_OPAQUE:
- /* OPAQUE is also consistent with numbers */
- match = (basetype->subclass == NC_OPAQUE
- || basetype->subclass == NC_PRIM ? 1 : 0);
- break;
+ /* OPAQUE is also consistent with numbers */
+ match = (basetype->subclass == NC_OPAQUE
+ || basetype->subclass == NC_PRIM ? 1 : 0);
+ break;
case NC_ECONST:
- match = (basetype->subclass == NC_ENUM ? 1 : 0);
- if(match) {
- /* Make sure this econst belongs to this enum */
- Symbol* ec = prim->value.enumv;
- Symbol* en = ec->container;
- match = (en == basetype);
- }
- break;
+ match = (basetype->subclass == NC_ENUM ? 1 : 0);
+ if(match) {
+ /* Make sure this econst belongs to this enum */
+ Symbol* ec = prim->value.enumv;
+ Symbol* en = ec->container;
+ match = (en == basetype);
+ }
+ break;
#endif
default:
- match = 0;
+ match = 0;
}
if(!match) {
semerror(constline(prim),"Data value is not consistent with the expected type: %s",
- basetype->name);
+ basetype->name);
}
target.nctype = basetype->typ.typecode;
if(target.nctype != NC_ECONST) {
- convert1(prim,&target);
+ convert1(prim,&target);
}
switch (target.nctype) {
case NC_ECONST:
if(basetype->subclass != NC_ENUM) {
- semerror(constline(prim),"Conversion to enum not supported (yet)");
- } break;
- case NC_OPAQUE:
- normalizeopaquelength(&target,basetype->typ.size);
- break;
+ semerror(constline(prim),"Conversion to enum not supported (yet)");
+ } break;
+ case NC_OPAQUE:
+ normalizeopaquelength(&target,basetype->typ.size);
+ break;
default:
- break;
+ break;
}
generator->constant(generator,&target,codebuf);
-
+
return;
}
diff --git a/ncgen/generr.c b/ncgen/generr.c
index e14ea63..d9d8acc 100644
--- a/ncgen/generr.c
+++ b/ncgen/generr.c
@@ -62,6 +62,7 @@ verror(fmt,va_alist) const char* fmt; va_dcl
strcpy(newfmt,"netCDF classic: not supported: ");
strncat(newfmt,fmt,2000);
vderror(newfmt,argv);
+ va_end(argv);
}
#ifndef NO_STDARG
@@ -103,7 +104,7 @@ markcdf4(const char* msg)
markcdf4_msg = (char*)msg;
}
-char*
+char*
getmarkcdf4(void)
{
return markcdf4_msg;
diff --git a/ncgen/genf77.c b/ncgen/genf77.c
index 099eb5a..39a9a19 100644
--- a/ncgen/genf77.c
+++ b/ncgen/genf77.c
@@ -852,7 +852,6 @@ static void
genf77_writeattr(Generator* generator, Symbol* asym, Bytebuffer* code,
int rank, size_t* start, size_t* count)
{
- Datalist* list;
Symbol* basetype = asym->typ.basetype;
/* default assumption */
size_t len = asym->data==NULL?0:asym->data->length;
diff --git a/ncgen/jdata.c b/ncgen/jdata.c
index b62173e..500ee86 100644
--- a/ncgen/jdata.c
+++ b/ncgen/jdata.c
@@ -50,10 +50,18 @@ j_constant(Generator* generator, NCConstant* con, Bytebuffer* buf,...)
bbprintf(codetmp,"%d",con->value.int32v);
break;
case NC_FLOAT:
- bbprintf(codetmp,"%f",con->value.floatv);
+ /* Special case for nan */
+ if(isnan(con->value.floatv))
+ bbprintf(codetmp,"Float.NaN");
+ else
+ bbprintf(codetmp,"%f",con->value.floatv);
break;
case NC_DOUBLE:
- bbprintf(codetmp,"%lf",con->value.doublev);
+ /* Special case for nan */
+ if(isnan(con->value.doublev))
+ bbprintf(codetmp,"Double.NaN");
+ else
+ bbprintf(codetmp,"%lf",con->value.doublev);
break;
case NC_UBYTE:
bbprintf(codetmp,"%hhu",con->value.uint8v);
diff --git a/ncgen/jtests.sh b/ncgen/jtests.sh
index 5daa4cf..6af22ad 100755
--- a/ncgen/jtests.sh
+++ b/ncgen/jtests.sh
@@ -42,7 +42,7 @@ NCGEN4=${builddir}/ncgen/ncgen
NCDUMP=${builddir}/ncdump/ncdump
# Define the set of tests that can be
-# processed with either the -k1 or -k3 flag
+# processed with either the -k nc3 or -k nc4 flag
TESTS3="\
test0 \
@@ -70,7 +70,7 @@ TESTS3="$TESTS3 ref_tst_unicode ref_tst_utf8"
fi
# Define the set of tests that must be
-# processed with the -k3 flag
+# processed with the -k nc4 flag
TESTS4="\
ref_dimscope \
diff --git a/ncgen/main.c b/ncgen/main.c
index 534025f..daec68a 100644
--- a/ncgen/main.c
+++ b/ncgen/main.c
@@ -65,27 +65,36 @@ int main( int argc, char** argv );
/* Define tables vs modes for legal -k values*/
struct Kvalues legalkinds[NKVALUES] = {
- {"1", 1},
- {"classic", 1},
-
-/* The 64-bit offset kind (2) should only be used if actually needed */
- {"2", 2},
- {"64-bit-offset", 2},
- {"64-bit offset", 2},
-
- /* NetCDF-4 HDF5 format*/
- {"3", 3},
- {"hdf5", 3},
- {"netCDF-4", 3},
- {"netcdf-4", 3},
- {"netcdf4", 3},
- {"enhanced", 3},
-
- /* NetCDF-4 HDF5 format, but using only nc3 data model */
- {"4", 4},
- {"hdf5-nc3", 4},
- {"netCDF-4 classic model", 4},
- {"enhanced-nc3", 4},
+ /* NetCDF-3 classic format (32-bit offsets) */
+ {"classic", NC_FORMAT_CLASSIC}, /* canonical format name */
+ {"nc3", NC_FORMAT_CLASSIC}, /* short format name */
+ {"1", NC_FORMAT_CLASSIC}, /* deprecated, use "-3" or "-k nc3" instead */
+
+ /* NetCDF-3 64-bit offset format */
+ {"64-bit offset", NC_FORMAT_64BIT}, /* canonical format name */
+ {"nc6", NC_FORMAT_64BIT}, /* short format name */
+ {"2", NC_FORMAT_64BIT}, /* deprecated, use "-6" or "-k nc6" instead */
+ {"64-bit-offset", NC_FORMAT_64BIT}, /* aliases */
+
+ /* NetCDF-4 HDF5-based format */
+ {"netCDF-4", NC_FORMAT_NETCDF4}, /* canonical format name */
+ {"nc4", NC_FORMAT_NETCDF4}, /* short format name */
+ {"3", NC_FORMAT_NETCDF4}, /* deprecated, use "-4" or "-k nc4" instead */
+ {"netCDF4", NC_FORMAT_NETCDF4}, /* aliases */
+ {"hdf5", NC_FORMAT_NETCDF4},
+ {"enhanced", NC_FORMAT_NETCDF4},
+ {"netcdf-4", NC_FORMAT_NETCDF4},
+ {"netcdf4", NC_FORMAT_NETCDF4},
+
+ /* NetCDF-4 HDF5-based format, restricted to classic data model */
+ {"netCDF-4 classic model", NC_FORMAT_NETCDF4_CLASSIC}, /* canonical format name */
+ {"nc7", NC_FORMAT_NETCDF4_CLASSIC}, /* short format name */
+ {"4", NC_FORMAT_NETCDF4_CLASSIC}, /* deprecated, use "-7" or -k nc7" instead */
+ {"netCDF-4-classic", NC_FORMAT_NETCDF4_CLASSIC}, /* aliases */
+ {"netCDF-4_classic", NC_FORMAT_NETCDF4_CLASSIC},
+ {"netCDF4_classic", NC_FORMAT_NETCDF4_CLASSIC},
+ {"hdf5-nc3", NC_FORMAT_NETCDF4_CLASSIC},
+ {"enhanced-nc3", NC_FORMAT_NETCDF4_CLASSIC},
/* null terminate*/
{NULL,0}
@@ -125,12 +134,14 @@ struct Languages legallanguages[] = {
};
#endif
+#if 0 /*not used*/
/* BOM Sequences */
static char* U8 = "\xEF\xBB\xBF"; /* UTF-8 */
static char* BE32 = "\x00\x00\xFE\xFF"; /* UTF-32; big-endian */
static char* LE32 = "\xFF\xFE"; /* UTF-32; little-endian */
static char* BE16 = "\xFE\xFF"; /* UTF-16; big-endian */
static char* LE16 = "\xFF\xFE"; /* UTF-16; little-endian */
+#endif
/* The default minimum iterator size depends
on whether we are doing binary or language
@@ -172,11 +183,11 @@ main(
int c;
FILE *fp;
struct Languages* langs;
- char* lang_name;//
+ char* lang_name;
#ifdef __hpux
setlocale(LC_CTYPE,"");
#endif
-
+
init_netcdf();
opterr = 1; /* print error message if bad option */
@@ -204,10 +215,10 @@ main(
(void) par_io_init(32, 32);
#endif
- while ((c = getopt(argc, argv, "hbcfk:l:no:v:xdM:D:B:P")) != EOF)
+ while ((c = getopt(argc, argv, "hbcfk:3467l:no:v:xdM:D:B:P")) != EOF)
switch(c) {
case 'd':
- debug = 1;
+ debug = 1;
break;
case 'D':
debug = atoi(optarg);
@@ -236,29 +247,34 @@ main(
l_flag = L_BINARY;
break;
case 'h':
- header_only = 1;
+ header_only = 1;
break;
- case 'l': /* specify language, instead of using -c or -f or -b */
+ case 'l': /* specify language, instead of using -c or -f or -b */
- {
+ {
if(l_flag != 0) {
- fprintf(stderr,"Please specify only one language\n");
- return 1;
+ fprintf(stderr,"Please specify only one language\n");
+ return 1;
}
- lang_name = (char*) emalloc(strlen(optarg)+1);
+ if(!optarg) {
+ derror("%s: output language is null",
+ progname);
+ return(1);
+ }
+ lang_name = (char*) emalloc(strlen(optarg)+1);
(void)strcpy(lang_name, optarg);
for(langs=legallanguages;langs->name != NULL;langs++) {
- if(strcmp(lang_name,langs->name)==0) {
+ if(strcmp(lang_name,langs->name)==0) {
l_flag = langs->flag;
- break;
- }
+ break;
+ }
}
if(langs->name == NULL) {
- derror("%s: output language %s not implemented",
- progname, lang_name);
- return(1);
+ derror("%s: output language %s not implemented",
+ progname, lang_name);
+ return(1);
}
- }
+ }
break;
case 'n': /* old version of -b, uses ".cdf" extension */
if(l_flag != 0) {
@@ -276,22 +292,23 @@ main(
break;
case 'v': /* a deprecated alias for "kind" option */
/*FALLTHRU*/
- case 'k': /* for specifying variant of netCDF format to be generated
- Possible values are:
- 1 (=> classic 32 bit)
- 2 (=> classic 64 bit)
- 3 (=> enhanced)
- 4 (=> classic, but stored in an enhanced file format)
- Also provide string versions of above
- "classic"
- "64-bit-offset"
- "64-bit offset"
- "enhanced" | "hdf5" | "netCDF-4"
- "enhanced-nc3" | "hdf5-nc3" | "netCDF-4 classic model"
+ case 'k': /* for specifying variant of netCDF format to be generated
+ Possible values are:
+ Format names:
+ "classic" or "nc3"
+ "64-bit offset" or "nc6"
+ "netCDF-4" or "nc4"
+ "netCDF-4 classic model" or "nc7"
+ Format version numbers (deprecated):
+ 1 (=> classic)
+ 2 (=> 64-bit offset)
+ 3 (=> netCDF-4)
+ 4 (=> netCDF-4 classic model)
*/
{
struct Kvalues* kvalue;
- char *kind_name = (char *) emalloc(strlen(optarg)+1);
+ char *kind_name = (optarg != NULL ? (char *) emalloc(strlen(optarg)+1)
+ : emalloc(1));
if (! kind_name) {
derror ("%s: out of memory", progname);
return(1);
@@ -309,6 +326,18 @@ main(
}
}
break;
+ case '3': /* output format is classic (netCDF-3) */
+ k_flag = NC_FORMAT_CLASSIC;
+ break;
+ case '6': /* output format is 64-bit-offset (netCDF-3 version 2) */
+ k_flag = NC_FORMAT_64BIT;
+ break;
+ case '4': /* output format is netCDF-4 (variant of HDF5) */
+ k_flag = NC_FORMAT_NETCDF4;
+ break;
+ case '7': /* output format is netCDF-4 (restricted to classic model)*/
+ k_flag = NC_FORMAT_NETCDF4_CLASSIC;
+ break;
case 'M': /* Determine the name for the main function */
mainname = nulldup(optarg);
break;
@@ -413,7 +442,7 @@ main(
cdlname = (char*)emalloc(NC_MAX_NAME);
cdlname = nulldup(argv[0]);
if(cdlname != NULL) {
- if(strlen(cdlname) > NC_MAX_NAME)
+ if(strlen(cdlname) > NC_MAX_NAME)
cdlname[NC_MAX_NAME] = '\0';
}
}
@@ -464,7 +493,7 @@ main(
if(k_flag == 0)
k_flag = 1;
- usingclassic = (k_flag <= 2?1:0);
+ usingclassic = (k_flag <= 2 || k_flag == 4)?1:0;
/* compute cmode_modifier */
switch (k_flag) {
@@ -479,7 +508,7 @@ main(
cmode_modifier |= (NC_DISKLESS|NC_NOCLOBBER);
processsemantics();
- if(!syntax_only && error_count == 0)
+ if(!syntax_only && error_count == 0)
define_netcdf();
return 0;
diff --git a/ncgen/ncgen.1 b/ncgen/ncgen.1
index 02917c7..91531c0 100644
--- a/ncgen/ncgen.1
+++ b/ncgen/ncgen.1
@@ -9,12 +9,13 @@ ncgen
\%[-b]
\%[-c]
\%[-f]
-\%[-k \fIfile format\fP]
+\%[-k \fIformat_name\fP]
+\%[-\fIformat_code\fP]
\%[-l \fIoutput language\fP]
\%[-n]
\%[-o \fInetcdf_filename\fP]
\%[-x]
-\%\fIinput_file\fP
+\%[\fIinput_file\fP]
.hy
.ft
.SH DESCRIPTION
@@ -24,7 +25,8 @@ or a file in some source language that when executed will
construct the corresponding binary .nc file.
The input to \fBncgen\fP is a description of a netCDF
file in a small language known as CDL (network Common Data form Language),
-described below.
+described below. Input is read from standard input if no input_file
+is specified.
If no options are specified in invoking \fBncgen\fP, it merely checks the
syntax of the input CDL file, producing error messages for
any violations of CDL syntax. Other options can be used, for example,
@@ -66,22 +68,41 @@ If this option is specified it implies
This option is necessary because netCDF files
cannot be written directly to standard output, since standard output is not
seekable.
-.IP "\fB-k \fRfile_format\fP"
+.IP "\fB-k \fIformat_name\fP"
+.IP "\fB-\fIformat_code\fP"
The -k flag specifies the format of the file to be created and, by inference,
the data model accepted by ncgen (i.e. netcdf-3 (classic) versus
-netcdf-4).
-The possible arguments are as follows.
+netcdf-4). As a shortcut, a numeric \fIformat_code\fP may be specified instead.
+The possible \fIformat_name\fP values for the -k option are:
.RS
.RS
-.IP "'1', 'classic' => netcdf classic file format, netcdf-3 type model."
-.IP "'2', '64-bit-offset', '64-bit offset' => netcdf 64 bit classic file format, netcdf-3 type model."
-.IP "'3', 'hdf5', 'netCDF-4', 'enhanced' => netcdf-4 file format, netcdf-4 type model."
-.IP "'4', 'hdf5-nc3', 'netCDF-4 classic model', 'enhanced-nc3' => netcdf-4 file format, netcdf-3 type model."
+.IP "'classic' or 'nc3' => netCDF classic format"
+.IP "'64-bit offset' or 'nc6' => netCDF 64-bit format"
+.IP "'netCDF-4' 0r 'nc4' => netCDF-4 format (enhanced data model)"
+.IP "'netCDF-4 classic model' or 'nc7' => netCDF-4 classic model format"
.RE
.RE
-Note that -v is accepted to mean the same thing as
--k for backward compatibility, but -k is preferred, to match
-the corresponding ncdump option.
+Accepted \fIformat_number\fP arguments, just shortcuts for format_names, are:
+.RS
+.RS
+.IP "3 => netcdf classic format"
+.IP "6 => netCDF 64-bit format"
+.IP "4 => netCDF-4 format (enhanced data model)"
+.IP "7 => netCDF-4 classic model format"
+.RE
+.RE
+The numeric code "7" is used because "7=3+4", a mnemonic for the format
+that uses the netCDF-3 data model for compatibility with the netCDF-4
+storage format for performance. Credit is due to NCO for use of these
+numeric codes instead of the old and confusing format numbers.
+.LP
+Note: The old version format numbers '1', '2', '3', '4', equivalent
+to the format names 'nc3', 'nc6', 'nc4', or 'nc7' respectively, are
+also still accepted but deprecated, due to easy confusion between
+format numbers and format names. Various old format name aliases are
+also accepted but deprecated, e.g. 'hdf5', 'enhanced-nc3', etc.
+Also, note that -v is accepted to mean the same thing as
+-k for backward compatibility.
.IP "\fB-x\fP"
Don't initialize data with fill values. This can speed up creation of
large netCDF files greatly, but later attempts to read unwritten data
@@ -335,14 +356,14 @@ For example, consider this.
.HP
.RS
.nf
-netcdf ... {
-...
-variables:
+ netcdf ... {
+ ...
+ variables:
int dimensions;
dimensions: attribute=0 ; // this will cause an error
dimensions : attribute=0 ; // this is ok.
-...
-}
+ ...
+ }
.fi
.RE
.LP
@@ -527,7 +548,7 @@ are all acceptable \fIfloat\fP constants:
-2.0f
3.14159265358979f // will be truncated to less precision
1.f
-.1f
+
.fi
.RE
.LP
@@ -574,10 +595,10 @@ in favor of the string type.
Some character constant examples are as follows.
.RS
.nf
-'a' // ASCII `a'
-"a" // equivalent to 'a'
-"Two\\nlines\\n" // a 10-character string with two embedded newlines
-"a bell:\\007" // a string containing an ASCII bell
+ 'a' // ASCII `a'
+ "a" // equivalent to 'a'
+ "Two\\nlines\\n" // a 10-character string with two embedded newlines
+ "a bell:\\007" // a string containing an ASCII bell
.fi
.RE
Note that the netCDF character array "a" would fit in a one-element
@@ -788,7 +809,7 @@ complications. consider, for example
.nf
dimensions: u=UNLIMITED; d1=1; d2=2; d3=3;
d4=4; d5=5; u2=UNLIMITED;
-variables: char var(d3,d4);
+variables: char var(d4,d5);
datalist: var="1", "two", "three";
.fi
.RE
diff --git a/ncgen/ncgen.h b/ncgen/ncgen.h
index dc508a6..0b36e7f 100644
--- a/ncgen/ncgen.h
+++ b/ncgen/ncgen.h
@@ -103,7 +103,7 @@ char* name;
int k_flag;
};
-#define NKVALUES 16
+#define NKVALUES 24
extern struct Kvalues legalkinds[NKVALUES];
/* Note: some non-var specials (i.e. _Format) are not included in this struct*/
diff --git a/ncgen/ncgen.l b/ncgen/ncgen.l
index baaefc5..10c0847 100644
--- a/ncgen/ncgen.l
+++ b/ncgen/ncgen.l
@@ -186,7 +186,9 @@ yytext[MAXTRST-1] = '\0';
}
*/
/* FIX: Assumes unescape also does normalization */
- bbSetlength(lextext,yyleng-2);
+ bbSetalloc(lextext,yyleng+1); /*+1 for nul */
+ /* Adjust length */
+ bbSetlength(lextext,yyleng-2); /*-2 for quotes */
len = unescape(bbContents(lextext),
(char *)yytext+1,yyleng-2,!ISIDENT);
if(len < 0) {
diff --git a/ncgen/ncgenyy.c b/ncgen/ncgenyy.c
index e1e4c70..0fd102a 100644
--- a/ncgen/ncgenyy.c
+++ b/ncgen/ncgenyy.c
@@ -1325,7 +1325,7 @@ static int input (void );
/* This used to be an fputs(), but since the string might contain NUL's,
* we now use fwrite().
*/
-#define ECHO fwrite( ncgtext, ncgleng, 1, ncgout )
+#define ECHO do { if (fwrite( ncgtext, ncgleng, 1, ncgout )) {} } while (0)
#endif
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
@@ -1336,7 +1336,7 @@ static int input (void );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- int n; \
+ unsigned n; \
for ( n = 0; n < max_size && \
(c = getc( ncgin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
@@ -1531,7 +1531,9 @@ ncgtext[MAXTRST-1] = '\0';
}
*/
/* FIX: Assumes unescape also does normalization */
- bbSetlength(lextext,ncgleng-2);
+ bbSetalloc(lextext,ncgleng+1); /*+1 for nul */
+ /* Adjust length */
+ bbSetlength(lextext,ncgleng-2); /*-2 for quotes */
len = unescape(bbContents(lextext),
(char *)ncgtext+1,ncgleng-2,!ISIDENT);
if(len < 0) {
@@ -1545,7 +1547,7 @@ ncgtext[MAXTRST-1] = '\0';
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 201 "ncgen.l"
+#line 203 "ncgen.l"
{ /* drop leading 0x; pad to even number of chars */
char* p = ncgtext+2;
int len = ncgleng - 2;
@@ -1560,113 +1562,113 @@ YY_RULE_SETUP
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 213 "ncgen.l"
+#line 215 "ncgen.l"
{return lexdebug(COMPOUND);}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 214 "ncgen.l"
+#line 216 "ncgen.l"
{return lexdebug(ENUM);}
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 215 "ncgen.l"
+#line 217 "ncgen.l"
{return lexdebug(OPAQUE);}
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 217 "ncgen.l"
+#line 219 "ncgen.l"
{return lexdebug(FLOAT_K);}
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 218 "ncgen.l"
+#line 220 "ncgen.l"
{return lexdebug(CHAR_K);}
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 219 "ncgen.l"
+#line 221 "ncgen.l"
{return lexdebug(BYTE_K);}
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 220 "ncgen.l"
+#line 222 "ncgen.l"
{return lexdebug(UBYTE_K);}
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 221 "ncgen.l"
+#line 223 "ncgen.l"
{return lexdebug(SHORT_K);}
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 222 "ncgen.l"
+#line 224 "ncgen.l"
{return lexdebug(USHORT_K);}
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 223 "ncgen.l"
+#line 225 "ncgen.l"
{return lexdebug(INT_K);}
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 224 "ncgen.l"
+#line 226 "ncgen.l"
{return lexdebug(UINT_K);}
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 225 "ncgen.l"
+#line 227 "ncgen.l"
{return lexdebug(INT64_K);}
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 226 "ncgen.l"
+#line 228 "ncgen.l"
{return lexdebug(UINT64_K);}
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 227 "ncgen.l"
+#line 229 "ncgen.l"
{return lexdebug(DOUBLE_K);}
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 228 "ncgen.l"
+#line 230 "ncgen.l"
{int32_val = -1;
return lexdebug(NC_UNLIMITED_K);}
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 231 "ncgen.l"
+#line 233 "ncgen.l"
{return lexdebug(TYPES);}
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 232 "ncgen.l"
+#line 234 "ncgen.l"
{return lexdebug(DIMENSIONS);}
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 233 "ncgen.l"
+#line 235 "ncgen.l"
{return lexdebug(VARIABLES);}
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 234 "ncgen.l"
+#line 236 "ncgen.l"
{return lexdebug(DATA);}
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 235 "ncgen.l"
+#line 237 "ncgen.l"
{return lexdebug(GROUP);}
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 237 "ncgen.l"
+#line 239 "ncgen.l"
{BEGIN(TEXT);return lexdebug(NETCDF);}
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 239 "ncgen.l"
+#line 241 "ncgen.l"
{ /* missing value (pre-2.4 backward compatibility) */
if (ncgtext[0] == '-') {
double_val = NEGNC_INFINITE;
@@ -1679,7 +1681,7 @@ YY_RULE_SETUP
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 248 "ncgen.l"
+#line 250 "ncgen.l"
{ /* missing value (pre-2.4 backward compatibility) */
double_val = NAN;
specialconstants = 1;
@@ -1688,7 +1690,7 @@ YY_RULE_SETUP
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 254 "ncgen.l"
+#line 256 "ncgen.l"
{/* missing value (pre-2.4 backward compatibility)*/
if (ncgtext[0] == '-') {
float_val = NEGNC_INFINITEF;
@@ -1701,7 +1703,7 @@ YY_RULE_SETUP
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 263 "ncgen.l"
+#line 265 "ncgen.l"
{ /* missing value (pre-2.4 backward compatibility) */
float_val = NANF;
specialconstants = 1;
@@ -1710,7 +1712,7 @@ YY_RULE_SETUP
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 269 "ncgen.l"
+#line 271 "ncgen.l"
{
#ifdef USE_NETCDF4
if(l_flag == L_C || l_flag == L_BINARY)
@@ -1723,7 +1725,7 @@ YY_RULE_SETUP
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 279 "ncgen.l"
+#line 281 "ncgen.l"
{
bbClear(lextext);
bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */
@@ -1734,7 +1736,7 @@ YY_RULE_SETUP
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 288 "ncgen.l"
+#line 290 "ncgen.l"
{struct Specialtoken* st;
bbClear(lextext);
bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */
@@ -1748,7 +1750,7 @@ YY_RULE_SETUP
case 33:
/* rule 33 can match eol */
YY_RULE_SETUP
-#line 298 "ncgen.l"
+#line 300 "ncgen.l"
{
int c;
char* p; char* q;
@@ -1767,7 +1769,7 @@ YY_RULE_SETUP
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 314 "ncgen.l"
+#line 316 "ncgen.l"
{ char* id; int len;
bbClear(lextext);
bbAppendn(lextext,(char*)ncgtext,ncgleng+1); /* include null */
@@ -1782,7 +1784,7 @@ YY_RULE_SETUP
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 326 "ncgen.l"
+#line 328 "ncgen.l"
{
/* We need to try to see what size of integer ((u)int). */
/* Technically, the user should specify, but... */
@@ -1836,7 +1838,7 @@ YY_RULE_SETUP
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 377 "ncgen.l"
+#line 379 "ncgen.l"
{ /* The number may be signed or unsigned (signed has priority) */
int slen = strlen(ncgtext);
int tag = ncgtext[slen-1];
@@ -1901,7 +1903,7 @@ YY_RULE_SETUP
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 439 "ncgen.l"
+#line 441 "ncgen.l"
{
int slen = strlen(ncgtext);
int tag = ncgtext[slen-1];
@@ -1944,7 +1946,7 @@ YY_RULE_SETUP
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 478 "ncgen.l"
+#line 480 "ncgen.l"
{
int c;
int token = 0;
@@ -1982,7 +1984,7 @@ YY_RULE_SETUP
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 512 "ncgen.l"
+#line 514 "ncgen.l"
{
if (sscanf((char*)ncgtext, "%le", &double_val) != 1) {
sprintf(errstr,"bad long or double constant: %s",(char*)ncgtext);
@@ -1993,7 +1995,7 @@ YY_RULE_SETUP
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 519 "ncgen.l"
+#line 521 "ncgen.l"
{
if (sscanf((char*)ncgtext, "%e", &float_val) != 1) {
sprintf(errstr,"bad float constant: %s",(char*)ncgtext);
@@ -2005,7 +2007,7 @@ YY_RULE_SETUP
case 41:
/* rule 41 can match eol */
YY_RULE_SETUP
-#line 526 "ncgen.l"
+#line 528 "ncgen.l"
{
(void) sscanf((char*)&ncgtext[1],"%c",&byte_val);
return lexdebug(BYTE_CONST);
@@ -2013,7 +2015,7 @@ YY_RULE_SETUP
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 530 "ncgen.l"
+#line 532 "ncgen.l"
{
int oct = unescapeoct(&ncgtext[2]);
if(oct < 0) {
@@ -2026,7 +2028,7 @@ YY_RULE_SETUP
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 539 "ncgen.l"
+#line 541 "ncgen.l"
{
int hex = unescapehex(&ncgtext[3]);
if(byte_val < 0) {
@@ -2039,7 +2041,7 @@ YY_RULE_SETUP
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 548 "ncgen.l"
+#line 550 "ncgen.l"
{
switch ((char)ncgtext[2]) {
case 'a': byte_val = '\007'; break; /* not everyone under-
@@ -2061,7 +2063,7 @@ YY_RULE_SETUP
case 45:
/* rule 45 can match eol */
YY_RULE_SETUP
-#line 566 "ncgen.l"
+#line 568 "ncgen.l"
{
lineno++ ;
break;
@@ -2069,7 +2071,7 @@ YY_RULE_SETUP
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 571 "ncgen.l"
+#line 573 "ncgen.l"
{/*initial*/
BEGIN(ST_C_COMMENT);
break;
@@ -2078,21 +2080,21 @@ YY_RULE_SETUP
case 47:
/* rule 47 can match eol */
YY_RULE_SETUP
-#line 576 "ncgen.l"
+#line 578 "ncgen.l"
{/* continuation */
break;
}
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 580 "ncgen.l"
+#line 582 "ncgen.l"
{/* final */
BEGIN(INITIAL);
break;
}
YY_BREAK
case YY_STATE_EOF(ST_C_COMMENT):
-#line 585 "ncgen.l"
+#line 587 "ncgen.l"
{/* final, error */
fprintf(stderr,"unterminated /**/ comment");
BEGIN(INITIAL);
@@ -2101,17 +2103,17 @@ case YY_STATE_EOF(ST_C_COMMENT):
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 591 "ncgen.l"
+#line 593 "ncgen.l"
{/* Note: this next rule will not work for UTF8 characters */
return lexdebug(ncgtext[0]) ;
}
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 594 "ncgen.l"
+#line 596 "ncgen.l"
ECHO;
YY_BREAK
-#line 2115 "ncgenyy.c"
+#line 2117 "ncgenyy.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(TEXT):
yyterminate();
@@ -3110,7 +3112,7 @@ void ncgfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 594 "ncgen.l"
+#line 596 "ncgen.l"
static int
diff --git a/ncgen/odom.c b/ncgen/odom.c
index 595d3bf..2f628fe 100644
--- a/ncgen/odom.c
+++ b/ncgen/odom.c
@@ -123,6 +123,8 @@ Thus, these three dimensions will be reduced to a single
dimension of size 30 (0..29).
A particular point in the three dimensions, say [x][y][z], is reduced to
a number in the range 0..29 by computing ((x*5)+y)*3+z
+So, given an odometer in some state, it computes the offset
+for that odometer's state.
*/
size_t
@@ -137,3 +139,24 @@ odometeroffset(Odometer* odom)
}
return count;
}
+
+/*
+Get the start vector
+from the odometer
+*/
+size_t*
+odometerstartvector(Odometer* odom)
+{
+ return odom->start;
+}
+
+/*
+Get the count vector
+from the odometer
+*/
+size_t*
+odometercountvector(Odometer* odom)
+{
+ return odom->count;
+}
+
diff --git a/ncgen/odom.h b/ncgen/odom.h
index 3bc0fc8..8f959dd 100644
--- a/ncgen/odom.h
+++ b/ncgen/odom.h
@@ -30,7 +30,9 @@ extern void odometerfree(Odometer*);
extern char* odometerprint(Odometer* odom);
extern int odometermore(Odometer* odom);
-extern int odometerincr(Odometer* odo);
+extern int odometerincr(Odometer* odom);
extern size_t odometeroffset(Odometer* odom);
+extern size_t* odometerstartvector(Odometer* odom);
+extern size_t* odometercountvector(Odometer* odom);
#endif /*ODOM_H*/
diff --git a/ncgen/run_nc4_tests.sh b/ncgen/run_nc4_tests.sh
index d383d4a..72de82b 100755
--- a/ncgen/run_nc4_tests.sh
+++ b/ncgen/run_nc4_tests.sh
@@ -5,14 +5,14 @@
echo "*** Testing ncgen for netCDF-4."
set -e
echo "*** creating netCDF-4 file c0_4.nc from c0_4.cdl..."
-./ncgen -k3 -b -o c0_4.nc $srcdir/c0_4.cdl
+./ncgen -k nc4 -b -o c0_4.nc $srcdir/c0_4.cdl
echo "*** creating netCDF-4 classic model file c0_4c.nc from c0.cdl..."
-./ncgen -k4 -b -o c0_4c.nc $srcdir/c0.cdl
+./ncgen -k nc7 -b -o c0_4c.nc $srcdir/c0.cdl
echo "*** creating C code for CAM file ref_camrun.cdl..."
./ncgen -lc $srcdir/ref_camrun.cdl >ref_camrun.c
echo "*** test for jira NCF-199 bug"
-./ncgen -k3 $srcdir/ncf199.cdl
+./ncgen -k nc4 $srcdir/ncf199.cdl
echo "*** Test successful!"
exit 0
diff --git a/ncgen/semantics.c b/ncgen/semantics.c
index 5f00ded..bca47f7 100644
--- a/ncgen/semantics.c
+++ b/ncgen/semantics.c
@@ -649,7 +649,7 @@ computesize(Symbol* tsym)
case NC_FIELD: /* Compute size assume no unlimited dimensions*/
if(tsym->typ.dimset.ndims > 0) {
computesize(tsym->typ.basetype);
- totaldimsize = crossproduct(&tsym->typ.dimset,0,0);
+ totaldimsize = crossproduct(&tsym->typ.dimset,0,rankfor(&tsym->typ.dimset));
tsym->typ.size = tsym->typ.basetype->typ.size * totaldimsize;
tsym->typ.alignment = tsym->typ.basetype->typ.alignment;
tsym->typ.nelems = 1;
@@ -672,6 +672,13 @@ processvars(void)
for(i=0;i<listlength(vardefs);i++) {
Symbol* vsym = (Symbol*)listget(vardefs,i);
Symbol* basetype = vsym->typ.basetype;
+ /* If we are in classic mode, then convert long -> int32 */
+ if(usingclassic) {
+ if(basetype->typ.typecode == NC_LONG || basetype->typ.typecode == NC_INT64) {
+ vsym->typ.basetype = primsymbols[NC_INT];
+ basetype = vsym->typ.basetype;
+ }
+ }
/* fill in the typecode*/
vsym->typ.typecode = basetype->typ.typecode;
/* validate uses of NIL */
@@ -1017,7 +1024,9 @@ thisunlim->name,
/*!lastunlim => data is list of sublists, recurse on each sublist*/
for(i=0;i<data->length;i++) {
NCConstant* con = data->data+i;
- ASSERT(con->nctype == NC_COMPOUND);
+ if(con->nctype != NC_COMPOUND) {
+ semerror(con->lineno,"UNLIMITED dimension (other than first) must be enclosed in {}");
+ }
computeunlimitedsizes(dimset,nextunlim,con->value.compoundv,ischar);
}
} else { /* lastunlim */
@@ -1082,8 +1091,9 @@ processunlimiteddims(void)
if(first == 0) {
computeunlimitedsizes(dimset,first,var->data,ischar);
} else {
- for(i=0;i<var->data->length;i++) {
- NCConstant* con = var->data->data+i;
+ int j;
+ for(j=0;j<var->data->length;j++) {
+ NCConstant* con = var->data->data+j;
if(con->nctype != NC_COMPOUND)
semerror(con->lineno,"UNLIMITED dimension (other than first) must be enclosed in {}");
else
diff --git a/ncgen/util.c b/ncgen/util.c
index cdf06ab..56a2543 100644
--- a/ncgen/util.c
+++ b/ncgen/util.c
@@ -6,14 +6,9 @@
#include "includes.h"
-#define DATALISTINIT 32
-
/* Track primitive symbol instances (initialized in ncgen.y) */
Symbol* primsymbols[PRIMNO];
-/* Track all known datalist*/
-static Datalist* alldatalists = NULL;
-
char*
append(const char* s1, const char* s2)
{
@@ -84,7 +79,7 @@ tztrim(
)
{
char *cp, *ep;
-
+
cp = ss;
if (*cp == '-')
cp++;
@@ -138,7 +133,7 @@ freeSymbol(Symbol* sym)
case NG_FIELD:
case NG_OPAQUE:
default: break;
- }
+ }
efree(sym->name);
efree(sym);
#endif
@@ -169,15 +164,15 @@ nctypename(nc_type nctype)
return nctypenamesextend[(nctype - NC_GRP)];
if(nctype == NC_FILLVALUE) return "NC_FILL";
if(nctype == NC_NIL) return "NC_NIL";
- s = poolalloc(128);
+ s = poolalloc(128);
sprintf(s,"NC_<%d>",nctype);
return s;
}
/* These are the augmented NC_ values (0 based from NC_GRP)*/
-char* ncclassnames[9] = {
-"NC_GRP", "NC_DIM", "NC_VAR", "NC_ATT",
-"NC_TYP", "NC_ECONST", "NC_FIELD", "NC_ARRAY",
+char* ncclassnames[9] = {
+"NC_GRP", "NC_DIM", "NC_VAR", "NC_ATT",
+"NC_TYP", "NC_ECONST", "NC_FIELD", "NC_ARRAY",
"NC_PRIM"
};
@@ -190,7 +185,7 @@ ncclassname(nc_class ncc)
if(ncc == NC_FILLVALUE) return "NC_FILL";
if(ncc >= NC_GRP && ncc <= NC_PRIM)
return ncclassnames[ncc - NC_GRP];
- s = poolalloc(128);
+ s = poolalloc(128);
sprintf(s,"NC_<%d>",ncc);
return s;
}
@@ -331,7 +326,7 @@ prefixtostring(List* prefix, char* separator)
strcat(result,separator);
strcat(result,sym->name); /* append "/<prefix[i]>"*/
}
- }
+ }
return result;
}
#endif
@@ -340,7 +335,7 @@ prefixtostring(List* prefix, char* separator)
char*
fullname(Symbol* sym)
{
-#ifdef USE_NETCDF4
+#ifdef USE_NETCDF4
char* s1;
char* result;
char* prefix;
@@ -357,7 +352,7 @@ int
prefixeq(List* x1, List* x2)
{
Symbol** l1;
- Symbol** l2;
+ Symbol** l2;
int len,i;
if((len=listlength(x1)) != listlength(x2)) return 0;
l1=(Symbol**)listcontents(x1);
@@ -377,7 +372,7 @@ prefixdup(List* prefix)
dupseq = listnew();
listsetalloc(dupseq,listlength(prefix));
for(i=0;i<listlength(prefix);i++) listpush(dupseq,listget(prefix,i));
- return dupseq;
+ return dupseq;
}
/*
@@ -445,14 +440,14 @@ makebytestring(char* s, size_t* lenp)
int i;
ASSERT((slen%2) == 0);
- ASSERT(blen > 0);
+ ASSERT(blen > 0);
bytes = (unsigned char*)emalloc(blen);
b = bytes;
for(i=0;i<slen;i+=2) {
unsigned int digit1 = chartohex(*s++);
unsigned int digit2 = chartohex(*s++);
unsigned int byte = (digit1 << 4) | digit2;
- *b++ = byte;
+ *b++ = byte;
}
if(lenp) *lenp = blen;
return bytes;
@@ -466,66 +461,15 @@ getpadding(int offset, int alignment)
return pad;
}
-
-
-void
-dlextend(Datalist* dl)
+static void
+reclaimSymbols(void)
{
- size_t newalloc;
- newalloc = (dl->alloc > 0?2*dl->alloc:1);
- dlsetalloc(dl,newalloc);
-}
-
-void
-dlsetalloc(Datalist* dl, size_t newalloc)
-{
- NCConstant* newdata;
- if(newalloc <= 0) newalloc = 1;
- if(dl->alloc > 0)
- newdata = (NCConstant*)erealloc((void*)dl->data,sizeof(NCConstant)*newalloc);
- else {
- newdata = (NCConstant*)emalloc(sizeof(NCConstant)*newalloc);
- memset((void*)newdata,0,sizeof(NCConstant)*newalloc);
+ Symbol* sym;
+ for(sym=symlist;sym;) {
+ Symbol* next = sym->next;
+ freeSymbol(sym);
+ sym = next;
}
- dl->alloc = newalloc;
- dl->data = newdata;
-}
-
-
-Datalist*
-builddatalist(int initial)
-{
- Datalist* ci;
- if(initial <= 0) initial = DATALISTINIT;
- initial++; /* for header*/
- ci = (Datalist*)emalloc(sizeof(Datalist));
- memset((void*)ci,0,sizeof(Datalist)); /* only clear the hdr*/
- ci->data = (NCConstant*)emalloc(sizeof(NCConstant)*initial);
- memset((void*)ci->data,0,sizeof(NCConstant)*initial);
- ci->alloc = initial;
- ci->length = 0;
- return ci;
-}
-
-void
-dlappend(Datalist* dl, NCConstant* constant)
-{
- if(dl->length >= dl->alloc) dlextend(dl);
- if(constant == NULL) constant = &nullconstant;
- dl->data[dl->length++] = *constant;
-}
-
-NCConstant
-builddatasublist(Datalist* dl)
-{
-
- NCConstant d;
- d.nctype = NC_COMPOUND;
- d.lineno = (dl->length > 0?dl->data[0].lineno:0);
- d.value.compoundv = dl;
- d.filled = 0;
- return d;
-
}
static void
@@ -534,7 +478,7 @@ constantFree(NCConstant* con)
switch(con->nctype) {
case NC_COMPOUND:
/* do nothing; ReclaimDatalists below will take care of the datalist */
- break;
+ break;
case NC_STRING:
if(con->value.stringv.len > 0 && con->value.stringv.stringv != NULL)
efree(con->value.stringv.stringv);
@@ -560,7 +504,7 @@ reclaimDatalists(void)
for(i=0,con=list->data;i<list->length;i++,con++)
constantFree(con);
list->data = NULL;
- }
+ }
}
/* Step 2: free up the datalist itself*/
for(list=alldatalists;list != NULL;) {
@@ -570,17 +514,6 @@ reclaimDatalists(void)
}
}
-static void
-reclaimSymbols(void)
-{
- Symbol* sym;
- for(sym=symlist;sym;) {
- Symbol* next = sym->next;
- freeSymbol(sym);
- sym = next;
- }
-}
-
void
cleanup()
{
@@ -588,6 +521,10 @@ cleanup()
reclaimSymbols();
}
+
+
+
+
/* compute the total n-dimensional size as 1 long array;
if stop == 0, then stop = dimset->ndims.
*/
@@ -596,11 +533,10 @@ crossproduct(Dimset* dimset, int start, int stop)
{
size_t totalsize = 1;
int i;
- if(stop == 0) stop = dimset->ndims;
for(i=start;i<stop;i++) {
totalsize = totalsize * dimset->dimsyms[i]->dim.declsize;
}
- return totalsize;
+ return totalsize;
}
/* Do the "complement" of crossproduct;
@@ -618,21 +554,34 @@ prefixarraylength(Dimset* dimset, int last)
#ifdef USE_NETCDF4
extern int H5Eprint1(FILE * stream);
-#endif
+#endif
void
-check_err(const int stat, const int line, const char* file) {
+check_err(const int stat, const int line, const char* file)
+{
+ check_err2(stat,-1,line,file);
+}
+
+void check_err2(const int stat, const int cdlline, const int line, const char* file) {
if (stat != NC_NOERR) {
- fprintf(stderr, "ncgen: %s\n", nc_strerror(stat));
+ if(cdlline >= 0)
+ fprintf(stderr, "ncgen: cdl line %d; %s\n", cdlline, nc_strerror(stat));
+ else
+ fprintf(stderr, "ncgen: %s\n", nc_strerror(stat));
fprintf(stderr, "\t(%s:%d)\n", file,line);
#ifdef USE_NETCDF4
H5Eprint1(stderr);
-#endif
+#endif
fflush(stderr);
exit(1);
}
}
+/**
+Find the index of the first unlimited
+dimension at or after 'start'.
+If no unlimited exists, return |dimset|
+*/
int
findunlimited(Dimset* dimset, int start)
{
@@ -643,6 +592,11 @@ findunlimited(Dimset* dimset, int start)
return dimset->ndims;
}
+/**
+Find the index of the last unlimited
+dimension.
+If no unlimited exists, return |dimset|
+*/
int
findlastunlimited(Dimset* dimset)
{
@@ -651,14 +605,27 @@ findlastunlimited(Dimset* dimset)
if(dimset->dimsyms[i]->dim.isunlimited)
return i;
}
- return -1;
+ return dimset->ndims;
+}
+
+/**
+Count the number of unlimited dimensions.
+*/
+int
+countunlimited(Dimset* dimset)
+{
+ int i, count;
+ for(count=0,i=dimset->ndims-1;i>=0;i--) {
+ if(dimset->dimsyms[i]->dim.isunlimited)
+ count++;
+ }
+ return count;
}
/* Return standard format string */
const char *
kind_string(int kind)
{
- static char text[1024];
switch (kind) {
case 1: return "classic";
case 2: return "64-bit offset";
@@ -669,4 +636,3 @@ kind_string(int kind)
}
return NULL;
}
-
diff --git a/ncgen/util.h b/ncgen/util.h
index 9f2bf7e..7b5f9fa 100644
--- a/ncgen/util.h
+++ b/ncgen/util.h
@@ -48,16 +48,18 @@ extern char* poolcat(const char* s1, const char* s2);
extern size_t crossproduct(Dimset* dimset, int start, int stop);
extern int findunlimited(Dimset* dimset, int start);
extern int findlastunlimited(Dimset* dimset);
+extern int countunlimited(Dimset* dimset);
extern unsigned char* makebytestring(char* s, size_t* lenp);
extern int getpadding(int offset, int alignment);
-extern Datalist* builddatalist(int initialize);
-extern void dlappend(Datalist*, NCConstant*);
-extern NCConstant builddatasublist(Datalist* dl);
-extern void dlextend(Datalist* dl);
-extern void dlsetalloc(Datalist* dl, size_t newalloc);
extern void check_err(const int stat, const int line, const char* file);
+extern void check_err2(const int stat, const int cdlline, const int line, const char* file);
extern const char* kind_string(int kind);
+/* Inline functions */
+#define isunlimited(dimset,i) ((dimset)->dimsyms[i]->dim.isunlimited)
+#define declsizefor(dimset,i) ((dimset)->dimsyms[i]->dim.declsize)
+#define rankfor(dimset) ((dimset)->ndims)
+
#endif /*NCGEN_UTIL_H*/
diff --git a/ncgen3/Makefile.in b/ncgen3/Makefile.in
new file mode 100644
index 0000000..0a5ab17
--- /dev/null
+++ b/ncgen3/Makefile.in
@@ -0,0 +1,1161 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# This is a automake file, part of Unidata's netCDF package.
+# Copyright 2005, see the COPYRIGHT file for more information.
+# This file builds and runs the ncgen program.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+bin_PROGRAMS = ncgen3$(EXEEXT)
+ at USE_NETCDF4_TRUE@am__append_3 = run_nc4_tests.sh
+subdir = ncgen3
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_ncgen3_OBJECTS = main.$(OBJEXT) load.$(OBJEXT) escapes.$(OBJEXT) \
+ getfill.$(OBJEXT) init.$(OBJEXT) genlib.$(OBJEXT) \
+ ncgentab.$(OBJEXT)
+ncgen3_OBJECTS = $(am_ncgen3_OBJECTS)
+ncgen3_DEPENDENCIES = ${top_builddir}/liblib/libnetcdf.la
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(ncgen3_SOURCES)
+DIST_SOURCES = $(ncgen3_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS =
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+
+# Link to the netCDF library.
+ncgen3_LDADD = ${top_builddir}/liblib/libnetcdf.la
+ncgen3_SOURCES = main.c load.c escapes.c getfill.c init.c \
+genlib.c generic.h ncgen.h genlib.h ncgentab.h ncgentab.c
+
+man_MANS = ncgen3.1
+
+# These files all need to be distributed.
+EXTRA_DIST = ncgen.y ncgenyy.c ncgen.l c0.cdl run_tests.sh \
+ run_nc4_tests.sh XGetopt.c $(man_MANS) CMakeLists.txt \
+ XGetopt.c
+
+# There is a netcdf classic and netcdf-4 test script, but don't run
+# them for DLL builds.
+#if !BUILD_DLL
+TESTS = run_tests.sh $(am__append_3)
+#endif # !BUILD_DLL
+CLEANFILES = c0.nc c0_64.nc c0_4.nc c0_4c.nc
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ncgen3/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign ncgen3/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+ncgen3$(EXEEXT): $(ncgen3_OBJECTS) $(ncgen3_DEPENDENCIES) $(EXTRA_ncgen3_DEPENDENCIES)
+ @rm -f ncgen3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(ncgen3_OBJECTS) $(ncgen3_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/escapes.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/genlib.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getfill.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/init.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/load.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ncgentab.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+run_tests.sh.log: run_tests.sh
+ @p='run_tests.sh'; \
+ b='run_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_nc4_tests.sh.log: run_nc4_tests.sh
+ @p='run_nc4_tests.sh'; \
+ b='run_nc4_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS) $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-man1 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am recheck tags tags-am uninstall \
+ uninstall-am uninstall-binPROGRAMS uninstall-man \
+ uninstall-man1
+
+.PRECIOUS: Makefile
+
+
+# This is used if someone wants to rebuild ncgenyy.c or ncgentab.c
+# Otherwise never invoked, but records how to do it. Don't forget to
+# manually insert #include "config.h" in ncgenyy.c!
+makeparser::
+ flex -Pncg -8 ncgen.l
+ mv lex.ncg.c ncgenyy.c
+ bison -pncg -d ncgen.y
+ mv ncgen.tab.c ncgentab.c
+ mv ncgen.tab.h ncgentab.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ncgen3/load.c b/ncgen3/load.c
index b9e2b6c..401dd3d 100644
--- a/ncgen3/load.c
+++ b/ncgen3/load.c
@@ -9,7 +9,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
-#include <assert.h>
+#include <assert.h>
#include <netcdf.h>
#include "generic.h"
#include "ncgen.h"
@@ -35,7 +35,7 @@ tztrim(
)
{
char *cp, *ep;
-
+
cp = ss;
if (*cp == '-')
cp++;
@@ -90,12 +90,12 @@ gen_load_c(
vars[varnum].lname, vars[varnum].lname);
cline(stmnt);
}
-
+
/* load variable with data values using static initialization */
sprintf(stmnt, " static %s %s[] = {",
ncctype(vars[varnum].type),
vars[varnum].lname);
-
+
stmnt_len = strlen(stmnt);
switch (vars[varnum].type) {
case NC_CHAR:
@@ -204,7 +204,7 @@ gen_load_c(
(unsigned long)vars[varnum].nrecs, /* number of recs for this variable */
vars[varnum].name);
cline(stmnt);
-
+
for (idim = 0; idim < vars[varnum].ndims; idim++) {
sprintf(stmnt, " %s_start[%d] = 0;",
vars[varnum].lname,
@@ -220,7 +220,7 @@ gen_load_c(
cline(stmnt);
}
}
-
+
if (vars[varnum].dims[0] == rec_dim) {
sprintf(stmnt,
" stat = nc_put_vara_%s(ncid, %s_id, %s_start, %s_count, %s);",
@@ -242,7 +242,7 @@ gen_load_c(
sprintf(stmnt, " static %s %s = ",
ncctype(vars[varnum].type),
vars[varnum].lname);
-
+
switch (vars[varnum].type) {
case NC_CHAR:
val_string = cstrstr((char *) rec_start, var_len);
@@ -286,7 +286,7 @@ gen_load_c(
cline(" check_err(stat,__LINE__,__FILE__);");
cline(" }");
}
-
+
/*
* Add to a partial Fortran statement, checking if it's too long. If it is too
@@ -302,15 +302,18 @@ fstrcat(
size_t *slenp /* pointer to length of source string */
)
{
-
+
*slenp += strlen(t);
-
+
if (*slenp >= FORT_MAX_STMNT) {
derror("FORTRAN statement too long: %s",s);
fline(s);
strncpy(s, t, FORT_MAX_STMNT);
*slenp = strlen(s);
} else {
+ /* Suppress a coverity-related issue without actually
+ ignoring it in the coverity dashboard. */
+ /* coverity[unsigned_compare] */
strncat(s, t, MAX(0,MIN(strlen(t),strlen(s)-(strlen(t)))));
}
}
@@ -335,7 +338,7 @@ f_var_init(
size_t stmnt_len;
char s2[FORT_MAX_STMNT];
int ival;
-
+
/* load variable with data values */
sprintf(stmnt, "data %s /",vars[varnum].lname);
stmnt_len = strlen(stmnt);
@@ -434,7 +437,7 @@ gen_load_fortran(
} else {
v->data_stmnt = fstrstr(rec_start, valnum);
}
-
+
if (v->ndims >0 && v->dims[0] == rec_dim) {
return;
}
@@ -455,7 +458,7 @@ gen_load_fortran(
nfftype(v->type), v->lname, char_expr);
free(char_expr);
}
-
+
fline(stmnt);
fline("call check_err(iret)");
}
@@ -538,7 +541,7 @@ load_netcdf(
start[idim] = 0;
count[idim] = dims[vars[varnum].dims[idim]].size;
}
-
+
switch (vars[varnum].type) {
case NC_BYTE:
stat = nc_put_vara_schar(ncid, varnum, start, count,
diff --git a/ncgen3/ncgen3.1 b/ncgen3/ncgen3.1
index 017c641..c174b66 100644
--- a/ncgen3/ncgen3.1
+++ b/ncgen3/ncgen3.1
@@ -339,7 +339,7 @@ are all acceptable \fIfloat\fP constants:
-2.0f
3.14159265358979f // will be truncated to less precision
1.f
-.1f
+
.fi
.RE
.LP
diff --git a/nctest/Makefile.in b/nctest/Makefile.in
new file mode 100644
index 0000000..dcb9605
--- /dev/null
+++ b/nctest/Makefile.in
@@ -0,0 +1,1106 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This file builds and runs the nctest program, which tests the netCDF
+# version 2 interface.
+
+# This is part of the netCDF package.
+# Copyright 2005 University Corporation for Atmospheric Research/Unidata
+# See COPYRIGHT file for conditions of use.
+#
+# Assemble the CPPFLAGS and LDFLAGS that point to all the needed
+# libraries for netCDF-4.
+#
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+ at USE_DAP_TRUE@am__append_1 = -I${top_srcdir}/oc2
+
+# This turns on declspec magic in netcdf.h for windows DLLs.
+ at BUILD_DLL_TRUE@am__append_2 = -DDLL_NETCDF
+check_PROGRAMS = $(am__EXEEXT_1)
+TESTS = $(am__EXEEXT_1) compare_test_files.sh $(am__append_3)
+
+# This will the test program with valgrind, the memory checking
+# tool. (Valgrind must be present for this to work.)
+ at EXTRA_TESTS_TRUE@@USE_VALGRIND_TESTS_TRUE at am__append_3 = run_valgrind_tests.sh
+subdir = nctest
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__EXEEXT_1 = nctest$(EXEEXT) tst_rename$(EXEEXT)
+am_nctest_OBJECTS = add.$(OBJEXT) atttests.$(OBJEXT) \
+ cdftests.$(OBJEXT) dimtests.$(OBJEXT) driver.$(OBJEXT) \
+ emalloc.$(OBJEXT) error.$(OBJEXT) misctest.$(OBJEXT) \
+ rec.$(OBJEXT) slabs.$(OBJEXT) val.$(OBJEXT) vardef.$(OBJEXT) \
+ varget.$(OBJEXT) vargetg.$(OBJEXT) varput.$(OBJEXT) \
+ varputg.$(OBJEXT) vartests.$(OBJEXT) vputget.$(OBJEXT) \
+ vputgetg.$(OBJEXT)
+nctest_OBJECTS = $(am_nctest_OBJECTS)
+nctest_LDADD = $(LDADD)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+tst_rename_SOURCES = tst_rename.c
+tst_rename_OBJECTS = tst_rename.$(OBJEXT)
+tst_rename_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(nctest_SOURCES) tst_rename.c
+DIST_SOURCES = $(nctest_SOURCES) tst_rename.c
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red='[0;31m'; \
+ grn='[0;32m'; \
+ lgn='[1;32m'; \
+ blu='[1;34m'; \
+ mgn='[0;35m'; \
+ brg='[1m'; \
+ std='[m'; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/lib_flags.am $(top_srcdir)/test-driver README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = -I$(top_srcdir)/include $(am__append_1) $(am__append_2)
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+
+# Put together AM_CPPFLAGS and AM_LDFLAGS.
+AM_LDFLAGS = ${top_builddir}/liblib/libnetcdf.la
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Running nctest results in a file testfile.nc, which is then checked
+# to make sure it matches testfile_nc.sav, which was generated under
+# precisely controlled conditions at the netCDF Test Facility,
+# (located in sub-basement 42 of UCAR Compound 4). testfile_nc.sav was
+# generated in a pressurized chamber that exactly simulated the
+# atmosphere on the surface of Mars.
+EXTRA_DIST = ref_nctest_classic.nc ref_nctest_64bit_offset.nc \
+compare_test_files.sh run_valgrind_tests.sh CMakeLists.txt
+
+CLEANFILES = nctest_classic.nc nctest_64bit_offset.nc \
+nctest_netcdf4.nc test2.nc temp.tmp tst_*.nc
+
+
+# Run nctest and the script that compares the output with the
+# reference file.
+TESTPROGRAMS = nctest tst_rename
+
+# These are the source files for the nctest program.
+nctest_SOURCES = add.c add.h atttests.c cdftests.c dimtests.c driver.c \
+emalloc.c emalloc.h error.c error.h misctest.c rec.c slabs.c testcdf.h \
+tests.h val.c val.h vardef.c varget.c vargetg.c varput.c varputg.c \
+vartests.c vputget.c vputgetg.c
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib_flags.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign nctest/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign nctest/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/lib_flags.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+nctest$(EXEEXT): $(nctest_OBJECTS) $(nctest_DEPENDENCIES) $(EXTRA_nctest_DEPENDENCIES)
+ @rm -f nctest$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nctest_OBJECTS) $(nctest_LDADD) $(LIBS)
+
+tst_rename$(EXEEXT): $(tst_rename_OBJECTS) $(tst_rename_DEPENDENCIES) $(EXTRA_tst_rename_DEPENDENCIES)
+ @rm -f tst_rename$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(tst_rename_OBJECTS) $(tst_rename_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/add.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/atttests.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cdftests.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dimtests.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/driver.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/emalloc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/error.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/misctest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rec.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/slabs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst_rename.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/val.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vardef.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/varget.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vargetg.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/varput.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/varputg.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vartests.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vputget.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vputgetg.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+nctest.log: nctest$(EXEEXT)
+ @p='nctest$(EXEEXT)'; \
+ b='nctest'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+tst_rename.log: tst_rename$(EXEEXT)
+ @p='tst_rename$(EXEEXT)'; \
+ b='tst_rename'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+compare_test_files.sh.log: compare_test_files.sh
+ @p='compare_test_files.sh'; \
+ b='compare_test_files.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+run_valgrind_tests.sh.log: run_valgrind_tests.sh
+ @p='run_valgrind_tests.sh'; \
+ b='run_valgrind_tests.sh'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@ @p='$<'; \
+ at am__EXEEXT_TRUE@ $(am__set_b); \
+ at am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/nctest/driver.c b/nctest/driver.c
index a025edf..171c019 100644
--- a/nctest/driver.c
+++ b/nctest/driver.c
@@ -29,7 +29,7 @@
int
main(int argc, char **argv)
{
- //EXTERNL int ncopts; /* netCDF error options */
+ /*EXTERNL int ncopts; */ /* netCDF error options */
char *testfiles[] = {"nonesuch", "nctest_classic.nc",
"nctest_64bit_offset.nc", "nctest_netcdf4.nc"};
char *testfile;
diff --git a/netCDFConfig.cmake.in b/netCDFConfig.cmake.in
new file mode 100644
index 0000000..6f4ccf8
--- /dev/null
+++ b/netCDFConfig.cmake.in
@@ -0,0 +1,40 @@
+# NetCDF Configuration Summary
+#
+# General
+#
+ at PACKAGE_INIT@
+
+set(NetCDFVersion "@PACKAGE_VERSION@")
+set_and_check(netCDF_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@")
+set_and_check(netCDF_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
+set_and_check(netCDF_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
+
+set(netCDF_LIBRARIES netcdf)
+
+# include target information
+include("${CMAKE_CURRENT_LIST_DIR}/netCDFTargets.cmake")
+
+# Compiling Options
+#
+set(netCDF_C_COMPILER "@CC_VERSION@")
+set(netCDF_C_COMPILER_FLAGS "@CFLAGS@")
+set(netCDF_C_CPP_FLAGS "@CPPFLAGS@")
+set(netCDF_LDFLAGS "@LDFLAGS@")
+set(netCDF_AM_CFLAGS "@AM_CFLAGS@")
+set(netCDF_AM_CPPFLAGS "@AM_CPPFLAGS@")
+set(netCDF_AM_LDFLAGS "@AM_LDFLAGS@")
+set(netCDF_SHARED @enable_shared@)
+set(netCDF_STATIC @enable_static@)
+
+# Features:
+#
+set(netCDF_HAS_NC2 @HAS_NC2@)
+set(netCDF_HAS_NC4 @HAS_NC4@)
+set(netCDF_HAS_HDF4 @HAS_HDF4@)
+set(netCDF_HAS_HDF5 @HAS_HDF5@)
+set(netCDF_HAS_PNETCDF @HAS_PNETCDF@)
+set(netCDF_HAS_PARALLEL @HAS_PARALLEL@)
+set(netCDF_HAS_DAP @HAS_DAP@)
+set(netCDF_HAS_DISKLESS @HAS_DISKLESS@)
+set(netCDF_HAS_MMAP @HAS_MMAP@)
+set(netCDF_HAS_JNA @HAS_JNA@)
diff --git a/netcdf-config-version.cmake.in b/netcdf-config-version.cmake.in
deleted file mode 100644
index d6aa988..0000000
--- a/netcdf-config-version.cmake.in
+++ /dev/null
@@ -1,10 +0,0 @@
-# Cmake Package & Configuration file support.
-# Based on code from 'Mastering Cmake'
-
-set (PACKAGE_VERSION "@VERSION@")
-if (NOT "${PACKAGE_FIND_VERSION}" VERSION_GREATER "@VERSION@")
- set (PACKAGE_VERSION_COMPATIBLE 1) # Compatible with older.
- if ("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "@VERSION@")
- set(PACKAGE_VERSION_EXACT 1) # exact match for this version.
- endif()
-endif()
diff --git a/netcdf-config.cmake.in b/netcdf-config.cmake.in
deleted file mode 100644
index 3903f82..0000000
--- a/netcdf-config.cmake.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# Cmake Package & Configuration file support.
-# Based on code from 'Mastering Cmake'
-
-# Compute installation prefix relative to this file.
-get_filename_component (_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
-get_filename_component (_prefix "${_dir}/../.." ABSOLUTE)
-
-# Import the targets
-include ("${_prefix}/share/cmake/netcdf-targets.cmake")
-
-# Report other information
-set (netcdf_INCLUDE_DIRS "${_prefix}/include/")
-
-set (netcdf_LIBRARIES "netcdf")
-
diff --git a/oc2/CMakeLists.txt b/oc2/CMakeLists.txt
index 941e9ea..bb03816 100644
--- a/oc2/CMakeLists.txt
+++ b/oc2/CMakeLists.txt
@@ -1,9 +1,7 @@
-SET(oc_SOURCES oc.c daplex.c dapparse.c daptab.c occlientparams.c occompile.c occurlfunctions.c ocdata.c ocdebug.c ocdump.c ocinternal.c ocnode.c ochttp.c ocrc.c ocread.c ocutil.c ocbytes.c oclist.c ocuri.c oclog.c xxdr.c)
-
+SET(oc_SOURCES oc.c daplex.c dapparse.c daptab.c occlientparams.c occompile.c occurlfunctions.c ocdata.c ocdebug.c ocdump.c ocinternal.c ocnode.c ochttp.c ocrc.c ocread.c ocutil.c ocbytes.c oclist.c ocuri.c oclog.c occurlflags.c xxdr.c)
add_library(oc2 OBJECT ${oc_SOURCES})
-
## Specify files to be distributed by 'make dist'
FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.c ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh)
SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am)
diff --git a/oc2/Make0 b/oc2/Make0
index 0d82a1d..08ba1d8 100755
--- a/oc2/Make0
+++ b/oc2/Make0
@@ -1,6 +1,7 @@
+OCDIR=/home/dmh/git/oc
+#OCDIR=f:/git/oc
+
THISDIR=../oc2
-#OCDIR=/home/dmh/svn/oc2.0
-OCDIR=f:/svn/oc2.0
# Make consistent with Makefile.am
SRC=oc.c \
@@ -11,6 +12,7 @@ ocinternal.c ocnode.c \
ochttp.c \
ocrc.c ocread.c ocutil.c \
ocbytes.c oclist.c ocuri.c oclog.c \
+occurlflags.c \
xxdr.c
HDRS=oc.h ocx.h \
@@ -18,7 +20,7 @@ dapparselex.h daptab.h \
occlientparams.h occompile.h occonstraints.h occurlfunctions.h \
ocdata.h ocdatatypes.h ocdebug.h ocdump.h \
ocinternal.h ocnode.h \
-ochttp.h ocrc.h ocread.h ocutil.h \
+ochttp.h ocread.h ocutil.h \
ocbytes.h oclist.h ocuri.h oclog.h \
xxdr.h
@@ -29,11 +31,12 @@ all::
makeoc::
rm -f ${THISDIR}/*.[chy]
for file in ${FILES} ; do \
+ echo "${OCDIR}/$$file" ; \
f="${OCDIR}/$$file" ; \
base=`basename $$f` ; \
cat $$f | tr -d '
' >${THISDIR}/$$base; \
done
- rm -f ocdebug.h
+ rm -f ocdebug.h XGetopt.[ch]
sed -e 's|^[#]if 1|#if 0|g' \
< ${OCDIR}/ocdebug.h | tr -d '\r' >./ocdebug.h
# This should match the bison command in Makefile.am
@@ -64,3 +67,8 @@ diffoc::
fi; \
fi; \
done
+
+backoc::
+ for f in ${FILES} ; do \
+ cp -f ./$$f ${OCDIR}/$$f ; \
+ done
diff --git a/oc2/Makefile.am b/oc2/Makefile.am
index 2a3f263..4675816 100755
--- a/oc2/Makefile.am
+++ b/oc2/Makefile.am
@@ -19,6 +19,7 @@ ocinternal.c ocnode.c \
ochttp.c \
ocrc.c ocread.c ocutil.c \
ocbytes.c oclist.c ocuri.c oclog.c \
+occurlflags.c \
xxdr.c
HDRS=oc.h ocx.h \
@@ -26,7 +27,7 @@ dapparselex.h daptab.h \
occlientparams.h occompile.h occonstraints.h occurlfunctions.h \
ocdata.h ocdatatypes.h ocdebug.h ocdump.h \
ocinternal.h ocnode.h \
-ochttp.h ocrc.h ocread.h ocutil.h \
+ochttp.h ocread.h ocutil.h \
ocbytes.h oclist.h ocuri.h oclog.h \
xxdr.h
diff --git a/oc2/Makefile.in b/oc2/Makefile.in
new file mode 100644
index 0000000..dfaa992
--- /dev/null
+++ b/oc2/Makefile.in
@@ -0,0 +1,874 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005, see the COPYRIGHT file for more information.
+
+# This automake file generates the Makefile to build netCDF-4. The
+# generated makefile is not run unless the user selected to build
+# netCDF-4.
+
+# $Id: Makefile.am,v 1.1 2010/05/23 21:05:33 dmh Exp $
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = oc2
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+liboc_la_LIBADD =
+am__liboc_la_SOURCES_DIST = oc.c daplex.c dapparse.c daptab.c \
+ occlientparams.c occompile.c occurlfunctions.c ocdata.c \
+ ocdebug.c ocdump.c ocinternal.c ocnode.c ochttp.c ocrc.c \
+ ocread.c ocutil.c ocbytes.c oclist.c ocuri.c oclog.c \
+ occurlflags.c xxdr.c oc.h ocx.h dapparselex.h daptab.h \
+ occlientparams.h occompile.h occonstraints.h occurlfunctions.h \
+ ocdata.h ocdatatypes.h ocdebug.h ocdump.h ocinternal.h \
+ ocnode.h ochttp.h ocread.h ocutil.h ocbytes.h oclist.h ocuri.h \
+ oclog.h xxdr.h
+am__objects_1 = liboc_la-oc.lo liboc_la-daplex.lo liboc_la-dapparse.lo \
+ liboc_la-daptab.lo liboc_la-occlientparams.lo \
+ liboc_la-occompile.lo liboc_la-occurlfunctions.lo \
+ liboc_la-ocdata.lo liboc_la-ocdebug.lo liboc_la-ocdump.lo \
+ liboc_la-ocinternal.lo liboc_la-ocnode.lo liboc_la-ochttp.lo \
+ liboc_la-ocrc.lo liboc_la-ocread.lo liboc_la-ocutil.lo \
+ liboc_la-ocbytes.lo liboc_la-oclist.lo liboc_la-ocuri.lo \
+ liboc_la-oclog.lo liboc_la-occurlflags.lo liboc_la-xxdr.lo
+am__objects_2 =
+ at BUILD_DAP_TRUE@am_liboc_la_OBJECTS = $(am__objects_1) \
+ at BUILD_DAP_TRUE@ $(am__objects_2)
+liboc_la_OBJECTS = $(am_liboc_la_OBJECTS)
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+ at BUILD_DAP_TRUE@am_liboc_la_rpath =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(liboc_la_SOURCES)
+DIST_SOURCES = $(am__liboc_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+
+# Cause C preprocessor to search current and parent directory.
+AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/include
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINFILE_NAME = @BINFILE_NAME@
+BUILD_INTERNAL_DOCS = @BUILD_INTERNAL_DOCS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_VERSION = @CC_VERSION@
+CFLAGS = @CFLAGS@
+CONFIG_DATE = @CONFIG_DATE@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_DISKLESS = @HAS_DISKLESS@
+HAS_HDF4 = @HAS_HDF4@
+HAS_HDF5 = @HAS_HDF5@
+HAS_JNA = @HAS_JNA@
+HAS_MMAP = @HAS_MMAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAS_PARALLEL = @HAS_PARALLEL@
+HAS_PNETCDF = @HAS_PNETCDF@
+HAS_SZLIB = @HAS_SZLIB@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_HAS_DAP = @NC_HAS_DAP@
+NC_HAS_DISKLESS = @NC_HAS_DISKLESS@
+NC_HAS_HDF4 = @NC_HAS_HDF4@
+NC_HAS_HDF5 = @NC_HAS_HDF5@
+NC_HAS_JNA = @NC_HAS_JNA@
+NC_HAS_MMAP = @NC_HAS_MMAP@
+NC_HAS_NC2 = @NC_HAS_NC2@
+NC_HAS_NC4 = @NC_HAS_NC4@
+NC_HAS_PARALLEL = @NC_HAS_PARALLEL@
+NC_HAS_PNETCDF = @NC_HAS_PNETCDF@
+NC_HAS_SZIP = @NC_HAS_SZIP@
+NC_LIBS = @NC_LIBS@
+NC_M4 = @NC_M4@
+NC_VERSION = @NC_VERSION@
+NC_VERSION_MAJOR = @NC_VERSION_MAJOR@
+NC_VERSION_MINOR = @NC_VERSION_MINOR@
+NC_VERSION_NOTE = @NC_VERSION_NOTE@
+NC_VERSION_PATCH = @NC_VERSION_PATCH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# OC Sources; include the daptab.[ch] to avoid the need for bison by user
+SRC = oc.c \
+daplex.c dapparse.c daptab.c \
+occlientparams.c occompile.c occurlfunctions.c \
+ocdata.c ocdebug.c ocdump.c \
+ocinternal.c ocnode.c \
+ochttp.c \
+ocrc.c ocread.c ocutil.c \
+ocbytes.c oclist.c ocuri.c oclog.c \
+occurlflags.c \
+xxdr.c
+
+HDRS = oc.h ocx.h \
+dapparselex.h daptab.h \
+occlientparams.h occompile.h occonstraints.h occurlfunctions.h \
+ocdata.h ocdatatypes.h ocdebug.h ocdump.h \
+ocinternal.h ocnode.h \
+ochttp.h ocread.h ocutil.h \
+ocbytes.h oclist.h ocuri.h oclog.h \
+xxdr.h
+
+EXTRA_DIST = dap.y CMakeLists.txt
+ at BUILD_DAP_TRUE@noinst_LTLIBRARIES = liboc.la
+ at BUILD_DAP_TRUE@liboc_la_SOURCES = $(SRC) $(HDRS)
+ at BUILD_DAP_TRUE@liboc_la_CPPFLAGS = $(AM_CPPFLAGS)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign oc2/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign oc2/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+liboc.la: $(liboc_la_OBJECTS) $(liboc_la_DEPENDENCIES) $(EXTRA_liboc_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(am_liboc_la_rpath) $(liboc_la_OBJECTS) $(liboc_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-daplex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-dapparse.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-daptab.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-oc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocbytes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-occlientparams.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-occompile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-occurlflags.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-occurlfunctions.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocdata.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocdebug.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocdump.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ochttp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocinternal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-oclist.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-oclog.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocnode.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocrc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocread.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocuri.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-ocutil.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboc_la-xxdr.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+liboc_la-oc.lo: oc.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-oc.lo -MD -MP -MF $(DEPDIR)/liboc_la-oc.Tpo -c -o liboc_la-oc.lo `test -f 'oc.c' || echo '$(srcdir)/'`oc.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-oc.Tpo $(DEPDIR)/liboc_la-oc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oc.c' object='liboc_la-oc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-oc.lo `test -f 'oc.c' || echo '$(srcdir)/'`oc.c
+
+liboc_la-daplex.lo: daplex.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-daplex.lo -MD -MP -MF $(DEPDIR)/liboc_la-daplex.Tpo -c -o liboc_la-daplex.lo `test -f 'daplex.c' || echo '$(srcdir)/'`daplex.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-daplex.Tpo $(DEPDIR)/liboc_la-daplex.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='daplex.c' object='liboc_la-daplex.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-daplex.lo `test -f 'daplex.c' || echo '$(srcdir)/'`daplex.c
+
+liboc_la-dapparse.lo: dapparse.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-dapparse.lo -MD -MP -MF $(DEPDIR)/liboc_la-dapparse.Tpo -c -o liboc_la-dapparse.lo `test -f 'dapparse.c' || echo '$(srcdir)/'`dapparse.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-dapparse.Tpo $(DEPDIR)/liboc_la-dapparse.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dapparse.c' object='liboc_la-dapparse.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-dapparse.lo `test -f 'dapparse.c' || echo '$(srcdir)/'`dapparse.c
+
+liboc_la-daptab.lo: daptab.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-daptab.lo -MD -MP -MF $(DEPDIR)/liboc_la-daptab.Tpo -c -o liboc_la-daptab.lo `test -f 'daptab.c' || echo '$(srcdir)/'`daptab.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-daptab.Tpo $(DEPDIR)/liboc_la-daptab.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='daptab.c' object='liboc_la-daptab.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-daptab.lo `test -f 'daptab.c' || echo '$(srcdir)/'`daptab.c
+
+liboc_la-occlientparams.lo: occlientparams.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occlientparams.lo -MD -MP -MF $(DEPDIR)/liboc_la-occlientparams.Tpo -c -o liboc_la-occlientparams.lo `test -f 'occlientparams.c' || echo '$(srcdir)/'`occlientparams.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occlientparams.Tpo $(DEPDIR)/liboc_la-occlientparams.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occlientparams.c' object='liboc_la-occlientparams.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occlientparams.lo `test -f 'occlientparams.c' || echo '$(srcdir)/'`occlientparams.c
+
+liboc_la-occompile.lo: occompile.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occompile.lo -MD -MP -MF $(DEPDIR)/liboc_la-occompile.Tpo -c -o liboc_la-occompile.lo `test -f 'occompile.c' || echo '$(srcdir)/'`occompile.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occompile.Tpo $(DEPDIR)/liboc_la-occompile.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occompile.c' object='liboc_la-occompile.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occompile.lo `test -f 'occompile.c' || echo '$(srcdir)/'`occompile.c
+
+liboc_la-occurlfunctions.lo: occurlfunctions.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occurlfunctions.lo -MD -MP -MF $(DEPDIR)/liboc_la-occurlfunctions.Tpo -c -o liboc_la-occurlfunctions.lo `test -f 'occurlfunctions.c' || echo '$(srcdir)/'`occurlfunctions.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occurlfunctions.Tpo $(DEPDIR)/liboc_la-occurlfunctions.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occurlfunctions.c' object='liboc_la-occurlfunctions.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occurlfunctions.lo `test -f 'occurlfunctions.c' || echo '$(srcdir)/'`occurlfunctions.c
+
+liboc_la-ocdata.lo: ocdata.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocdata.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocdata.Tpo -c -o liboc_la-ocdata.lo `test -f 'ocdata.c' || echo '$(srcdir)/'`ocdata.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocdata.Tpo $(DEPDIR)/liboc_la-ocdata.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocdata.c' object='liboc_la-ocdata.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocdata.lo `test -f 'ocdata.c' || echo '$(srcdir)/'`ocdata.c
+
+liboc_la-ocdebug.lo: ocdebug.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocdebug.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocdebug.Tpo -c -o liboc_la-ocdebug.lo `test -f 'ocdebug.c' || echo '$(srcdir)/'`ocdebug.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocdebug.Tpo $(DEPDIR)/liboc_la-ocdebug.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocdebug.c' object='liboc_la-ocdebug.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocdebug.lo `test -f 'ocdebug.c' || echo '$(srcdir)/'`ocdebug.c
+
+liboc_la-ocdump.lo: ocdump.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocdump.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocdump.Tpo -c -o liboc_la-ocdump.lo `test -f 'ocdump.c' || echo '$(srcdir)/'`ocdump.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocdump.Tpo $(DEPDIR)/liboc_la-ocdump.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocdump.c' object='liboc_la-ocdump.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocdump.lo `test -f 'ocdump.c' || echo '$(srcdir)/'`ocdump.c
+
+liboc_la-ocinternal.lo: ocinternal.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocinternal.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocinternal.Tpo -c -o liboc_la-ocinternal.lo `test -f 'ocinternal.c' || echo '$(srcdir)/'`ocinternal.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocinternal.Tpo $(DEPDIR)/liboc_la-ocinternal.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocinternal.c' object='liboc_la-ocinternal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocinternal.lo `test -f 'ocinternal.c' || echo '$(srcdir)/'`ocinternal.c
+
+liboc_la-ocnode.lo: ocnode.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocnode.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocnode.Tpo -c -o liboc_la-ocnode.lo `test -f 'ocnode.c' || echo '$(srcdir)/'`ocnode.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocnode.Tpo $(DEPDIR)/liboc_la-ocnode.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocnode.c' object='liboc_la-ocnode.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocnode.lo `test -f 'ocnode.c' || echo '$(srcdir)/'`ocnode.c
+
+liboc_la-ochttp.lo: ochttp.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ochttp.lo -MD -MP -MF $(DEPDIR)/liboc_la-ochttp.Tpo -c -o liboc_la-ochttp.lo `test -f 'ochttp.c' || echo '$(srcdir)/'`ochttp.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ochttp.Tpo $(DEPDIR)/liboc_la-ochttp.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ochttp.c' object='liboc_la-ochttp.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ochttp.lo `test -f 'ochttp.c' || echo '$(srcdir)/'`ochttp.c
+
+liboc_la-ocrc.lo: ocrc.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocrc.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocrc.Tpo -c -o liboc_la-ocrc.lo `test -f 'ocrc.c' || echo '$(srcdir)/'`ocrc.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocrc.Tpo $(DEPDIR)/liboc_la-ocrc.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocrc.c' object='liboc_la-ocrc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocrc.lo `test -f 'ocrc.c' || echo '$(srcdir)/'`ocrc.c
+
+liboc_la-ocread.lo: ocread.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocread.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocread.Tpo -c -o liboc_la-ocread.lo `test -f 'ocread.c' || echo '$(srcdir)/'`ocread.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocread.Tpo $(DEPDIR)/liboc_la-ocread.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocread.c' object='liboc_la-ocread.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocread.lo `test -f 'ocread.c' || echo '$(srcdir)/'`ocread.c
+
+liboc_la-ocutil.lo: ocutil.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocutil.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocutil.Tpo -c -o liboc_la-ocutil.lo `test -f 'ocutil.c' || echo '$(srcdir)/'`ocutil.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocutil.Tpo $(DEPDIR)/liboc_la-ocutil.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocutil.c' object='liboc_la-ocutil.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocutil.lo `test -f 'ocutil.c' || echo '$(srcdir)/'`ocutil.c
+
+liboc_la-ocbytes.lo: ocbytes.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocbytes.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocbytes.Tpo -c -o liboc_la-ocbytes.lo `test -f 'ocbytes.c' || echo '$(srcdir)/'`ocbytes.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocbytes.Tpo $(DEPDIR)/liboc_la-ocbytes.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocbytes.c' object='liboc_la-ocbytes.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocbytes.lo `test -f 'ocbytes.c' || echo '$(srcdir)/'`ocbytes.c
+
+liboc_la-oclist.lo: oclist.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-oclist.lo -MD -MP -MF $(DEPDIR)/liboc_la-oclist.Tpo -c -o liboc_la-oclist.lo `test -f 'oclist.c' || echo '$(srcdir)/'`oclist.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-oclist.Tpo $(DEPDIR)/liboc_la-oclist.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oclist.c' object='liboc_la-oclist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-oclist.lo `test -f 'oclist.c' || echo '$(srcdir)/'`oclist.c
+
+liboc_la-ocuri.lo: ocuri.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-ocuri.lo -MD -MP -MF $(DEPDIR)/liboc_la-ocuri.Tpo -c -o liboc_la-ocuri.lo `test -f 'ocuri.c' || echo '$(srcdir)/'`ocuri.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-ocuri.Tpo $(DEPDIR)/liboc_la-ocuri.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ocuri.c' object='liboc_la-ocuri.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-ocuri.lo `test -f 'ocuri.c' || echo '$(srcdir)/'`ocuri.c
+
+liboc_la-oclog.lo: oclog.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-oclog.lo -MD -MP -MF $(DEPDIR)/liboc_la-oclog.Tpo -c -o liboc_la-oclog.lo `test -f 'oclog.c' || echo '$(srcdir)/'`oclog.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-oclog.Tpo $(DEPDIR)/liboc_la-oclog.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oclog.c' object='liboc_la-oclog.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-oclog.lo `test -f 'oclog.c' || echo '$(srcdir)/'`oclog.c
+
+liboc_la-occurlflags.lo: occurlflags.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-occurlflags.lo -MD -MP -MF $(DEPDIR)/liboc_la-occurlflags.Tpo -c -o liboc_la-occurlflags.lo `test -f 'occurlflags.c' || echo '$(srcdir)/'`occurlflags.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-occurlflags.Tpo $(DEPDIR)/liboc_la-occurlflags.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='occurlflags.c' object='liboc_la-occurlflags.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-occurlflags.lo `test -f 'occurlflags.c' || echo '$(srcdir)/'`occurlflags.c
+
+liboc_la-xxdr.lo: xxdr.c
+ at am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liboc_la-xxdr.lo -MD -MP -MF $(DEPDIR)/liboc_la-xxdr.Tpo -c -o liboc_la-xxdr.lo `test -f 'xxdr.c' || echo '$(srcdir)/'`xxdr.c
+ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liboc_la-xxdr.Tpo $(DEPDIR)/liboc_la-xxdr.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xxdr.c' object='liboc_la-xxdr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liboc_la-xxdr.lo `test -f 'xxdr.c' || echo '$(srcdir)/'`xxdr.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# These rule are used if someone wants to rebuild the grammar files.
+# Otherwise never invoked, but records how to do it.
+# BTW: note that renaming is essential because otherwise
+# autoconf will forcibly delete files of the name *.tab.*
+
+.PHONEY: bison
+
+bison:: dap.y
+ rm -f dap.tab.c dap.tab.h
+ bison --debug -d -p dap dap.y
+ mv dap.tab.c daptab.c; mv dap.tab.h daptab.h
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/oc2/oc.c b/oc2/oc.c
index 1ad311c..ef45e12 100644
--- a/oc2/oc.c
+++ b/oc2/oc.c
@@ -18,9 +18,6 @@
/**************************************************/
-static int ocinitialized = 0;
-
-/**************************************************/
/* Track legal ids */
#define ocverify(o) ((o) != NULL && (((OCheader*)(o))->magic == OCMAGIC)?1:0)
@@ -33,18 +30,6 @@ static int ocinitialized = 0;
#define OCDEREF(T,s,x) (s)=(T)(x)
/**************************************************/
-
-static int
-oc_initialize(void)
-{
- int status = OC_NOERR;
- status = ocinternalinitialize();
- ocinitialized = 1;
- return status;
-}
-
-
-/**************************************************/
/*!\file oc.c
*/
@@ -69,7 +54,7 @@ oc_open(const char* url, OCobject* linkp)
{
OCerror ocerr;
OCstate* state;
- if(!ocinitialized) oc_initialize();
+ if(!ocglobalstate.initialized) oc_initialize();
ocerr = ocopen(&state,url);
if(ocerr == OC_NOERR && linkp) {
*linkp = (OCobject)(state);
@@ -245,7 +230,7 @@ oc_dds_properties(OCobject link,
if(octypep) *octypep = node->octype;
if(atomtypep) *atomtypep = node->etype;
if(rankp) *rankp = node->array.rank;
- if(containerp) *containerp = (OCobject)node->container;
+ if(containerp) *containerp = (OCobject)node->container;
if(nsubnodesp) *nsubnodesp = oclistlength(node->subnodes);
if(nattrp) {
if(node->octype == OC_Attribute) {
@@ -463,7 +448,7 @@ oc_dds_ithfield(OCobject link, OCobject ddsnode, size_t index, OCobject* fieldno
OCVERIFY(OC_Node,ddsnode);
OCDEREF(OCnode*,node,ddsnode);
- if(!iscontainer(node->octype))
+ if(!ociscontainer(node->octype))
return OCTHROW(OC_EBADTYPE);
if(index >= oclistlength(node->subnodes))
@@ -556,7 +541,7 @@ oc_dds_fieldbyname(OCobject link, OCobject ddsnode, const char* name, OCobject*
OCVERIFY(OC_Node,ddsnode);
OCDEREF(OCnode*,node,ddsnode);
- if(!iscontainer(node->octype))
+ if(!ociscontainer(node->octype))
return OCTHROW(OC_EBADTYPE);
/* Search the fields to find a name match */
@@ -569,7 +554,7 @@ oc_dds_fieldbyname(OCobject link, OCobject ddsnode, const char* name, OCobject*
err = oc_dds_ithfield(link,ddsnode,i,&field);
if(err != OC_NOERR) return err;
- // Get the field's name
+ /* Get the field's name */
err = oc_dds_name(link,field,&fieldname);
if(err != OC_NOERR) return err;
if(fieldname != NULL) {
@@ -611,7 +596,7 @@ oc_dds_dimensions(OCobject link, OCobject ddsnode, OCobject* dims)
for(i=0;i<node->array.rank;i++) {
OCnode* dim = (OCnode*)oclistget(node->array.dimensions,i);
dims[i] = (OCobject)dim;
- }
+ }
}
return OCTHROW(OC_NOERR);
}
@@ -701,7 +686,7 @@ oc_dds_dimensionsizes(OCobject link, OCobject ddsnode, size_t* dimsizes)
for(i=0;i<node->array.rank;i++) {
OCnode* dim = (OCnode*)oclistget(node->array.dimensions,i);
dimsizes[i] = dim->dim.declsize;
- }
+ }
}
return OCTHROW(OC_NOERR);
}
@@ -757,7 +742,7 @@ oc_dds_attr(OCobject link, OCobject ddsnode, size_t index,
strings[i] = nulldup(attr->values[i]);
}
}
- return OCTHROW(OC_NOERR);
+ return OCTHROW(OC_NOERR);
}
/*!
@@ -967,7 +952,7 @@ OCerror
oc_data_fieldbyname(OCobject link, OCobject datanode, const char* name, OCobject* fieldp)
{
OCerror err = OC_NOERR;
- size_t count,i;
+ size_t count=0,i;
OCobject ddsnode;
OCVERIFY(OC_State,link);
OCVERIFY(OC_Data,datanode);
@@ -985,7 +970,7 @@ oc_data_fieldbyname(OCobject link, OCobject datanode, const char* name, OCobject
char* fieldname = NULL;
err = oc_dds_ithfield(link,ddsnode,i,&field);
if(err != OC_NOERR) return err;
- // Get the field's name
+ /* Get the field's name */
err = oc_dds_name(link,field,&fieldname);
if(err != OC_NOERR) return err;
if(!fieldname)
@@ -996,7 +981,7 @@ oc_data_fieldbyname(OCobject link, OCobject datanode, const char* name, OCobject
if(match == 0) {
/* Get the ith datasubnode */
err = oc_data_ithfield(link,datanode,i,&field);
- if(err != OC_NOERR) return err;
+ if(err != OC_NOERR) return err;
if(fieldp) *fieldp = field;
return OCTHROW(OC_NOERR);
}
@@ -1045,7 +1030,7 @@ oc_data_gridmap(OCobject link, OCobject grid, size_t index, OCobject* mapdatap)
}
/*!
-Obtain the data instance corresponding to the container
+Obtain the data instance corresponding to the container
of a specied instance object.
\param[in] link The link through which the server is accessed.
@@ -1117,7 +1102,7 @@ to the element instance specified by the indices argument.
\param[in] link The link through which the server is accessed.
\param[in] datanode The data node instance of interest.
\param[in] indices A vector of indices specifying the element instance
-to return. This vector must be allocated and free'd by the caller.
+to return. This vector must be allocated and free'd by the caller.
\param[out] elementp A pointer into which the element instance is stored.
\retval OC_NOERR The procedure executed normally.
@@ -1147,7 +1132,7 @@ oc_data_ithelement(OCobject link, OCobject datanode, size_t* indices, OCobject*
}
/*!
-Return the i'th record instance
+Return the i'th record instance
of a Sequence data instance.
\param[in] link The link through which the server is accessed.
@@ -1181,7 +1166,7 @@ extern OCerror oc_data_ithrecord(OCobject link, OCobject datanode, size_t index,
}
/*!
-Return the i'th record instance
+Return the i'th record instance
of a Sequence data instance.
Return the indices for this data instance; Assumes the data
was obtained using oc_data_ithelement or oc_data_ithrecord.
@@ -1305,7 +1290,7 @@ a record in a Sequence).
\param[in] link The link through which the server is accessed.
\param[in] datanode The data node instance of interest.
-\retval one(1) if the specified data instance is indexable.
+\retval one(1) if the specified data instance is indexable.
\retval zero(0) otherwise.
*/
@@ -1391,7 +1376,7 @@ oc_data_read(OCobject link, OCobject datanode,
if(start == NULL && edges == NULL) /* Assume it is a scalar read */
return OCTHROW(oc_data_readn(link,datanode,start,0,memsize,memory));
-
+
if(edges == NULL)
return OCTHROW(OCTHROW(OC_EINVALCOORDS));
@@ -1476,7 +1461,7 @@ oc_data_readn(OCobject link, OCobject datanode,
OCDEREF(OCstate*,state,link);
OCVERIFY(OC_Data,datanode);
OCDEREF(OCdata*,data,datanode);
-
+
/* Do argument validation */
if(memory == NULL || memsize == 0)
@@ -1661,7 +1646,7 @@ oc_typesize(OCtype etype)
Return a string corresponding to the
to a given OCtype.
For example,
-oc_typetostring(OC_Int32) == "Int32" and
+oc_typetostring(OC_Int32) == "Int32" and
oc_typesize(OC_Structure) == "Structure".
The caller MUST NOT free the returned string.
@@ -1712,7 +1697,7 @@ oc_typeprint(OCtype etype, void* value, size_t bufsize, char* buffer)
Return a user-readable error message corresponding
to a given OCerror value.
-\param[in] err The OCerror value.
+\param[in] err The OCerror value.
\return The error message
*/
@@ -1926,47 +1911,6 @@ oc_ping(const char* url)
{
return OCTHROW(ocping(url));
}
-
-/*!
-Set the user agent field.
-
-\param[in] link The link through which the server is accessed.
-\param[in] agent The user agent string
-
-\retval OC_NOERR if the request succeeded.
-\retval OC_EINVAL if the request failed, typically
- because the agent string is null or zero-length.
-*/
-
-OCerror
-oc_set_useragent(OCobject link, const char* agent)
-{
- OCstate* state;
- OCVERIFY(OC_State,link);
- OCDEREF(OCstate*,state,link);
- return OCTHROW(ocsetuseragent(state,agent));
-}
-
-/*!
-Force the curl library to trace its actions.
-
-\param[in] link The link through which the server is accessed.
-
-\retval OC_NOERR if the request succeeded.
-\retval OC_EINVAL if the request failed.
-
-*/
-
-OCerror
-oc_trace_curl(OCobject link)
-{
- OCstate* state;
- OCVERIFY(OC_State,link);
- OCDEREF(OCstate*,state,link);
- oc_curl_debug(state);
- return OCTHROW(OC_NOERR);
-}
-
/**@}*/
/**************************************************/
@@ -2080,13 +2024,168 @@ oc_dds_free(OCobject link, OCobject dds0)
}
+/**************************************************/
+/* Curl specific options */
+
+/*!\defgroup Curl Curl-specifi Procedures
+@{*/
+
+/*!
+Set an arbitrary curl option. Option
+must be one of the ones supported by oc.
+
+\param[in] link The link through which the server is accessed.
+\param[in] option The name of the option to set;
+ See occurlfunction.c for
+ the set of supported flags and names.
+\param[in] value The option value.
+
+\retval OC_NOERR if the request succeeded.
+\retval OC_ECURL if the request failed.
+*/
+
+OCerror
+oc_set_curlopt(OClink link, const char* option, void* value)
+{
+ OCstate* state;
+ struct OCCURLFLAG* f;
+
+ OCVERIFY(OC_State,link);
+ OCDEREF(OCstate*,state,link);
+ f = occurlflagbyname(option);
+ if(f == NULL)
+ return OCTHROW(OC_ECURL);
+ return OCTHROW(ocset_curlopt(state,f->flag,value));
+}
+
+/*!
+Set the absolute path to use for the .netrc file
+
+\param[in] link The link through which the server is accessed.
+\param[in] netrc The path to use.
+
+\retval OC_NOERR if the request succeeded.
+\retval OC_EINVAL if the request failed, typically
+ because the path string is null or zero-length.
+*/
+
+OCerror
+oc_set_netrc(OClink* link, const char* file)
+{
+ OCstate* state;
+ FILE* f;
+ OCVERIFY(OC_State,link);
+ OCDEREF(OCstate*,state,link);
+
+
+ if(file == NULL || strlen(file) == 0)
+ return OC_EINVAL;
+ oclog(OCLOGDBG,"OC: using netrc file: %s",file);
+ /* See if it exists and is readable; complain if not */
+ f = fopen(file,"r");
+ if(f == NULL)
+ oclog(OCLOGWARN,"OC: netrc file is not readable; continuing");
+ else {
+ fclose(f);
+ }
+ return OCTHROW(ocset_netrc(state,file));
+}
+
+/*!
+Set the user agent field.
+
+\param[in] link The link through which the server is accessed.
+\param[in] agent The user agent string
+
+\retval OC_NOERR if the request succeeded.
+\retval OC_EINVAL if the request failed, typically
+ because the agent string is null or zero-length.
+*/
+
+OCerror
+oc_set_useragent(OCobject link, const char* agent)
+{
+ OCstate* state;
+ OCVERIFY(OC_State,link);
+ OCDEREF(OCstate*,state,link);
+
+ if(agent == NULL || strlen(agent) == 0)
+ return OC_EINVAL;
+ return OCTHROW(ocset_useragent(state,agent));
+}
+
+/*!
+Set the absolute path to use for the rc file.
+WARNING: this MUST be called before any other
+call in order for this to take effect.
+
+\param[in] rcfile The path to use. If NULL, or "",
+ then do not use any rcfile.
+
+\retval OC_NOERR if the request succeeded.
+\retval OC_ERCFILE if the file failed to load
+*/
+
+OCerror
+oc_set_rcfile(const char* rcfile)
+{
+ OCerror stat = OC_NOERR;
+ if(rcfile != NULL && strlen(rcfile) == 0)
+ rcfile = NULL;
+
+ if(!ocglobalstate.initialized)
+ ocinternalinitialize(); /* so ocglobalstate is defined, but not triplestore */
+ if(rcfile == NULL) {
+ ocglobalstate.rc.ignore = 1;
+ } else {
+ FILE* f = fopen(rcfile,"r");
+ if(f == NULL) {
+ stat = (OC_ERCFILE);
+ goto done;
+ }
+ fclose(f);
+ ocglobalstate.rc.rcfile = strdup(rcfile);
+ /* (re) load the rcfile and esp the triplestore*/
+ stat = ocrc_load();
+ }
+done:
+ return OCTHROW(stat);
+}
+
+/*!
+Force the curl library to trace its actions.
+
+\param[in] link The link through which the server is accessed.
+
+\retval OC_NOERR if the request succeeded.
+*/
+
OCerror
-oc_set_curl_callback(OClink link, oc_curl_callback* callback, void* userstate)
+oc_trace_curl(OCobject link)
{
OCstate* state;
OCVERIFY(OC_State,link);
OCDEREF(OCstate*,state,link);
- state->usercurl = callback;
- state->usercurldata = userstate;
+ oc_curl_debug(state);
return OCTHROW(OC_NOERR);
}
+
+OCerror
+oc_initialize(void)
+{
+ OCerror status = OC_NOERR;
+ if(!ocglobalstate.initialized) {
+ /* Clean up before re-initializing */
+ if(ocglobalstate.tempdir != NULL) free(ocglobalstate.tempdir);
+ if(ocglobalstate.home != NULL) free(ocglobalstate.home);
+ if(ocglobalstate.rc.rcfile != NULL) free(ocglobalstate.rc.rcfile);
+ }
+ ocglobalstate.initialized = 0;
+ status = ocinternalinitialize();
+ /* (re) load the rcfile */
+ status = ocrc_load();
+ return OCTHROW(status);
+}
+
+/**@}*/
+
diff --git a/oc2/oc.h b/oc2/oc.h
index b8ed7ed..bff531a 100644
--- a/oc2/oc.h
+++ b/oc2/oc.h
@@ -1,11 +1,11 @@
-/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
+/* Copyright 2014, UCAR/Unidata and OPeNDAP, Inc.
See the COPYRIGHT dap for more information. */
/*
OC External Interface
Created: 4/4/2009
-Last Revised: 6/7/2012
-Version: 2.0
+Last Revised: 12/23/2014
+Version: 2.1
*/
#ifndef OC_H
@@ -13,6 +13,9 @@ Version: 2.0
#include <stdlib.h>
#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
/*!\file oc.h
*/
@@ -50,6 +53,7 @@ Cause oc_fetch to store the retrieved data on disk.
*/
#define OCONDISK 1
+
/**************************************************/
/* OCtype */
@@ -209,7 +213,7 @@ extern OCerror oc_close(OClink);
/* Tree Management */
extern OCerror oc_fetch(OClink,
- const char* constraints,
+ const char* constraint,
OCdxd,
OCflags,
OCddsnode*);
@@ -535,15 +539,33 @@ extern OCerror oc_svcerrordata(OClink link, char** codep,
*/
extern int oc_httpcode(OClink);
-/**************************************************/
-/* Experimental/Undocumented */
-
/*
-Cause the curl library
-to be verbose
+(Re-)initialize the oc library as if nothing had been called.
+This is primarily for debugging of rc files.
*/
+extern OCerror oc_initialize(void);
+
+/**************************************************/
+/* Curl options */
+/* This is here because trial and error shows that
+ libcurl shows thru too much. So bow to the inevitable.
+*/
+
+/*Cause the curl library to be verbose and save error messages*/
extern OCerror oc_trace_curl(OClink link);
+/* Allow specification of the rc file */
+extern OCerror oc_set_rcfile(const char* filepath);
+
+/* Allow specification of the netrc file */
+extern OCerror oc_set_netrc(OClink*, const char* filepath);
+
+/* Set arbitrary curl option */
+extern OCerror oc_set_curlopt(OClink link, const char* option, void* value);
+
+/**************************************************/
+/* Experimental/Undocumented */
+
/* Given an arbitrary OCnode, return the connection of which it is a part */
extern OCerror oc_get_connection(OCobject ocnode, OCobject* linkp);
@@ -556,9 +578,6 @@ extern long oc_get_lastmodified_data(OClink);
/* Test if a given url responds to a DAP protocol request */
extern OCerror oc_ping(const char* url);
-/* Allow the setting of the user agent */
-extern OCerror oc_set_useragent(OClink, const char* agent);
-
/* Return the size of the in-memory or on-disk
data chunk returned by the server for a given tree.
Zero implies it is not defined.
@@ -568,14 +587,6 @@ extern OCerror oc_set_useragent(OClink, const char* agent);
extern OCerror oc_raw_xdrsize(OClink,OCddsnode,off_t*);
#endif
-/*
-Define a callback function type
-*/
-
-typedef void oc_curl_callback(void*,void*);
-
-extern OCerror oc_set_curl_callback(OClink,oc_curl_callback*,void* state);
-
#ifdef __cplusplus
}
#endif
diff --git a/oc2/occompile.c b/oc2/occompile.c
index 6dfa751..1e48dcb 100644
--- a/oc2/occompile.c
+++ b/oc2/occompile.c
@@ -16,7 +16,7 @@
#define TOPLEVEL 1
/* Forward */
-static OCdata* newocdata(OCnode* template);
+static OCdata* newocdata(OCnode* oc_template);
static size_t ocxdrsize(OCtype etype,int isscalar);
static OCerror occompile1(OCstate*, OCnode*, XXDR*, OCdata**);
static OCerror occompilerecord(OCstate*, OCnode*, XXDR*, OCdata**);
@@ -112,13 +112,13 @@ occompile1(OCstate* state, OCnode* xnode, XXDR* xxdrs, OCdata** datap)
/* allocate space to capture all the element instances */
data->instances = (OCdata**)malloc(nelements*sizeof(OCdata*));
- MEMFAIL(data);
+ MEMGOTO(data->instances,ocstat,fail);
data->ninstances = 0;
/* create and fill the element instances */
for(i=0;i<nelements;i++) {
OCdata* instance = newocdata(xnode);
- MEMFAIL(instance);
+ MEMGOTO(instance,ocstat,fail);
fset(instance->datamode,OCDT_ELEMENT);
data->instances[i] = instance;
data->ninstances++;
@@ -168,7 +168,7 @@ occompile1(OCstate* state, OCnode* xnode, XXDR* xxdrs, OCdata** datap)
/* extract the content */
data->ninstances = nelements;
data->instances = (OCdata**)oclistdup(records);
- MEMFAIL(data);
+ MEMGOTO(data,ocstat,fail);
oclistfree(records);
records = NULL;
break;
@@ -185,7 +185,14 @@ occompile1(OCstate* state, OCnode* xnode, XXDR* xxdrs, OCdata** datap)
}
/*ok:*/
- if(datap) *datap = data;
+ if(datap) {
+ *datap = data;
+ data = NULL;
+ }
+
+ if(data != NULL)
+ ocdata_free(state,data);
+
return OCTHROW(ocstat);
fail:
@@ -197,9 +204,10 @@ fail:
ocdata_free(state,(OCdata*)oclistget(records,i));
oclistfree(records);
}
- if(data != NULL) {
+
+ if(data != NULL)
ocdata_free(state,data);
- }
+
return OCTHROW(ocstat);
}
@@ -216,7 +224,12 @@ occompilerecord(OCstate* state, OCnode* xnode, XXDR* xxdrs, OCdata** recordp)
/* Compile the fields of this record */
ocstat = OCTHROW(occompilefields(state,record,xxdrs,!TOPLEVEL));
if(ocstat == OC_NOERR) {
- if(recordp) *recordp = record;
+ if(recordp) {
+ *recordp = record;
+ record = NULL;
+ }
+ if(record != NULL)
+ ocdata_free(state,record);
}
return OCTHROW(ocstat);
}
@@ -437,9 +450,11 @@ ocerrorstring(XXDR* xdrs)
{
/* Check to see if the xdrs contains "Error {\n'; assume it is at the beginning of data */
off_t avail = xxdr_getavail(xdrs);
- char* data = (char*)malloc((size_t)avail);
+ char* data;
if(!xxdr_setpos(xdrs,(off_t)0)) return 0;
- if(!xxdr_opaque(xdrs,data,avail)) return 0;
+ data = (char*)malloc((size_t)avail);
+ MEMCHECK(data,0);
+ if(!xxdr_opaque(xdrs,data,avail)) {free(data); return 0;}
/* check for error tag at front */
if(ocstrncmp(data,tag,sizeof(tag))==0) {
char* p;
diff --git a/oc2/occonstraints.h b/oc2/occonstraints.h
index a1e26c0..2bc5f98 100644
--- a/oc2/occonstraints.h
+++ b/oc2/occonstraints.h
@@ -1,8 +1,8 @@
/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
See the COPYRIGHT file for more information. */
-#ifndef CONSTRAINTS_H
-#define CONSTRAINTS_H 1
+#ifndef OCCONSTRAINTS_H
+#define OCCONSTRAINTS_H 1
/*! Specifies an OCslice. */
typedef struct OCslice {
@@ -36,4 +36,4 @@ typedef struct OCselectionclause {
} OCselectionclause;
-#endif /*CONSTRAINTS_H*/
+#endif /*OCCONSTRAINTS_H*/
diff --git a/oc2/occurlflags.c b/oc2/occurlflags.c
new file mode 100644
index 0000000..429a1c2
--- /dev/null
+++ b/oc2/occurlflags.c
@@ -0,0 +1,316 @@
+/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
+ See the COPYRIGHT file for more information. */
+
+#include "config.h"
+#include <curl/curl.h>
+#include "ocinternal.h"
+#include "ocdebug.h"
+
+static int nflags = 0;
+static long maxflag = -1;
+static struct OCCURLFLAG* nameindices[26]; /* for radix access */
+static struct OCCURLFLAG** flagindices = NULL; /* for radix access */
+
+/* Define supported curl flags */
+
+static struct OCCURLFLAG oc_curlflags[] = {
+{"CURLOPT_CAINFO",CURLOPT_CAINFO,10065,CF_STRING},
+{"CURLOPT_CAPATH",CURLOPT_CAPATH,10097,CF_STRING},
+{"CURLOPT_COOKIEFILE",CURLOPT_COOKIEFILE,10031,CF_STRING},
+{"CURLOPT_COOKIEJAR",CURLOPT_COOKIEJAR,10082,CF_STRING},
+{"CURLOPT_ENCODING",CURLOPT_ENCODING,10102,CF_STRING},
+{"CURLOPT_ERRORBUFFER",CURLOPT_ERRORBUFFER,10010,CF_STRING},
+{"CURLOPT_FOLLOWLOCATION",CURLOPT_FOLLOWLOCATION,52,CF_LONG},
+{"CURLOPT_HTTPAUTH",CURLOPT_HTTPAUTH,1007,CF_LONG},
+{"CURLOPT_KEYPASSWD",CURLOPT_KEYPASSWD,10026,CF_STRING},
+{"CURLOPT_MAXREDIRS",CURLOPT_MAXREDIRS,68,CF_LONG},
+{"CURLOPT_NETRC",CURLOPT_NETRC,51,CF_LONG},
+{"CURLOPT_NETRC_FILE",CURLOPT_NETRC_FILE,10118,CF_STRING},
+{"CURLOPT_PROXY",CURLOPT_PROXY,10004,CF_STRING},
+{"CURLOPT_PROXYAUTH",CURLOPT_PROXYAUTH,111,CF_STRING},
+{"CURLOPT_PROXYPORT",CURLOPT_PROXYPORT,59,CF_LONG},
+{"CURLOPT_PROXYUSERPWD",CURLOPT_PROXYUSERPWD,10006,CF_STRING},
+{"CURLOPT_SSLCERT",CURLOPT_SSLCERT,10025,CF_STRING},
+{"CURLOPT_SSLKEY",CURLOPT_SSLKEY,10087,CF_STRING},
+{"CURLOPT_SSLKEYPASSWD",CURLOPT_SSLKEYPASSWD,CURLOPT_KEYPASSWD,CF_STRING},
+{"CURLOPT_SSL_VERIFYHOST",CURLOPT_SSL_VERIFYHOST,81,CF_LONG},
+{"CURLOPT_SSL_VERIFYPEER",CURLOPT_SSL_VERIFYPEER,64,CF_LONG},
+{"CURLOPT_TIMEOUT",CURLOPT_TIMEOUT,13,CF_LONG},
+{"CURLOPT_USERAGENT",CURLOPT_USERAGENT,10018,CF_STRING},
+{"CURLOPT_USERPWD",CURLOPT_USERPWD,10005,CF_STRING},
+{"CURLOPT_VERBOSE",CURLOPT_VERBOSE,41,CF_LONG},
+{"CURLOPT_USE_SSL",CURLOPT_USE_SSL,119,CF_LONG},
+{NULL,0}
+};
+
+#if 0
+static struct OCCURLFLAG oc_allcurlflags[] = {
+{"CURLOPT_ADDRESS_SCOPE",CURLOPT_ADDRESS_SCOPE,171,CF_UNKNOWN},
+{"CURLOPT_APPEND",CURLOPT_APPEND,50,CF_UNKNOWN},
+{"CURLOPT_AUTOREFERER",CURLOPT_AUTOREFERER,58,CF_UNKNOWN},
+{"CURLOPT_BUFFERSIZE",CURLOPT_BUFFERSIZE,98,CF_UNKNOWN},
+{"CURLOPT_CAINFO",CURLOPT_CAINFO,10065,CF_UNKNOWN},
+{"CURLOPT_CAPATH",CURLOPT_CAPATH,10097,CF_UNKNOWN},
+{"CURLOPT_CERTINFO",CURLOPT_CERTINFO,172,CF_UNKNOWN},
+{"CURLOPT_CHUNK_BGN_FUNCTION",CURLOPT_CHUNK_BGN_FUNCTION,20198,CF_UNKNOWN},
+{"CURLOPT_CHUNK_DATA",CURLOPT_CHUNK_DATA,10201,CF_UNKNOWN},
+{"CURLOPT_CHUNK_END_FUNCTION",CURLOPT_CHUNK_END_FUNCTION,20199,CF_UNKNOWN},
+{"CURLOPT_CLOSEPOLICY",CURLOPT_CLOSEPOLICY,72,CF_UNKNOWN},
+{"CURLOPT_CONNECT_ONLY",CURLOPT_CONNECT_ONLY,141,CF_UNKNOWN},
+{"CURLOPT_CONNECTTIMEOUT",CURLOPT_CONNECTTIMEOUT,78,CF_UNKNOWN},
+{"CURLOPT_CONNECTTIMEOUT_MS",CURLOPT_CONNECTTIMEOUT_MS,156,CF_UNKNOWN},
+{"CURLOPT_CONV_FROM_NETWORK_FUNCTION",CURLOPT_CONV_FROM_NETWORK_FUNCTION,20142,CF_UNKNOWN},
+{"CURLOPT_CONV_FROM_UTF8_FUNCTION",CURLOPT_CONV_FROM_UTF8_FUNCTION,20144,CF_UNKNOWN},
+{"CURLOPT_CONV_TO_NETWORK_FUNCTION",CURLOPT_CONV_TO_NETWORK_FUNCTION,20143,CF_UNKNOWN},
+{"CURLOPT_COOKIE",CURLOPT_COOKIE,10022,CF_UNKNOWN},
+{"CURLOPT_COOKIEFILE",CURLOPT_COOKIEFILE,10031,CF_UNKNOWN},
+{"CURLOPT_COOKIEJAR",CURLOPT_COOKIEJAR,10082,CF_UNKNOWN},
+{"CURLOPT_COOKIELIST",CURLOPT_COOKIELIST,10135,CF_UNKNOWN},
+{"CURLOPT_COOKIESESSION",CURLOPT_COOKIESESSION,96,CF_UNKNOWN},
+{"CURLOPT_COPYPOSTFIELDS",CURLOPT_COPYPOSTFIELDS,10165,CF_UNKNOWN},
+{"CURLOPT_CRLF",CURLOPT_CRLF,27,CF_UNKNOWN},
+{"CURLOPT_CRLFILE",CURLOPT_CRLFILE,10169,CF_UNKNOWN},
+{"CURLOPT_CUSTOMREQUEST",CURLOPT_CUSTOMREQUEST,10036,CF_UNKNOWN},
+{"CURLOPT_DEBUGDATA",CURLOPT_DEBUGDATA,10095,CF_UNKNOWN},
+{"CURLOPT_DEBUGFUNCTION",CURLOPT_DEBUGFUNCTION,20094,CF_UNKNOWN},
+{"CURLOPT_DIRLISTONLY",CURLOPT_DIRLISTONLY,48,CF_UNKNOWN},
+{"CURLOPT_DNS_CACHE_TIMEOUT",CURLOPT_DNS_CACHE_TIMEOUT,92,CF_UNKNOWN},
+{"CURLOPT_DNS_USE_GLOBAL_CACHE",CURLOPT_DNS_USE_GLOBAL_CACHE,91,CF_UNKNOWN},
+{"CURLOPT_EGDSOCKET",CURLOPT_EGDSOCKET,10077,CF_UNKNOWN},
+{"CURLOPT_ENCODING",CURLOPT_ENCODING,10102,CF_UNKNOWN},
+{"CURLOPT_ERRORBUFFER",CURLOPT_ERRORBUFFER,10010,CF_UNKNOWN},
+{"CURLOPT_FAILONERROR",CURLOPT_FAILONERROR,45,CF_UNKNOWN},
+{"CURLOPT_FILE",CURLOPT_FILE,10001,CF_UNKNOWN},
+{"CURLOPT_FILETIME",CURLOPT_FILETIME,69,CF_UNKNOWN},
+{"CURLOPT_FNMATCH_DATA",CURLOPT_FNMATCH_DATA,10202,CF_UNKNOWN},
+{"CURLOPT_FNMATCH_FUNCTION",CURLOPT_FNMATCH_FUNCTION,20200,CF_UNKNOWN},
+{"CURLOPT_FOLLOWLOCATION",CURLOPT_FOLLOWLOCATION,52,CF_UNKNOWN},
+{"CURLOPT_FORBID_REUSE",CURLOPT_FORBID_REUSE,75,CF_UNKNOWN},
+{"CURLOPT_FRESH_CONNECT",CURLOPT_FRESH_CONNECT,74,CF_UNKNOWN},
+{"CURLOPT_FTP_ACCOUNT",CURLOPT_FTP_ACCOUNT,10134,CF_UNKNOWN},
+{"CURLOPT_FTP_ALTERNATIVE_TO_USER",CURLOPT_FTP_ALTERNATIVE_TO_USER,10147,CF_UNKNOWN},
+{"CURLOPT_FTP_CREATE_MISSING_DIRS",CURLOPT_FTP_CREATE_MISSING_DIRS,110,CF_UNKNOWN},
+{"CURLOPT_FTP_FILEMETHOD",CURLOPT_FTP_FILEMETHOD,138,CF_UNKNOWN},
+{"CURLOPT_FTPPORT",CURLOPT_FTPPORT,10017,CF_UNKNOWN},
+{"CURLOPT_FTP_RESPONSE_TIMEOUT",CURLOPT_FTP_RESPONSE_TIMEOUT,112,CF_UNKNOWN},
+{"CURLOPT_FTP_SKIP_PASV_IP",CURLOPT_FTP_SKIP_PASV_IP,137,CF_UNKNOWN},
+{"CURLOPT_FTPSSLAUTH",CURLOPT_FTPSSLAUTH,129,CF_UNKNOWN},
+{"CURLOPT_FTP_SSL_CCC",CURLOPT_FTP_SSL_CCC,154,CF_UNKNOWN},
+{"CURLOPT_FTP_USE_EPRT",CURLOPT_FTP_USE_EPRT,106,CF_UNKNOWN},
+{"CURLOPT_FTP_USE_EPSV",CURLOPT_FTP_USE_EPSV,85,CF_UNKNOWN},
+{"CURLOPT_FTP_USE_PRET",CURLOPT_FTP_USE_PRET,188,CF_UNKNOWN},
+{"CURLOPT_GSSAPI_DELEGATION",CURLOPT_GSSAPI_DELEGATION,210,CF_UNKNOWN},
+{"CURLOPT_HEADER",CURLOPT_HEADER,42,CF_UNKNOWN},
+{"CURLOPT_HEADERFUNCTION",CURLOPT_HEADERFUNCTION,20079,CF_UNKNOWN},
+{"CURLOPT_HTTP200ALIASES",CURLOPT_HTTP200ALIASES,10104,CF_UNKNOWN},
+{"CURLOPT_HTTPAUTH",CURLOPT_HTTPAUTH,107,CF_UNKNOWN},
+{"CURLOPT_HTTP_CONTENT_DECODING",CURLOPT_HTTP_CONTENT_DECODING,158,CF_UNKNOWN},
+{"CURLOPT_HTTPGET",CURLOPT_HTTPGET,80,CF_UNKNOWN},
+{"CURLOPT_HTTPHEADER",CURLOPT_HTTPHEADER,10023,CF_UNKNOWN},
+{"CURLOPT_HTTPPOST",CURLOPT_HTTPPOST,10024,CF_UNKNOWN},
+{"CURLOPT_HTTPPROXYTUNNEL",CURLOPT_HTTPPROXYTUNNEL,61,CF_UNKNOWN},
+{"CURLOPT_HTTP_TRANSFER_DECODING",CURLOPT_HTTP_TRANSFER_DECODING,157,CF_UNKNOWN},
+{"CURLOPT_HTTP_VERSION",CURLOPT_HTTP_VERSION,84,CF_UNKNOWN},
+{"CURLOPT_IGNORE_CONTENT_LENGTH",CURLOPT_IGNORE_CONTENT_LENGTH,136,CF_UNKNOWN},
+{"CURLOPT_INFILE",CURLOPT_INFILE,10009,CF_UNKNOWN},
+{"CURLOPT_INFILESIZE",CURLOPT_INFILESIZE,14,CF_UNKNOWN},
+{"CURLOPT_INFILESIZE_LARGE",CURLOPT_INFILESIZE_LARGE,30115,CF_UNKNOWN},
+{"CURLOPT_INTERFACE",CURLOPT_INTERFACE,10062,CF_UNKNOWN},
+{"CURLOPT_INTERLEAVEDATA",CURLOPT_INTERLEAVEDATA,10195,CF_UNKNOWN},
+{"CURLOPT_INTERLEAVEFUNCTION",CURLOPT_INTERLEAVEFUNCTION,20196,CF_UNKNOWN},
+{"CURLOPT_IOCTLDATA",CURLOPT_IOCTLDATA,10131,CF_UNKNOWN},
+{"CURLOPT_IOCTLFUNCTION",CURLOPT_IOCTLFUNCTION,20130,CF_UNKNOWN},
+{"CURLOPT_IPRESOLVE",CURLOPT_IPRESOLVE,113,CF_UNKNOWN},
+{"CURLOPT_ISSUERCERT",CURLOPT_ISSUERCERT,10170,CF_UNKNOWN},
+{"CURLOPT_KEYPASSWD",CURLOPT_KEYPASSWD,10026,CF_UNKNOWN},
+{"CURLOPT_KRBLEVEL",CURLOPT_KRBLEVEL,10063,CF_UNKNOWN},
+{"CURLOPT_LOCALPORT",CURLOPT_LOCALPORT,139,CF_UNKNOWN},
+{"CURLOPT_LOCALPORTRANGE",CURLOPT_LOCALPORTRANGE,140,CF_UNKNOWN},
+{"CURLOPT_LOW_SPEED_LIMIT",CURLOPT_LOW_SPEED_LIMIT,19,CF_UNKNOWN},
+{"CURLOPT_LOW_SPEED_TIME",CURLOPT_LOW_SPEED_TIME,20,CF_UNKNOWN},
+{"CURLOPT_MAIL_FROM",CURLOPT_MAIL_FROM,10186,CF_UNKNOWN},
+{"CURLOPT_MAIL_RCPT",CURLOPT_MAIL_RCPT,10187,CF_UNKNOWN},
+{"CURLOPT_MAXCONNECTS",CURLOPT_MAXCONNECTS,71,CF_UNKNOWN},
+{"CURLOPT_MAXFILESIZE",CURLOPT_MAXFILESIZE,114,CF_UNKNOWN},
+{"CURLOPT_MAXFILESIZE_LARGE",CURLOPT_MAXFILESIZE_LARGE,30117,CF_UNKNOWN},
+{"CURLOPT_MAX_RECV_SPEED_LARGE",CURLOPT_MAX_RECV_SPEED_LARGE,30146,CF_UNKNOWN},
+{"CURLOPT_MAXREDIRS",CURLOPT_MAXREDIRS,68,CF_UNKNOWN},
+{"CURLOPT_MAX_SEND_SPEED_LARGE",CURLOPT_MAX_SEND_SPEED_LARGE,30145,CF_UNKNOWN},
+{"CURLOPT_NETRC",CURLOPT_NETRC,51,CF_UNKNOWN},
+{"CURLOPT_NETRC_FILE",CURLOPT_NETRC_FILE,10118,CF_UNKNOWN},
+{"CURLOPT_NEW_DIRECTORY_PERMS",CURLOPT_NEW_DIRECTORY_PERMS,160,CF_UNKNOWN},
+{"CURLOPT_NEW_FILE_PERMS",CURLOPT_NEW_FILE_PERMS,159,CF_UNKNOWN},
+{"CURLOPT_NOBODY",CURLOPT_NOBODY,44,CF_UNKNOWN},
+{"CURLOPT_NOPROGRESS",CURLOPT_NOPROGRESS,43,CF_UNKNOWN},
+{"CURLOPT_NOPROXY",CURLOPT_NOPROXY,10177,CF_UNKNOWN},
+{"CURLOPT_NOSIGNAL",CURLOPT_NOSIGNAL,99,CF_UNKNOWN},
+{"CURLOPT_OPENSOCKETDATA",CURLOPT_OPENSOCKETDATA,10164,CF_UNKNOWN},
+{"CURLOPT_OPENSOCKETFUNCTION",CURLOPT_OPENSOCKETFUNCTION,20163,CF_UNKNOWN},
+{"CURLOPT_PASSWORD",CURLOPT_PASSWORD,10174,CF_UNKNOWN},
+{"CURLOPT_PORT",CURLOPT_PORT,3,CF_UNKNOWN},
+{"CURLOPT_POST",CURLOPT_POST,47,CF_UNKNOWN},
+{"CURLOPT_POSTFIELDS",CURLOPT_POSTFIELDS,10015,CF_UNKNOWN},
+{"CURLOPT_POSTFIELDSIZE",CURLOPT_POSTFIELDSIZE,60,CF_UNKNOWN},
+{"CURLOPT_POSTFIELDSIZE_LARGE",CURLOPT_POSTFIELDSIZE_LARGE,30120,CF_UNKNOWN},
+{"CURLOPT_POSTQUOTE",CURLOPT_POSTQUOTE,10039,CF_UNKNOWN},
+{"CURLOPT_POSTREDIR",CURLOPT_POSTREDIR,161,CF_UNKNOWN},
+{"CURLOPT_PREQUOTE",CURLOPT_PREQUOTE,10093,CF_UNKNOWN},
+{"CURLOPT_PRIVATE",CURLOPT_PRIVATE,10103,CF_UNKNOWN},
+{"CURLOPT_PROGRESSDATA",CURLOPT_PROGRESSDATA,10057,CF_UNKNOWN},
+{"CURLOPT_PROGRESSFUNCTION",CURLOPT_PROGRESSFUNCTION,20056,CF_UNKNOWN},
+{"CURLOPT_PROTOCOLS",CURLOPT_PROTOCOLS,181,CF_UNKNOWN},
+{"CURLOPT_PROXY",CURLOPT_PROXY,10004,CF_UNKNOWN},
+{"CURLOPT_PROXYAUTH",CURLOPT_PROXYAUTH,111,CF_UNKNOWN},
+{"CURLOPT_PROXYPASSWORD",CURLOPT_PROXYPASSWORD,10176,CF_UNKNOWN},
+{"CURLOPT_PROXYPORT",CURLOPT_PROXYPORT,59,CF_UNKNOWN},
+{"CURLOPT_PROXY_TRANSFER_MODE",CURLOPT_PROXY_TRANSFER_MODE,166,CF_UNKNOWN},
+{"CURLOPT_PROXYTYPE",CURLOPT_PROXYTYPE,101,CF_UNKNOWN},
+{"CURLOPT_PROXYUSERNAME",CURLOPT_PROXYUSERNAME,10175,CF_UNKNOWN},
+{"CURLOPT_PROXYUSERPWD",CURLOPT_PROXYUSERPWD,10006,CF_UNKNOWN},
+{"CURLOPT_PUT",CURLOPT_PUT,54,CF_UNKNOWN},
+{"CURLOPT_QUOTE",CURLOPT_QUOTE,10028,CF_UNKNOWN},
+{"CURLOPT_RANDOM_FILE",CURLOPT_RANDOM_FILE,10076,CF_UNKNOWN},
+{"CURLOPT_RANGE",CURLOPT_RANGE,10007,CF_UNKNOWN},
+{"CURLOPT_READFUNCTION",CURLOPT_READFUNCTION,20012,CF_UNKNOWN},
+{"CURLOPT_REDIR_PROTOCOLS",CURLOPT_REDIR_PROTOCOLS,182,CF_UNKNOWN},
+{"CURLOPT_REFERER",CURLOPT_REFERER,10016,CF_UNKNOWN},
+{"CURLOPT_RESUME_FROM",CURLOPT_RESUME_FROM,21,CF_UNKNOWN},
+{"CURLOPT_RESUME_FROM_LARGE",CURLOPT_RESUME_FROM_LARGE,30116,CF_UNKNOWN},
+{"CURLOPT_RTSP_CLIENT_CSEQ",CURLOPT_RTSP_CLIENT_CSEQ,193,CF_UNKNOWN},
+{"CURLOPT_RTSP_REQUEST",CURLOPT_RTSP_REQUEST,189,CF_UNKNOWN},
+{"CURLOPT_RTSP_SERVER_CSEQ",CURLOPT_RTSP_SERVER_CSEQ,194,CF_UNKNOWN},
+{"CURLOPT_RTSP_SESSION_ID",CURLOPT_RTSP_SESSION_ID,10190,CF_UNKNOWN},
+{"CURLOPT_RTSP_STREAM_URI",CURLOPT_RTSP_STREAM_URI,10191,CF_UNKNOWN},
+{"CURLOPT_RTSP_TRANSPORT",CURLOPT_RTSP_TRANSPORT,10192,CF_UNKNOWN},
+{"CURLOPT_SEEKDATA",CURLOPT_SEEKDATA,10168,CF_UNKNOWN},
+{"CURLOPT_SEEKFUNCTION",CURLOPT_SEEKFUNCTION,20167,CF_UNKNOWN},
+{"CURLOPT_SHARE",CURLOPT_SHARE,10100,CF_UNKNOWN},
+{"CURLOPT_SOCKOPTDATA",CURLOPT_SOCKOPTDATA,10149,CF_UNKNOWN},
+{"CURLOPT_SOCKOPTFUNCTION",CURLOPT_SOCKOPTFUNCTION,20148,CF_UNKNOWN},
+{"CURLOPT_SOCKS5_GSSAPI_NEC",CURLOPT_SOCKS5_GSSAPI_NEC,180,CF_UNKNOWN},
+{"CURLOPT_SOCKS5_GSSAPI_SERVICE",CURLOPT_SOCKS5_GSSAPI_SERVICE,10179,CF_UNKNOWN},
+{"CURLOPT_SSH_AUTH_TYPES",CURLOPT_SSH_AUTH_TYPES,151,CF_UNKNOWN},
+{"CURLOPT_SSH_HOST_PUBLIC_KEY_MD5",CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,10162,CF_UNKNOWN},
+{"CURLOPT_SSH_KEYDATA",CURLOPT_SSH_KEYDATA,10185,CF_UNKNOWN},
+{"CURLOPT_SSH_KEYFUNCTION",CURLOPT_SSH_KEYFUNCTION,20184,CF_UNKNOWN},
+{"CURLOPT_SSH_KNOWNHOSTS",CURLOPT_SSH_KNOWNHOSTS,10183,CF_UNKNOWN},
+{"CURLOPT_SSH_PRIVATE_KEYFILE",CURLOPT_SSH_PRIVATE_KEYFILE,10153,CF_UNKNOWN},
+{"CURLOPT_SSH_PUBLIC_KEYFILE",CURLOPT_SSH_PUBLIC_KEYFILE,10152,CF_UNKNOWN},
+{"CURLOPT_SSLCERT",CURLOPT_SSLCERT,10025,CF_UNKNOWN},
+{"CURLOPT_SSLCERTTYPE",CURLOPT_SSLCERTTYPE,10086,CF_UNKNOWN},
+{"CURLOPT_SSL_CIPHER_LIST",CURLOPT_SSL_CIPHER_LIST,10083,CF_UNKNOWN},
+{"CURLOPT_SSL_CTX_DATA",CURLOPT_SSL_CTX_DATA,10109,CF_UNKNOWN},
+{"CURLOPT_SSL_CTX_FUNCTION",CURLOPT_SSL_CTX_FUNCTION,20108,CF_UNKNOWN},
+{"CURLOPT_SSLENGINE",CURLOPT_SSLENGINE,10089,CF_UNKNOWN},
+{"CURLOPT_SSLENGINE_DEFAULT",CURLOPT_SSLENGINE_DEFAULT,90,CF_UNKNOWN},
+{"CURLOPT_SSLKEY",CURLOPT_SSLKEY,10087,CF_UNKNOWN},
+{"CURLOPT_SSLKEYTYPE",CURLOPT_SSLKEYTYPE,10088,CF_UNKNOWN},
+{"CURLOPT_SSL_SESSIONID_CACHE",CURLOPT_SSL_SESSIONID_CACHE,150,CF_UNKNOWN},
+{"CURLOPT_SSL_VERIFYHOST",CURLOPT_SSL_VERIFYHOST,81,CF_UNKNOWN},
+{"CURLOPT_SSL_VERIFYPEER",CURLOPT_SSL_VERIFYPEER,64,CF_UNKNOWN},
+{"CURLOPT_SSLVERSION",CURLOPT_SSLVERSION,32,CF_UNKNOWN},
+{"CURLOPT_STDERR",CURLOPT_STDERR,10037,CF_UNKNOWN},
+{"CURLOPT_TCP_NODELAY",CURLOPT_TCP_NODELAY,121,CF_UNKNOWN},
+{"CURLOPT_TELNETOPTIONS",CURLOPT_TELNETOPTIONS,10070,CF_UNKNOWN},
+{"CURLOPT_TFTP_BLKSIZE",CURLOPT_TFTP_BLKSIZE,178,CF_UNKNOWN},
+{"CURLOPT_TIMECONDITION",CURLOPT_TIMECONDITION,33,CF_UNKNOWN},
+{"CURLOPT_TIMEOUT",CURLOPT_TIMEOUT,13,CF_UNKNOWN},
+{"CURLOPT_TIMEOUT_MS",CURLOPT_TIMEOUT_MS,155,CF_UNKNOWN},
+{"CURLOPT_TIMEVALUE",CURLOPT_TIMEVALUE,34,CF_UNKNOWN},
+{"CURLOPT_TRANSFERTEXT",CURLOPT_TRANSFERTEXT,53,CF_UNKNOWN},
+{"CURLOPT_UNRESTRICTED_AUTH",CURLOPT_UNRESTRICTED_AUTH,105,CF_UNKNOWN},
+{"CURLOPT_UPLOAD",CURLOPT_UPLOAD,46,CF_UNKNOWN},
+{"CURLOPT_URL",CURLOPT_URL,10002,CF_UNKNOWN},
+{"CURLOPT_USERAGENT",CURLOPT_USERAGENT,10018,CF_UNKNOWN},
+{"CURLOPT_USERNAME",CURLOPT_USERNAME,10173,CF_UNKNOWN},
+{"CURLOPT_USERPWD",CURLOPT_USERPWD,10005,CF_UNKNOWN},
+{"CURLOPT_USE_SSL",CURLOPT_USE_SSL,119,CF_UNKNOWN},
+{"CURLOPT_VERBOSE",CURLOPT_VERBOSE,41,CF_UNKNOWN},
+{"CURLOPT_WILDCARDMATCH",CURLOPT_WILDCARDMATCH,197,CF_UNKNOWN},
+{"CURLOPT_WRITEFUNCTION",CURLOPT_WRITEFUNCTION,20011,CF_UNKNOWN},
+{"CURLOPT_WRITEHEADER",CURLOPT_WRITEHEADER,10029,CF_UNKNOWN},
+{"CURLOPT_WRITEINFO",CURLOPT_WRITEINFO,10040,CF_UNKNOWN},
+{NULL,0}
+};
+
+struct OCCURLFLAG*
+occurlflagsall(void)
+{
+ if(nflags == 0) initialize();
+ return oc_allcurlflags;
+}
+
+#endif
+
+static int touppercase(int c)
+{
+ if(c >= 'a' && c <= 'z')
+ c = ((c-'a') + 'A');
+ return c;
+}
+
+static void
+initialize(void)
+{
+ struct OCCURLFLAG* p;
+ if(nflags == 0) { /* initialize */
+ maxflag = -1;
+ for(p=oc_curlflags;p->name;p++) {
+ int c;
+ nflags++; /* count number of flags */
+ if(p->flag > maxflag) maxflag = p->flag;
+ /* construct alphabetic radix nameindices */
+ c = p->name[0];
+ OCASSERT(c >= 'A' && c <= 'Z');
+ if(nameindices[c] == NULL)
+ nameindices[c] = p;
+ }
+ flagindices = (struct OCCURLFLAG**)calloc(1,(maxflag+1)*sizeof(struct OCCURLFLAG*));
+ for(p=oc_curlflags;p->name;p++)
+ flagindices[p->flag] = p;
+ }
+}
+
+struct OCCURLFLAG*
+occurlflags(void)
+{
+ if(nflags == 0) initialize();
+ return oc_curlflags;
+}
+
+struct OCCURLFLAG*
+occurlflagbyname(const char* name)
+{
+ struct OCCURLFLAG* f;
+ int c = name[0];
+ char flagname[4096];
+ const char* p;
+ char* q;
+
+ if(nflags == 0) initialize();
+ /* Force upper case */
+ for(p=name,q=flagname;*p;p++) {
+ int cc = touppercase(*p);
+ if(cc < 'A' || cc > 'Z') return NULL;
+ *q++ = cc;
+ }
+ *q = '\0';
+
+ if(nameindices[c] == NULL)
+ return NULL; /* no possible match */
+ for(f=nameindices[c];f->name;f++) {
+ int cmp = strcmp(name,f->name);
+ if(cmp > 0) break; /* We assume sorted */
+ if(cmp == 0) return f;
+ }
+ return NULL;
+}
+
+struct OCCURLFLAG*
+occurlflagbyflag(int flag)
+{
+ if(nflags == 0) initialize();
+ if(flag >= 0 || flag <= maxflag)
+ return flagindices[flag];
+ return NULL;
+}
diff --git a/oc2/occurlfunctions.c b/oc2/occurlfunctions.c
index 4a6e0f9..faaeb92 100644
--- a/oc2/occurlfunctions.c
+++ b/oc2/occurlfunctions.c
@@ -4,10 +4,12 @@
#include "config.h"
#include "ocinternal.h"
#include "ocdebug.h"
-#include "ocrc.h"
+#include "occurlfunctions.h"
-#define OC_MAX_REDIRECTS 10L
+#define OC_MAX_REDIRECTS 20L
+/* Mnemonic */
+#define OPTARG void*
/* Condition on libcurl version */
/* Set up an alias as needed */
@@ -15,14 +17,298 @@
#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD
#endif
+#define NETRCFILETAG "HTTP.NETRC"
-static char* combinecredentials(const char* user, const char* pwd);
+#define CHECK(state,flag,value) {if(check(state,flag,(void*)value) != OC_NOERR) {goto done;}}
+
+/* forward */
+static OCerror oc_set_curl_options(OCstate* state);
+static void* cvt(char* value, enum OCCURLFLAGTYPE type);
+
+static OCerror
+check(OCstate* state, int flag, void* value)
+{
+ OCerror stat = ocset_curlopt(state,flag,value);
+#ifdef OCDEBUG
+ long l = (long)value;
+ const char* name = occurlflagbyflag(flag)->name;
+ if(l <= 1000) {
+ OCDBG2("%s=%ld",name,l);
+ } else {
+ char show[65];
+ char* s = (char*)value;
+ strncpy(show,s,64);
+ show[64] = '\0';
+ OCDBG2("%s=%s",name,show);
+ }
+#endif
+ return stat;
+}
+
+#if 0
+static void
+showopt(int flag, void* value)
+{
+ struct OCCURLFLAG* f = occurlflagbyflag(flag);
+ if(f == NULL) {
+ OCDBG1("Unsupported flag: %d",flag);
+ } else switch (f->type) {
+ case CF_LONG:
+ OCDBG2("%s=%ld",f->name,(long)value);
+ break;
+ case CF_STRING: {
+ char show[65];
+ char* s = (char*)value;
+ strncpy(show,s,64);
+ show[64] = '\0';
+ OCDBG2("%s=%s",f->name,show);
+ } break;
+ case CF_UNKNOWN: case CF_OTHER:
+ OCDBG1("%s=<something>",f->name);
+ break;
+ }
+}
+#endif
+
+/*
+Set a specific curl flag; primary wrapper for curl_easy_setopt
+*/
+OCerror
+ocset_curlopt(OCstate* state, int flag, void* value)
+{
+ OCerror stat = OC_NOERR;
+ CURLcode cstat = CURLE_OK;
+ cstat = OCCURLERR(state,curl_easy_setopt(state->curl,flag,value));
+ if(cstat != CURLE_OK)
+ stat = OC_ECURL;
+ return stat;
+}
+
+/*
+Update a specific flag from state
+*/
+OCerror
+ocset_curlflag(OCstate* state, int flag)
+{
+ OCerror stat = OC_NOERR;
+
+ switch (flag) {
+
+ case CURLOPT_USERPWD:
+ if(state->creds.userpwd != NULL) {
+ CHECK(state, CURLOPT_USERPWD, state->creds.userpwd);
+ CHECK(state, CURLOPT_HTTPAUTH, (OPTARG)CURLAUTH_ANY);
+ }
+ break;
+
+ case CURLOPT_COOKIEJAR: case CURLOPT_COOKIEFILE:
+ if(state->curlflags.cookiejar) {
+ /* Assume we will read and write cookies to same place */
+ CHECK(state, CURLOPT_COOKIEJAR, state->curlflags.cookiejar);
+ CHECK(state, CURLOPT_COOKIEFILE, state->curlflags.cookiejar);
+ }
+ break;
+
+ case CURLOPT_NETRC: case CURLOPT_NETRC_FILE:
+ if(state->curlflags.netrc) {
+ CHECK(state, CURLOPT_NETRC, (OPTARG)CURL_NETRC_REQUIRED);
+ CHECK(state, CURLOPT_NETRC_FILE, state->curlflags.netrc);
+ }
+ break;
+
+ case CURLOPT_VERBOSE:
+ if(state->curlflags.verbose)
+ CHECK(state, CURLOPT_VERBOSE, (OPTARG)1L);
+ break;
+
+ case CURLOPT_TIMEOUT:
+ if(state->curlflags.timeout)
+ CHECK(state, CURLOPT_TIMEOUT, (OPTARG)((long)state->curlflags.timeout));
+ break;
+
+ case CURLOPT_USERAGENT:
+ if(state->curlflags.useragent)
+ CHECK(state, CURLOPT_USERAGENT, state->curlflags.useragent);
+ break;
+
+ case CURLOPT_FOLLOWLOCATION:
+ CHECK(state, CURLOPT_FOLLOWLOCATION, (OPTARG)1L);
+ break;
+
+ case CURLOPT_MAXREDIRS:
+ CHECK(state, CURLOPT_MAXREDIRS, (OPTARG)OC_MAX_REDIRECTS);
+ break;
+
+ case CURLOPT_ERRORBUFFER:
+ CHECK(state, CURLOPT_ERRORBUFFER, state->error.curlerrorbuf);
+ break;
+
+ case CURLOPT_ENCODING:
+#ifdef CURLOPT_ENCODING
+ if(state->curlflags.compress) {
+ CHECK(state, CURLOPT_ENCODING,"deflate, gzip");
+ }
+#endif
+ break;
+
+ case CURLOPT_PROXY:
+ if(state->proxy.host != NULL) {
+ CHECK(state, CURLOPT_PROXY, state->proxy.host);
+ CHECK(state, CURLOPT_PROXYPORT, (OPTARG)(long)state->proxy.port);
+ if(state->proxy.userpwd) {
+ CHECK(state, CURLOPT_PROXYUSERPWD, state->proxy.userpwd);
+#ifdef CURLOPT_PROXYAUTH
+ CHECK(state, CURLOPT_PROXYAUTH, (long)CURLAUTH_ANY);
+#endif
+ }
+ }
+ break;
+
+ case CURLOPT_USE_SSL:
+ case CURLOPT_SSLCERT: case CURLOPT_SSLKEY:
+ case CURLOPT_SSL_VERIFYPEER: case CURLOPT_SSL_VERIFYHOST:
+ {
+ struct OCSSL* ssl = &state->ssl;
+ CHECK(state, CURLOPT_SSL_VERIFYPEER, (OPTARG)(ssl->verifypeer?1L:0L));
+ CHECK(state, CURLOPT_SSL_VERIFYHOST, (OPTARG)(ssl->verifyhost?1L:0L));
+ if(ssl->certificate)
+ CHECK(state, CURLOPT_SSLCERT, ssl->certificate);
+ if(ssl->key)
+ CHECK(state, CURLOPT_SSLKEY, ssl->key);
+ if(ssl->keypasswd)
+ /* libcurl prior to 7.16.4 used 'CURLOPT_SSLKEYPASSWD' */
+ CHECK(state, CURLOPT_KEYPASSWD, ssl->keypasswd);
+ if(ssl->cainfo)
+ CHECK(state, CURLOPT_CAINFO, ssl->cainfo);
+ if(ssl->capath)
+ CHECK(state, CURLOPT_CAPATH, ssl->capath);
+ }
+ break;
+
+ default: {
+ struct OCCURLFLAG* f = occurlflagbyflag(flag);
+ if(f != NULL)
+ oclog(OCLOGWARN,"Attempt to update unexpected curl flag: %s",
+ f->name);
+ } break;
+ }
+done:
+ return stat;
+}
+
+
+/* Set various general curl flags per fetch */
+OCerror
+ocset_flags_perfetch(OCstate* state)
+{
+ OCerror stat = OC_NOERR;
+ /* currently none */
+ return stat;
+}
+
+/* Set various general curl flags per link */
+
+OCerror
+ocset_flags_perlink(OCstate* state)
+{
+ OCerror stat = OC_NOERR;
+
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_ENCODING);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_NETRC);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_VERBOSE);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_TIMEOUT);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_USERAGENT);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_COOKIEJAR);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_USERPWD);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_PROXY);
+ if(stat == OC_NOERR) stat = ocset_curlflag(state,CURLOPT_USE_SSL);
+
+ /* Following are always set */
+ ocset_curlflag(state, CURLOPT_FOLLOWLOCATION);
+ ocset_curlflag(state, CURLOPT_MAXREDIRS);
+ ocset_curlflag(state, CURLOPT_ERRORBUFFER);
+
+ /* Set the CURL. options */
+ stat = oc_set_curl_options(state);
+
+ return stat;
+}
+
+/**
+Directly set any options starting with 'CURL.'
+*/
+static OCerror
+oc_set_curl_options(OCstate* state)
+{
+ OCerror stat = OC_NOERR;
+ struct OCTriplestore* store;
+ struct OCTriple* triple;
+ int i;
+ char* hostport;
+ struct OCCURLFLAG* ocflag;
+
+ hostport = occombinehostport(state->uri);
+ if(hostport == NULL) hostport = "";
+
+ store = &ocglobalstate.rc.ocrc;
+ triple = store->triples;
+
+ /* Assume that the triple store has been properly sorted */
+ for(i=0;i<store->ntriples;i++,triple++) {
+ size_t hostlen = strlen(triple->host);
+ const char* flagname;
+
+ if(ocstrncmp("CURL.",triple->key,5) != 0) continue; /* not a curl flag */
+ /* do hostport prefix comparison */
+ if(hostlen > 0) {
+ int t = ocstrncmp(hostport,triple->host,hostlen);
+ if(t != 0) continue;
+ }
+ flagname = triple->key+5; /* 5 == strlen("CURL."); */
+ ocflag = occurlflagbyname(flagname);
+ if(ocflag == NULL) {stat = OC_ECURL; goto done;}
+ stat = ocset_curlopt(state,ocflag->flag,cvt(triple->value,ocflag->type));
+ }
+done:
+ return stat;
+}
+
+static void*
+cvt(char* value, enum OCCURLFLAGTYPE type)
+{
+ switch (type) {
+ case CF_LONG: {
+ /* Try to convert to long value */
+ const char* p = value;
+ char* q = NULL;
+ long longvalue = strtol(p,&q,10);
+ if(*q != '\0')
+ return NULL;
+ return (void*)longvalue;
+ }
+ case CF_STRING:
+ return (void*)value;
+ case CF_UNKNOWN: case CF_OTHER:
+ return (void*)value;
+ }
+ return NULL;
+}
void
oc_curl_debug(OCstate* state)
{
- curl_easy_setopt(state->curl,CURLOPT_VERBOSE,1);
- curl_easy_setopt(state->curl,CURLOPT_ERRORBUFFER,(void*)state->curlerror);
+ state->curlflags.verbose = 1;
+ ocset_curlflag(state,CURLOPT_VERBOSE);
+ ocset_curlflag(state,CURLOPT_ERRORBUFFER);
+}
+
+/* Misc. */
+
+int
+ocrc_netrc_required(OCstate* state)
+{
+ char* netrcfile = ocrc_lookup(NETRCFILETAG,state->uri->uri);
+ return (netrcfile != NULL || state->curlflags.netrc != NULL ? 0 : 1);
}
void
@@ -41,8 +327,8 @@ oc_curl_protocols(struct OCGLOBALSTATE* state)
curl_version_info_data* curldata;
curldata = curl_version_info(CURLVERSION_NOW);
for(proto=curldata->protocols;*proto;proto++) {
- if(strcmp("file",*proto)==0) {state->curl.proto_file=1;break;}
- if(strcmp("http",*proto)==0) {state->curl.proto_https=1;break;}
+ if(strcmp("file",*proto)==0) {state->curl.proto_file=1;}
+ if(strcmp("http",*proto)==0) {state->curl.proto_https=1;}
}
if(ocdebug > 0) {
oclog(OCLOGNOTE,"Curl file:// support = %d",state->curl.proto_file);
@@ -51,205 +337,105 @@ oc_curl_protocols(struct OCGLOBALSTATE* state)
}
-/* Set various general curl flags */
-int
-ocset_curl_flags(OCstate* state)
+/*
+"Inverse" of ocset_curlflag;
+Given a flag and value, it updates state.
+Update a specific flag from state->curlflags.
+*/
+OCerror
+ocset_curlstate(OCstate* state, int flag, void* value)
{
- CURLcode cstat = CURLE_OK;
- CURL* curl = state->curl;
- struct OCcurlflags* flags = &state->curlflags;
+ OCerror stat = OC_NOERR;
-#if 0
- cstat = curl_easy_reset(curl);
-#endif
+ switch (flag) {
-#ifdef CURLOPT_ENCODING
- if (flags->compress) {
- cstat = curl_easy_setopt(curl, CURLOPT_ENCODING,"deflate, gzip");
- if(cstat != CURLE_OK) goto done;
- OCDBG(1,"CURLOPT_ENCODING=deflate, gzip");
- }
-#endif
-#if 0
-Do not think this is correct
- if (flags->cookiejar) {
- cstat = curl_easy_setopt(curl, CURLOPT_COOKIESESSION, 1);
- if (cstat != CURLE_OK) goto done;
- OCDBG(1,"CURLOPT_COOKIESESSION=1");
- }
-#endif
- if (flags->cookiejar) {
- cstat = curl_easy_setopt(curl, CURLOPT_COOKIEJAR, flags->cookiejar);
- if (cstat != CURLE_OK) goto done;
- OCDBG1(1,"CURLOPT_COOKIEJAR=%s",flags->cookiejar);
- cstat = curl_easy_setopt(curl, CURLOPT_COOKIEFILE, flags->cookiejar);
- if (cstat != CURLE_OK) goto done;
- }
- if (flags->verbose) {
- cstat = curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- if (cstat != CURLE_OK) goto done;
- OCDBG1(1,"CURLOPT_VERBOSE=%ld",1L);
- }
+ case CURLOPT_USERPWD:
+ if(state->creds.userpwd != NULL) free(state->creds.userpwd);
+ state->creds.userpwd = strdup((char*)value);
+ break;
- if (flags->timeout) {
- cstat = curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)flags->timeout);
- if (cstat != CURLE_OK) goto done;
- OCDBG1(1,"CURLOPT_TIMEOUT=%ld",1L);
- }
+ case CURLOPT_COOKIEJAR: case CURLOPT_COOKIEFILE:
+ if(state->curlflags.cookiejar != NULL) free(state->curlflags.cookiejar);
+ state->curlflags.cookiejar = strdup((char*)value);
+ break;
- if (flags->useragent) {
- cstat = curl_easy_setopt(curl, CURLOPT_USERAGENT, flags->useragent);
- if (cstat != CURLE_OK) goto done;
- OCDBG1(1,"CURLOPT_USERAGENT=%s",flags->useragent);
- }
+ case CURLOPT_NETRC: case CURLOPT_NETRC_FILE:
+ if(state->curlflags.netrc != NULL) free(state->curlflags.netrc);
+ state->curlflags.netrc = strdup((char*)value);
+ break;
- /* Following are always set */
- cstat = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- OCDBG1(1,"CURLOPT_FOLLOWLOCATION=%ld",1L);
- cstat = curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1L);
- OCDBG1(1,"CURLOPT_UNRESTRICTED_AUTH=%ld",1L);
- cstat = curl_easy_setopt(curl, CURLOPT_MAXREDIRS, OC_MAX_REDIRECTS);
- OCDBG1(1,"CURLOPT_MAXREDIRS=%ld",OC_MAX_REDIRECTS);
-#if 0
- cstat = curl_setopt(curl,CURLOPT_RETURNTRANSFER, 1L);
- OCDBG1(1,"CURLOPT_RETURNTRANSFER=%ld",1L);
-#endif
+ case CURLOPT_VERBOSE:
+ state->curlflags.verbose = (long)value;
+ break;
- cstat = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, state->error.curlerrorbuf);
- OCDBG1(1,"CURLOPT_ERRORBUFFER",0);
+ case CURLOPT_TIMEOUT:
+ state->curlflags.timeout = (long)value;
+ break;
-done:
- return cstat;
-}
+ case CURLOPT_USERAGENT:
+ if(state->curlflags.useragent != NULL) free(state->curlflags.useragent);
+ state->curlflags.useragent = strdup((char*)value);
+ break;
-OCerror
-ocset_proxy(OCstate* state)
-{
- CURLcode cstat;
- CURL* curl = state->curl;
- struct OCproxy *proxy = &state->proxy;
- struct OCcredentials *creds = &state->creds;
-
- cstat = curl_easy_setopt(curl, CURLOPT_PROXY, proxy->host);
- if (cstat != CURLE_OK) return OC_ECURL;
- OCDBG1(1,"CURLOPT_PROXY=%s",proxy->host);
-
- cstat = curl_easy_setopt(curl, CURLOPT_PROXYPORT, proxy->port);
- if (cstat != CURLE_OK) return OC_ECURL;
- OCDBG1(1,"CURLOPT_PROXYPORT=%d",proxy->port);
-
- if (creds->username) {
- char *combined = combinecredentials(creds->username,creds->password);
- if (!combined) return OC_ENOMEM;
- cstat = curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, combined);
- if (cstat != CURLE_OK) return OC_ECURL;
- OCDBG1(1,"CURLOPT_PROXYUSERPWD=%s",combined);
-#ifdef CURLOPT_PROXYAUTH
- cstat = curl_easy_setopt(curl, CURLOPT_PROXYAUTH, (long)CURLAUTH_ANY);
- if(cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_PROXYAUTH=%ld",(long)CURLAUTH_ANY);
-#endif
- free(combined);
- }
- return OC_NOERR;
-}
+ case CURLOPT_FOLLOWLOCATION:
+ /* no need to store; will always be set */
+ break;
-OCerror
-ocset_ssl(OCstate* state)
-{
- CURLcode cstat = CURLE_OK;
- CURL* curl = state->curl;
- struct OCSSL* ssl = &state->ssl;
- long verify = (ssl->validate?1L:0L);
- cstat=curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, verify);
- if (cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_SSL_VERIFYPEER=%ld",verify);
- cstat=curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, (verify?2L:0L));
- if (cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_SSL_VERIFYHOST=%ld",(verify?2L:0L));
-#ifdef OCIGNORE
- if(verify)
-#endif
- {
- if(ssl->certificate) {
- cstat = curl_easy_setopt(curl, CURLOPT_SSLCERT, ssl->certificate);
- if(cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_SSLCERT=%s",ssl->certificate);
- }
- if(ssl->key) {
- cstat = curl_easy_setopt(curl, CURLOPT_SSLKEY, ssl->key);
- if(cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_SSLKEY=%s",ssl->key);
- }
- if(ssl->keypasswd) {
- /* libcurl prior to 7.16.4 used 'CURLOPT_SSLKEYPASSWD' */
- cstat = curl_easy_setopt(curl, CURLOPT_KEYPASSWD, ssl->keypasswd);
- if(cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_SSLKEY=%s",ssl->key);
- }
- if(ssl->cainfo) {
- cstat = curl_easy_setopt(curl, CURLOPT_CAINFO, ssl->cainfo);
- if(cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_CAINFO=%s",ssl->cainfo);
- }
- if(ssl->capath) {
- cstat = curl_easy_setopt(curl, CURLOPT_CAPATH, ssl->capath);
- if(cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_CAPATH=%s",ssl->capath);
- }
- {
- cstat = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, ssl->verifypeer);
- if(cstat != CURLE_OK) goto fail;
- OCDBG1(1,"CURLOPT_SSL_VERIFYPEER=%d",ssl->verifypeer);
- }
- }
- return OC_NOERR;
+ case CURLOPT_MAXREDIRS:
+ /* no need to store; will always be set */
+ break;
-fail:
- return OC_ECURL;
-}
+ case CURLOPT_ERRORBUFFER:
+ /* no need to store; will always be set */
+ break;
-/* This is called with arguments while the other functions in this file are
- * used with global values read from the.dodsrc file. The reason is that
- * we may have multiple password sources.
- */
-OCerror
-ocset_user_password(OCstate* state)
-{
- CURLcode cstat;
- CURL* curl = state->curl;
- char* combined = NULL;
- const char* userC = state->creds.username;
- const char* passwordC = state->creds.password;
-
- if(userC == NULL || passwordC == NULL) return OC_NOERR;
-
- combined = combinecredentials(userC,passwordC);
- if (!combined) return OC_ENOMEM;
- cstat = curl_easy_setopt(curl, CURLOPT_USERPWD, combined);
- if (cstat != CURLE_OK) goto done;
- OCDBG1(1,"CURLOPT_USERPWD=%s",combined);
- cstat = curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long) CURLAUTH_ANY);
- if (cstat != CURLE_OK) goto done;
- OCDBG1(1,"CURLOPT_HTTPAUTH=%ld",(long)CURLAUTH_ANY);
+ case CURLOPT_ENCODING:
+ /* no need to store; will always be set to fixed value */
+ break;
-done:
- if(combined != NULL) free(combined);
- return (cstat == CURLE_OK?OC_NOERR:OC_ECURL);
-}
+ case CURLOPT_PROXY:
+ /* We assume that the value is the proxy url */
+ if(state->proxy.host != NULL) free(state->proxy.host);
+ if(state->proxy.userpwd != NULL) free(state->proxy.userpwd);
+ state->proxy.host = NULL;
+ state->proxy.userpwd = NULL;
+ if(!ocparseproxy(state,(char*)value))
+ {stat = OC_EINVAL; goto done;}
+ break;
+ case CURLOPT_SSLCERT:
+ if(state->ssl.certificate != NULL) free(state->ssl.certificate);
+ state->ssl.certificate = strdup((char*)value);
+ break;
+ case CURLOPT_SSLKEY:
+ if(state->ssl.key != NULL) free(state->ssl.key);
+ state->ssl.key = strdup((char*)value);
+ break;
+ case CURLOPT_KEYPASSWD:
+ if(state->ssl.keypasswd!= NULL) free(state->ssl.keypasswd);
+ state->ssl.keypasswd = strdup((char*)value);
+ break;
+ case CURLOPT_SSL_VERIFYPEER:
+ state->ssl.verifypeer = (long)value;
+ break;
+ case CURLOPT_SSL_VERIFYHOST:
+ state->ssl.verifyhost = (long)value;
+ case CURLOPT_CAINFO:
+ if(state->ssl.cainfo != NULL) free(state->ssl.cainfo);
+ state->ssl.cainfo = strdup((char*)value);
+ break;
+ case CURLOPT_CAPATH:
+ if(state->ssl.capath != NULL) free(state->ssl.capath);
+ state->ssl.capath = strdup((char*)value);
+ break;
-static char*
-combinecredentials(const char* user, const char* pwd)
-{
- int userPassSize = strlen(user) + strlen(pwd) + 2;
- char *userPassword = malloc(sizeof(char) * userPassSize);
- if (!userPassword) {
- oclog(OCLOGERR,"Out of Memory\n");
- return NULL;
+ default: {
+ struct OCCURLFLAG* f = occurlflagbyflag(flag);
+ if(f != NULL)
+ oclog(OCLOGWARN,"Attempt to add unexpected curl flag to state: %s",
+ f->name);
+ } break;
}
- strcpy(userPassword, user);
- strcat(userPassword, ":");
- strcat(userPassword, pwd);
- return userPassword;
+done:
+ return stat;
}
diff --git a/oc2/occurlfunctions.h b/oc2/occurlfunctions.h
index 87c5736..47c8380 100644
--- a/oc2/occurlfunctions.h
+++ b/oc2/occurlfunctions.h
@@ -8,16 +8,28 @@
#ifndef _CURLFUNCTION_H_
#define _CURLFUNCTION_H_
-extern void oc_curl_protocols(struct OCGLOBALSTATE*);
-extern CURLcode ocset_curl_flags(OCstate*);
-extern OCerror ocset_user_password(OCstate*);
-extern OCerror ocset_proxy(OCstate*);
-extern OCerror ocset_ssl(OCstate*);
-extern void oc_curl_setup(OCstate* state);
-extern void oc_curl_debug(OCstate* state);
-extern void oc_curl_printerror(OCstate* state);
-#endif /*_CURLFUNCTION_H_*/
+extern OCerror ocset_curlopt(OCstate* state, int flag, void* value);
+
+struct OCCURLFLAG* occurlflagbyflag(int flag);
+struct OCCURLFLAG* occurlflagbyname(const char* name);
+
+extern OCerror ocset_flags_perfetch(OCstate*);
+extern OCerror ocset_flags_perlink(OCstate*);
+extern OCerror ocset_curlflag(OCstate*,int);
+extern OCerror ocset_curlstate(OCstate* state, int flag, void* value);
+extern void oc_curl_debug(OCstate* state);
+
+extern void oc_curl_printerror(OCstate* state);
+extern int ocrc_netrc_required(OCstate* state);
+extern void oc_curl_protocols(struct OCGLOBALSTATE*);
+
+/* From occurlflags.c */
+extern struct OCCURLFLAG* occurlflags(void);
+extern struct OCCURLFLAG* occurlflagbyname(const char*);
+extern struct OCCURLFLAG* occurlflagbyflag(int);
+extern char* occombinehostport(const OCURI* uri);
+#endif /*_CURLFUNCTION_H_*/
diff --git a/oc2/ocdata.c b/oc2/ocdata.c
index d5a78f5..e85dfb9 100644
--- a/oc2/ocdata.c
+++ b/oc2/ocdata.c
@@ -95,7 +95,7 @@ ocdata_ithfield(OCstate* state, OCdata* container, size_t index, OCdata** fieldp
template = container->template;
- if(!iscontainer(template->octype))
+ if(!ociscontainer(template->octype))
return OCTHROW(OC_EBADTYPE);
/* Validate index */
diff --git a/oc2/ocdebug.c b/oc2/ocdebug.c
index dceac41..5776921 100644
--- a/oc2/ocdebug.c
+++ b/oc2/ocdebug.c
@@ -16,7 +16,7 @@ OCerror
ocbreakpoint(OCerror err) {return err;}
OCerror
-octhrow(OCerror err)
+occatch(OCerror err)
{
if(err == 0) return err;
return ocbreakpoint(err);
@@ -27,7 +27,7 @@ int
xxdrerror(void)
{
oclog(OCLOGERR,"xdr failure");
- return OCTHROW(OC_EDATADDS);
+ return OCCATCH(OC_EDATADDS);
}
@@ -67,3 +67,16 @@ ocpanic(const char* fmt, ...)
fflush(stderr);
return 0;
}
+
+CURLcode
+ocreportcurlerror(OCstate* state, CURLcode cstat)
+{
+ if(cstat != CURLE_OK) {
+ fprintf(stderr,"CURL Error: %s",curl_easy_strerror(cstat));
+ if(state != NULL)
+ fprintf(stderr," ; %s",state->error.curlerrorbuf);
+ fprintf(stderr,"\n");
+ }
+ fflush(stderr);
+ return cstat;
+}
diff --git a/oc2/ocdebug.h b/oc2/ocdebug.h
index 0e4ceda..58e3098 100644
--- a/oc2/ocdebug.h
+++ b/oc2/ocdebug.h
@@ -4,17 +4,21 @@
#ifndef OCOCDBG_H
#define OCOCDBG_H
+#ifndef OCDEBUG
+#undef OCDEBUG
+#endif
+
#include "config.h"
#ifdef HAVE_STDARG_H
#include <stdarg.h>
#endif
+#include <curl/curl.h>
+
#include "oc.h"
+#include "ocinternal.h"
-#ifndef OCDEBUG
-#undef OCDEBUG
-#endif
/* OCCATCHERROR is used to detect errors as close
to their point of origin as possible. When
@@ -33,18 +37,18 @@
/* Need some syntactic trickery to make these macros work*/
#ifdef OCDEBUG
-#define OCDBG(l,msg) {oclog(OCLOGDBG,msg);}
-#define OCDBG1(l,msg,arg) {oclog(OCLOGDBG,msg,arg);}
-#define OCDBG2(l,msg,arg1,arg2) {oclog(OCLOGDBG,msg,arg1,arg2);}
-#define OCDBGTEXT(l,text) {oclogtext(OCLOGNOTE,text);} else {}
-#define OCDBGCODE(l,code) {code;}
+#define OCDBG(msg) {oclog(OCLOGDBG,msg);}
+#define OCDBG1(msg,arg) {oclog(OCLOGDBG,msg,arg);}
+#define OCDBG2(msg,arg1,arg2) {oclog(OCLOGDBG,msg,arg1,arg2);}
+#define OCDBGTEXT(text) {oclogtext(OCLOGNOTE,text);} else {}
+#define OCDBGCODE(code) {code;}
#else
-#define OCDBG(l,msg)
-#define OCDBG1(l,msg,arg)
-#define OCDBG2(l,msg,arg1,arg2)
-#define OCDBGTEXT(l,text)
-#define OCDBGCODE(l,code)
+#define OCDBG(msg)
+#define OCDBG1(msg,arg)
+#define OCDBG2(msg,arg1,arg2)
+#define OCDBGTEXT(text)
+#define OCDBGCODE(code)
#endif
@@ -75,22 +79,29 @@ extern void* ocmalloc(size_t size);
extern void ocfree(void*);
#define MEMCHECK(var,throw) {if((var)==NULL) return (throw);}
-#define MEMFAIL(var) MEMCHECK(var,OCTHROW(OC_ENOMEM))
-#define MEMGOTO(var,label) {if((var)==NULL) goto label;}
+#define MEMFAIL(var) MEMCHECK(var,OCCATCH(OC_ENOMEM))
+#define MEMGOTO(var,stat,label) {if((var)==NULL) {stat=OC_ENOMEM;goto label;}}
#ifdef OCCATCHERROR
extern OCerror ocbreakpoint(OCerror err);
-extern OCerror octhrow(OCerror err);
+extern OCerror occatch(OCerror err);
+extern CURLcode ocreportcurlerror(struct OCstate* state, CURLcode cstat);
/* Place breakpoint on ocbreakpoint to catch errors close to where they occur*/
-#define OCTHROW(e) octhrow(e)
-#define OCTHROWCHK(e) (void)octhrow(e)
+#define OCCATCH(e) occatch(e)
+#define OCCATCHCHK(e) (void)occatch(e)
#define OCGOTO(label) {ocbreakpoint(-1); goto label;}
+#define OCCURLERR(s,e) ocreportcurlerror(s,e)
+#define CURLERR(e) ocreportcurlerror(NULL,e)
#else
-#define OCTHROW(e) (e)
-#define OCTHROWCHK(e)
+#define OCCATCH(e) (e)
+#define OCCATCHCHK(e)
#define OCGOTO(label) goto label
+#define CURLERR(s,e) (e)
+#define OCCURLERR(s,e) (e)
+#define CURLERR(e) (e)
#endif
-
+#define OCTHROW(e) OCCATCH(e)
+#define OCTHROWCHK(e) OCCATCHCHK(e)
#endif /*OCOCDBG_H*/
diff --git a/oc2/ocdump.c b/oc2/ocdump.c
index ea43cf6..8dff1ef 100644
--- a/oc2/ocdump.c
+++ b/oc2/ocdump.c
@@ -418,36 +418,54 @@ ocdumpmemory(char* memory, size_t len, int xdrencoded, int level)
}
}
-static int
+static OCerror
ocreadfile(FILE* file, off_t datastart, char** memp, size_t* lenp)
{
- char* mem;
+ char* mem = NULL;
size_t len;
long red;
struct stat stats;
long pos;
+ OCerror stat = OC_NOERR;
pos = ftell(file);
fseek(file,0,SEEK_SET);
- fseek(file,(long)datastart,SEEK_SET);
+ if(fseek(file,(long)datastart,SEEK_SET) < 0) {
+ fprintf(stderr,"ocreadfile: fseek error.\n");
+ stat = OC_ERCFILE;
+ goto done;
+ }
- fstat(fileno(file),&stats);
+ if(fstat(fileno(file),&stats) < 0) {
+ fprintf(stderr,"ocreadfile: fstat error.\n");
+ stat = OC_ERCFILE;
+ goto done;
+ }
len = stats.st_size;
len -= datastart;
mem = (char*)calloc(len+1,1);
- if(mem == NULL) return 0;
+ if(mem == NULL) {stat = OC_ENOMEM; goto done;}
/* Read only the data part */
red = fread(mem,1,len,file);
if(red < len) {
fprintf(stderr,"ocreadfile: short file\n");
- return 0;
+ stat = OC_ERCFILE;
+ goto done;
}
- fseek(file,pos,SEEK_SET); /* leave it as we found it*/
- if(memp) *memp = mem;
- if(lenp) *lenp = len;
- return 1;
+ if(fseek(file,pos,SEEK_SET) < 0) {; /* leave it as we found it*/
+ fprintf(stderr,"ocreadfile: fseek error.\n");
+ stat = OC_ERCFILE;
+ goto done;
+ }
+ if(memp) {*memp = mem; mem = NULL;}
+ if(lenp) *lenp = len;
+
+done:
+ if(mem != NULL)
+ free(mem);
+ return OCTHROW(stat);
}
void
@@ -491,7 +509,7 @@ ocdumpdata(OCstate* state, OCdata* data, OCbytes* buffer, int frominstance)
snprintf(tmp,sizeof(tmp)," xdrsize=%ld",(unsigned long)data->xdrsize);
ocbytescat(buffer,tmp);
}
- if(iscontainer(template->octype)) {
+ if(ociscontainer(template->octype)) {
snprintf(tmp,sizeof(tmp)," ninstances=%d",(int)data->ninstances);
ocbytescat(buffer,tmp);
} else if(template->etype == OC_String || template->etype == OC_URL) {
@@ -647,14 +665,14 @@ ocdumpdatapath(OCstate* state, OCdata* data, OCbytes* buffer)
}
}
/* Add suffix to path */
- if(iscontainer(template->octype)) {
+ if(ociscontainer(template->octype)) {
/* add the container type, except distinguish record and sequence */
ocbytescat(buffer,":");
if(isrecord)
ocbytescat(buffer,"Record");
else
ocbytescat(buffer,octypetoddsstring(template->octype));
- } else if(isatomic(template->octype)) {
+ } else if(ocisatomic(template->octype)) {
/* add the atomic etype */
ocbytescat(buffer,":");
ocbytescat(buffer,octypetoddsstring(template->etype));
diff --git a/oc2/ochttp.c b/oc2/ochttp.c
index be7f91c..4254574 100644
--- a/oc2/ochttp.c
+++ b/oc2/ochttp.c
@@ -10,7 +10,6 @@
#include "ocinternal.h"
#include "ocdebug.h"
#include "ochttp.h"
-#include "ocrc.h"
static size_t WriteFileCallback(void*, size_t, size_t, void*);
static size_t WriteMemoryCallback(void*, size_t, size_t, void*);
@@ -27,7 +26,7 @@ ocfetchhttpcode(CURL* curl)
CURLcode cstat = CURLE_OK;
/* Extract the http code */
#ifdef HAVE_CURLINFO_RESPONSE_CODE
- cstat = curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&httpcode);
+ cstat = CURLERR(curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&httpcode));
#else
cstat = curl_easy_getinfo(curl,CURLINFO_HTTP_CODE,&httpcode);
#endif
@@ -44,28 +43,28 @@ ocfetchurl_file(CURL* curl, const char* url, FILE* stream,
struct Fetchdata fetchdata;
/* Set the URL */
- cstat = curl_easy_setopt(curl, CURLOPT_URL, (void*)url);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_URL, (void*)url));
if (cstat != CURLE_OK)
goto fail;
/* send all data to this function */
- cstat = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteFileCallback);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteFileCallback));
if (cstat != CURLE_OK)
goto fail;
/* we pass our file to the callback function */
- cstat = curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&fetchdata);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&fetchdata));
if (cstat != CURLE_OK)
goto fail;
/* One last thing; always try to get the last modified time */
- cstat = curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1));
if (cstat != CURLE_OK)
goto fail;
fetchdata.stream = stream;
fetchdata.size = 0;
- cstat = curl_easy_perform(curl);
+ cstat = CURLERR(curl_easy_perform(curl));
if (cstat != CURLE_OK)
goto fail;
@@ -97,8 +96,9 @@ ocfetchurl(CURL* curl, const char* url, OCbytes* buf, long* filetime,
CURLcode cstat = CURLE_OK;
size_t len;
long httpcode = 0;
+
/* Set the URL */
- cstat = curl_easy_setopt(curl, CURLOPT_URL, (void*)url);
+ cstat = CURLERR(CURLERR(curl_easy_setopt(curl, CURLOPT_URL, (void*)url)));
if (cstat != CURLE_OK)
goto fail;
@@ -106,35 +106,35 @@ ocfetchurl(CURL* curl, const char* url, OCbytes* buf, long* filetime,
if(creds != NULL && creds->password != NULL && creds->username != NULL) {
/* Set user and password */
#if defined (HAVE_CURLOPT_USERNAME) && defined (HAVE_CURLOPT_PASSWORD)
- cstat = curl_easy_setopt(curl, CURLOPT_USERNAME, creds->username);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_USERNAME, creds->username));
if (cstat != CURLE_OK)
goto fail;
- cstat = curl_easy_setopt(curl, CURLOPT_PASSWORD, creds->password);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_PASSWORD, creds->password));
if (cstat != CURLE_OK)
goto fail;
#else
- char tbuf[1024];
snprintf(tbuf,1023,"%s:%s",creds->username,creds->password);
- cstat = curl_easy_setopt(curl, CURLOPT_USERPWD, tbuf);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_USERPWD, tbuf));
if (cstat != CURLE_OK)
goto fail;
#endif
}
#endif
+
/* send all data to this function */
- cstat = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback));
if (cstat != CURLE_OK)
goto fail;
/* we pass our file to the callback function */
- cstat = curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buf);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buf));
if (cstat != CURLE_OK)
goto fail;
/* One last thing; always try to get the last modified time */
- cstat = curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1));
- cstat = curl_easy_perform(curl);
+ cstat = CURLERR(curl_easy_perform(curl));
if(cstat == CURLE_PARTIAL_FILE) {
/* Log it but otherwise ignore */
@@ -148,7 +148,7 @@ ocfetchurl(CURL* curl, const char* url, OCbytes* buf, long* filetime,
/* Get the last modified time */
if(filetime != NULL)
- cstat = curl_easy_getinfo(curl,CURLINFO_FILETIME,filetime);
+ cstat = CURLERR(curl_easy_getinfo(curl,CURLINFO_FILETIME,filetime));
if(cstat != CURLE_OK) goto fail;
/* Null terminate the buffer*/
@@ -270,7 +270,7 @@ occurlopen(CURL** curlp)
if (curl == NULL)
stat = OC_ECURL;
else {
- cstat = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1));
if (cstat != CURLE_OK)
stat = OC_ECURL;
}
@@ -293,22 +293,22 @@ ocfetchlastmodified(CURL* curl, char* url, long* filetime)
CURLcode cstat = CURLE_OK;
/* Set the URL */
- cstat = curl_easy_setopt(curl, CURLOPT_URL, (void*)url);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_URL, (void*)url));
if (cstat != CURLE_OK)
goto fail;
/* Ask for head */
- cstat = curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30); /* 30sec timeout*/
- cstat = curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 2);
- cstat = curl_easy_setopt(curl, CURLOPT_HEADER, 1);
- cstat = curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
- cstat = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
- cstat = curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1);
-
- cstat = curl_easy_perform(curl);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30)); /* 30sec timeout*/
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 2));
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_HEADER, 1));
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_NOBODY, 1));
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1));
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1));
+
+ cstat = CURLERR(curl_easy_perform(curl));
if(cstat != CURLE_OK) goto fail;
if(filetime != NULL)
- cstat = curl_easy_getinfo(curl,CURLINFO_FILETIME,filetime);
+ cstat = CURLERR(curl_easy_getinfo(curl,CURLINFO_FILETIME,filetime));
if(cstat != CURLE_OK) goto fail;
return OCTHROW(stat);
@@ -330,20 +330,21 @@ ocping(const char* url)
stat = occurlopen(&curl);
if(stat != OC_NOERR) return stat;
- /* use a very short timeout: 10 seconds */
- cstat = curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)10);
+ /* Use redirects */
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10L));
if (cstat != CURLE_OK)
goto done;
- /* Use redirects */
- cstat = curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10L);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L));
if (cstat != CURLE_OK)
goto done;
- cstat = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+
+ /* use a very short timeout: 10 seconds */
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)10));
if (cstat != CURLE_OK)
goto done;
/* fail on HTTP 400 code errors */
- cstat = curl_easy_setopt(curl, CURLOPT_FAILONERROR, (long)1);
+ cstat = CURLERR(curl_easy_setopt(curl, CURLOPT_FAILONERROR, (long)1));
if (cstat != CURLE_OK)
goto done;
@@ -353,7 +354,7 @@ ocping(const char* url)
if(stat == OC_NOERR) {
/* Don't trust curl to return an error when request gets 404 */
long http_code = 0;
- cstat = curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE, &http_code);
+ cstat = CURLERR(curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE, &http_code));
if (cstat != CURLE_OK)
goto done;
if(http_code >= 400) {
diff --git a/oc2/ochttp.h b/oc2/ochttp.h
index 5c75de8..af74dd4 100644
--- a/oc2/ochttp.h
+++ b/oc2/ochttp.h
@@ -4,6 +4,9 @@
#ifndef HTTP_H
#define HTTP_H 1
+extern int curlopen(CURL** curlp);
+extern void curlclose(CURL*);
+
extern OCerror ocfetchurl(CURL*, const char*, OCbytes*, long*, struct OCcredentials*);
extern OCerror ocfetchurl_file(CURL*, const char*, FILE*, off_t*, long*);
diff --git a/oc2/ocinternal.c b/oc2/ocinternal.c
index c23cd6c..08ab3bb 100644
--- a/oc2/ocinternal.c
+++ b/oc2/ocinternal.c
@@ -15,12 +15,14 @@
#include "ocinternal.h"
#include "ocdebug.h"
#include "occlientparams.h"
-#include "ocrc.h"
#include "occurlfunctions.h"
#include "ochttp.h"
#include "ocread.h"
#include "dapparselex.h"
+#define DATADDSFILE "datadds"
+
+#if 0
/* Note: TMPPATH must end in '/' */
#ifdef __CYGWIN__
#define TMPPATH1 "/cygdrive/c/temp/datadds"
@@ -32,21 +34,18 @@
#define TMPPATH1 "/tmp/datadds"
#define TMPPATH2 "./datadds"
#endif
+#endif
#define CLBRACE '{'
#define CRBRACE '}'
-
-/* Define default rc files and aliases*/
-static char* rcfilenames[4] = {".daprc",".dodsrc",".ocrc",NULL};
-
static OCerror ocextractddsinmemory(OCstate*,OCtree*,int);
static OCerror ocextractddsinfile(OCstate*,OCtree*,int);
static char* constraintescape(const char* url);
static OCerror createtempfile(OCstate*,OCtree*);
static int dataError(XXDR* xdrs, OCstate*);
-static OCerror ocsetcurlproperties(OCstate*);
+static OCerror ocset_curlproperties(OCstate*);
extern OCnode* makeunlimiteddimension(void);
@@ -70,35 +69,73 @@ ocinternalinitialize(void)
{
int stat = OC_NOERR;
+ if(sizeof(long) != sizeof(void*)) {
+ fprintf(stderr,"OC depends on the assumption that sizeof(long) == sizeof(void*)\n");
+ //OCASSERT(sizeof(long) == sizeof(void*));
+ }
+
if(!ocglobalstate.initialized) {
memset((void*)&ocglobalstate,0,sizeof(ocglobalstate));
ocglobalstate.initialized = 1;
}
- /* Capture $HOME */
+ /* Capture temp dir*/
{
+ char* tempdir;
char* p;
char* q;
- char* home = getenv("HOME");
char cwd[4096];
- if(ocglobalstate.home == NULL) {
#if defined(_WIN32) || defined(_WIN64)
- home = getenv("TEMP");
+ tempdir = getenv("TEMP");
#else
- home = "/tmp";
+ tempdir = "/tmp";
#endif
+ if(tempdir == NULL) {
+ fprintf(stderr,"Cannot find a temp dir; using ./\n");
+ tempdir = getcwd(cwd,sizeof(cwd));
+ if(tempdir == NULL || *tempdir == '\0') tempdir = ".";
}
- if(home == NULL) {
- home = getcwd(cwd,sizeof(cwd));
- if(home == NULL || *home == '\0') home = ".";
+ ocglobalstate.tempdir= (char*)malloc(strlen(tempdir) + 1);
+ for(p=tempdir,q=ocglobalstate.tempdir;*p;p++,q++) {
+ if((*p == '/' && *(p+1) == '/')
+ || (*p == '\\' && *(p+1) == '\\')) {p++;}
+ *q = *p;
}
+ *q = '\0';
+#if defined(_WIN32) || defined(_WIN64)
+#else
+ /* Canonicalize */
+ for(p=ocglobalstate.tempdir;*p;p++) {
+ if(*p == '\\') {*p = '/'; };
+ }
+ *q = '\0';
+#endif
+ }
+
+ /* Capture $HOME */
+ {
+ char* p;
+ char* q;
+ char* home = getenv("HOME");
- /* Convert '\' to '/' */
+ if(home == NULL) {
+ /* use tempdir */
+ home = ocglobalstate.tempdir;
+ }
ocglobalstate.home = (char*)malloc(strlen(home) + 1);
for(p=home,q=ocglobalstate.home;*p;p++,q++) {
- if(*p == '\\') {*q = '/'; } else {*q = *p;}
+ if((*p == '/' && *(p+1) == '/')
+ || (*p == '\\' && *(p+1) == '\\')) {p++;}
+ *q = *p;
}
*q = '\0';
+#if defined(_WIN32) || defined(_WIN64)
+#else
+ /* Canonicalize */
+ for(p=home;*p;p++) {
+ if(*p == '\\') {*p = '/'; };
+ }
+#endif
}
/* Compute some xdr related flags */
@@ -108,56 +145,10 @@ ocinternalinitialize(void)
oc_curl_protocols(&ocglobalstate); /* see what protocols are supported */
- /* compile the .dodsrc, if any */
- {
- char* path = NULL;
- char** alias;
- FILE* f = NULL;
- /* locate the configuration files: . first in '.', then $HOME */
- for(alias=rcfilenames;*alias;alias++) {
- size_t pathlen = strlen("./")+strlen(*alias)+1;
- path = (char*)malloc(pathlen);
- if(path == NULL) return OC_ENOMEM;
- if(!occopycat(path,pathlen,2,"./",*alias)) {
- if(path) free(path);
- return OC_EOVERRUN;
- }
- /* see if file is readable */
- f = fopen(path,"r");
- if(f != NULL) break;
- if(path != NULL) {free(path); path = NULL;} /* cleanup */
- }
- if(f == NULL) { /* try $HOME */
- OCASSERT(path == NULL);
- for(alias=rcfilenames;*alias;alias++) {
- size_t pathlen = strlen(ocglobalstate.home)+1+strlen(*alias)+1;
- path = (char*)malloc(pathlen);
- if(path == NULL) return OC_ENOMEM;
- if(!occopycat(path,pathlen,3,ocglobalstate.home,"/",*alias)) {
- if(path) free(path);
- return OC_EOVERRUN;
- }
- f = fopen(path,"r");
- if(f != NULL) break;
- if(path != NULL) {free(path); path=NULL;}
- }
- }
- if(f == NULL) {
- oclog(OCLOGDBG,"Cannot find runtime configuration file");
- } else {
- OCASSERT(path != NULL);
- fclose(f);
- if(ocdebug > 1)
- fprintf(stderr, "DODS RC file: %s\n", path);
- if(ocdodsrc_read(*alias,path) == 0)
- oclog(OCLOGERR, "Error parsing %s\n",path);
- }
- if(path != NULL) free(path);
- }
-
return OCTHROW(stat);
}
+
/**************************************************/
OCerror
ocopen(OCstate** statep, const char* url)
@@ -168,7 +159,7 @@ ocopen(OCstate** statep, const char* url)
CURL* curl = NULL; /* curl handle*/
if(!ocuriparse(url,&tmpurl)) {OCTHROWCHK(stat=OC_EBADURL); goto fail;}
-
+
stat = occurlopen(&curl);
if(stat != OC_NOERR) {OCTHROWCHK(stat); goto fail;}
@@ -187,11 +178,18 @@ ocopen(OCstate** statep, const char* url)
state->packet = ocbytesnew();
ocbytessetalloc(state->packet,DFALTPACKETSIZE); /*initial reasonable size*/
- /* set curl properties for this link */
- stat = ocsetcurlproperties(state);
+ /* capture curl properties for this link from rc file1*/
+ stat = ocset_curlproperties(state);
+ if(stat != OC_NOERR) goto fail;
+
+ /* Set the one-time curl flags */
+ if((stat=ocset_flags_perlink(state))!= OC_NOERR) goto fail;
+#if 1 /* temporarily make per-link */
+ if((stat=ocset_flags_perfetch(state))!= OC_NOERR) goto fail;
+#endif
if(statep) *statep = state;
- return OCTHROW(stat);
+ return OCTHROW(stat);
fail:
ocurifree(tmpurl);
@@ -207,7 +205,7 @@ ocfetch(OCstate* state, const char* constraint, OCdxd kind, OCflags flags,
OCtree* tree = NULL;
OCnode* root = NULL;
OCerror stat = OC_NOERR;
-
+
tree = (OCtree*)ocmalloc(sizeof(OCtree));
MEMCHECK(tree,OC_ENOMEM);
memset((void*)tree,0,sizeof(OCtree));
@@ -217,13 +215,10 @@ ocfetch(OCstate* state, const char* constraint, OCdxd kind, OCflags flags,
if(tree->constraint == NULL)
tree->constraint = nulldup(constraint);
- /* Set curl properties: pwd, flags, proxies, ssl */
- if((stat=ocset_user_password(state))!= OC_NOERR) goto fail;
- if((stat=ocset_curl_flags(state)) != OC_NOERR) goto fail;
- if((stat=ocset_proxy(state)) != OC_NOERR) goto fail;
- if((stat=ocset_ssl(state)) != OC_NOERR) goto fail;
- if(state->usercurl)
- state->usercurl((void*)state->curl,state->usercurldata);
+ /* Set per-fetch curl properties */
+#if 0 /* temporarily make per-link */
+ if((stat=ocset_flags_perfetch(state))!= OC_NOERR) goto fail;
+#endif
ocbytesclear(state->packet);
@@ -283,7 +278,7 @@ ocfetch(OCstate* state, const char* constraint, OCdxd kind, OCflags flags,
/* Check and report on an error return from the server */
if(stat == OC_EDAPSVC && state->error.code != NULL) {
oclog(OCLOGERR,"oc_open: server error retrieving url: code=%s message=\"%s\"",
- state->error.code,
+ state->error.code,
(state->error.message?state->error.message:""));
}
if(stat) {OCTHROWCHK(stat); goto fail;}
@@ -340,7 +335,7 @@ fprintf(stderr,"ocfetch.datadds.memory: datasize=%lu bod=%lu\n",
if(dataError(tree->data.xdrs,state)) {
stat = OC_EDATADDS;
oclog(OCLOGERR,"oc_open: server error retrieving url: code=%s message=\"%s\"",
- state->error.code,
+ state->error.code,
(state->error.message?state->error.message:""));
goto fail;
}
@@ -369,18 +364,26 @@ static OCerror
createtempfile(OCstate* state, OCtree* tree)
{
int stat = OC_NOERR;
- int fd = 0;
+ char* path = NULL;
char* name = NULL;
-
- stat = ocmktmp(TMPPATH1,&name, &fd);
- if(stat != OC_NOERR)
- stat = ocmktmp(TMPPATH2,&name,&fd);
+ int len;
+
+ len =
+ strlen(ocglobalstate.tempdir)
+ + 1 /* '/' */
+ + strlen(DATADDSFILE);
+ path = (char*)malloc(len+1);
+ if(path == NULL) return OC_ENOMEM;
+ occopycat(path,len,3,ocglobalstate.tempdir,"/",DATADDSFILE);
+ stat = ocmktmp(path,&name);
+ free(path);
if(stat != OC_NOERR) goto fail;
#ifdef OCDEBUG
- oclog(OCLOGNOTE,"oc_open: using tmp file: %s",name);
+ oclog(OCLOGNOTE,"oc_open: creating tmp file: %s",name);
#endif
tree->data.filename = name; /* remember our tmp file name */
- tree->data.file = fdopen(fd,"w+");
+ name = NULL;
+ tree->data.file = fopen(name,"w+");
if(tree->data.file == NULL) return OC_EOPEN;
/* unlink the temp file so it will automatically be reclaimed */
if(ocdebug == 0) unlink(tree->data.filename);
@@ -388,13 +391,12 @@ createtempfile(OCstate* state, OCtree* tree)
fail:
if(name != NULL) {
- oclog(OCLOGERR,"oc_open: attempt to create tmp file failed: %s",name);
- free(name);
+ oclog(OCLOGERR,"oc_open: attempt to create tmp file failed: %s",name);
+ free(name);
} else {
- oclog(OCLOGERR,"oc_open: attempt to create tmp file failed: NULL");
+ oclog(OCLOGERR,"oc_open: attempt to create tmp file failed: NULL");
}
-
- return stat;
+ return OCTHROW(stat);
}
void
@@ -416,17 +418,27 @@ occlose(OCstate* state)
ocfree(state->error.message);
ocfree(state->curlflags.useragent);
if(state->curlflags.cookiejar) {
- unlink(state->curlflags.cookiejar);
+#if 0
+ if(state->curlflags.createdflags & COOKIECREATED)
+ unlink(state->curlflags.cookiejar);
+#endif
ocfree(state->curlflags.cookiejar);
}
+ if(state->curlflags.netrc != NULL) {
+#if 0
+ if(state->curlflags.createdflags & NETRCCREATED)
+ unlink(state->curlflags.netrc);
+#endif
+ ocfree(state->curlflags.netrc);
+ }
ocfree(state->ssl.certificate);
ocfree(state->ssl.key);
ocfree(state->ssl.keypasswd);
ocfree(state->ssl.cainfo);
- ocfree(state->ssl.capath);
+ ocfree(state->ssl.capath);
ocfree(state->proxy.host);
- ocfree(state->creds.username);
- ocfree(state->creds.password);
+ ocfree(state->proxy.userpwd);
+ ocfree(state->creds.userpwd);
if(state->curl != NULL) occurlclose(state->curl);
ocfree(state);
}
@@ -504,8 +516,9 @@ fprintf(stderr,"missing bod: ddslen=%lu bod=%lu\n",
} else
tree->text = NULL;
/* reset the position of the tmp file*/
- fseek(tree->data.file,(long)tree->data.bod,SEEK_SET);
- if(tree->text == NULL) stat = OC_EDATADDS;
+ if(fseek(tree->data.file,(long)tree->data.bod,SEEK_SET) < 0
+ || tree->text == NULL)
+ stat = OC_EDATADDS;
return OCTHROW(stat);
}
@@ -555,31 +568,20 @@ ocupdatelastmodifieddata(OCstate* state)
if(status == OC_NOERR) {
state->datalastmodified = lastmodified;
}
- return status;
+ return OCTHROW(status);
}
/*
Set curl properties for link based on rc files etc.
*/
static OCerror
-ocsetcurlproperties(OCstate* state)
+ocset_curlproperties(OCstate* state)
{
- CURLcode cstat = CURLE_OK;
+ OCerror stat = OC_NOERR;
+
+ /* extract the relevant triples int state */
+ ocrc_process(state);
- /* process the triple store wrt to this state */
- if(ocdodsrc_process(state) != OC_NOERR) {
- oclog(OCLOGERR,"Malformed .opendaprc configuration file");
- goto fail;
- }
- if(state->creds.username == NULL && state->creds.password == NULL) {
- if(state->uri->user != NULL && state->uri->password != NULL) {
- /* this overrides .dodsrc */
- if(state->creds.password) free(state->creds.password);
- state->creds.password = nulldup(state->uri->password);
- if(state->creds.username) free(state->creds.username);
- state->creds.username = nulldup(state->uri->user);
- }
- }
if(state->curlflags.useragent == NULL) {
size_t len = strlen(DFALTUSERAGENT) + strlen(VERSION) + 1;
char* agent = (char*)malloc(len+1);
@@ -592,65 +594,79 @@ ocsetcurlproperties(OCstate* state)
/* Some servers (e.g. thredds and columbia) appear to require a place
to put cookies in order for some security functions to work
*/
- if(state->curlflags.cookiejar == NULL
- || *state->curlflags.cookiejar) {
-#if 1
- /* Apparently anything non-null will work */
- state->curlflags.cookiejar = strdup("");
-#else
+ if(state->curlflags.cookiejar != NULL
+ && strlen(state->curlflags.cookiejar) == 0) {
+ free(state->curlflags.cookiejar);
+ state->curlflags.cookiejar = NULL;
+ }
+
+ if(state->curlflags.cookiejar == NULL) {
/* If no cookie file was defined, define a default */
- char* tmp;
- int fd;
+ char tmp[OCPATHMAX+1];
int stat;
-
- tmp = (char*)malloc(strlen(ocglobalstate.home)
- +strlen("/")
- +strlen(OCDIR)
- +strlen("/")
- +1);
- if(tmp == NULL)
- return OC_ENOMEM;
- strcpy(tmp,ocglobalstate.home);
- strcat(tmp,"/");
- strcat(tmp,OCDIR);
- strcat(tmp,"/");
+ snprintf(tmp,sizeof(tmp)-1,"%s/%s/",ocglobalstate.tempdir,OCDIR);
+#ifdef _MSC_VER
+ stat = mkdir(tmp);
+#else
stat = mkdir(tmp,S_IRUSR | S_IWUSR | S_IXUSR);
+#endif
if(stat != 0 && errno != EEXIST) {
- fprintf(stderr,"Cannot create cookie file\n");
- return stat;
+ fprintf(stderr,"Cannot create cookie directory\n");
+ goto fail;
}
errno = 0;
- /* Create the actual cookie file */
- stat = ocmktmp(tmp,&state->curlflags.cookiejar,&fd);
- close(fd);
+ /* Create the unique cookie file name */
+ stat = ocmktmp(tmp,&state->curlflags.cookiejar);
+ state->curlflags.createdflags |= COOKIECREATED;
+ if(stat != OC_NOERR && errno != EEXIST) {
+ fprintf(stderr,"Cannot create cookie file\n");
+ goto fail;
+ }
+ errno = 0;
+ }
+ OCASSERT(state->curlflags.cookiejar != NULL);
+
+ /* Make sure the cookie jar exists and can be read and written */
+ {
+ FILE* f = NULL;
+ char* fname = state->curlflags.cookiejar;
+ /* See if the file exists already */
+ f = fopen(fname,"r");
+ if(f == NULL) {
+ /* Ok, create it */
+ f = fopen(fname,"w+");
+ if(f == NULL) {
+ fprintf(stderr,"Cookie file cannot be read and written: %s\n",fname);
+ {stat = OC_EPERM; goto fail;}
+ }
+ } else { /* test if file can be written */
+ fclose(f);
+ f = fopen(fname,"r+");
+ if(f == NULL) {
+ fprintf(stderr,"Cookie file is cannot be written: %s\n",fname);
+ {stat = OC_EPERM; goto fail;}
+ }
+ }
+ if(f != NULL) fclose(f);
+ }
#if 0
- fd = creat(tmp,S_IRUSR | S_IWUSR);
- if(fd < 0) {
- fprintf(stderr,"Cannot create cookie file\n");
- return OC_EPERM;
- }else
- close(fd);
-#endif
-#endif
+ /* Create a netrc file if specified and required,
+ where required => >1 NETRC triples exist */
+ if(ocrc_netrc_required(state)) {
+ /* WARNING: it appears that a user+pwd was specified specifically, then
+ the netrc file will be completely disabled. */
+ if(state->creds.userpwd != NULL) {
+ oclog(OCLOGWARN,"The rc file specifies both netrc and user+pwd; this will cause curl to ignore the netrc file");
+ }
+ stat = oc_build_netrc(state);
}
- return OC_NOERR;
+#endif
-fail:
- if(cstat != CURLE_OK)
- oclog(OCLOGERR, "curl error: %s", curl_easy_strerror(cstat));
- return OC_ECURL;
-}
+ return stat;
-OCerror
-ocsetuseragent(OCstate* state, const char* agent)
-{
- if(state->curlflags.useragent != NULL)
- free(state->curlflags.useragent);
- state->curlflags.useragent = strdup(agent);
- if(state->curlflags.useragent == NULL)
- return OC_ENOMEM;
- return OC_NOERR;
+fail:
+ return OCTHROW(stat);
}
static char* ERROR_TAG = "Error ";
@@ -682,7 +698,7 @@ dataError(XXDR* xdrs, OCstate* state)
depth--;
if(depth == 0) {i++; break;}
}
- }
+ }
errmsg = (char*)malloc((size_t)i+1);
if(errmsg == NULL) {errfound = 1; goto done;}
xxdr_setpos(xdrs,ckp);
@@ -697,3 +713,37 @@ done:
xxdr_setpos(xdrs,ckp);
return errfound;
}
+
+/**************************************************/
+/* Curl option functions */
+/*
+Note that if we set the option in curlflags,
+then we need to also invoke the ocset_curlopt
+to update the curl flags in libcurl.
+*/
+
+OCerror
+ocset_useragent(OCstate* state, const char* agent)
+{
+ OCerror stat = OC_NOERR;
+ if(state->curlflags.useragent != NULL)
+ free(state->curlflags.useragent);
+ state->curlflags.useragent = strdup(agent);
+ if(state->curlflags.useragent == NULL)
+ return OCTHROW(OC_ENOMEM);
+ stat = ocset_curlflag(state,CURLOPT_USERAGENT);
+ return stat;
+}
+
+OCerror
+ocset_netrc(OCstate* state, const char* path)
+{
+ OCerror stat = OC_NOERR;
+ if(state->curlflags.netrc != NULL)
+ free(state->curlflags.netrc);
+ state->curlflags.netrc = strdup(path);
+ if(state->curlflags.netrc == NULL)
+ return OCTHROW(OC_ENOMEM);
+ stat = ocset_curlflag(state,CURLOPT_NETRC);
+ return stat;
+}
diff --git a/oc2/ocinternal.h b/oc2/ocinternal.h
index e51e736..7f72e78 100644
--- a/oc2/ocinternal.h
+++ b/oc2/ocinternal.h
@@ -11,6 +11,12 @@
#include <malloc.h>
#endif
+/* Required for getcwd, other functions. */
+#ifdef _MSC_VER
+#include <direct.h>
+#define getcwd _getcwd
+#endif
+
#ifdef _AIX
#include <netinet/in.h>
#endif
@@ -38,8 +44,24 @@
#include "ocbytes.h"
#include "ocuri.h"
+#ifndef HAVE_STRNDUP
+/* Not all systems have strndup, so provide one*/
+#define strndup ocstrndup
+#endif
+
#define OCCACHEPOS
+#ifndef HAVE_STRNDUP
+/* Not all systems have strndup, so provide one*/
+#define strndup ocstrndup
+#endif
+
+#define OCPATHMAX 8192
+
+#ifndef nullfree
+#define nullfree(x) {if((x)!=NULL) free(x);}
+#endif
+
/* Forwards */
typedef struct OCstate OCstate;
typedef struct OCnode OCnode;
@@ -55,6 +77,12 @@ struct OCTriplestore;
/* Define a magic number to mark externally visible oc objects */
#define OCMAGIC ((unsigned int)0x0c0c0c0c) /*clever, huh*/
+/* Max rc file line size */
+#define MAXRCLINESIZE 4096
+
+/* Max number of triples from an rc file */
+#define MAXRCLINES 4096
+
/* Define a struct that all oc objects must start with */
/* OCheader must be defined here to make it available in other headers */
typedef struct OCheader {
@@ -87,7 +115,7 @@ typedef struct OCheader {
#define nullstring(s) (s==NULL?"(null)":s)
#define PATHSEPARATOR "."
-#define OCDIR ".oc"
+#define OCDIR "oc"
/* Define infinity for memory size */
#if SIZEOF_SIZE_T == 4
@@ -108,6 +136,25 @@ typedef struct OCheader {
/* Default user agent string (will have version appended)*/
#define DFALTUSERAGENT "oc"
+/* Hold known curl flags */
+
+enum OCCURLFLAGTYPE {CF_UNKNOWN=0,CF_OTHER=1,CF_STRING=2,CF_LONG=3};
+struct OCCURLFLAG {
+ const char* name;
+ int flag;
+ int value;
+ enum OCCURLFLAGTYPE type;
+};
+
+struct OCTriplestore {
+ int ntriples;
+ struct OCTriple {
+ char host[MAXRCLINESIZE]; /* includes port if specified */
+ char key[MAXRCLINESIZE];
+ char value[MAXRCLINESIZE];
+ } triples[MAXRCLINES];
+};
+
/* Collect global state info in one place */
extern struct OCGLOBALSTATE {
int initialized;
@@ -115,8 +162,14 @@ extern struct OCGLOBALSTATE {
int proto_file;
int proto_https;
} curl;
- struct OCTriplestore* ocdodsrc; /* the .dodsrc triple store */
+ char* tempdir; /* track a usable temp dir */
char* home; /* track $HOME for use in creating $HOME/.oc dir */
+ struct {
+ int ignore; /* if 1, then do not use any rc file */
+ int loaded;
+ struct OCTriplestore ocrc; /* the rc file triple store fields*/
+ char* rcfile; /* specified rcfile; overrides anything else */
+ } rc;
} ocglobalstate;
/*! Specifies the OCstate = non-opaque version of OClink */
@@ -129,39 +182,44 @@ struct OCstate {
char* code;
char* message;
long httpcode;
- char curlerrorbuf[CURL_ERROR_SIZE]; /* to get curl error message */
+ char curlerrorbuf[CURL_ERROR_SIZE]; /* CURLOPT_ERRORBUFFER*/
} error;
CURL* curl; /* curl handle*/
char curlerror[CURL_ERROR_SIZE];
struct OCcurlflags {
- int proto_file;
- int proto_https;
- int compress;
- int verbose;
- int timeout;
- int followlocation;
- int maxredirs;
- char* useragent;
- char* cookiejar;
+ int proto_file; /* Is file: supported? */
+ int proto_https; /* is https: supported? */
+ int compress; /*CURLOPT_ENCODING*/
+ int verbose; /*CURLOPT_ENCODING*/
+ int timeout; /*CURLOPT_TIMEOUT*/
+ int maxredirs; /*CURLOPT_MAXREDIRS*/
+ char* useragent; /*CURLOPT_USERAGENT*/
+ /* track which of these are created by oc */
+#define COOKIECREATED 1
+#define NETRCCREATED 2
+ int createdflags;
+ char* cookiejar; /*CURLOPT_COOKIEJAR,CURLOPT_COOKIEFILE*/
+ char* netrc; /*CURLOPT_NETRC,CURLOPT_NETRC_FILE*/
} curlflags;
struct OCSSL {
- int validate;
- char* certificate;
- char* key;
- char* keypasswd;
- char* cainfo; /* certificate authority */
- char* capath;
- int verifypeer;
+ int verifypeer; /* CURLOPT_SSL_VERIFYPEER;
+ do not do this when cert might be self-signed
+ or temporarily incorrect */
+ int verifyhost; /* CURLOPT_SSL_VERIFYHOST; for client-side verification */
+ char* certificate; /*CURLOPT_SSLCERT*/
+ char* key; /*CURLOPT_SSLKEY*/
+ char* keypasswd; /*CURLOPT_SSLKEYPASSWD*/
+ char* cainfo; /* CURLOPT_CAINFO; certificate authority */
+ char* capath; /*CURLOPT_CAPATH*/
} ssl;
struct OCproxy {
- char *host;
- int port;
+ char *host; /*CURLOPT_PROXY*/
+ int port; /*CURLOPT_PROXYPORT*/
+ char* userpwd; /*CURLOPT_PROXYUSERPWD*/
} proxy;
struct OCcredentials {
- char *username;
- char *password;
+ char *userpwd; /*CURLOPT_USERPWD*/
} creds;
- oc_curl_callback* usercurl;
void* usercurldata;
long ddslastmodified;
long datalastmodified;
@@ -206,11 +264,18 @@ extern void occlose(OCstate* state);
extern OCerror ocfetch(OCstate*, const char*, OCdxd, OCflags, OCnode**);
extern int oc_network_order;
extern int oc_invert_xdr_double;
-
extern OCerror ocinternalinitialize(void);
extern OCerror ocupdatelastmodifieddata(OCstate* state);
-extern OCerror ocsetuseragent(OCstate* state, const char* agent);
+extern OCerror ocset_useragent(OCstate* state, const char* agent);
+extern OCerror ocset_netrc(OCstate* state, const char* path);
+
+/* From ocrc.c */
+extern OCerror ocrc_load(); /* find, read, and compile */
+extern OCerror ocrc_process(OCstate* state); /* extract relevant triples */
+extern char* ocrc_lookup(char* key, char* url);
+extern struct OCTriple* ocrc_triple_iterate(char* key, char* url, struct OCTriple* prevp);
+extern int ocparseproxy(OCstate* state, char* v);
#endif /*COMMON_H*/
diff --git a/oc2/oclist.c b/oc2/oclist.c
index 80112ea..821c558 100644
--- a/oc2/oclist.c
+++ b/oc2/oclist.c
@@ -147,9 +147,11 @@ void**
oclistdup(OClist* l)
{
void** result = (void**)malloc(sizeof(void*)*(l->length+1));
- if(result != NULL && l != NULL && oclistlength(l) != 0)
- memcpy((void*)result,(void*)l->content,sizeof(void*)*l->length);
- result[l->length] = (void*)0;
+ if(result != NULL) {
+ if(l != NULL && oclistlength(l) != 0)
+ memcpy((void*)result,(void*)l->content,sizeof(void*)*l->length);
+ result[l->length] = (void*)0;
+ }
return result;
}
diff --git a/oc2/ocrc.c b/oc2/ocrc.c
index 2fbc9c2..9044906 100644
--- a/oc2/ocrc.c
+++ b/oc2/ocrc.c
@@ -13,23 +13,21 @@
#include "ocdebug.h"
#include "oclog.h"
-#include "ocrc.h"
-
#define RTAG ']'
#define LTAG '['
#define TRIMCHARS " \t\r\n"
-#define HTTPPREFIXDEPRECATED "CURL."
-#define HTTPPREFIX "HTTP."
+static OCerror rc_search(const char* prefix, const char* rcfile, char** pathp);
-static int parseproxy(OCstate* state, char* v);
static int rcreadline(FILE* f, char* more, int morelen);
static void rctrim(char* text);
+static char* combinecredentials(const char* user, const char* pwd);
-static void ocdodsrcdump(char* msg, struct OCTriple*, int ntriples);
+static void storedump(char* msg, struct OCTriple*, int ntriples);
-static char* curllookup(char* suffix,char* url);
+/* Define default rc files and aliases, also defines search order*/
+static char* rcfilenames[] = {".ocrc",".dodsrc",NULL};
/* The Username and password are in the URL if the URL is of the form:
* http://<name>:<passwd>@<host>/....
@@ -37,69 +35,69 @@ static char* curllookup(char* suffix,char* url);
static int
occredentials_in_url(const char *url)
{
- char *pos = strstr(url, "http://");
- if (!pos)
- return 0;
- pos += 7;
- if (strchr(pos, '@') && strchr(pos, ':'))
- return 1;
-
- return 0;
+ char *pos = strstr(url, "http://");
+ if (!pos)
+ return 0;
+ pos += 7;
+ if (strchr(pos, '@') && strchr(pos, ':'))
+ return 1;
+ return 0;
}
static OCerror
-ocextract_credentials(const char *url, char **name, char **pw, char **result_url)
+ocextract_credentials(const char *url, char **userpwd, char **result_url)
{
- char *pos;
- char *end;
- char *middle;
- size_t up_len = 0;
- size_t mid_len = 0;
- size_t midpas_len = 0;
- size_t url_len = 0;
-
- if (strchr(url, '@')) {
- pos = strstr(url, "http://");
- if (pos)
- pos += 7;
- middle = strchr(pos, ':');
- mid_len = middle - pos;
- *name = malloc(sizeof(char) * (mid_len + 1));
- strncpy(*name, pos, mid_len);
- (*name)[mid_len] = '\0';
-
- if (middle)
- middle += 1;
-
- end = strchr(middle, '@');
- midpas_len = end - middle;
- *pw = malloc(sizeof(char) * (midpas_len + 1));
- strncpy(*pw, middle, midpas_len);
- (*pw)[midpas_len] = '\0';
-
- up_len = end - pos;
- url_len = strlen(url) - up_len;
-
- *result_url = malloc(sizeof(char) * (url_len + 1));
- if(*result_url == NULL)
- return OC_ENOMEM;
-
- strncpy(*result_url, url, (size_t)(pos - url));
- strncpy(*result_url + (pos - url), end + 1, url_len - (pos - url));
+ OCURI* parsed = NULL;
+ if(!ocuriparse(url,&parsed))
+ return OCTHROW(OC_EBADURL);
+ if(parsed->userpwd == NULL) {
+ ocurifree(parsed);
+ return OCTHROW(OC_EBADURL);
+ }
+ if(userpwd) *userpwd = strdup(parsed->userpwd);
+ ocurifree(parsed);
+ return OC_NOERR;
+}
-#if 0
- fprintf(stderr, "URL without username and password: %s:%d\n", sURL, url_len );
- fprintf(stderr, "URL username and password: %s:%d\n", sUP, up_len);
- fprintf(stderr, "URL username: %s:%d\n", sUser, mid_len);
- fprintf(stderr, "URL password: %s:%d\n", sPassword, midpas_len);
-#endif
- (*result_url)[url_len] = '\0';
+char*
+occombinehostport(const OCURI* uri)
+{
+ char* hp;
+ int len = 0;
- return OC_NOERR;
- }
- else {
- return OC_EIO;
- }
+ if(uri->host == NULL)
+ return NULL;
+ else
+ len += strlen(uri->host);
+ if(uri->port != NULL)
+ len += strlen(uri->port);
+ hp = (char*)malloc(len+1);
+ if(hp == NULL)
+ return NULL;
+ if(uri->port == NULL)
+ occopycat(hp,len+1,1,uri->host);
+ else
+ occopycat(hp,len+1,3,uri->host,":",uri->port);
+ return hp;
+}
+
+static char*
+combinecredentials(const char* user, const char* pwd)
+{
+ int userPassSize;
+ char *userPassword;
+
+ if(user == NULL) user = "";
+ if(pwd == NULL) pwd = "";
+
+ userPassSize = strlen(user) + strlen(pwd) + 2;
+ userPassword = malloc(sizeof(char) * userPassSize);
+ if (!userPassword) {
+ oclog(OCLOGERR,"Out of Memory\n");
+ return NULL;
+ }
+ occopycat(userPassword,userPassSize-1,3,user,":",pwd);
+ return userPassword;
}
static int
@@ -109,10 +107,10 @@ rcreadline(FILE* f, char* more, int morelen)
int c = getc(f);
if(c < 0) return 0;
for(;;) {
- if(i < morelen) /* ignore excess characters */
- more[i++]=c;
- c = getc(f);
- if(c < 0) break; /* eof */
+ if(i < morelen) /* ignore excess characters */
+ more[i++]=c;
+ c = getc(f);
+ if(c < 0) break; /* eof */
if(c == '\n') break; /* eol */
}
/* null terminate more */
@@ -120,7 +118,6 @@ rcreadline(FILE* f, char* more, int morelen)
return 1;
}
-
/* Trim TRIMCHARS from both ends of text; */
static void
rctrim(char* text)
@@ -132,31 +129,30 @@ rctrim(char* text)
for(;*p;p++) {
if(strchr(TRIMCHARS,*p) == NULL) break; /* hit non-trim char */
}
- strncpy(text,p,len);
+ memmove(text,p,strlen(p)+1);
len = strlen(text);
/* locate last non-trimchar */
if(len > 0) {
- for(i=(len-1);i>=0;i--) {
+ for(i=(len-1);i>=0;i--) {
if(strchr(TRIMCHARS,text[i]) == NULL) {
- text[i+1] = '\0'; /* elide trailing trimchars */
- break;
- }
- }
+ text[i+1] = '\0'; /* elide trailing trimchars */
+ break;
+ }
+ }
}
}
-static int
-parseproxy(OCstate* state, char* v)
+int
+ocparseproxy(OCstate* state, char* v)
{
+ /* Do not free these; they are pointers into v; free v instead */
char *host_pos = NULL;
char *port_pos = NULL;
-
- if(strlen(v) == 0) return OC_NOERR; /* nothing there*/
+ if(v == NULL || strlen(v) == 0)
+ return OC_NOERR; /* nothing there*/
if (occredentials_in_url(v)) {
char *result_url = NULL;
- ocextract_credentials(v, &state->creds.username,
- &state->creds.password,
- &result_url);
+ ocextract_credentials(v, &state->proxy.userpwd, &result_url);
v = result_url;
}
/* allocating a bit more than likely needed ... */
@@ -164,7 +160,7 @@ parseproxy(OCstate* state, char* v)
if (host_pos)
host_pos += strlen("http://");
else
- host_pos = v;
+ host_pos = v;
port_pos = strchr(host_pos, ':');
if (port_pos) {
size_t host_len;
@@ -173,22 +169,18 @@ parseproxy(OCstate* state, char* v)
*port_sep = '\0';
host_len = strlen(host_pos);
state->proxy.host = malloc(sizeof(char) * host_len + 1);
- if(state->proxy.host == NULL)
- return OC_ENOMEM;
-
+ if (state->proxy.host == NULL)
+ return OCTHROW(OC_ENOMEM);
strncpy(state->proxy.host, host_pos, host_len);
state->proxy.host[host_len] = '\0';
-
state->proxy.port = atoi(port_pos);
} else {
size_t host_len = strlen(host_pos);
state->proxy.host = malloc(sizeof(char) * host_len + 1);
- if(state->proxy.host == NULL)
- return OC_ENOMEM;
-
+ if (state->proxy.host == NULL)
+ return OCTHROW(OC_ENOMEM);
strncpy(state->proxy.host, host_pos, host_len);
state->proxy.host[host_len] = '\0';
-
state->proxy.port = 80;
}
#if 0
@@ -196,22 +188,21 @@ parseproxy(OCstate* state, char* v)
state->proxy.port = atoi(v);
s_len = strlen(v);
state->proxy.user = malloc(sizeof(char) * s_len + 1);
- if(state->proxy.user == NULL)
+ if (state->proxy.user == NULL)
return OC_ENOMEM;
strncpy(state->proxy.user, v, s_len);
state->proxy.user[s_len] = '\0';
p_len = strlen(v);
state->proxy.password = malloc(sizeof(char) * p_len + 1);
- if(state->proxy.password == NULL)
- return OC_ENOMEM;
+ if (state->proxy.password == NULL)
+ return OCTHROW(OC_ENOMEM);
strncpy(state->proxy.password, v, p_len);
state->proxy.password[p_len] = '\0';
#endif /*0*/
if (ocdebug > 1) {
oclog(OCLOGNOTE,"host name: %s", state->proxy.host);
- oclog(OCLOGNOTE,"user name: %s", state->creds.username);
#ifdef INSECURE
- oclog(OCLOGNOTE,"password: %s", state->creds.password);
+ oclog(OCLOGNOTE,"user+pwd: %s", state->proxy.userpwd);
#endif
oclog(OCLOGNOTE,"port number: %d", state->proxy.port);
}
@@ -221,344 +212,530 @@ parseproxy(OCstate* state, char* v)
/* insertion sort the triplestore based on url */
static void
-sorttriplestore(void)
+sorttriplestore(struct OCTriplestore* store)
{
int i, nsorted;
struct OCTriple* sorted = NULL;
- struct OCTriplestore* ocdodsrc = ocglobalstate.ocdodsrc;
- if(ocdodsrc == NULL) return; /* nothing to sort */
- if(ocdodsrc->ntriples <= 1) return; /* nothing to sort */
+ if(store == NULL) return; /* nothing to sort */
+ if(store->ntriples <= 1) return; /* nothing to sort */
if(ocdebug > 2)
- ocdodsrcdump("initial:",ocdodsrc->triples,ocdodsrc->ntriples);
+ storedump("initial:",store->triples,store->ntriples);
- sorted = (struct OCTriple*)malloc(sizeof(struct OCTriple)*ocdodsrc->ntriples);
+ sorted = (struct OCTriple*)malloc(sizeof(struct OCTriple)*store->ntriples);
if(sorted == NULL) {
oclog(OCLOGERR,"sorttriplestore: out of memory");
return;
}
nsorted = 0;
- while(nsorted < ocdodsrc->ntriples) {
- int largest;
- /* locate first non killed entry */
- for(largest=0;largest<ocdodsrc->ntriples;largest++) {
- if(ocdodsrc->triples[largest].key[0] != '\0') break;
- }
- OCASSERT(ocdodsrc->triples[largest].key[0] != '\0');
- for(i=0;i<ocdodsrc->ntriples;i++) {
- if(ocdodsrc->triples[i].key[0] != '\0') { /* avoid empty slots */
- int lexorder = strcmp(ocdodsrc->triples[i].url,ocdodsrc->triples[largest].url);
- int leni = strlen(ocdodsrc->triples[i].url);
- int lenlarge = strlen(ocdodsrc->triples[largest].url);
- /* this defines the ordering */
- if(leni == 0 && lenlarge == 0) continue; /* if no urls, then leave in order */
- if(leni != 0 && lenlarge == 0) largest = i;
- else if(lexorder > 0) largest = i;
- }
- }
- /* Move the largest entry */
- OCASSERT(ocdodsrc->triples[largest].key[0] != 0);
- sorted[nsorted] = ocdodsrc->triples[largest];
- ocdodsrc->triples[largest].key[0] = '\0'; /* kill entry */
- nsorted++;
+ while(nsorted < store->ntriples) {
+ int largest;
+ /* locate first non killed entry */
+ for(largest=0;largest<store->ntriples;largest++) {
+ if(store->triples[largest].key[0] != '\0') break;
+ }
+ OCASSERT(store->triples[largest].key[0] != '\0');
+ for(i=0;i<store->ntriples;i++) {
+ if(store->triples[i].key[0] != '\0') { /* avoid empty slots */
+ int lexorder = strcmp(store->triples[i].host,store->triples[largest].host);
+ int leni = strlen(store->triples[i].host);
+ int lenlarge = strlen(store->triples[largest].host);
+ /* this defines the ordering */
+ if(leni == 0 && lenlarge == 0) continue; /* if no urls, then leave in order */
+ if(leni != 0 && lenlarge == 0) largest = i;
+ else if(lexorder > 0) largest = i;
+ }
+ }
+ /* Move the largest entry */
+ OCASSERT(store->triples[largest].key[0] != 0);
+ sorted[nsorted] = store->triples[largest];
+ store->triples[largest].key[0] = '\0'; /* kill entry */
+ nsorted++;
if(ocdebug > 2)
- ocdodsrcdump("pass:",sorted,nsorted);
- }
+ storedump("pass:",sorted,nsorted);
+ }
- memcpy((void*)ocdodsrc->triples,(void*)sorted,sizeof(struct OCTriple)*nsorted);
+ memcpy((void*)store->triples,(void*)sorted,sizeof(struct OCTriple)*nsorted);
free(sorted);
- if(ocdebug > 0)
- ocdodsrcdump("final .dodsrc order:",ocdodsrc->triples,ocdodsrc->ntriples);
+ if(ocdebug > 1)
+ storedump("final .rc order:",store->triples,store->ntriples);
}
/* Create a triple store from a file */
-int
-ocdodsrc_read(char* basename, char* path)
+static int
+ocrc_compile(const char* path)
{
- char line0[MAXRCLINESIZE];
+ char line0[MAXRCLINESIZE+1];
FILE *in_file = NULL;
int linecount = 0;
- struct OCTriplestore* ocdodsrc = ocglobalstate.ocdodsrc;
+ struct OCTriplestore* ocrc = &ocglobalstate.rc.ocrc;
- if(ocdodsrc == NULL) {
- ocdodsrc = (struct OCTriplestore*)malloc(sizeof(struct OCTriplestore));
- if(ocdodsrc == NULL) {
- oclog(OCLOGERR,"ocdodsrc_read: out of memory");
- return 0;
- }
- ocglobalstate.ocdodsrc = ocdodsrc;
- }
- ocdodsrc->ntriples = 0;
+ ocrc->ntriples = 0; /* reset; nothing to free */
in_file = fopen(path, "r"); /* Open the file to read it */
if (in_file == NULL) {
- oclog(OCLOGERR, "Could not open configuration file: %s",basename);
- return 0;
+ oclog(OCLOGERR, "Could not open configuration file: %s",path);
+ return OC_EPERM;
}
for(;;) {
- char *line,*key,*value;
- int c;
+ char *line,*key,*value;
+ int c;
if(!rcreadline(in_file,line0,sizeof(line0))) break;
- linecount++;
- if(linecount >= MAXRCLINES) {
- oclog(OCLOGERR, ".dodsrc has too many lines");
- return 0;
- }
- line = line0;
- /* check for comment */
- c = line[0];
+ linecount++;
+ if(linecount >= MAXRCLINES) {
+ oclog(OCLOGERR, ".rc has too many lines");
+ return 0;
+ }
+ line = line0;
+ /* check for comment */
+ c = line[0];
if (c == '#') continue;
- rctrim(line); /* trim leading and trailing blanks */
- if(strlen(line) >= MAXRCLINESIZE) {
- oclog(OCLOGERR, "%s line too long: %s",basename,line0);
- return 0;
- }
+ rctrim(line); /* trim leading and trailing blanks */
+ if(strlen(line) == 0) continue;
+ if(strlen(line) >= MAXRCLINESIZE) {
+ oclog(OCLOGERR, "%s line too long: %s",path,line0);
+ return 0;
+ }
/* setup */
- ocdodsrc->triples[ocdodsrc->ntriples].url[0] = '\0';
- ocdodsrc->triples[ocdodsrc->ntriples].key[0] = '\0';
- ocdodsrc->triples[ocdodsrc->ntriples].value[0] = '\0';
- if(line[0] == LTAG) {
- char* url = ++line;
- char* rtag = strchr(line,RTAG);
- if(rtag == NULL) {
- oclog(OCLOGERR, "Malformed [url] in %s entry: %s",basename,line);
+ ocrc->triples[ocrc->ntriples].host[0] = '\0';
+ ocrc->triples[ocrc->ntriples].key[0] = '\0';
+ ocrc->triples[ocrc->ntriples].value[0] = '\0';
+ if(line[0] == LTAG) {
+ OCURI* uri;
+ char* url = ++line;
+ char* rtag = strchr(line,RTAG);
+ if(rtag == NULL) {
+ oclog(OCLOGERR, "Malformed [url] in %s entry: %s",path,line);
+ continue;
+ }
+ line = rtag + 1;
+ *rtag = '\0';
+ /* compile the url and pull out the host */
+ if(!ocuriparse(url,&uri)) {
+ oclog(OCLOGERR, "Malformed [url] in %s entry: %s",path,line);
continue;
- }
- line = rtag + 1;
- *rtag = '\0';
- /* save the url */
- strncpy(ocdodsrc->triples[ocdodsrc->ntriples].url,url,MAXRCLINESIZE);
- rctrim(ocdodsrc->triples[ocdodsrc->ntriples].url);
- }
- /* split off key and value */
- key=line;
- value = strchr(line, '=');
- if(value == NULL)
- value = line + strlen(line);
- else {
- *value = '\0';
- value++;
- }
- strncpy(ocdodsrc->triples[ocdodsrc->ntriples].key,key,MAXRCLINESIZE);
- if(*value == '\0')
- strcpy(ocdodsrc->triples[ocdodsrc->ntriples].value,"1");/*dfalt*/
- else
- strncpy(ocdodsrc->triples[ocdodsrc->ntriples].value,value,MAXRCLINESIZE);
- rctrim( ocdodsrc->triples[ocdodsrc->ntriples].key);
- rctrim( ocdodsrc->triples[ocdodsrc->ntriples].value);
- ocdodsrc->ntriples++;
+ }
+ strncpy(ocrc->triples[ocrc->ntriples].host,uri->host,MAXRCLINESIZE-1);
+ if(uri->port != NULL) {
+ strncat(ocrc->triples[ocrc->ntriples].host,":",MAXRCLINESIZE-1);
+ strncat(ocrc->triples[ocrc->ntriples].host,uri->port,MAXRCLINESIZE-1);
+ }
+ ocurifree(uri);
+ }
+ /* split off key and value */
+ key=line;
+ value = strchr(line, '=');
+ if(value == NULL)
+ value = line + strlen(line);
+ else {
+ *value = '\0';
+ value++;
+ }
+ strncpy(ocrc->triples[ocrc->ntriples].key,key,MAXRCLINESIZE);
+ if(*value == '\0')
+ strcpy(ocrc->triples[ocrc->ntriples].value,"1");/*dfalt*/
+ else
+ strncpy(ocrc->triples[ocrc->ntriples].value,value,MAXRCLINESIZE);
+ rctrim( ocrc->triples[ocrc->ntriples].key);
+ rctrim( ocrc->triples[ocrc->ntriples].value);
+ OCDBG2("rc: key=%s value=%s",
+ ocrc->triples[ocrc->ntriples].key,
+ ocrc->triples[ocrc->ntriples].value);
+ ocrc->ntriples++;
}
fclose(in_file);
- sorttriplestore();
+ sorttriplestore(&ocglobalstate.rc.ocrc);
return 1;
}
+/* read and compile the rc file, if any */
+OCerror
+ocrc_load(void)
+{
+ OCerror stat = OC_NOERR;
+ char* path = NULL;
+
+ if(ocglobalstate.rc.ignore) {
+ oclog(OCLOGDBG,"No runtime configuration file specified; continuing");
+ return OC_NOERR;
+ }
+ if(ocglobalstate.rc.loaded) return OC_NOERR;
+
+ /* locate the configuration files: first if specified,
+ then '.', then $HOME */
+ if(ocglobalstate.rc.rcfile != NULL) { /* always use this */
+ path = ocglobalstate.rc.rcfile;
+ } else {
+ char** rcname;
+ int found = 0;
+ for(rcname=rcfilenames;!found && *rcname;rcname++) {
+ stat = rc_search(".",*rcname,&path);
+ if(stat == OC_NOERR && path == NULL) /* try $HOME */
+ stat = rc_search(ocglobalstate.home,*rcname,&path);
+ if(stat != OC_NOERR)
+ goto done;
+ if(path != NULL)
+ found = 1;
+ }
+ }
+ if(path == NULL) {
+ oclog(OCLOGDBG,"Cannot find runtime configuration file; continuing");
+ } else {
+ if(ocdebug > 0)
+ fprintf(stderr, "RC file: %s\n", path);
+ if(ocrc_compile(path) == 0) {
+ oclog(OCLOGERR, "Error parsing %s\n",path);
+ stat = OC_ERCFILE;
+ }
+ }
+done:
+ ocglobalstate.rc.loaded = 1; /* even if not exists */
+ if(path != NULL)
+ free(path);
+ return stat;
+}
+
int
-ocdodsrc_process(OCstate* state)
+ocrc_process(OCstate* state)
{
int stat = 0;
- char* value;
- char* url = ocuribuild(state->uri,NULL,NULL,OCURIENCODE);
- struct OCTriplestore* ocdodsrc = ocglobalstate.ocdodsrc;
-
- if(ocdodsrc == NULL) goto done;
- value = curllookup("DEFLATE",url);
+ char* value = NULL;
+ OCURI* uri = state->uri;
+ char* url_userpwd = NULL;
+ char* url_hostport = NULL;
+
+ if(!ocglobalstate.initialized)
+ ocinternalinitialize();
+ if(!ocglobalstate.rc.loaded)
+ ocrc_load();
+ /* Note, we still must do this function even if
+ ocglobalstate.rc.ignore is set in order
+ to getinfo e.g. user:pwd from url
+ */
+
+ url_userpwd = uri->userpwd;
+ url_hostport = occombinehostport(uri);
+ if(url_hostport == NULL)
+ return OC_ENOMEM;
+
+ value = ocrc_lookup("HTTP.DEFLATE",url_hostport);
if(value != NULL) {
if(atoi(value)) state->curlflags.compress = 1;
if(ocdebug > 0)
- oclog(OCLOGNOTE,"Compression: %ld", state->curlflags.compress);
+ oclog(OCLOGNOTE,"HTTP.DEFLATE: %ld", state->curlflags.compress);
}
- if((value = curllookup("VERBOSE",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.VERBOSE",url_hostport)) != NULL) {
if(atoi(value)) state->curlflags.verbose = 1;
if(ocdebug > 0)
- oclog(OCLOGNOTE,"curl.verbose: %ld", state->curlflags.verbose);
+ oclog(OCLOGNOTE,"HTTP.VERBOSE: %ld", state->curlflags.verbose);
}
- if((value = curllookup("TIMEOUT",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.TIMEOUT",url_hostport)) != NULL) {
if(atoi(value)) state->curlflags.timeout = atoi(value);
if(ocdebug > 0)
- oclog(OCLOGNOTE,"curl.timeout: %ld", state->curlflags.timeout);
+ oclog(OCLOGNOTE,"HTTP.TIMEOUT: %ld", state->curlflags.timeout);
}
- if((value = curllookup("USERAGENT",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.USERAGENT",url_hostport)) != NULL) {
if(atoi(value)) state->curlflags.useragent = strdup(value);
if(state->curlflags.useragent == NULL) {stat = OC_ENOMEM; goto done;}
if(ocdebug > 0)
- oclog(OCLOGNOTE,"USERAGENT: %s", state->curlflags.useragent);
+ oclog(OCLOGNOTE,"HTTP.USERAGENT: %s", state->curlflags.useragent);
}
- if((value = curllookup("COOKIEJAR",url))
- || (value = curllookup("COOKIE_JAR",url))) {
+ if(
+ (value = ocrc_lookup("HTTP.COOKIEFILE",url_hostport))
+ || (value = ocrc_lookup("HTTP.COOKIE_FILE",url_hostport))
+ || (value = ocrc_lookup("HTTP.COOKIEJAR",url_hostport))
+ || (value = ocrc_lookup("HTTP.COOKIE_JAR",url_hostport))
+ ) {
state->curlflags.cookiejar = strdup(value);
if(state->curlflags.cookiejar == NULL) {stat = OC_ENOMEM; goto done;}
if(ocdebug > 0)
- oclog(OCLOGNOTE,"COOKIEJAR: %s", state->curlflags.cookiejar);
+ oclog(OCLOGNOTE,"HTTP.COOKIEJAR: %s", state->curlflags.cookiejar);
}
- if((value = curllookup("PROXY_SERVER",url)) != NULL) {
- stat = parseproxy(state,value);
+ if((value = ocrc_lookup("HTTP.PROXY_SERVER",url_hostport)) != NULL) {
+ stat = ocparseproxy(state,value);
if(stat != OC_NOERR) goto done;
+ if(ocdebug > 0)
+ oclog(OCLOGNOTE,"HTTP.PROXY_SERVER: %s", value);
}
- if((value = curllookup("SSL.VALIDATE",url)) != NULL) {
- if(atoi(value)) state->ssl.validate = 1;
- if(ocdebug > 0)
- oclog(OCLOGNOTE,"CURL.SSL.VALIDATE: %ld", state->ssl.validate);
+ if((value = ocrc_lookup("HTTP.SSL.VALIDATE",url_hostport)) != NULL) {
+ if(atoi(value)) {
+ state->ssl.verifypeer = 1;
+ state->ssl.verifyhost = 1;
+ if(ocdebug > 0)
+ oclog(OCLOGNOTE,"HTTP.SSL.VALIDATE: %ld", 1);
+ }
}
- if((value = curllookup("SSL.CERTIFICATE",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.SSL.CERTIFICATE",url_hostport)) != NULL) {
state->ssl.certificate = strdup(value);
if(state->ssl.certificate == NULL) {stat = OC_ENOMEM; goto done;}
if(ocdebug > 0)
- oclog(OCLOGNOTE,"CREDENTIALS.SSL.CERTIFICATE: %s", state->ssl.certificate);
+ oclog(OCLOGNOTE,"HTTP.SSL.CERTIFICATE: %s", state->ssl.certificate);
}
- if((value = curllookup("SSL.KEY",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.SSL.KEY",url_hostport)) != NULL) {
state->ssl.key = strdup(value);
if(state->ssl.key == NULL) {stat = OC_ENOMEM; goto done;}
if(ocdebug > 0)
- oclog(OCLOGNOTE,"CREDENTIALS.SSL.KEY: %s", state->ssl.key);
+ oclog(OCLOGNOTE,"HTTP.SSL.KEY: %s", state->ssl.key);
}
- if((value = curllookup("SSL.KEYPASSWORD",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.SSL.KEYPASSWORD",url_hostport)) != NULL) {
state->ssl.keypasswd = strdup(value);
if(state->ssl.keypasswd == NULL) {stat = OC_ENOMEM; goto done;}
-#ifdef INSECURE
if(ocdebug > 0)
- oclog(OCLOGNOTE,"CREDENTIALS.SSL.KEYPASSWORD: %s", state->ssl.keypasswd);
-#endif
+ oclog(OCLOGNOTE,"HTTP.SSL.KEYPASSWORD: %s", state->ssl.keypasswd);
}
- if((value = curllookup("SSL.CAINFO",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.SSL.CAINFO",url_hostport)) != NULL) {
state->ssl.cainfo = strdup(value);
if(state->ssl.cainfo == NULL) {stat = OC_ENOMEM; goto done;}
if(ocdebug > 0)
- oclog(OCLOGNOTE,"SSL.CAINFO: %s", state->ssl.cainfo);
+ oclog(OCLOGNOTE,"HTTP.SSL.CAINFO: %s", state->ssl.cainfo);
}
- if((value = curllookup("SSL.CAPATH",url)) != NULL) {
+ if((value = ocrc_lookup("HTTP.SSL.CAPATH",url_hostport)) != NULL) {
state->ssl.capath = strdup(value);
if(state->ssl.capath == NULL) {stat = OC_ENOMEM; goto done;}
if(ocdebug > 0)
- oclog(OCLOGNOTE,"SSL.CAPATH: %s", state->ssl.capath);
- }
-
- if((value = curllookup("SSL.VERIFYPEER",url)) != NULL) {
- char* s = strdup(value);
- int tf = 0;
- if(s == NULL || strcmp(s,"0")==0 || strcasecmp(s,"false")==0)
- tf = 0;
- else if(strcmp(s,"1")==0 || strcasecmp(s,"true")==0)
- tf = 1;
- else
- tf = 1; /* default if not null */
- state->ssl.verifypeer = tf;
- if(ocdebug > 0)
- oclog(OCLOGNOTE,"SSL.VERIFYPEER: %d", state->ssl.verifypeer);
+ oclog(OCLOGNOTE,"HTTP.SSL.CAPATH: %s", state->ssl.capath);
}
- if((value = curllookup("CREDENTIALS.USER",url)) != NULL) {
- state->creds.username = strdup(value);
- if(state->creds.username == NULL) {stat = OC_ENOMEM; goto done;}
+ if((value = ocrc_lookup("HTTP.SSL.VERIFYPEER",url_hostport)) != NULL) {
+ char* s = strdup(value);
+ int tf = 0;
+ if(s == NULL || strcmp(s,"0")==0 || strcasecmp(s,"false")==0)
+ tf = 0;
+ else if(strcmp(s,"1")==0 || strcasecmp(s,"true")==0)
+ tf = 1;
+ else
+ tf = 1; /* default if not null */
+ state->ssl.verifypeer = tf;
if(ocdebug > 0)
- oclog(OCLOGNOTE,"CREDENTIALS.USER: %s", state->creds.username);
+ oclog(OCLOGNOTE,"HTTP.SSL.VERIFYPEER: %d", state->ssl.verifypeer);
+ free(s);
}
- if((value = curllookup("CREDENTIALS.PASSWORD",url)) != NULL) {
- state->creds.password = strdup(value);
- if(state->creds.password == NULL) {stat = OC_ENOMEM; goto done;}
+ if((value = ocrc_lookup("HTTP.NETRC",url_hostport)) != NULL) {
+ if(state->curlflags.netrc != NULL)
+ free(state->curlflags.netrc);
+ state->curlflags.netrc = strdup(value);
+ if(state->curlflags.netrc == NULL) {stat = OC_ENOMEM; goto done;}
+ if(ocdebug > 0)
+ oclog(OCLOGNOTE,"HTTP.NETRC: %s", state->curlflags.netrc);
}
- /* Support combined case */
- if((value = curllookup("CREDENTIALS.USERPASSWORD",url)) != NULL) {
- char* combined = value;
- char* sep = NULL;
- if(combined == NULL) {stat = OC_ENOMEM; goto done;}
- sep = (char*)strchr(combined,':');
- if(sep == NULL) {
- oclog(OCLOGERR,"CREDENTIALS.USERPASSWORD: no ':' found");
- stat = OC_EINVAL;
- goto done;
- }
- *sep = '\0';
- state->creds.username = strdup(combined);
- state->creds.password = strdup(sep+1);
+ { /* Handle various cases for user + password */
+ /* First, see if the user+pwd was in the original url */
+ char* userpwd = NULL;
+ char* user = NULL;
+ char* pwd = NULL;
+ if(url_userpwd != NULL)
+ userpwd = url_userpwd;
+ else {
+ user = ocrc_lookup("HTTP.CREDENTIALS.USER",url_hostport);
+ pwd = ocrc_lookup("HTTP.CREDENTIALS.PASSWORD",url_hostport);
+ userpwd = ocrc_lookup("HTTP.CREDENTIALS.USERPASSWORD",url_hostport);
+ }
+ if(userpwd == NULL && user != NULL && pwd != NULL) {
+ userpwd = combinecredentials(user,pwd);
+ state->creds.userpwd = userpwd;
+ } else if(userpwd != NULL)
+ state->creds.userpwd = strdup(userpwd);
}
- /* else ignore */
-
done:
- if(url != NULL) free(url);
+ if(url_hostport != NULL) free(url_hostport);
return stat;
}
-
-char*
-ocdodsrc_lookup(char* key, char* url)
+
+static struct OCTriple*
+ocrc_locate(char* key, char* hostport)
{
int i,found;
- struct OCTriplestore* ocdodsrc = ocglobalstate.ocdodsrc;
- struct OCTriple* triple = ocdodsrc->triples;
+ struct OCTriplestore* ocrc = &ocglobalstate.rc.ocrc;
+ struct OCTriple* triple;
- if(key == NULL || ocdodsrc == NULL) return NULL;
- if(url == NULL) url = "";
+ if(ocglobalstate.rc.ignore)
+ return NULL;
+ if(!ocglobalstate.rc.loaded)
+ ocrc_load();
+
+ triple = ocrc->triples;
+
+ if(key == NULL || ocrc == NULL) return NULL;
+ if(hostport == NULL) hostport = "";
/* Assume that the triple store has been properly sorted */
- for(found=0,i=0;i<ocdodsrc->ntriples;i++,triple++) {
- size_t triplelen = strlen(triple->url);
- int t;
- if(strcmp(key,triple->key) != 0) continue; /* keys do not match */
- /* If the triple entry has no url, then use it (because we have checked all other cases)*/
- if(triplelen == 0) {found=1;break;}
- /* do url prefix comparison */
- t = ocstrncmp(url,triple->url,triplelen);
- if(t == 0) {found=1; break;}
+ for(found=0,i=0;i<ocrc->ntriples;i++,triple++) {
+ size_t hplen = strlen(triple->host);
+ int t;
+ if(strcmp(key,triple->key) != 0) continue; /* keys do not match */
+ /* If the triple entry has no url, then use it
+ (because we have checked all other cases)*/
+ if(hplen == 0) {found=1;break;}
+ /* do hostport match */
+ t = strcmp(hostport,triple->host);
+ if(t == 0) {found=1; break;}
}
- if(ocdebug > 2)
- {
- if(found) {
- fprintf(stderr,"lookup %s: [%s]%s = %s\n",url,triple->url,triple->key,triple->value);
- }
+ return (found?triple:NULL);
+}
+
+char*
+ocrc_lookup(char* key, char* hostport)
+{
+ struct OCTriple* triple = ocrc_locate(key,hostport);
+ if(triple != NULL && ocdebug > 2) {
+ fprintf(stderr,"lookup %s: [%s]%s = %s\n",hostport,triple->host,triple->key,triple->value);
}
- return (found ? triple->value : NULL);
+ return (triple == NULL ? NULL : triple->value);
}
static void
-ocdodsrcdump(char* msg, struct OCTriple* triples, int ntriples)
+storedump(char* msg, struct OCTriple* triples, int ntriples)
{
int i;
- struct OCTriplestore* ocdodsrc = ocglobalstate.ocdodsrc;
+ struct OCTriplestore* ocrc = &ocglobalstate.rc.ocrc;
if(msg != NULL) fprintf(stderr,"%s\n",msg);
- if(ocdodsrc == NULL) {
- fprintf(stderr,"<EMPTY>\n");
- return;
+ if(ocrc == NULL) {
+ fprintf(stderr,"<EMPTY>\n");
+ return;
}
- if(triples == NULL) triples= ocdodsrc->triples;
- if(ntriples < 0 ) ntriples= ocdodsrc->ntriples;
+ if(triples == NULL) triples= ocrc->triples;
+ if(ntriples < 0 ) ntriples= ocrc->ntriples;
for(i=0;i<ntriples;i++) {
fprintf(stderr,"\t%s\t%s\t%s\n",
- (strlen(triples[i].url)==0?"--":triples[i].url),
- triples[i].key,
- triples[i].value);
+ (strlen(triples[i].host)==0?"--":triples[i].host),
+ triples[i].key,
+ triples[i].value);
}
}
-/* Isolate the "HTTP." (or "CURL.")
- prefix to allow changing to something else
+#if 0
+/*
+Lookup against all prefixes
*/
+
static char*
-curllookup(char* suffix, char* url)
+ocrc_lookup(char* suffix, char* url)
{
- char key[2048];
char* value = NULL;
- if(!occopycat(key,sizeof(key),2,HTTPPREFIX,suffix))
- return NULL;
- value = ocdodsrc_lookup(key,url);
- if(value == NULL) {
- if(!occopycat(key,sizeof(key),2,HTTPPREFIXDEPRECATED,suffix))
- return NULL;
- value = ocdodsrc_lookup(key,url);
+ char key[MAXRCLINESIZE+1];
+ const char** p = prefixes;
+ for(;*p;p++) {
+ if(!occopycat(key,sizeof(key),2,*p,suffix))
+ return NULL;
+ value = ocrc_lookup(key,url);
+ if(value != NULL)
+ return value;
}
return value;
}
+
+/* compile the rc file, if any */
+static OCerror
+ocreadrc(void)
+{
+ OCerror stat = OC_NOERR;
+ char* path = NULL;
+ /* locate the configuration files: first if specified,
+ then '.', then $HOME */
+ if(ocglobalstate.rc.rcfile != NULL) { /* always use this */
+ path = ocglobalstate.rc.rcfile;
+ } else {
+ char** rcname;
+ int found = 0;
+ for(rcname=rcfilenames;!found && *rcname;rcname++) {
+ stat = rc_search(".",*rcname,&path);
+ if(stat == OC_NOERR && path == NULL) /* try $HOME */
+ stat = rc_search(ocglobalstate.home,*rcname,&path);
+ if(stat != OC_NOERR)
+ goto done;
+ if(path != NULL)
+ found = 1;
+ }
+ }
+ if(path == NULL) {
+ oclog(OCLOGDBG,"Cannot find runtime configuration file; continuing");
+ } else {
+ if(ocdebug > 0)
+ fprintf(stderr, "DODS RC file: %s\n", path);
+ if(ocdodsrc_read(path) == 0) {
+ oclog(OCLOGERR, "Error parsing %s\n",path);
+ stat = OC_ERCFILE;
+ }
+ }
+done:
+ if(path != NULL)
+ free(path);
+ return stat;
+}
+#endif
+
+/**
+ * Prefix must end in '/'
+ */
+static
+OCerror
+rc_search(const char* prefix, const char* rcname, char** pathp)
+{
+ char* path = NULL;
+ FILE* f = NULL;
+ int plen = strlen(prefix);
+ int rclen = strlen(rcname);
+ OCerror stat = OC_NOERR;
+
+ size_t pathlen = plen+rclen+1+1; /*+1 for '/' +1 for nul*/
+ path = (char*)malloc(pathlen);
+ if(path == NULL) {
+ stat = OC_ENOMEM;
+ goto done;
+ }
+ if(!occopycat(path,pathlen,3,prefix,"/",rcname)) {
+ stat = OC_EOVERRUN;
+ goto done;
+ }
+ /* see if file is readable */
+ f = fopen(path,"r");
+ if(f != NULL)
+ oclog(OCLOGDBG, "Found rc file=%s",path);
+done:
+ if(f == NULL || stat != OC_NOERR) {
+ if(path != NULL)
+ free(path);
+ path = NULL;
+ }
+ if(f != NULL)
+ fclose(f);
+ if(pathp != NULL)
+ *pathp = path;
+ return OCTHROW(stat);
+}
+
+struct OCTriple*
+ocrc_triple_iterate(char* key, char* url, struct OCTriple* prev)
+{
+ struct OCTriple* next;
+ if(prev == NULL)
+ next = ocrc_locate(key,url);
+ else
+ next = prev+1;
+ if(next == NULL)
+ return NULL;
+ for(;next->key != NULL;next++) {
+ /* See if key as prefix still matches */
+ int cmp = strcmp(key,next->key);
+ if(cmp != 0) {next = NULL; break;} /* key mismatch */
+ /* compare url */
+ cmp = ocstrncmp(url,next->host,strlen(next->host));
+ if(cmp == 0) break;
+ }
+ return next;
+}
diff --git a/oc2/ocrc.h b/oc2/ocrc.h
deleted file mode 100644
index bac2c8a..0000000
--- a/oc2/ocrc.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * rc.h
- *
- * Created on: Mar 5, 2009
- * Author: rikki
- */
-
-#ifndef RC_H_
-#define RC_H_
-
-/* Max .dodsrc line size */
-#define MAXRCLINESIZE 2048
-
-/* Max number of triples in a .dodsrc */
-#define MAXRCLINES 2048
-
-/* Create a triple store for (url,key,value) and sorted by url */
-
-/* Actual triple store */
-extern struct OCTriplestore {
- int ntriples;
- struct OCTriple {
- char url[MAXRCLINESIZE];
- char key[MAXRCLINESIZE];
- char value[MAXRCLINESIZE];
- } triples[MAXRCLINES];
-} *ocdodsrc;
-
-extern int ocdodsrc_read(char* basename,char *in_file_name);
-extern int ocdodsrc_process(OCstate* state);
-extern char* ocdodsrc_lookup(char* key, char* url);
-
-#endif /* RC_H_ */
diff --git a/oc2/ocread.c b/oc2/ocread.c
index 9e74805..b0dfe1e 100644
--- a/oc2/ocread.c
+++ b/oc2/ocread.c
@@ -24,7 +24,6 @@
#include "ocdebug.h"
#include "ochttp.h"
#include "ocread.h"
-#include "ocrc.h"
#include "occurlfunctions.h"
/*Forward*/
diff --git a/oc2/ocuri.c b/oc2/ocuri.c
index 4b8adfe..ca8dda6 100644
--- a/oc2/ocuri.c
+++ b/oc2/ocuri.c
@@ -1,17 +1,19 @@
/*********************************************************************
* Copyright 2010, UCAR/Unidata
- * See netcdf/COPYRIGHT file for copying and redistribution conditions.
+ * See netcdf/COPYRIGHT file for copying and redistribuution conditions.
* $Header$
*********************************************************************/
+#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
+#include "oc.h"
#include "ocuri.h"
-#define OCURIDEBUG
+#undef OCURIDEBUG
#ifdef OCURIDEBUG
static int failpoint = 0;
@@ -35,9 +37,24 @@ static int failpoint = 0;
#define NILLEN(s) ((s)==NULL?0:strlen(s))
#endif
+#ifdef HAVE_STRDUP
#ifndef nulldup
#define nulldup(s) ((s)==NULL?NULL:strdup(s))
#endif
+#endif
+
+#ifndef HAVE_STRDUP
+static char* nulldup(char* s)
+{
+ char* dup = NULL;
+ if(s != NULL) {
+ dup = (char*)malloc(strlen(s)+1);
+ if(dup != NULL)
+ strcpy(dup,s);
+ }
+ return dup;
+}
+#endif
#define terminate(p) {*(p) = EOFCHAR;}
@@ -54,10 +71,10 @@ int filelike; /* 1=>this protocol has no host, user+pwd, or port */
};
/* Allowable character sets for encode */
-static char* fileallow =
+static char* fileallow =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~";
-static char* queryallow =
+static char* queryallow =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$&'()*+,-./:;=?@_~";
/* Forward */
@@ -75,6 +92,7 @@ ocuriparse(const char* uri0, OCURI** durip)
OCURI* duri = NULL;
char* uri = NULL;
char* p;
+ char* q;
struct OC_ProtocolInfo* proto;
int i,nprotos;
@@ -83,8 +101,7 @@ ocuriparse(const char* uri0, OCURI** durip)
char* host = NULL;
char* port = NULL;
char* constraint = NULL;
- char* user = NULL;
- char* pwd = NULL;
+ char* userpwd = NULL;
char* file = NULL;
char* prefixparams = NULL;
char* suffixparams = NULL;
@@ -95,7 +112,7 @@ ocuriparse(const char* uri0, OCURI** durip)
duri = (OCURI*)calloc(1,sizeof(OCURI));
if(duri == NULL)
{THROW(2); goto fail;}
-
+
/* save original uri */
duri->uri = nulldup(uri0);
@@ -109,7 +126,7 @@ ocuriparse(const char* uri0, OCURI** durip)
first char is guaranteed to be '\0' */
duri->strings = uri;
- uri++;
+ uri++;
/* dup the incoming url */
strcpy(uri,uri0);
@@ -119,11 +136,10 @@ ocuriparse(const char* uri0, OCURI** durip)
2. remove all '\\' (Temp hack to remove escape characters
inserted by Windows or MinGW)
*/
- for(p=uri;*p;p++) {
- if(*p == '\\' || *p < ' ')
- oclshift1(p); /* compress out */
- }
-
+ for(q=uri,p=uri;*p;p++) {
+ if(*p != '\\' && *p >= ' ') /* compress out */
+ *q++=*p;
+ }
p = uri;
/* break up the uri string into big chunks: prefixparams, protocol,
@@ -132,24 +148,26 @@ ocuriparse(const char* uri0, OCURI** durip)
/* collect any prefix bracketed parameters */
if(*p == LBRACKET) {
- prefixparams = p+1;
- /* find end of the clientparams; convert LB,RB to ';' */
- for(;*p;p++) {
+ p++;
+ prefixparams = p;
+ /* find end of the clientparams; convert LB,RB to '&' */
+ for(q=p;*p;p++) {
if(p[0] == RBRACKET && p[1] == LBRACKET) {
- p[0] = ';';
- oclshift1(p+1);
+ *q++ = '&';
+ p++;
} else if(p[0] == RBRACKET && p[1] != LBRACKET)
break;
+ else
+ *q++=*p;
}
if(*p == 0)
{THROW(4); goto fail; /* malformed client params*/}
- terminate(p); /* nul term the prefixparams (overwrites
- the final RBRACKET) */
+ terminate(q); /* nul term the prefixparams */
p++; /* move past the final RBRACKET */
}
/* Tag the protocol */
- protocol = p;
+ protocol = p;
p = strchr(p,':');
if(!p)
{THROW(5); goto fail;}
@@ -162,14 +180,14 @@ ocuriparse(const char* uri0, OCURI** durip)
for(i=0;i<nprotos;i++) {
if(strcmp(protocol,legalprotocols[i].name)==0) {
proto = &legalprotocols[i];
- break;
+ break;
}
}
if(proto == NULL)
{THROW(6); goto fail; /* illegal protocol*/}
/* skip // */
- if(p[0] != '/' && p[1] != '/')
+ if(p[0] != '/' || p[1] != '/')
{THROW(7); goto fail;}
p += 2;
@@ -195,7 +213,7 @@ ocuriparse(const char* uri0, OCURI** durip)
file = p+1; /* +1 becauseof the shift */
}
}
-
+
/* If you shift in the code below, you must reset file beginning */
if(host != NULL) {/* Parse the host section */
@@ -204,14 +222,9 @@ ocuriparse(const char* uri0, OCURI** durip)
if(p) {
if(p == host)
{THROW(9); goto fail; /* we have proto://@ */}
- user = host;
+ userpwd = host;
terminate(p); /* overwrite '@' */
host = p+1; /* start of host ip name */
- p = strchr(user,':');
- if(p == NULL)
- {THROW(10); goto fail; /* malformed */}
- terminate(p); /*overwrite colon */
- pwd = p+1;
}
/* extract host and port */
@@ -246,7 +259,7 @@ ocuriparse(const char* uri0, OCURI** durip)
p = oclocate(p,"?#");
if(p != NULL) { /* we have constraint and/or suffixparams */
char* fileend = p; /* save the end of the file section */
- char* constraintend = NULL;
+ char* constraintend = NULL;
if(*p == '?')
constraint = p+1;
else
@@ -276,32 +289,13 @@ ocuriparse(const char* uri0, OCURI** durip)
suffixparams = NULL; /* empty suffixparams section */
if(suffixparams != NULL) {
- /* there really are suffix params; so rebuild the suffix params */
- p = suffixparams;
- /* There must be brackets */
- if(*p != LBRACKET)
- {THROW(14); goto fail;}
- suffixparams++; /* skip leading LBRACKET */
- p = suffixparams;
- /* convert RBRACKET LBRACKET to ';' */
- for(;*p;p++) {
- if(p[0] == RBRACKET && p[1] == LBRACKET) {
- p[0] = ';';
- oclshift1(p+1);
- } else if(p[0] == RBRACKET && p[1] != LBRACKET) {
- /* terminate suffixparams */
- *p = EOFCHAR;
- break;
- }
- }
if(*suffixparams == EOFCHAR)
suffixparams = NULL; /* suffixparams are empty */
}
/* do last minute empty check */
if(protocol != NULL && *protocol == EOFCHAR) protocol = NULL;
- if(user != NULL && *user == EOFCHAR) user = NULL;
- if(pwd != NULL && *pwd == EOFCHAR) pwd = NULL;
+ if(userpwd != NULL && *userpwd == EOFCHAR) userpwd = NULL;
if(host != NULL && *host == EOFCHAR) host = NULL;
if(port != NULL && *port == EOFCHAR) port = NULL;
if(file != NULL && *file == EOFCHAR) file = NULL;
@@ -309,8 +303,7 @@ ocuriparse(const char* uri0, OCURI** durip)
/* assemble the component pieces */
duri->protocol = protocol;
- duri->user = user;
- duri->password = pwd;
+ duri->userpwd = userpwd;
duri->host = host;
duri->port = port;
duri->file = file;
@@ -322,29 +315,49 @@ ocuriparse(const char* uri0, OCURI** durip)
size_t plen = prefixparams ? strlen(prefixparams) : 0;
size_t slen = suffixparams ? strlen(suffixparams) : 0;
size_t space = plen + slen + 1;
- /* add 1 for an extra comma if both are defined */
- space++;
+ /* add 1 for an extra ampersand if both are defined */
+ if(plen > 0 && slen > 0) space++;
duri->params = (char*)malloc(space);
+ if(duri->params == NULL)
+ return 0;
duri->params[0] = EOFCHAR; /* so we can use strcat */
if(plen > 0) {
- strcat(duri->params,prefixparams);
+ strncat(duri->params,prefixparams,space);
if(slen > 0)
- strcat(duri->params,";");
+ strncat(duri->params,"&",space);
}
if(slen > 0)
- strcat(duri->params,suffixparams);
+ strncat(duri->params,suffixparams,space);
}
-#ifdef OCXDEBUG
+#ifdef OCURIDEBUG
{
+ int i,nparms;
+ char** p;
fprintf(stderr,"duri:");
- fprintf(stderr," params=|%s|",FIX(duri->params));
fprintf(stderr," protocol=|%s|",FIX(duri->protocol));
fprintf(stderr," host=|%s|",FIX(duri->host));
fprintf(stderr," port=|%s|",FIX(duri->port));
fprintf(stderr," file=|%s|",FIX(duri->file));
fprintf(stderr," constraint=|%s|",FIX(duri->constraint));
+ fprintf(stderr," params=|%s|",FIX(duri->params));
fprintf(stderr,"\n");
+ if(duri->paramlist == NULL) {
+ if(!ocuridecodeparams(duri)) {
+ fprintf(stderr,"DEBUG: param decode failed\n");
+ duri->paramlist = NULL;
+ }
+ }
+ if(duri->paramlist != NULL) {
+ for(p=duri->paramlist,nparms=0;*p;p++,nparms++);
+ nparms = nparms / 2;
+ fprintf(stderr,"params:");
+ for(i=0;i<nparms;i++) {
+ char** pos = duri->paramlist+(i*2);
+ fprintf(stderr," %s=|%s|",pos[0],pos[1]);
+ }
+ fprintf(stderr,"\n");
+ }
}
#endif
if(durip != NULL) *durip = duri; else free(duri);
@@ -382,8 +395,8 @@ ocurisetconstraints(OCURI* duri,const char* constraints)
if(duri->constraint != NULL) free(duri->constraint);
if(duri->projection != NULL) free(duri->projection);
if(duri->selection != NULL) free(duri->selection);
- duri->constraint = NULL;
- duri->projection = NULL;
+ duri->constraint = NULL;
+ duri->projection = NULL;
duri->selection = NULL;
if(constraints == NULL || strlen(constraints)==0) return;
@@ -438,7 +451,7 @@ ocuribuild(OCURI* duri, const char* prefix, const char* suffix, int flags)
int withprefixparams = ((flags&OCURIPREFIXPARAMS)!=0
&& duri->params != NULL);
int withuserpwd = ((flags&OCURIUSERPWD)!=0
- && duri->user != NULL && duri->password != NULL);
+ && duri->userpwd != NULL);
int withconstraints = ((flags&OCURICONSTRAINTS)!=0
&& duri->constraint != NULL);
#ifdef NEWESCAPE
@@ -449,14 +462,13 @@ ocuribuild(OCURI* duri, const char* prefix, const char* suffix, int flags)
if(prefix != NULL) len += NILLEN(prefix);
len += (NILLEN(duri->protocol)+NILLEN("://"));
- if(withuserpwd) {
- len += (NILLEN(duri->user)+NILLEN(duri->password)+NILLEN(":@"));
- }
+ if(withuserpwd)
+ len += (NILLEN(duri->userpwd)+NILLEN("@"));
len += (NILLEN(duri->host));
if(duri->port != NULL) {
len += (NILLEN(":")+NILLEN(duri->port));
}
-
+
tmpfile = duri->file;
if(encode)
tmpfile = ocuriencode(tmpfile,fileallow);
@@ -480,7 +492,7 @@ ocuribuild(OCURI* duri, const char* prefix, const char* suffix, int flags)
char** p;
if(duri->paramlist == NULL)
if(!ocuridecodeparams(duri))
- return NULL;
+ return NULL;
for(paramslen=0,nparams=0,p=duri->paramlist;*p;p++) {
nparams++;
paramslen += NILLEN(*p);
@@ -495,7 +507,7 @@ ocuribuild(OCURI* duri, const char* prefix, const char* suffix, int flags)
}
len += 1; /* null terminator */
-
+
newuri = (char*)malloc(len);
if(newuri == NULL) return NULL;
@@ -508,13 +520,11 @@ ocuribuild(OCURI* duri, const char* prefix, const char* suffix, int flags)
strcat(newuri,duri->protocol);
strcat(newuri,"://");
if(withuserpwd) {
- strcat(newuri,duri->user);
- strcat(newuri,":");
- strcat(newuri,duri->password);
+ strcat(newuri,duri->userpwd);
strcat(newuri,"@");
}
if(duri->host != NULL) { /* may be null if using file: protocol */
- strcat(newuri,duri->host);
+ strcat(newuri,duri->host);
}
if(duri->port != NULL) {
strcat(newuri,":");
@@ -557,62 +567,69 @@ ocappendparams(char* newuri, char** p)
/*
In the original url, client parameters are assumed to be one
or more instances of bracketed pairs: e.g "[...][...]...".
-They may occur either at the front, or suffixed after
-a trailing # character After processing, the list is
-converted to a semicolon separated list of the combination
-of prefix and suffix parameters.
+prefixed to the url. This model has been extended to support
+specification of the parameters as semicolon separated key=value
+pairs in the fragment part of the url. The fragment part
+starts with a '#' and is the last part of the url.
After the url is parsed, the parameter list
is converted to a semicolon separated list with all
whitespace removed.
In any case, each parameter in turn is assumed to be a
-of the form <name>=<value> or [<name>].
-e.g. [x=y][z][a=b][w]. If the same parameter is specified more
-than once, then the first occurrence is used; this is so
+of the form <name>=<value> or <name>.
+e.g. x=y,z,a=b,w. If the same parameter is specified more
+than once, then the last occurrence is used; this is so
that is possible to forcibly override user specified
-parameters by prefixing. IMPORTANT: client parameter string
+parameters by suffixing. IMPORTANT: client parameter string
is assumed to have blanks compressed out. Returns 1 if parse
suceeded, 0 otherwise; */
int
ocuridecodeparams(OCURI* ocuri)
{
- char* cp;
+ char* p;
int i,c;
int nparams;
- char* params;
+ char* params = NULL;
char** plist;
+ size_t len;
if(ocuri == NULL) return 0;
if(ocuri->params == NULL) return 1;
- params = strdup(ocuri->params); /* so we can modify */
+ len = strlen(ocuri->params);
+ params = strdup(ocuri->params);
+ if(params == NULL)
+ return 0; /* no memory */
- /* Pass 1 to break string into pieces at the semicolons
+ /* Pass 1: break string into pieces at the ampersands
and count # of pairs */
nparams=0;
- for(cp=params;(c=*cp);cp++) {
- if(c == ';') {*cp = EOFCHAR; nparams++;}
+ for(p=params;*p;p++) {
+ c = *p;
+ if(c == '&') {*p = EOFCHAR; nparams++;}
}
nparams++; /* for last one */
- /* plist is an env style list */
+ /* plist will be an env style list */
plist = (char**)calloc(1,sizeof(char*)*(2*nparams+1)); /* +1 for null termination */
- if(plist == NULL)
+ if(plist == NULL) {
+ free(params);
return 0;
+ }
/* Break up each param into a (name,value) pair*/
/* and insert into the param list */
/* parameters of the form name name= are converted to name=""*/
- for(cp=params,i=0;i<nparams;i++) {
- char* next = cp+strlen(cp)+1; /* save ptr to next pair*/
- char* vp;
- /*break up the ith param*/
- vp = strchr(cp,'=');
- if(vp != NULL) {*vp = EOFCHAR; vp++;} else {vp = "";}
- plist[2*i] = nulldup(cp);
- plist[2*i+1] = nulldup(vp);
- cp = next;
+ for(p=params,i=0;i<nparams;i++) {
+ char* next = p+strlen(p)+1; /* save ptr to next pair*/
+ char* vp;
+ /*break up the ith param*/
+ vp = strchr(p,'=');
+ if(vp != NULL) {*vp = EOFCHAR; vp++;} else {vp = "";}
+ plist[2*i] = nulldup(p);
+ plist[2*i+1] = nulldup(vp);
+ p = next;
}
plist[2*nparams] = NULL;
free(params);
@@ -800,7 +817,7 @@ ocuridecodeonly(char* s, char* only)
char* outptr;
char* inptr;
unsigned int c;
-
+
if (s == NULL) return NULL;
if(only == NULL) only = "";
@@ -830,4 +847,3 @@ ocuridecodeonly(char* s, char* only)
*outptr = EOFCHAR;
return decoded;
}
-
diff --git a/oc2/ocuri.h b/oc2/ocuri.h
index e2450cc..525a656 100644
--- a/oc2/ocuri.h
+++ b/oc2/ocuri.h
@@ -7,7 +7,7 @@
/*! This is an open structure meaning
it is ok to directly access its fields*/
typedef struct OCURI {
- char* uri; /* as passed by the caller */
+ char* uri; /* as passed buy the caller */
char* params; /* all params */
char** paramlist; /*!<null terminated list */
char* constraint; /*!< projection+selection */
@@ -16,8 +16,7 @@ typedef struct OCURI {
char* strings; /* first char of strings is always '\0' */
/* Following all point into the strings field */
char* protocol;
- char* user; /* from user:password@ */
- char* password; /* from user:password@ */
+ char* userpwd; /* from user:password@ */
char* host; /*!< host*/
char* port; /*!< host */
char* file; /*!< file */
@@ -39,6 +38,7 @@ extern void ocurisetconstraints(OCURI*,const char* constraints);
#define OCURIPARAMS OCURIPREFIXPARAMS
#define OCURIENCODE 16 /* If output should be encoded */
#define OCURISTD (OCURICONSTRAINTS|OCURIUSERPWD)
+#define OCURIALL (0xFFFF)
extern char* ocuribuild(OCURI*,const char* prefix, const char* suffix, int flags);
diff --git a/oc2/ocutil.c b/oc2/ocutil.c
index 445410f..e1ea1d4 100644
--- a/oc2/ocutil.c
+++ b/oc2/ocutil.c
@@ -55,7 +55,7 @@ ocstrncmp(const char* s1, const char* s2, size_t len)
}
-#ifdef EXTERN_UNUSEd
+#if 0
void
makedimlist(OClist* path, OClist* dims)
{
@@ -87,7 +87,7 @@ ocfreeprojectionclause(OCprojectionclause* clause)
free(clause);
}
-#ifdef EXTERN_UNUSED
+#if 0
void
freeAttributes(OClist* attset)
{
@@ -107,7 +107,7 @@ freeAttributes(OClist* attset)
}
#endif
-#ifdef EXTERN_UNUSED
+#if 0
void
freeOCnode(OCnode* cdf, int deep)
{
@@ -385,7 +385,7 @@ ocerrstring(int err)
case OC_EDATADDS:
return "OC_EDATADDS: Malformed or unreadable DATADDS";
case OC_ERCFILE:
- return "OC_ERCFILE: Malformed or unreadable run-time configuration file";
+ return "OC_ERCFILE: Malformed, unreadable, or bad value in the run-time configuration file";
case OC_ENOFILE:
return "OC_ENOFILE: cannot read content of URL";
@@ -598,7 +598,7 @@ occopycat(char* dst, size_t size, size_t n, ...)
va_list args;
size_t avail = size - 1;
int i;
- int status = 1; // assume ok
+ int status = 1; /* assume ok */
char* p = dst;
if(n == 0) {
@@ -642,8 +642,8 @@ int
occoncat(char* dst, size_t size, size_t n, ...)
{
va_list args;
- int status = 1; // assume ok
- size_t avail;
+ int status = 1; /* assume ok */
+ size_t avail = 0;
int i;
char* p;
size_t dstused;
@@ -686,33 +686,28 @@ done:
/**
-Wrap mktmp
+Wrap mktmp and return the generated name
*/
int
-ocmktmp(const char* base, char** tmpnamep, int* fdp)
+ocmktmp(const char* base, char** tmpnamep)
{
int fd;
- char* tmpname = NULL;
- mode_t oldmask;
- size_t tmpsize = strlen(base)+strlen("XXXXXX") + 1;
-
- tmpname = (char*)malloc(tmpsize);
- if(tmpname == NULL) return OC_ENOMEM;
- if(!occopycat(tmpname,tmpsize,1,base)) {
- free(tmpname);
+ char tmpname[OCPATHMAX+1];
+ mode_t mask;
+ if(!occopycat(tmpname,sizeof(tmpname)-1,1,base)) {
return OC_EOVERRUN;
}
#ifdef HAVE_MKSTEMP
- if(!occoncat(tmpname,tmpsize,1,"XXXXXX")) {
- free(tmpname);
+ if(!occoncat(tmpname,sizeof(tmpname)-1,1,"XXXXXX")) {
return OC_EOVERRUN;
}
/* Note Potential problem: old versions of this function
leave the file in mode 0666 instead of 0600 */
- oldmask= umask(S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+
+ mask=umask(0077);
fd = mkstemp(tmpname);
- umask(oldmask); /* restore */
+ (void)umask(mask);
#else /* !HAVE_MKSTEMP */
/* Need to simulate by using some kind of pseudo-random number */
{
@@ -720,24 +715,38 @@ ocmktmp(const char* base, char** tmpnamep, int* fdp)
char spid[7];
if(rno < 0) rno = -rno;
snprintf(spid,sizeof(spid),"%06d",rno);
- if(!occoncat(tmpname,tmpsize,1,spid)) {
- free(tmpname);
+ if(!occoncat(tmpname,sizeof(tmpname)-1,1,spid)) {
return OC_EOVERRUN;
}
#if defined(_WIN32) || defined(_WIN64)
- fd=open(tmpname,O_RDWR|O_BINARY|O_CREAT|O_EXCL|FILE_ATTRIBUTE_TEMPORARY, _S_IREAD|_S_IWRITE);
+ fd=open(tmpname,O_RDWR|O_BINARY|O_CREAT, _S_IREAD|_S_IWRITE);
# else
fd=open(tmpname,O_RDWR|O_CREAT|O_EXCL, S_IRWXU);
# endif
}
#endif /* !HAVE_MKSTEMP */
if(fd < 0) {
- if(tmpname != NULL) free(tmpname);
return OC_EOPEN;
- }
- if(tmpnamep) *tmpnamep = tmpname;
- else if(tmpname != NULL) {free(tmpname);}
- if(fdp) *fdp = fd;
- else if(fd >= 0) close(fd);
+ } else
+ close(fd);
+ if(tmpnamep) *tmpnamep = strdup(tmpname);
return OC_NOERR;
}
+
+/* merge two envv style lists */
+char**
+ocmerge(const char** list1, const char** list2)
+{
+ int l1, l2;
+ char** merge;
+ const char** p;
+ for(l1=0,p=list1;*p;p++) {l1++;}
+ for(l2=0,p=list2;*p;p++) {l2++;}
+ merge = (char**)malloc(sizeof(char*)*(l1+l2+1));
+ if(merge == NULL)
+ return NULL;
+ memcpy(merge,list1,sizeof(char*)*l1);
+ memcpy(merge+l1,list2,sizeof(char*)*l2);
+ merge[l1+l2] = NULL;
+ return merge;
+}
diff --git a/oc2/ocutil.h b/oc2/ocutil.h
index 038c2a0..0f1b082 100644
--- a/oc2/ocutil.h
+++ b/oc2/ocutil.h
@@ -42,15 +42,18 @@ extern void ocfreeprojectionclause(OCprojectionclause* clause);
/* Misc. */
-extern int ocmktmp(const char* base, char** tmpnamep, int* fdp);
+/* merge two envv style lists */
+extern char** ocmerge(const char** list1, const char** list2);
+
+extern int ocmktmp(const char* base, char** tmpnamep);
extern void ocdataddsmsg(struct OCstate*, struct OCtree*);
extern const char* ocdtmodestring(OCDT mode,int compact);
/* Define some classifiers */
-#define iscontainer(t) ((t) == OC_Dataset || (t) == OC_Structure || (t) == OC_Sequence || (t) == OC_Grid || (t) == OC_Attributeset)
+#define ociscontainer(t) ((t) == OC_Dataset || (t) == OC_Structure || (t) == OC_Sequence || (t) == OC_Grid || (t) == OC_Attributeset)
-#define isatomic(t) ((t) == OC_Atomic)
+#define ocisatomic(t) ((t) == OC_Atomic)
#endif /*UTIL_H*/
diff --git a/oc2/xxdr.c b/oc2/xxdr.c
index 9361317..4961f5b 100644
--- a/oc2/xxdr.c
+++ b/oc2/xxdr.c
@@ -53,6 +53,9 @@
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
#ifdef _WIN32
#include <wchar.h>
@@ -222,8 +225,8 @@ xxdr_skip(XXDR* xdrs, off_t len)
off_t pos;
pos = xxdr_getpos(xdrs);
pos = (pos + len);
- // Removed the following; pos is unsigned. jhrg 9/30/13
- // if(pos < 0) pos = 0;
+ /* Removed the following; pos is unsigned. jhrg 9/30/13 */
+ /* if(pos < 0) pos = 0; */
return xxdr_setpos(xdrs,pos);
}
@@ -352,7 +355,10 @@ xxdr_filecreate(FILE* file, off_t base)
xdrs->base = base;
xdrs->pos = 0;
xdrs->valid = 0;
- if(fseek(file,0L,SEEK_END)) return NULL;
+ if(fseek(file,0L,SEEK_END)) {
+ free(xdrs);
+ return NULL;
+ }
xdrs->length = (off_t)ftell(file);
xdrs->length -= xdrs->base;
xdrs->getbytes = xxdr_filegetbytes;
diff --git a/postinstall.sh.in b/postinstall.sh.in
new file mode 100755
index 0000000..ce8eb5c
--- /dev/null
+++ b/postinstall.sh.in
@@ -0,0 +1,133 @@
+#!/bin/bash
+# Script to automatically build, install netcdf-fortran.
+# Very rought draft.
+
+DOCMAKE=""
+DOAUTOTOOL=""
+DOACTION=""
+
+MARG=""
+if [ $# -lt 1 ]; then
+ echo ""
+ echo "WARNING! THIS SCRIPT IS NOT MEANT TO BE RUN MANUALLY."
+ echo "WARNING! THIS SCRIPT IS NOT MEANT TO BE RUN MANUALLY."
+ echo ""
+ exit 1
+fi
+
+
+##
+# Check for 'git', exit if it's not found.
+##
+hash git 2>/dev/null
+if [ $? -eq 1 ]; then
+ echo "ERROR: 'git' is required to install netcdf-fortran automatically"
+ echo "through this method. Please reinstall git and try again."
+ exit 1
+fi
+
+while getopts "a:t:" o; do
+ case "${o}" in
+ t)
+ MARG=${OPTARG}
+ ;;
+ a)
+ DOACTION=${OPTARG}
+ ;;
+ *)
+ echo "Specify type with -t. Types are autotools or cmake."
+ exit 1
+ ;;
+ esac
+done
+
+
+###
+# Make sure we're specifying an allowed
+# build system.
+###
+case ${MARG} in
+ cmake)
+ DOCMAKE="TRUE"
+ ;;
+ autotools)
+ DOAUTOTOOL="TRUE"
+ ;;
+ *)
+ echo "Illegal type. Types are autotools or cmake."
+ exit 1
+ ;;
+esac
+
+###
+# Make sure we're performing a valid action.
+###
+case ${DOACTION} in
+ build)
+ ;;
+ install)
+ ;;
+ *)
+ echo "Illegal action."
+ exit 1
+ ;;
+esac
+
+
+###
+# Fetch netcdf-fortran from git if need be.
+###
+
+if [ ! -d "netcdf-fortran" ]; then
+ git clone http://github.com/unidata/netcdf-fortran
+fi
+
+cd netcdf-fortran
+
+###
+# Invoke cmake to build netcdf-fortran
+###
+
+if [ "x$DOCMAKE" = "xTRUE" ]; then
+
+ mkdir -p build
+ cd build
+
+ if [ "x$DOACTION" = "xbuild" ]; then
+ cmake .. -DCMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@ -DCMAKE_INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@ -DBUILD_SHARED_LIBS=@BUILD_SHARED_LIBS@ -DTEST_PARALLEL=@ENABLE_PARALLEL@ &&
+ make && make test
+ fi
+
+ if [ "x$DOACTION" = "xinstall" ]; then
+ make install
+ fi
+
+fi
+
+if [ "x$DOAUTOTOOL" = "xTRUE" ]; then
+
+ if [ "x$DOACTION" = "xbuild" ]; then
+ if [ ! -f "configure" ]; then
+ autoreconf -if
+ fi
+
+ STATIC_BUILD="--disable-static"
+ if [ "x at enable_static@" = "xyes" ]; then
+ STATIC_BUILD="--enable-static"
+ fi
+
+ SHARED_BUILD="--disable-shared"
+ if [ "x at enable_shared@" = "xyes" ]; then
+ SHARED_BUILD="--enable-shared"
+ fi
+
+ LIBS="@LIBS@" CFLAGS="-I at prefix@/include" LDFLAGS="-L at prefix@/lib" ./configure --prefix=@prefix@ $STATIC_BUILD $SHARED_BUILD
+ LIBS="@LIBS@" make
+ LIBS="@LIBS@" make check
+ fi
+
+ if [ "x$DOACTION" = "xinstall" ]; then
+ make install
+ fi
+
+fi
diff --git a/test-driver b/test-driver
new file mode 100755
index 0000000..8e575b0
--- /dev/null
+++ b/test-driver
@@ -0,0 +1,148 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+# Make unconditional expansion of undefined variables an error. This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+ echo "$0: $*" >&2
+ print_usage >&2
+ exit 2
+}
+
+print_usage ()
+{
+ cat <<END
+Usage:
+ test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+ [--expect-failure={yes|no}] [--color-tests={yes|no}]
+ [--enable-hard-errors={yes|no}] [--]
+ TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file= # Where to save the output of the test script.
+trs_file= # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+ case $1 in
+ --help) print_usage; exit $?;;
+ --version) echo "test-driver $scriptversion"; exit $?;;
+ --test-name) test_name=$2; shift;;
+ --log-file) log_file=$2; shift;;
+ --trs-file) trs_file=$2; shift;;
+ --color-tests) color_tests=$2; shift;;
+ --expect-failure) expect_failure=$2; shift;;
+ --enable-hard-errors) enable_hard_errors=$2; shift;;
+ --) shift; break;;
+ -*) usage_error "invalid option: '$1'";;
+ *) break;;
+ esac
+ shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file" = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+ usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+ usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+ # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+ red='[0;31m' # Red.
+ grn='[0;32m' # Green.
+ lgn='[1;32m' # Light green.
+ blu='[1;34m' # Blue.
+ mgn='[0;35m' # Magenta.
+ std='[m' # No color.
+else
+ red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+ tweaked_estatus=1
+else
+ tweaked_estatus=$estatus
+fi
+
+case $tweaked_estatus:$expect_failure in
+ 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+ 0:*) col=$grn res=PASS recheck=no gcopy=no;;
+ 77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
+ 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
+ *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
+ *:*) col=$red res=FAIL recheck=yes gcopy=yes;;
+esac
+
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/wjna b/wjna
index d673537..82e3aa3 100644
--- a/wjna
+++ b/wjna
@@ -2,8 +2,8 @@
REBUILD=1
-VS=12
-#VS=10
+#VS=12
+VS=10
JNADIR="c:/opt/jna"
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/netcdf.git
More information about the Pkg-grass-devel
mailing list