mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-11-27 07:30:33 +08:00
126b3f9423
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.
114 lines
3.0 KiB
Makefile
114 lines
3.0 KiB
Makefile
# Copyright 2018, UCAR/Unidata
|
|
# See netcdf/COPYRIGHT file for copying and redistribution conditions.
|
|
|
|
# Put Together AM_CPPFLAGS and AM_LDFLAGS
|
|
include $(top_srcdir)/lib_flags.am
|
|
|
|
AM_LDFLAGS += -module -avoid-version -shared -export-dynamic \
|
|
-rpath ${abs_builddir} ${NOUNDEFINED}
|
|
|
|
lib_LTLIBRARIES =
|
|
noinst_LTLIBRARIES =
|
|
|
|
if ISMINGW
|
|
LDADD = ${top_builddir}/liblib/libnetcdf.la
|
|
endif
|
|
|
|
EXTRA_DIST = CMakeLists.txt
|
|
|
|
# The HDF5 filter wrappers
|
|
EXTRA_DIST += stdinstall.sh \
|
|
H5Ztemplate.c H5Zmisc.c H5Zutil.c H5Znoop.c h5noop.h NCZmisc.c \
|
|
H5Zshuffle.c H5Zdeflate.c H5Zszip.c H5Zszip.h \
|
|
H5Zbzip2.c h5bzip2.h H5Zblosc.c H5Zblosc.h H5Zzstd.c H5Zzstd.h
|
|
|
|
# The Codec filter wrappers
|
|
EXTRA_DIST += NCZhdf5filters.c NCZstdfilters.c
|
|
# The Filter implementations
|
|
EXTRA_DIST += H5checksum.c
|
|
|
|
if ENABLE_FILTER_TESTING
|
|
|
|
noinst_LTLIBRARIES += libh5misc.la libh5noop.la libh5noop1.la libnczmisc.la
|
|
|
|
if ENABLE_NCZARR_FILTERS
|
|
noinst_LTLIBRARIES += libh5fletcher32.la libh5shuffle.la libh5deflate.la
|
|
libh5shuffle_la_SOURCES = H5Zshuffle.c
|
|
libh5fletcher32_la_SOURCES = H5Zfletcher32.c H5checksum.c
|
|
libh5deflate_la_SOURCES = H5Zdeflate.c
|
|
|
|
# Need our version of szip if libsz available and we are not using HDF5
|
|
if HAVE_SZ
|
|
noinst_LTLIBRARIES += libh5szip.la
|
|
libh5szip_la_SOURCES = H5Zszip.c H5Zszip.h
|
|
endif
|
|
|
|
endif # ENABLE_NCZARR_FILTERS
|
|
|
|
if ENABLE_PLUGINS
|
|
|
|
libnczstdfilters_la_SOURCES = NCZstdfilters.c
|
|
|
|
libnczhdf5filters_la_SOURCES = NCZhdf5filters.c
|
|
|
|
if HAVE_BLOSC
|
|
libh5blosc_la_SOURCES = H5Zblosc.c H5Zblosc.h
|
|
endif
|
|
|
|
if HAVE_ZSTD
|
|
libh5zstd_la_SOURCES = H5Zzstd.c H5Zzstd.h
|
|
endif
|
|
|
|
noinst_LTLIBRARIES += libnczhdf5filters.la
|
|
noinst_LTLIBRARIES += libnczstdfilters.la
|
|
|
|
if HAVE_BLOSC
|
|
noinst_LTLIBRARIES += libh5blosc.la
|
|
endif
|
|
if HAVE_ZSTD
|
|
noinst_LTLIBRARIES += libh5zstd.la
|
|
endif
|
|
|
|
endif #ENABLE_PLUGINS
|
|
|
|
libh5misc_la_SOURCES = H5Zmisc.c H5Zutil.c h5misc.h
|
|
libnczmisc_la_SOURCES = NCZmisc.c
|
|
|
|
# The noop filter is to allow testing of multifilters and filter order
|
|
# Need two distinct instances
|
|
libh5noop_la_SOURCES = H5Znoop.c H5Zutil.c h5noop.h
|
|
libh5noop1_la_SOURCES = H5Znoop1.c H5Zutil.c h5noop.h
|
|
|
|
# Bzip2 is used to test more complex filters
|
|
libh5bzip2_la_SOURCES = H5Zbzip2.c h5bzip2.h
|
|
BZIP2SRC = blocksort.c huffman.c crctable.c randtable.c compress.c decompress.c bzlib.c bzlib.h bzlib_private.h
|
|
EXTRA_DIST += ${BZIP2SRC} BZIP2_LICENSE
|
|
if HAVE_LOCAL_BZ2
|
|
libh5bzip2_la_SOURCES += ${BZIP2SRC}
|
|
endif
|
|
|
|
endif #ENABLE_FILTER_TESTING
|
|
|
|
BUILT_SOURCES = H5Znoop1.c
|
|
DISTCLEANFILES = H5Znoop1.c ncjson.h
|
|
H5Znoop1.c: Makefile H5Znoop.c
|
|
echo '#define NOOP_INSTANCE 1' > $@
|
|
cat ${srcdir}/H5Znoop.c >> $@
|
|
|
|
noinst_LTLIBRARIES += libh5bzip2.la
|
|
|
|
# Record where bzip2 came from; may be out of date
|
|
BZIP2VER = 1.0.8
|
|
BZIP2DIR = bzip2-${BZIP2VER}
|
|
BZIP2URL = https://sourceware.org/pub/bzip2/${BZIP2DIR}.tar.gz
|
|
bzip2::
|
|
rm -fr ./${BZIP2DIR} ${BZIP2SRC} BZIP2_LICENSE
|
|
wget ${BZIP2URL}
|
|
tar -zxf ${BZIP2DIR}.tar.gz
|
|
cd ${BZIP2DIR}; cp ${BZIP2SRC} ..; cp LICENSE ../BZIP2_LICENSE ; cd ..
|
|
rm -fr ./${BZIP2DIR}
|
|
|
|
# Custom install
|
|
install-exec-hook:
|
|
sh ./stdinstall.sh
|