2018-12-07 06:51:35 +08:00
|
|
|
/*! \file
|
|
|
|
|
|
|
|
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|
|
|
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
|
|
|
|
2015, 2016, 2017, 2018
|
|
|
|
University Corporation for Atmospheric Research/Unidata.
|
|
|
|
|
|
|
|
See \ref copyright file for more info.
|
|
|
|
|
|
|
|
*/
|
2017-02-01 01:59:03 +08:00
|
|
|
#ifndef CONFIG_H
|
|
|
|
#define CONFIG_H
|
|
|
|
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
|
2017-06-02 04:48:23 +08:00
|
|
|
/* Prevent an issue where there is a circular inclusion
|
|
|
|
of winsock.h/windows.h. This weird state occurs with
|
|
|
|
libdap4 and hdf4 support. The solution comes from the
|
|
|
|
following URL, found after a bit of research.
|
|
|
|
|
|
|
|
Added in support of the 4.5.0-rc1. Hello, future generations.
|
|
|
|
|
|
|
|
* https://stackoverflow.com/questions/1372480/c-redefinition-header-files-winsock2-h
|
|
|
|
|
|
|
|
*/
|
2017-07-27 03:40:03 +08:00
|
|
|
|
2017-09-26 07:38:48 +08:00
|
|
|
/* #cmakedefine HAVE_WINSOCK2_H
|
2017-07-27 03:40:03 +08:00
|
|
|
|
|
|
|
#ifdef HAVE_WINSOCK2_H
|
2017-09-04 05:09:10 +08:00
|
|
|
#define _WINSOCKAPI_
|
2017-07-27 03:40:03 +08:00
|
|
|
#endif
|
2017-09-26 07:38:48 +08:00
|
|
|
*/
|
2017-05-24 06:07:18 +08:00
|
|
|
#if _MSC_VER>=1900
|
|
|
|
#define STDC99
|
|
|
|
#endif
|
2017-02-01 01:59:03 +08:00
|
|
|
/* Define O_BINARY so that the appropriate flags
|
|
|
|
are set when opening a binary file on Windows. */
|
|
|
|
|
|
|
|
/* Disable a few warnings under Visual Studio, for the
|
|
|
|
time being. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#include <io.h>
|
|
|
|
#pragma warning( disable: 4018 4996 4244 4305 )
|
|
|
|
#define unlink _unlink
|
|
|
|
#define open _open
|
|
|
|
#define close _close
|
|
|
|
#define read _read
|
|
|
|
#define lseek _lseeki64
|
|
|
|
|
2020-12-11 20:21:47 +08:00
|
|
|
#ifndef __clang__
|
2017-05-24 06:07:18 +08:00
|
|
|
#define fstat _fstat64
|
2020-12-11 20:21:47 +08:00
|
|
|
#endif
|
2017-05-24 06:07:18 +08:00
|
|
|
|
|
|
|
#define off_t __int64
|
|
|
|
#define _off_t __int64
|
|
|
|
|
|
|
|
#ifndef _OFF_T_DEFINED
|
|
|
|
#define _OFF_T_DEFINED
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define strdup _strdup
|
|
|
|
#define fdopen _fdopen
|
|
|
|
#define write _write
|
|
|
|
#define strtoll _strtoi64
|
|
|
|
#endif /*_MSC_VER */
|
2013-11-01 01:10:20 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine const
|
2013-11-01 01:10:20 +08:00
|
|
|
|
2017-05-24 06:12:26 +08:00
|
|
|
#ifndef _FILE_OFFSET_BITS
|
2017-05-24 06:41:23 +08:00
|
|
|
#cmakedefine _FILE_OFFSET_BITS ${_FILE_OFFSET_BITS}
|
2017-05-24 06:12:26 +08:00
|
|
|
#cmakedefine _LARGEFILE64_SOURCE
|
|
|
|
#cmakedefine _LARGEFILE_SOURCE
|
|
|
|
#endif
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define if building universal (internal helper macro) */
|
|
|
|
#cmakedefine AC_APPLE_UNIVERSAL_BUILD 1
|
2014-12-28 14:59:06 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* default file chunk cache nelems. */
|
|
|
|
#cmakedefine CHUNK_CACHE_NELEMS ${CHUNK_CACHE_NELEMS}
|
2013-04-03 06:09:31 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* default file chunk cache preemption policy. */
|
|
|
|
#cmakedefine CHUNK_CACHE_PREEMPTION ${CHUNK_CACHE_PREEMPTION}
|
2012-09-05 06:10:32 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* default file chunk cache size in bytes. */
|
|
|
|
#cmakedefine CHUNK_CACHE_SIZE ${CHUNK_CACHE_SIZE}
|
2012-12-06 06:06:38 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* 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.
|
|
|
|
*/
|
|
|
|
#cmakedefine CRAY_STACKSEG_END
|
2012-07-18 04:50:43 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if using `alloca.c'. */
|
|
|
|
#cmakedefine C_ALLOCA 1
|
2012-12-21 05:50:45 +08:00
|
|
|
|
2023-08-11 06:57:57 +08:00
|
|
|
/* default num chunks per cache. */
|
|
|
|
#cmakedefine DEFAULT_CHUNKS_CACHE_SIZE ${DEFAULT_CHUNKS_CACHE_SIZE}
|
|
|
|
|
|
|
|
/* default num chunks per cache. */
|
|
|
|
#cmakedefine DEFAULT_CHUNK_CACHE_PREEMPTION ${DEFAULT_CHUNK_CACHE_PREEMPTION}
|
|
|
|
|
|
|
|
/* default total chunks cache size. */
|
|
|
|
#cmakedefine DEFAULT_CHUNK_CACHE_SIZE ${DEFAULT_CHUNK_CACHE_SIZE}
|
|
|
|
|
|
|
|
/* default num chunks per cache. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine DEFAULT_CHUNKS_IN_CACHE ${DEFAULT_CHUNKS_IN_CACHE}
|
2012-07-18 04:50:43 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* default chunk size in bytes */
|
|
|
|
#cmakedefine DEFAULT_CHUNK_SIZE ${DEFAULT_CHUNK_SIZE}
|
|
|
|
|
|
|
|
/* set this only when building a DLL under MinGW */
|
|
|
|
#cmakedefine DLL_EXPORT 1
|
|
|
|
|
|
|
|
/* set this only when building a DLL under MinGW */
|
|
|
|
#cmakedefine DLL_NETCDF 1
|
|
|
|
|
2021-10-30 10:06:37 +08:00
|
|
|
/* if true, use atexist */
|
2024-03-19 04:30:20 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_ATEXIT_FINALIZE 1
|
2021-10-30 10:06:37 +08:00
|
|
|
|
2019-02-25 07:54:13 +08:00
|
|
|
/* if true, build byte-range Client */
|
2024-03-19 04:31:58 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_BYTERANGE 1
|
2019-02-25 07:54:13 +08:00
|
|
|
|
2023-11-15 06:43:58 +08:00
|
|
|
/* if true, enable ERANGE fill */
|
2024-03-19 04:35:28 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_ERANGE_FILL 1
|
|
|
|
#ifdef NETCDF_ENABLE_ERANGE_FILL
|
2023-11-15 06:43:58 +08:00
|
|
|
#define ERANGE_FILL 1
|
|
|
|
#endif
|
|
|
|
|
2024-10-01 04:39:48 +08:00
|
|
|
/* if true, use hdf5 S3 virtual file reader */
|
|
|
|
#cmakedefine NETCDF_ENABLE_HDF5 1
|
|
|
|
|
2020-09-25 04:33:58 +08:00
|
|
|
/* if true, use hdf5 S3 virtual file reader */
|
2024-03-19 04:36:59 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_HDF5_ROS3 1
|
2020-09-25 04:33:58 +08:00
|
|
|
|
2017-09-14 05:25:40 +08:00
|
|
|
/* if true, enable CDF5 Support */
|
2024-03-19 04:32:03 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_CDF5 1
|
2017-09-14 05:25:40 +08:00
|
|
|
|
2024-05-16 08:46:25 +08:00
|
|
|
/* if true, enable filter testing */
|
|
|
|
#cmakedefine NETCDF_ENABLE_FILTER_TESTING 1
|
This PR adds EXPERIMENTAL support for accessing data in the
cloud using a variant of the Zarr protocol and storage
format. This enhancement is generically referred to as "NCZarr".
The data model supported by NCZarr is netcdf-4 minus the user-defined
types and the String type. In this sense it is similar to the CDF-5
data model.
More detailed information about enabling and using NCZarr is
described in the document NUG/nczarr.md and in a
[Unidata Developer's blog entry](https://www.unidata.ucar.edu/blogs/developer/en/entry/overview-of-zarr-support-in).
WARNING: this code has had limited testing, so do use this version
for production work. Also, performance improvements are ongoing.
Note especially the following platform matrix of successful tests:
Platform | Build System | S3 support
------------------------------------
Linux+gcc | Automake | yes
Linux+gcc | CMake | yes
Visual Studio | CMake | no
Additionally, and as a consequence of the addition of NCZarr,
major changes have been made to the Filter API. NOTE: NCZarr
does not yet support filters, but these changes are enablers for
that support in the future. Note that it is possible
(probable?) that there will be some accidental reversions if the
changes here did not correctly mimic the existing filter testing.
In any case, previously filter ids and parameters were of type
unsigned int. In order to support the more general zarr filter
model, this was all converted to char*. The old HDF5-specific,
unsigned int operations are still supported but they are
wrappers around the new, char* based nc_filterx_XXX functions.
This entailed at least the following changes:
1. Added the files libdispatch/dfilterx.c and include/ncfilter.h
2. Some filterx utilities have been moved to libdispatch/daux.c
3. A new entry, "filter_actions" was added to the NCDispatch table
and the version bumped.
4. An overly complex set of structs was created to support funnelling
all of the filterx operations thru a single dispatch
"filter_actions" entry.
5. Move common code to from libhdf5 to libsrc4 so that it is accessible
to nczarr.
Changes directly related to Zarr:
1. Modified CMakeList.txt and configure.ac to support both C and C++
-- this is in support of S3 support via the awd-sdk libraries.
2. Define a size64_t type to support nczarr.
3. More reworking of libdispatch/dinfermodel.c to
support zarr and to regularize the structure of the fragments
section of a URL.
Changes not directly related to Zarr:
1. Make client-side filter registration be conditional, with default off.
2. Hack include/nc4internal.h to make some flags added by Ed be unique:
e.g. NC_CREAT, NC_INDEF, etc.
3. cleanup include/nchttp.h and libdispatch/dhttp.c.
4. Misc. changes to support compiling under Visual Studio including:
* Better testing under windows for dirent.h and opendir and closedir.
5. Misc. changes to the oc2 code to support various libcurl CURLOPT flags
and to centralize error reporting.
6. By default, suppress the vlen tests that have unfixed memory leaks; add option to enable them.
7. Make part of the nc_test/test_byterange.sh test be contingent on remotetest.unidata.ucar.edu being accessible.
Changes Left TO-DO:
1. fix provenance code, it is too HDF5 specific.
2020-06-29 08:02:47 +08:00
|
|
|
|
2024-05-12 06:23:40 +08:00
|
|
|
/* if true, enable filter testing */
|
|
|
|
#cmakedefine NETCDF_ENABLE_FILTER_TESTING 1
|
|
|
|
|
2017-11-21 04:52:06 +08:00
|
|
|
/* if true, enable strict null byte header padding. */
|
|
|
|
#cmakedefine USE_STRICT_NULL_BYTE_HEADER_PADDING 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* if true, build DAP2 and DAP4 Client */
|
2024-03-19 04:32:23 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_DAP 1
|
2017-05-24 06:07:18 +08:00
|
|
|
|
|
|
|
/* if true, build DAP4 Client */
|
2024-03-19 04:32:23 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_DAP4 1
|
2017-05-24 06:07:18 +08:00
|
|
|
|
|
|
|
/* if true, do remote tests */
|
2024-03-19 04:32:23 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_DAP_REMOTE_TESTS 1
|
2017-05-24 06:07:18 +08:00
|
|
|
|
This PR adds EXPERIMENTAL support for accessing data in the
cloud using a variant of the Zarr protocol and storage
format. This enhancement is generically referred to as "NCZarr".
The data model supported by NCZarr is netcdf-4 minus the user-defined
types and the String type. In this sense it is similar to the CDF-5
data model.
More detailed information about enabling and using NCZarr is
described in the document NUG/nczarr.md and in a
[Unidata Developer's blog entry](https://www.unidata.ucar.edu/blogs/developer/en/entry/overview-of-zarr-support-in).
WARNING: this code has had limited testing, so do use this version
for production work. Also, performance improvements are ongoing.
Note especially the following platform matrix of successful tests:
Platform | Build System | S3 support
------------------------------------
Linux+gcc | Automake | yes
Linux+gcc | CMake | yes
Visual Studio | CMake | no
Additionally, and as a consequence of the addition of NCZarr,
major changes have been made to the Filter API. NOTE: NCZarr
does not yet support filters, but these changes are enablers for
that support in the future. Note that it is possible
(probable?) that there will be some accidental reversions if the
changes here did not correctly mimic the existing filter testing.
In any case, previously filter ids and parameters were of type
unsigned int. In order to support the more general zarr filter
model, this was all converted to char*. The old HDF5-specific,
unsigned int operations are still supported but they are
wrappers around the new, char* based nc_filterx_XXX functions.
This entailed at least the following changes:
1. Added the files libdispatch/dfilterx.c and include/ncfilter.h
2. Some filterx utilities have been moved to libdispatch/daux.c
3. A new entry, "filter_actions" was added to the NCDispatch table
and the version bumped.
4. An overly complex set of structs was created to support funnelling
all of the filterx operations thru a single dispatch
"filter_actions" entry.
5. Move common code to from libhdf5 to libsrc4 so that it is accessible
to nczarr.
Changes directly related to Zarr:
1. Modified CMakeList.txt and configure.ac to support both C and C++
-- this is in support of S3 support via the awd-sdk libraries.
2. Define a size64_t type to support nczarr.
3. More reworking of libdispatch/dinfermodel.c to
support zarr and to regularize the structure of the fragments
section of a URL.
Changes not directly related to Zarr:
1. Make client-side filter registration be conditional, with default off.
2. Hack include/nc4internal.h to make some flags added by Ed be unique:
e.g. NC_CREAT, NC_INDEF, etc.
3. cleanup include/nchttp.h and libdispatch/dhttp.c.
4. Misc. changes to support compiling under Visual Studio including:
* Better testing under windows for dirent.h and opendir and closedir.
5. Misc. changes to the oc2 code to support various libcurl CURLOPT flags
and to centralize error reporting.
6. By default, suppress the vlen tests that have unfixed memory leaks; add option to enable them.
7. Make part of the nc_test/test_byterange.sh test be contingent on remotetest.unidata.ucar.edu being accessible.
Changes Left TO-DO:
1. fix provenance code, it is too HDF5 specific.
2020-06-29 08:02:47 +08:00
|
|
|
/* if true, enable NCZARR */
|
2024-03-19 04:37:39 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_NCZARR 1
|
This PR adds EXPERIMENTAL support for accessing data in the
cloud using a variant of the Zarr protocol and storage
format. This enhancement is generically referred to as "NCZarr".
The data model supported by NCZarr is netcdf-4 minus the user-defined
types and the String type. In this sense it is similar to the CDF-5
data model.
More detailed information about enabling and using NCZarr is
described in the document NUG/nczarr.md and in a
[Unidata Developer's blog entry](https://www.unidata.ucar.edu/blogs/developer/en/entry/overview-of-zarr-support-in).
WARNING: this code has had limited testing, so do use this version
for production work. Also, performance improvements are ongoing.
Note especially the following platform matrix of successful tests:
Platform | Build System | S3 support
------------------------------------
Linux+gcc | Automake | yes
Linux+gcc | CMake | yes
Visual Studio | CMake | no
Additionally, and as a consequence of the addition of NCZarr,
major changes have been made to the Filter API. NOTE: NCZarr
does not yet support filters, but these changes are enablers for
that support in the future. Note that it is possible
(probable?) that there will be some accidental reversions if the
changes here did not correctly mimic the existing filter testing.
In any case, previously filter ids and parameters were of type
unsigned int. In order to support the more general zarr filter
model, this was all converted to char*. The old HDF5-specific,
unsigned int operations are still supported but they are
wrappers around the new, char* based nc_filterx_XXX functions.
This entailed at least the following changes:
1. Added the files libdispatch/dfilterx.c and include/ncfilter.h
2. Some filterx utilities have been moved to libdispatch/daux.c
3. A new entry, "filter_actions" was added to the NCDispatch table
and the version bumped.
4. An overly complex set of structs was created to support funnelling
all of the filterx operations thru a single dispatch
"filter_actions" entry.
5. Move common code to from libhdf5 to libsrc4 so that it is accessible
to nczarr.
Changes directly related to Zarr:
1. Modified CMakeList.txt and configure.ac to support both C and C++
-- this is in support of S3 support via the awd-sdk libraries.
2. Define a size64_t type to support nczarr.
3. More reworking of libdispatch/dinfermodel.c to
support zarr and to regularize the structure of the fragments
section of a URL.
Changes not directly related to Zarr:
1. Make client-side filter registration be conditional, with default off.
2. Hack include/nc4internal.h to make some flags added by Ed be unique:
e.g. NC_CREAT, NC_INDEF, etc.
3. cleanup include/nchttp.h and libdispatch/dhttp.c.
4. Misc. changes to support compiling under Visual Studio including:
* Better testing under windows for dirent.h and opendir and closedir.
5. Misc. changes to the oc2 code to support various libcurl CURLOPT flags
and to centralize error reporting.
6. By default, suppress the vlen tests that have unfixed memory leaks; add option to enable them.
7. Make part of the nc_test/test_byterange.sh test be contingent on remotetest.unidata.ucar.edu being accessible.
Changes Left TO-DO:
1. fix provenance code, it is too HDF5 specific.
2020-06-29 08:02:47 +08:00
|
|
|
|
2021-09-03 07:04:26 +08:00
|
|
|
/* if true, enable nczarr filter support */
|
2024-03-19 04:37:39 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_NCZARR_FILTERS 1
|
2021-09-03 07:04:26 +08:00
|
|
|
|
2023-03-03 10:51:02 +08:00
|
|
|
/* if true, enable nczarr zip support */
|
2024-03-19 04:37:39 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_NCZARR_ZIP 1
|
2020-08-18 09:15:47 +08:00
|
|
|
|
2021-09-03 07:04:26 +08:00
|
|
|
/* if true, Allow dynamically loaded plugins */
|
2024-03-19 04:40:00 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_PLUGINS 1
|
2021-09-03 07:04:26 +08:00
|
|
|
|
Extend the netcdf API to support programmatic changes to the plugin search path
Replaces PR https://github.com/Unidata/netcdf-c/pull/3024
and PR https://github.com/Unidata/netcdf-c/pull/3033
re: https://github.com/Unidata/netcdf-c/issues/2753
As suggested by Ed Hartnett, This PR extends the netcdf.h API to support programmatic control over the search path used to locate plugins.
I created several different APIs, but finally settled on the following API as being the simplest possible. It does have the disadvantage that it requires use of a global lock (not implemented) if used in a threaded environment.
Specifically, note that modifying the plugin path must be done "atomically". That is, in a multi-threaded environment, it is important that the sequence of actions involved in setting up the plugin path must be done by a single processor or in some other way as to guarantee that two or more processors are not simultaneously accessing the plugin path get/set operations.
As an example, assume there exists a mutex lock called PLUGINLOCK. Then any processor accessing the plugin paths should operate as follows:
````
lock(PLUGINLOCK);
nc_plugin_path_get(...);
<rebuild plugin path>
nc_plugin_path_set(...);
unlock(PLUGINLOCK);
````
## Internal Architecture
It is assumed here that there only needs to be a single set of plugin path directories that is shared by all filter code and is independent of any file descriptor; it is global in other words. This means, for example, that the path list for NCZarr and for HDF5 will always be the same.
However internally, processing the set of plugin paths depends on the particular NC_FORMATX value (NC_FORMATX_NC_HDF5 and NC_FORMATX_NCZARR, currently). So the *nc_plugin_path_set* function, will take the paths it is given and propagate them to each of the NC_FORMATX dispatchers to store in a way that is appropriate to the given dispatcher.
There is a complication with respect to the *nc_plugin_path_get* function. It is possible for users to bypass the netcdf API and modify the HDF5 plugin paths directly. This can result in an inconsistent plugin path between the value used by HDF5 and the global value used by netcdf-c. Since there is no obvious fix for this, we warn the user of this possibility and otherwise ignore it.
## Test Changes
* New tests<br>
a. unit_test/run_pluginpaths.sh -- was created to test this new capability.<br>
b. A new test utility has been added as *unit_test/run_dfaltpluginpath.sh* to test the default plugin path list.
* New test support utilities<br>
a. unit_test/ncpluginpath.c -- report current state of the plugin path<br>
b. unit_test/tst_pluginpaths.c -- test program to support run_pluginpaths.sh
## Documentation
* A new file -- docs/pluginpath.md -- provides documentation of the new API. It includes some
material taken fro filters.md.
## Other Major Changes
1. Cleanup the whole plugin path decision tree. This is described in the *docs/pluginpath.md* document and summarized in Addendum 2 below.
2. I noticed that the ncdump/testpathcvt.sh had been disabled, so fixed and re-enabled it. This necessitated some significant changes to dpathmgr.c.
## Misc. Changes
1. Add some path manipulation utilities to netcf_aux.h
2. Fix some minor bugs in netcdf_json.h
3. Convert netcdf_json.h and netcdf_proplist.h to BUILT_SOURCE.
4. Add NETCDF_ENABLE_HDF5 as synonym for USE_HDF5
5. Fix some size_t <-> int conversion warnings.
6. Encountered and fixed the Windows \r\n problem in tst_pluginpaths.c.
7. Cleanup some minor CMakeLists.txt problems.
8. Provide an implementation of echo -n since it appears to not be
available on all platforms.
9. Add a property list mechanism to pass environmental information to filters.
10. Cleanup Doxyfile.in
11. Fixed a memory leak in libdap2; surprised that I did not find this earlier.
## Addendum 1: Proposed API
The API makes use of a counted vector of strings representing the sequence of directories in the path. The relevant type definition is as follows.
````
typedef struct NCPluginList {size_t ndirs; char** dirs;} NCPluginList;
````
The API proposed in this PR looks like this (from netcdf-c/include/netcdf_filter.h).
* ````int nc_plugin_path_ndirs(size_t* ndirsp);````
Arguments: *ndirsp* -- store the number of directories in this memory.
This function returns the number of directories in the sequence if internal directories of the internal plugin path list.
* ````int nc_plugin_path_get(NCPluginList* dirs);````
Arguments: *dirs* -- counted vector for storing the sequence of directies in the internal path list.
This function returns the current sequence of directories from the internal plugin path list. Since this function does not modify the plugin path, it does not need to be locked; it is only when used to get the path to be modified that locking is required. If the value of *dirs.dirs* is NULL (the normal case), then memory is allocated to hold the vector of directories. Otherwise, use the memory of *dirs.dirs* to hold the vector of directories.
* ````int nc_plugin_path_set(const NCPluginList* dirs);````
Arguments: *dirs* -- counted vector for providing the new sequence of directories in the internal path list.
This function empties the current internal path sequence and replaces it with the sequence of directories argument. Using an *ndirs* argument of 0 will clear the set of plugin paths.
## Addendum 2: Build-Time and Run-Time Constants.
### Build-Time Constants
<table style="border:2px solid black;border-collapse:collapse">
<tr style="outline: thin solid;" align="center"><td colspan="4">Table showing the build-time computation of NETCDF_PLUGIN_INSTALL_DIR and NETCDF_PLUGIN_SEARCH_PATH.</td>
<tr style="outline: thin solid" ><th>--with-plugin-dir<th>--prefix<th>NETCDF_PLUGIN_INSTALL_DIR<th>NETCDF_PLUGIN_SEARCH_PATH
<tr style="outline: thin solid" ><td>undefined<td>undefined<td>undefined<td>PLATFORMDEFALT
<tr style="outline: thin solid" ><td>undefined<td><abspath-prefix><td><abspath-prefix>/hdf5/lib/plugin<td><abspath-prefix>/hdf5/lib/plugin<SEP>PLATFORMDEFALT
<tr style="outline: thin solid" ><td><abspath-plugins><td>N.A.<td><abspath-plugins><td><abspath-plugins><SEP>PLATFORMDEFALT
</table>
<table style="border:2px solid black;border-collapse:collapse">
<tr style="outline: thin solid" align="center"><td colspan="2">Table showing the computation of the initial global plugin path</td>
<tr style="outline: thin solid"><th>HDF5_PLUGIN_PATH<th>Initial global plugin path
<tr style="outline: thin solid"><td>undefined<td>NETCDF_PLUGIN_SEARCH_PATH
<tr style="outline: thin solid"><td><path1;...pathn><td><path1;...pathn>
</table>
2024-10-19 09:23:59 +08:00
|
|
|
/* Define the plugin install dir */
|
|
|
|
#cmakedefine NETCDF_PLUGIN_INSTALL_DIR "${NETCDF_PLUGIN_INSTALL_DIR}"
|
|
|
|
|
|
|
|
/* Define the plugin search path */
|
|
|
|
#cmakedefine NETCDF_PLUGIN_SEARCH_PATH "${NETCDF_PLUGIN_SEARCH_PATH}"
|
|
|
|
|
2023-04-26 07:15:06 +08:00
|
|
|
/* if true, enable S3 support */
|
2024-03-19 04:40:19 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_S3 1
|
2023-04-26 07:15:06 +08:00
|
|
|
|
|
|
|
/* if true, AWS S3 SDK is available */
|
2024-03-19 04:40:19 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_S3_AWS 1
|
2023-04-26 07:15:06 +08:00
|
|
|
|
|
|
|
/* if true, Force use of S3 internal library */
|
2024-03-19 04:40:19 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_S3_INTERNAL 1
|
2023-04-26 07:15:06 +08:00
|
|
|
|
2023-05-10 11:13:49 +08:00
|
|
|
/* if true, enable S3 testing*/
|
2024-05-12 06:23:40 +08:00
|
|
|
#cmakedefine WITH_S3_TESTING "${WITH_S3_TESTING}"
|
2023-05-10 11:13:49 +08:00
|
|
|
|
Mitigate S3 test interference + Unlimited Dimensions in NCZarr
This PR started as an attempt to add unlimited dimensions to NCZarr.
It did that, but this exposed significant problems with test interference.
So this PR is mostly about fixing -- well mitigating anyway -- test
interference.
The problem of test interference is now documented in the document docs/internal.md.
The solutions implemented here are also describe in that document.
The solution is somewhat fragile but multiple cleanup mechanisms
are provided. Note that this feature requires that the
AWS command line utility must be installed.
## Unlimited Dimensions.
The existing NCZarr extensions to Zarr are modified to support unlimited dimensions.
NCzarr extends the Zarr meta-data for the ".zgroup" object to include netcdf-4 model extensions. This information is stored in ".zgroup" as dictionary named "_nczarr_group".
Inside "_nczarr_group", there is a key named "dims" that stores information about netcdf-4 named dimensions. The value of "dims" is a dictionary whose keys are the named dimensions. The value associated with each dimension name has one of two forms
Form 1 is a special case of form 2, and is kept for backward compatibility. Whenever a new file is written, it uses format 1 if possible, otherwise format 2.
* Form 1: An integer representing the size of the dimension, which is used for simple named dimensions.
* Form 2: A dictionary with the following keys and values"
- "size" with an integer value representing the (current) size of the dimension.
- "unlimited" with a value of either "1" or "0" to indicate if this dimension is an unlimited dimension.
For Unlimited dimensions, the size is initially zero, and as variables extend the length of that dimension, the size value for the dimension increases.
That dimension size is shared by all arrays referencing that dimension, so if one array extends an unlimited dimension, it is implicitly extended for all other arrays that reference that dimension.
This is the standard semantics for unlimited dimensions.
Adding unlimited dimensions required a number of other changes to the NCZarr code-base. These included the following.
* Did a partial refactor of the slice handling code in zwalk.c to clean it up.
* Added a number of tests for unlimited dimensions derived from the same test in nc_test4.
* Added several NCZarr specific unlimited tests; more are needed.
* Add test of endianness.
## Misc. Other Changes
* Modify libdispatch/ncs3sdk_aws.cpp to optionally support use of the
AWS Transfer Utility mechanism. This is controlled by the
```#define TRANSFER```` command in that file. It defaults to being disabled.
* Parameterize both the standard Unidata S3 bucket (S3TESTBUCKET) and the netcdf-c test data prefix (S3TESTSUBTREE).
* Fixed an obscure memory leak in ncdump.
* Removed some obsolete unit testing code and test cases.
* Uncovered a bug in the netcdf-c handling of big-endian floats and doubles. Have not fixed yet. See tst_h5_endians.c.
* Renamed some nczarr_tests testcases to avoid name conflicts with nc_test4.
* Modify the semantics of zmap\#ncsmap_write to only allow total rewrite of objects.
* Modify the semantics of zodom to properly handle stride > 1.
* Add a truncate operation to the libnczarr zmap code.
2023-09-27 06:56:48 +08:00
|
|
|
/* S3 Test Bucket */
|
|
|
|
#define S3TESTBUCKET "${S3TESTBUCKET}"
|
|
|
|
|
|
|
|
/* S3 Working subtree path prefix*/
|
|
|
|
#define S3TESTSUBTREE "${S3TESTSUBTREE}"
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* if true, run extra tests which may not work yet */
|
|
|
|
#cmakedefine EXTRA_TESTS 1
|
|
|
|
|
|
|
|
/* use HDF5 1.6 API */
|
|
|
|
#cmakedefine H5_USE_16_API 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have `alloca', as a function or macro. */
|
|
|
|
#cmakedefine HAVE_ALLOCA 1
|
|
|
|
|
2021-10-30 10:06:37 +08:00
|
|
|
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_ALLOCA_H 1
|
|
|
|
|
2021-10-30 10:06:37 +08:00
|
|
|
/* Define to 1 if you have the `atexit function. */
|
|
|
|
#cmakedefine HAVE_ATEXIT 1
|
|
|
|
|
Enhance/Fix filter support
re: Discussion https://github.com/Unidata/netcdf-c/discussions/2214
The primary change is to support so-called "standard filters".
A standard filter is one that is defined by the following
netcdf-c API:
````
int nc_def_var_XXX(int ncid, int varid, size_t nparams, unsigned* params);
int nc_inq_var_XXXX(int ncid, int varid, int* usefilterp, unsigned* params);
````
So for example, zstandard would be a standard filter by defining
the functions *nc_def_var_zstandard* and *nc_inq_var_zstandard*.
In order to define these functions, we need a new dispatch function:
````
int nc_inq_filter_avail(int ncid, unsigned filterid);
````
This function, combined with the existing filter API can be used
to implement arbitrary standard filters using a simple code pattern.
Note that I would have preferred that this function return a list
of all available filters, but HDF5 does not support that functionality.
So this PR implements the dispatch function and implements
the following standard functions:
+ bzip2
+ zstandard
+ blosc
Specific test cases are also provided for HDF5 and NCZarr.
Over time, other specific standard filters will be defined.
## Primary Changes
* Add nc_inq_filter_avail() to netcdf-c API.
* Add standard filter implementations to test use of *nc_inq_filter_avail*.
* Bump the dispatch table version number and add to all the relevant
dispatch tables (libsrc, libsrcp, etc).
* Create a program to invoke nc_inq_filter_avail so that it is accessible
to shell scripts.
* Cleanup szip support to properly support szip
when HDF5 is disabled. This involves detecting
libsz separately from testing if HDF5 supports szip.
* Integrate shuffle and fletcher32 into the existing
filter API. This means that, for example, nc_def_var_fletcher32
is now a wrapper around nc_def_var_filter.
* Extend the Codec defaulting to allow multiple default shared libraries.
## Misc. Changes
* Modify configure.ac/CMakeLists.txt to look for the relevant
libraries implementing standard filters.
* Modify libnetcdf.settings to list available standard filters
(including deflate and szip).
* Add CMake test modules to locate libbz2 and libzstd.
* Cleanup the HDF5 memory manager function use in the plugins.
* remove unused file include//ncfilter.h
* remove tests for the HDF5 memory operations e.g. H5allocate_memory.
* Add flag to ncdump to force use of _Filter instead of _Deflate
or _Shuffle or _Fletcher32. Used for testing.
2022-03-15 02:39:37 +08:00
|
|
|
/* Define to 1 if bzip2 library available. */
|
Support installation of filters into user-specified location
re: https://github.com/Unidata/netcdf-c/issues/2294
Ed Hartnett suggested that the netcdf library installation process
be extended to install the standard filters into a user specified
location. The user can then set HDF5_PLUGIN_PATH to that location.
This PR provides that capability using:
````
configure option: --with-plugin-dir=<absolute directory path>
cmake option: -DPLUGIN_INSTALL_DIR=<absolute directory path>
````
Currently, the following plugins are always installed, if
available: bzip2, zstd, blosc.
If NCZarr is enabled, then additional plugins are installed:
fletcher32, shuffle, deflate, szip.
Additionally, the necessary codec support is installed
for each of the above filters that is installed.
## Changes:
1. Cleanup handling of built-in bzip2.
2. Add documentation to docs/filters.md
3. Re-factor the NCZarr codec libraries
4. Add a test, although it can only be exercised after
the library is installed, so it cannot be used during
normal testing.
5. Cleanup use of HDF5_PLUGIN_PATH in the filter test cases.
2022-04-30 04:31:55 +08:00
|
|
|
#cmakedefine HAVE_BZ2 1
|
Enhance/Fix filter support
re: Discussion https://github.com/Unidata/netcdf-c/discussions/2214
The primary change is to support so-called "standard filters".
A standard filter is one that is defined by the following
netcdf-c API:
````
int nc_def_var_XXX(int ncid, int varid, size_t nparams, unsigned* params);
int nc_inq_var_XXXX(int ncid, int varid, int* usefilterp, unsigned* params);
````
So for example, zstandard would be a standard filter by defining
the functions *nc_def_var_zstandard* and *nc_inq_var_zstandard*.
In order to define these functions, we need a new dispatch function:
````
int nc_inq_filter_avail(int ncid, unsigned filterid);
````
This function, combined with the existing filter API can be used
to implement arbitrary standard filters using a simple code pattern.
Note that I would have preferred that this function return a list
of all available filters, but HDF5 does not support that functionality.
So this PR implements the dispatch function and implements
the following standard functions:
+ bzip2
+ zstandard
+ blosc
Specific test cases are also provided for HDF5 and NCZarr.
Over time, other specific standard filters will be defined.
## Primary Changes
* Add nc_inq_filter_avail() to netcdf-c API.
* Add standard filter implementations to test use of *nc_inq_filter_avail*.
* Bump the dispatch table version number and add to all the relevant
dispatch tables (libsrc, libsrcp, etc).
* Create a program to invoke nc_inq_filter_avail so that it is accessible
to shell scripts.
* Cleanup szip support to properly support szip
when HDF5 is disabled. This involves detecting
libsz separately from testing if HDF5 supports szip.
* Integrate shuffle and fletcher32 into the existing
filter API. This means that, for example, nc_def_var_fletcher32
is now a wrapper around nc_def_var_filter.
* Extend the Codec defaulting to allow multiple default shared libraries.
## Misc. Changes
* Modify configure.ac/CMakeLists.txt to look for the relevant
libraries implementing standard filters.
* Modify libnetcdf.settings to list available standard filters
(including deflate and szip).
* Add CMake test modules to locate libbz2 and libzstd.
* Cleanup the HDF5 memory manager function use in the plugins.
* remove unused file include//ncfilter.h
* remove tests for the HDF5 memory operations e.g. H5allocate_memory.
* Add flag to ncdump to force use of _Filter instead of _Deflate
or _Shuffle or _Fletcher32. Used for testing.
2022-03-15 02:39:37 +08:00
|
|
|
|
|
|
|
/* Define to 1 if zstd library available. */
|
|
|
|
#cmakedefine HAVE_ZSTD 1
|
|
|
|
|
|
|
|
/* Define to 1 if blosc library available. */
|
|
|
|
#cmakedefine HAVE_BLOSC 1
|
|
|
|
|
2024-05-12 06:23:40 +08:00
|
|
|
/* if true enable tests that access external servers */
|
|
|
|
#cmakedefine NETCDF_ENABLE_EXTERNAL_SERVER_TESTS 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have hdf5_coll_metadata_ops */
|
|
|
|
#cmakedefine HDF5_HAS_COLL_METADATA_OPS 1
|
|
|
|
|
|
|
|
/* Is CURLINFO_RESPONSE_CODE defined */
|
2014-03-12 06:02:46 +08:00
|
|
|
#cmakedefine HAVE_CURLINFO_RESPONSE_CODE 1
|
2017-05-24 06:07:18 +08:00
|
|
|
|
2017-09-26 03:29:04 +08:00
|
|
|
/* Is CURLINFO_HTTP_CODE defined */
|
2017-09-26 07:38:48 +08:00
|
|
|
#cmakedefine HAVE_CURLINFO_HTTP_CONNECTCODE 1
|
2017-09-26 03:29:04 +08:00
|
|
|
|
2018-08-27 07:04:46 +08:00
|
|
|
/* Is CURLOPT_BUFFERSIZE defined */
|
|
|
|
#cmakedefine HAVE_CURLOPT_BUFFERSIZE 1
|
|
|
|
|
|
|
|
/* Is CURLOPT_TCP_KEEPALIVE defined */
|
|
|
|
#cmakedefine HAVE_CURLOPT_KEEPALIVE 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Is CURLOPT_KEYPASSWD defined */
|
|
|
|
#cmakedefine HAVE_CURLOPT_KEYPASSWD 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Is CURLOPT_PASSWORD defined */
|
|
|
|
#cmakedefine HAVE_CURLOPT_PASSWORD 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Is CURLOPT_USERNAME defined */
|
|
|
|
#cmakedefine HAVE_CURLOPT_USERNAME 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2020-04-11 03:42:27 +08:00
|
|
|
/* Is LIBCURL version >= 7.66 */
|
|
|
|
#cmakedefine HAVE_LIBCURL_766 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the declaration of `isfinite', and to 0 if you
|
|
|
|
don't. */
|
|
|
|
#cmakedefine HAVE_DECL_ISFINITE 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
|
|
|
|
*/
|
|
|
|
#cmakedefine HAVE_DECL_ISINF 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
|
|
|
|
*/
|
|
|
|
#cmakedefine HAVE_DECL_ISNAN 1
|
|
|
|
|
This PR adds EXPERIMENTAL support for accessing data in the
cloud using a variant of the Zarr protocol and storage
format. This enhancement is generically referred to as "NCZarr".
The data model supported by NCZarr is netcdf-4 minus the user-defined
types and the String type. In this sense it is similar to the CDF-5
data model.
More detailed information about enabling and using NCZarr is
described in the document NUG/nczarr.md and in a
[Unidata Developer's blog entry](https://www.unidata.ucar.edu/blogs/developer/en/entry/overview-of-zarr-support-in).
WARNING: this code has had limited testing, so do use this version
for production work. Also, performance improvements are ongoing.
Note especially the following platform matrix of successful tests:
Platform | Build System | S3 support
------------------------------------
Linux+gcc | Automake | yes
Linux+gcc | CMake | yes
Visual Studio | CMake | no
Additionally, and as a consequence of the addition of NCZarr,
major changes have been made to the Filter API. NOTE: NCZarr
does not yet support filters, but these changes are enablers for
that support in the future. Note that it is possible
(probable?) that there will be some accidental reversions if the
changes here did not correctly mimic the existing filter testing.
In any case, previously filter ids and parameters were of type
unsigned int. In order to support the more general zarr filter
model, this was all converted to char*. The old HDF5-specific,
unsigned int operations are still supported but they are
wrappers around the new, char* based nc_filterx_XXX functions.
This entailed at least the following changes:
1. Added the files libdispatch/dfilterx.c and include/ncfilter.h
2. Some filterx utilities have been moved to libdispatch/daux.c
3. A new entry, "filter_actions" was added to the NCDispatch table
and the version bumped.
4. An overly complex set of structs was created to support funnelling
all of the filterx operations thru a single dispatch
"filter_actions" entry.
5. Move common code to from libhdf5 to libsrc4 so that it is accessible
to nczarr.
Changes directly related to Zarr:
1. Modified CMakeList.txt and configure.ac to support both C and C++
-- this is in support of S3 support via the awd-sdk libraries.
2. Define a size64_t type to support nczarr.
3. More reworking of libdispatch/dinfermodel.c to
support zarr and to regularize the structure of the fragments
section of a URL.
Changes not directly related to Zarr:
1. Make client-side filter registration be conditional, with default off.
2. Hack include/nc4internal.h to make some flags added by Ed be unique:
e.g. NC_CREAT, NC_INDEF, etc.
3. cleanup include/nchttp.h and libdispatch/dhttp.c.
4. Misc. changes to support compiling under Visual Studio including:
* Better testing under windows for dirent.h and opendir and closedir.
5. Misc. changes to the oc2 code to support various libcurl CURLOPT flags
and to centralize error reporting.
6. By default, suppress the vlen tests that have unfixed memory leaks; add option to enable them.
7. Make part of the nc_test/test_byterange.sh test be contingent on remotetest.unidata.ucar.edu being accessible.
Changes Left TO-DO:
1. fix provenance code, it is too HDF5 specific.
2020-06-29 08:02:47 +08:00
|
|
|
/* Define to 1 if you have the <dirent.h> header file. */
|
|
|
|
#cmakedefine HAVE_DIRENT_H 1
|
|
|
|
|
2021-09-03 07:04:26 +08:00
|
|
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
|
|
#cmakedefine HAVE_DLFCN_H 1
|
|
|
|
|
2012-07-11 01:41:05 +08:00
|
|
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_FCNTL_H 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the BaseTsd.h header file. */
|
|
|
|
#cmakedefine HAVE_BASETSD_H @HAVE_BASETSD_H@
|
|
|
|
|
|
|
|
/* Define if we have filelengthi64. */
|
|
|
|
#cmakedefine HAVE_FILE_LENGTH_I64 @HAVE_FILE_LENGTH_I64@
|
|
|
|
|
2019-03-23 05:16:47 +08:00
|
|
|
/* Define to 1 if you have the `fileno' function. */
|
|
|
|
#cmakedefine HAVE_FILENO 1
|
2017-05-24 06:07:18 +08:00
|
|
|
|
2024-08-14 01:50:45 +08:00
|
|
|
/* Define to 1 if you have the `H5Literate2' function. */
|
|
|
|
#cmakedefine HAVE_H5LITERATE2
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `fsync' function. */
|
|
|
|
#cmakedefine HAVE_FSYNC 1
|
2012-07-11 01:41:05 +08:00
|
|
|
|
|
|
|
/* Define to 1 if you have the <getopt.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_GETOPT_H 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `getpagesize' function. */
|
|
|
|
#cmakedefine HAVE_GETPAGESIZE 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `getrlimit' function. */
|
|
|
|
#cmakedefine HAVE_GETRLIMIT 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `gettimeofday' function. */
|
|
|
|
#cmakedefine HAVE_GETTIMEOFDAY 1
|
|
|
|
|
2020-12-07 09:19:53 +08:00
|
|
|
/* Define to 1 if you have the `clock_gettime' function. */
|
|
|
|
#cmakedefine HAVE_CLOCK_GETTIME 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `gettimeofday' function. */
|
|
|
|
#cmakedefine HAVE_STRUCT_TIMESPEC 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `H5Z_SZIP' function. */
|
|
|
|
#cmakedefine HAVE_H5Z_SZIP 1
|
2012-12-21 05:50:45 +08:00
|
|
|
|
Enhance/Fix filter support
re: Discussion https://github.com/Unidata/netcdf-c/discussions/2214
The primary change is to support so-called "standard filters".
A standard filter is one that is defined by the following
netcdf-c API:
````
int nc_def_var_XXX(int ncid, int varid, size_t nparams, unsigned* params);
int nc_inq_var_XXXX(int ncid, int varid, int* usefilterp, unsigned* params);
````
So for example, zstandard would be a standard filter by defining
the functions *nc_def_var_zstandard* and *nc_inq_var_zstandard*.
In order to define these functions, we need a new dispatch function:
````
int nc_inq_filter_avail(int ncid, unsigned filterid);
````
This function, combined with the existing filter API can be used
to implement arbitrary standard filters using a simple code pattern.
Note that I would have preferred that this function return a list
of all available filters, but HDF5 does not support that functionality.
So this PR implements the dispatch function and implements
the following standard functions:
+ bzip2
+ zstandard
+ blosc
Specific test cases are also provided for HDF5 and NCZarr.
Over time, other specific standard filters will be defined.
## Primary Changes
* Add nc_inq_filter_avail() to netcdf-c API.
* Add standard filter implementations to test use of *nc_inq_filter_avail*.
* Bump the dispatch table version number and add to all the relevant
dispatch tables (libsrc, libsrcp, etc).
* Create a program to invoke nc_inq_filter_avail so that it is accessible
to shell scripts.
* Cleanup szip support to properly support szip
when HDF5 is disabled. This involves detecting
libsz separately from testing if HDF5 supports szip.
* Integrate shuffle and fletcher32 into the existing
filter API. This means that, for example, nc_def_var_fletcher32
is now a wrapper around nc_def_var_filter.
* Extend the Codec defaulting to allow multiple default shared libraries.
## Misc. Changes
* Modify configure.ac/CMakeLists.txt to look for the relevant
libraries implementing standard filters.
* Modify libnetcdf.settings to list available standard filters
(including deflate and szip).
* Add CMake test modules to locate libbz2 and libzstd.
* Cleanup the HDF5 memory manager function use in the plugins.
* remove unused file include//ncfilter.h
* remove tests for the HDF5 memory operations e.g. H5allocate_memory.
* Add flag to ncdump to force use of _Filter instead of _Deflate
or _Shuffle or _Fletcher32. Used for testing.
2022-03-15 02:39:37 +08:00
|
|
|
/* Define to 1 if you have libsz */
|
|
|
|
#cmakedefine HAVE_SZ 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if the system has the type `int64'. */
|
|
|
|
#cmakedefine HAVE_INT64 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
|
|
#cmakedefine HAVE_INTTYPES_H 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `dl' library (-ldl). */
|
|
|
|
#cmakedefine HAVE_LIBDL 1
|
2012-07-18 04:50:43 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `jpeg' library (-ljpeg). */
|
|
|
|
#cmakedefine HAVE_LIBJPEG 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `m' library (-lm). */
|
|
|
|
#cmakedefine HAVE_LIBM 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `mfhdf' library (-lmfhdf). */
|
|
|
|
#cmakedefine HAVE_LIBMFHDF 1
|
|
|
|
|
2021-11-02 12:37:05 +08:00
|
|
|
/* Define to 1 if you have the libxml2 library. */
|
2024-03-19 04:37:17 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_LIBXML2 1
|
2021-11-02 12:37:05 +08:00
|
|
|
|
2012-07-11 01:41:05 +08:00
|
|
|
/* Define to 1 if you have the <locale.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_LOCALE_H 1
|
|
|
|
|
|
|
|
/* Define to 1 if the system has the type `longlong'. */
|
|
|
|
#cmakedefine HAVE_LONGLONG 1
|
|
|
|
|
|
|
|
/* Define to 1 if the system has the type 'long long int'. */
|
|
|
|
#cmakedefine HAVE_LONG_LONG_INT 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the <malloc.h> header file. */
|
|
|
|
#cmakedefine HAVE_MALLOC_H 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `memmove' function. */
|
|
|
|
#cmakedefine HAVE_MEMMOVE 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `mkstemp' function. */
|
|
|
|
#cmakedefine HAVE_MKSTEMP 1
|
|
|
|
|
2017-09-03 08:09:36 +08:00
|
|
|
/* Define to 1 if you have the `mktemp' function. */
|
|
|
|
#cmakedefine HAVE_MKTEMP 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `MPI_Comm_f2c' function. */
|
|
|
|
#cmakedefine HAVE_MPI_COMM_F2C 1
|
|
|
|
|
2021-03-04 08:33:20 +08:00
|
|
|
/* Define to 1 if you have the `MPI_Info_f2c' function. */
|
|
|
|
#cmakedefine HAVE_MPI_INFO_F2C 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `mremap' function. */
|
|
|
|
#cmakedefine HAVE_MREMAP 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `random' function. */
|
|
|
|
#cmakedefine HAVE_RANDOM 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `snprintf' function. */
|
|
|
|
#cmakedefine HAVE_SNPRINTF 1
|
|
|
|
|
Mitigate S3 test interference + Unlimited Dimensions in NCZarr
This PR started as an attempt to add unlimited dimensions to NCZarr.
It did that, but this exposed significant problems with test interference.
So this PR is mostly about fixing -- well mitigating anyway -- test
interference.
The problem of test interference is now documented in the document docs/internal.md.
The solutions implemented here are also describe in that document.
The solution is somewhat fragile but multiple cleanup mechanisms
are provided. Note that this feature requires that the
AWS command line utility must be installed.
## Unlimited Dimensions.
The existing NCZarr extensions to Zarr are modified to support unlimited dimensions.
NCzarr extends the Zarr meta-data for the ".zgroup" object to include netcdf-4 model extensions. This information is stored in ".zgroup" as dictionary named "_nczarr_group".
Inside "_nczarr_group", there is a key named "dims" that stores information about netcdf-4 named dimensions. The value of "dims" is a dictionary whose keys are the named dimensions. The value associated with each dimension name has one of two forms
Form 1 is a special case of form 2, and is kept for backward compatibility. Whenever a new file is written, it uses format 1 if possible, otherwise format 2.
* Form 1: An integer representing the size of the dimension, which is used for simple named dimensions.
* Form 2: A dictionary with the following keys and values"
- "size" with an integer value representing the (current) size of the dimension.
- "unlimited" with a value of either "1" or "0" to indicate if this dimension is an unlimited dimension.
For Unlimited dimensions, the size is initially zero, and as variables extend the length of that dimension, the size value for the dimension increases.
That dimension size is shared by all arrays referencing that dimension, so if one array extends an unlimited dimension, it is implicitly extended for all other arrays that reference that dimension.
This is the standard semantics for unlimited dimensions.
Adding unlimited dimensions required a number of other changes to the NCZarr code-base. These included the following.
* Did a partial refactor of the slice handling code in zwalk.c to clean it up.
* Added a number of tests for unlimited dimensions derived from the same test in nc_test4.
* Added several NCZarr specific unlimited tests; more are needed.
* Add test of endianness.
## Misc. Other Changes
* Modify libdispatch/ncs3sdk_aws.cpp to optionally support use of the
AWS Transfer Utility mechanism. This is controlled by the
```#define TRANSFER```` command in that file. It defaults to being disabled.
* Parameterize both the standard Unidata S3 bucket (S3TESTBUCKET) and the netcdf-c test data prefix (S3TESTSUBTREE).
* Fixed an obscure memory leak in ncdump.
* Removed some obsolete unit testing code and test cases.
* Uncovered a bug in the netcdf-c handling of big-endian floats and doubles. Have not fixed yet. See tst_h5_endians.c.
* Renamed some nczarr_tests testcases to avoid name conflicts with nc_test4.
* Modify the semantics of zmap\#ncsmap_write to only allow total rewrite of objects.
* Modify the semantics of zodom to properly handle stride > 1.
* Add a truncate operation to the libnczarr zmap code.
2023-09-27 06:56:48 +08:00
|
|
|
/* Define to 1 if the system has the type `mode_t'. */
|
|
|
|
#cmakedefine HAVE_MODE_T 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if the system has the type `ssize_t'. */
|
|
|
|
#cmakedefine HAVE_SSIZE_T 1
|
|
|
|
|
2020-09-02 03:44:24 +08:00
|
|
|
/* Define to 1 if the system has the type `ptrdiff_t'. */
|
|
|
|
#cmakedefine HAVE_PTRDIFF_T 1
|
|
|
|
|
|
|
|
/* Define to 1 if the system has the type `uintptr_t'. */
|
|
|
|
#cmakedefine HAVE_UINTPTR_T 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the <stdarg.h> header file. */
|
|
|
|
#cmakedefine HAVE_STDARG_H 1
|
|
|
|
|
2012-07-11 01:41:05 +08:00
|
|
|
/* Define to 1 if you have the <stdint.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_STDINT_H 1
|
2012-07-11 01:41:05 +08:00
|
|
|
|
|
|
|
/* Define to 1 if you have the <stdio.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_STDIO_H 1
|
2012-07-11 01:41:05 +08:00
|
|
|
|
|
|
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_STDLIB_H 1
|
|
|
|
|
2023-08-30 00:12:14 +08:00
|
|
|
/* Define to 1 if you have the <ctype.h> header file. */
|
|
|
|
#cmakedefine HAVE_CTYPE_H 1
|
|
|
|
|
2024-07-17 02:19:16 +08:00
|
|
|
/* Define to 1 if you have the getfattr command line utility. */
|
|
|
|
#cmakedefine HAVE_GETFATTR 1
|
|
|
|
|
2024-07-17 02:05:49 +08:00
|
|
|
/* Define to 1 if you have the <sys/xattr.h> header file. */
|
|
|
|
#cmakedefine HAVE_SYS_XATTR_H
|
|
|
|
|
2012-07-11 01:41:05 +08:00
|
|
|
/* Define to 1 if you have the <strings.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_STRINGS_H 1
|
2012-07-11 01:41:05 +08:00
|
|
|
|
2017-05-24 06:32:36 +08:00
|
|
|
/* Define to 1 if you have the <signal.h> header file. */
|
|
|
|
#cmakedefine HAVE_SIGNAL_H 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the <string.h> header file. */
|
|
|
|
#cmakedefine HAVE_STRING_H 1
|
2012-09-15 00:15:18 +08:00
|
|
|
|
2017-07-06 00:03:48 +08:00
|
|
|
/* Define to 1 if you have the <ftw.h> header file. */
|
|
|
|
#cmakedefine HAVE_FTW_H 1
|
|
|
|
|
2018-02-03 11:27:06 +08:00
|
|
|
/* Define to 1 if you have the <libgen.h> header file. */
|
|
|
|
#cmakedefine HAVE_LIBGEN_H 1
|
2018-02-03 10:57:55 +08:00
|
|
|
|
2022-03-16 05:33:13 +08:00
|
|
|
/* Define to 1 if you have the `strdup' function. */
|
|
|
|
#cmakedefine HAVE_STRDUP 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `strndup` function. */
|
|
|
|
#cmakedefine HAVE_STRNDUP
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `strcasecmp` function. */
|
|
|
|
#cmakedefine HAVE_STRCASECMP
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `strlcat' function. */
|
|
|
|
#cmakedefine HAVE_STRLCAT 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2023-04-26 07:15:06 +08:00
|
|
|
/* Define to 1 if you have the `strlcpy' function. */
|
|
|
|
#cmakedefine HAVE_STRLCPY 1
|
|
|
|
|
2024-05-12 06:23:40 +08:00
|
|
|
/* Define to 1 if you have the `strlen' function. */
|
|
|
|
#cmakedefine HAVE_STRLEN 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the `strtoll' function. */
|
|
|
|
#cmakedefine HAVE_STRTOLL 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `strtoull' function. */
|
|
|
|
#cmakedefine HAVE_STRTOULL 1
|
|
|
|
|
2017-05-24 06:32:36 +08:00
|
|
|
/* Define to 1 if you have the `stroull' function. */
|
|
|
|
#cmakedefine HAVE_STROULL 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if `st_blksize' is a member of `struct stat'. */
|
|
|
|
#cmakedefine HAVE_STRUCT_STAT_ST_BLKSIZE 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the `sysconf' function. */
|
|
|
|
#cmakedefine HAVE_SYSCONF 1
|
|
|
|
|
2012-07-11 01:41:05 +08:00
|
|
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_SYS_PARAM_H 1
|
|
|
|
|
|
|
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
|
|
|
#cmakedefine HAVE_SYS_RESOURCE_H 1
|
2012-07-11 01:41:05 +08:00
|
|
|
|
|
|
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_SYS_STAT_H 1
|
2012-07-11 01:41:05 +08:00
|
|
|
|
|
|
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_SYS_TIME_H 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:03:58 +08:00
|
|
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine HAVE_SYS_TYPES_H 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2020-11-20 08:01:04 +08:00
|
|
|
/* Define to 1 if you have the <time.h> header file. */
|
|
|
|
#cmakedefine HAVE_TIME_H 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if the system has the type `uchar'. */
|
|
|
|
#cmakedefine HAVE_UCHAR 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if the system has the type `uint'. */
|
|
|
|
#cmakedefine HAVE_UINT 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if the system has the type `uint64'. */
|
|
|
|
#cmakedefine HAVE_UINT64 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2020-11-20 08:01:04 +08:00
|
|
|
/* Define to 1 if the system has the type `uint64_t'. */
|
2020-11-20 13:24:13 +08:00
|
|
|
#cmakedefine HAVE_UINT64_T 1
|
2020-11-20 08:01:04 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if you have the <unistd.h> header file. */
|
|
|
|
#cmakedefine HAVE_UNISTD_H 1
|
|
|
|
#cmakedefine YY_NO_UNISTD_H 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Define to 1 if the system has the type `ushort'. */
|
|
|
|
#cmakedefine HAVE_USHORT 1
|
|
|
|
|
|
|
|
/* if true, hdf5 has parallelism enabled */
|
|
|
|
#cmakedefine HDF5_PARALLEL 1
|
|
|
|
|
2020-04-03 00:09:57 +08:00
|
|
|
/* if true, HDF5 is at least version 1.10. 3 and allows parallel I/O
|
|
|
|
with zip */
|
|
|
|
#cmakedefine HDF5_SUPPORTS_PAR_FILTERS 1
|
|
|
|
|
2020-10-17 05:04:51 +08:00
|
|
|
/* if true, HDF5 is at least version 1.10.5 and supports UTF8 paths */
|
|
|
|
#cmakedefine HDF5_UTF8_PATHS 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* do large file tests */
|
|
|
|
#cmakedefine LARGE_FILE_TESTS 1
|
|
|
|
|
|
|
|
/* If true, turn on logging. */
|
|
|
|
#cmakedefine LOGGING 1
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2018-07-16 20:31:44 +08:00
|
|
|
/* If true, define nc_set_log_level. */
|
2024-06-07 05:13:02 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_LOGGING 1
|
2024-05-25 06:48:04 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_SET_LOG_LEVEL 1
|
2024-05-16 08:46:25 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* min blocksize for posixio. */
|
|
|
|
#cmakedefine NCIO_MINBLOCKSIZE ${NCIO_MINBLOCKSIZE}
|
|
|
|
|
2018-08-26 11:44:41 +08:00
|
|
|
/* Add extra properties to _NCProperties attribute */
|
|
|
|
#cmakedefine NCPROPERTIES_EXTRA ${NCPROPERTIES_EXTRA}
|
|
|
|
|
2021-02-01 12:40:08 +08:00
|
|
|
/* Idspatch table version */
|
|
|
|
#cmakedefine NC_DISPATCH_VERSION ${NC_DISPATCH_VERSION}
|
|
|
|
|
2024-09-26 00:34:10 +08:00
|
|
|
/* Enable Legacy, potential-conflict Macro _FillValue */
|
|
|
|
#cmakedefine NETCDF_ENABLE_LEGACY_MACROS
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* no IEEE float on this platform */
|
|
|
|
#cmakedefine NO_IEEE_FLOAT 1
|
|
|
|
|
2017-05-24 06:32:36 +08:00
|
|
|
#cmakedefine BUILD_V2 1
|
2024-03-19 04:34:48 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_DOXYGEN 1
|
2024-03-19 04:37:03 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_INTERNAL_DOCS 1
|
2017-05-24 06:32:36 +08:00
|
|
|
#cmakedefine VALGRIND_TESTS 1
|
2024-05-12 06:23:40 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_CDMREMOTE 1
|
2017-05-24 06:32:36 +08:00
|
|
|
#cmakedefine USE_HDF5 1
|
|
|
|
#cmakedefine ENABLE_FILEINFO 1
|
|
|
|
#cmakedefine TEST_PARALLEL ${TEST_PARALLEL}
|
|
|
|
#cmakedefine BUILD_RPC 1
|
|
|
|
#cmakedefine USE_X_GETOPT 1
|
2024-03-19 04:35:54 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_EXTREME_NUMBERS 1
|
2017-05-24 06:32:36 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* do not build the netCDF version 2 API */
|
|
|
|
#cmakedefine NO_NETCDF_2 1
|
|
|
|
|
|
|
|
/* Name of package */
|
|
|
|
#define PACKAGE "netcdf"
|
|
|
|
|
|
|
|
/* Define to the address where bug reports for this package should be sent. */
|
|
|
|
#define PACKAGE_BUGREPORT "support-netcdf@unidata.ucar.edu"
|
|
|
|
|
|
|
|
/* Define to the full name of this package. */
|
|
|
|
#define PACKAGE_NAME "netCDF"
|
|
|
|
|
|
|
|
/* Define to the full name and version of this package. */
|
|
|
|
#define PACKAGE_STRING "netCDF ${netCDF_VERSION}"
|
|
|
|
|
|
|
|
/* Define to the one symbol short name of this package. */
|
|
|
|
#define PACKAGE_TARNAME "netcdf"
|
|
|
|
|
|
|
|
/* Define to the home page for this package. */
|
|
|
|
#define PACKAGE_URL ""
|
|
|
|
|
|
|
|
/* Define to the version of this package. */
|
|
|
|
#cmakedefine PACKAGE_VERSION "${netCDF_VERSION}"
|
|
|
|
|
2022-02-09 11:53:30 +08:00
|
|
|
/* Do we have access to the Windows Registry */
|
|
|
|
#cmakedefine REGEDIT 1
|
|
|
|
|
|
|
|
/* define the possible sources for remote test servers */
|
|
|
|
#cmakedefine REMOTETESTSERVERS "${REMOTETESTSERVERS}"
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `ulonglong` as computed by sizeof. */
|
2017-02-02 04:27:29 +08:00
|
|
|
#cmakedefine SIZEOF_ULONGLONG @SIZEOF_ULONGLONG@
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `longlong` as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_LONGLONG @SIZEOF_LONGLONG@
|
2017-02-02 04:27:29 +08:00
|
|
|
|
2017-05-24 06:32:36 +08:00
|
|
|
/* The size of `char` as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@
|
|
|
|
|
2017-05-24 06:03:58 +08:00
|
|
|
/* The size of `uchar` as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@
|
2017-05-24 06:07:18 +08:00
|
|
|
|
2013-08-31 05:16:17 +08:00
|
|
|
/* The size of `__int64` found on Windows systems. */
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine SIZEOF___INT64 ${SIZEOF___INT64}
|
2012-08-11 04:55:07 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `void*` as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_VOIDSTAR ${SIZEOF_VOIDSTAR}
|
2012-07-11 01:58:53 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `short` as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_OFF64_T ${SIZEOF_OFF64_T}
|
2012-08-11 04:55:07 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `double', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_DOUBLE ${SIZEOF_DOUBLE}
|
2017-01-31 05:54:00 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `float', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_FLOAT ${SIZEOF_FLOAT}
|
2017-01-28 02:18:55 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `int', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_INT ${SIZEOF_INT}
|
2017-02-09 05:51:41 +08:00
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `long', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_LONG ${SIZEOF_LONG}
|
|
|
|
|
|
|
|
/* The size of `long long', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_LONG_LONG ${SIZEOF_LONG_LONG}
|
|
|
|
|
|
|
|
/* The size of `off_t', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_OFF_T ${SIZEOF_OFF_T}
|
|
|
|
|
|
|
|
/* The size of `short', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_SHORT ${SIZEOF_SHORT}
|
|
|
|
|
|
|
|
/* The size of `size_t', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_SIZE_T ${SIZEOF_SIZE_T}
|
|
|
|
|
2024-05-12 06:23:40 +08:00
|
|
|
/* The size of `ssize_t', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_SSIZE_T ${SIZEOF_SSIZE_T}
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* The size of `uint', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_UINT ${SIZEOF_UINT}
|
|
|
|
|
|
|
|
/* The size of `unsigned int', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_UNSIGNED_INT ${SIZEOF_UNSIGNED_INT}
|
|
|
|
|
|
|
|
/* The size of `unsigned long long', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_UNSIGNED_LONG_LONG ${SIZEOF_UNSIGNED_LONG_LONG}
|
|
|
|
|
|
|
|
/* The size of `unsigned short int', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_UNSIGNED_SHORT_INT ${SIZEOF_UNSIGNED_SHORT_INT}
|
|
|
|
|
|
|
|
/* The size of `ushort', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_USHORT ${SIZEOF_USHORT}
|
|
|
|
|
|
|
|
/* The size of `void*', as computed by sizeof. */
|
|
|
|
#cmakedefine SIZEOF_VOIDP ${SIZEOF_VOIDP}
|
|
|
|
|
|
|
|
/* Place to put very large netCDF test files. */
|
|
|
|
#cmakedefine TEMP_LARGE "${TEMP_LARGE}"
|
|
|
|
|
|
|
|
/* if true, build DAP Client */
|
|
|
|
#cmakedefine USE_DAP 1
|
|
|
|
|
|
|
|
/* if true, include NC_DISKLESS code */
|
|
|
|
#cmakedefine USE_DISKLESS 1
|
|
|
|
|
|
|
|
/* set this to use extreme numbers in tests */
|
|
|
|
#cmakedefine USE_EXTREME_NUMBERS 1
|
|
|
|
|
|
|
|
/* if true, use ffio instead of posixio */
|
|
|
|
#cmakedefine USE_FFIO 1
|
|
|
|
|
|
|
|
/* if true, include experimental fsync code */
|
|
|
|
#cmakedefine USE_FSYNC 1
|
|
|
|
|
|
|
|
/* if true, use HDF4 too */
|
|
|
|
#cmakedefine USE_HDF4 1
|
|
|
|
|
|
|
|
/* If true, use use wget to fetch some sample HDF4 data, and then test against
|
|
|
|
it. */
|
|
|
|
//#cmakedefine USE_HDF4_FILE_TESTS 1
|
|
|
|
|
|
|
|
/* if true, use mmap for in-memory files */
|
|
|
|
#cmakedefine USE_MMAP 1
|
|
|
|
|
|
|
|
/* if true, build netCDF-4 */
|
|
|
|
#cmakedefine USE_NETCDF4 1
|
|
|
|
|
|
|
|
/* build the netCDF version 2 API */
|
|
|
|
#cmakedefine USE_NETCDF_2 1
|
|
|
|
|
|
|
|
/* if true, pnetcdf or parallel netcdf-4 is in use */
|
|
|
|
#cmakedefine USE_PARALLEL 1
|
|
|
|
|
|
|
|
/* if true, parallel netcdf-4 is in use */
|
|
|
|
#cmakedefine USE_PARALLEL4 1
|
|
|
|
|
|
|
|
/* if true, parallel netCDF is used */
|
|
|
|
#cmakedefine USE_PNETCDF 1
|
|
|
|
|
|
|
|
/* if true, use stdio instead of posixio */
|
|
|
|
#cmakedefine USE_STDIO 1
|
|
|
|
|
2020-09-28 02:43:46 +08:00
|
|
|
/* if true, multi-filters enabled*/
|
2024-05-12 06:23:40 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_MULTIFILTERS 1
|
2021-09-03 07:04:26 +08:00
|
|
|
|
|
|
|
/* if true, enable nczarr blosc support */
|
2024-05-12 06:23:40 +08:00
|
|
|
#cmakedefine NETCDF_ENABLE_BLOSC 1
|
2021-09-03 07:04:26 +08:00
|
|
|
|
2024-05-16 08:46:25 +08:00
|
|
|
/* if true enable tests that access external servers */
|
|
|
|
#cmakedefine NETCDF_ENABLE_EXTERNAL_SERVER_TESTS 1
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* Version number of package */
|
|
|
|
#cmakedefine VERSION "${netCDF_VERSION}"
|
|
|
|
|
2022-02-09 11:53:30 +08:00
|
|
|
/* Capture Windows version and build */
|
|
|
|
#cmakedefine WINVERMAJOR ${WINVERMAJOR}
|
|
|
|
#cmakedefine WINVERBUILD ${WINVERBUILD}
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
/* 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
|
|
|
|
#cmakedefine 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
|
|
|
|
|
|
|
|
/* Define for large files, on AIX-style hosts. */
|
|
|
|
#cmakedefine _LARGE_FILES ${_LARGE_FILES}
|
|
|
|
|
|
|
|
/* Define to `long int' if <sys/types.h> does not define. */
|
|
|
|
#cmakedefine off_t long int
|
|
|
|
|
|
|
|
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
|
|
|
#cmakedefine size_t unsigned int
|
|
|
|
|
2018-02-25 11:36:24 +08:00
|
|
|
/* Define to `int' if <sys/types.h> does not define. */
|
|
|
|
#cmakedefine ssize_t int
|
|
|
|
|
2020-09-02 03:44:24 +08:00
|
|
|
/* Define to `signed long if <sys/types.h> does not define. */
|
|
|
|
#cmakedefine ptrdiff_t signed long
|
|
|
|
|
2018-02-09 10:53:40 +08:00
|
|
|
/* Define to `unsigned long if <sys/types.h> does not define. */
|
|
|
|
#cmakedefine uintptr_t unsigned long
|
|
|
|
|
2017-05-24 06:07:18 +08:00
|
|
|
#cmakedefine WORDS_BIGENDIAN
|
|
|
|
|
|
|
|
#include "ncconfigure.h"
|
2017-02-01 01:59:03 +08:00
|
|
|
|
|
|
|
#endif
|