From b7cd698fcd799c132275f674eb52a29d334cb54b Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Mon, 11 Nov 2002 15:32:02 -0500 Subject: [svn-r6070] Purpose: New feature. Description: Add in '--enable-filters=filter1,filter2' flag to configure script. This can also be used as '--enable-filters=all' or just '--enable-filters' to enable all the internal I/O filters in the library. This flag can also be set to '--disable-filters' to disable all the internal I/O filters. Individual filters can not be disabled due to the limitations of autoconf. Additionally, added "H5_HAVE_FILTER_" macros to H5pubconf.h header file, so the presence of each filter can be detected. This is in preparation for Kent's shuffling filter to be imported shortly. Platforms tested: Tested h5committest {arabica (fortran), eirene (fortran, C++) modi4 (parallel, fortran)} Tested FreeBSD 4.7 (sleipnir) also --- configure | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++---- configure.in | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/H5config.h.in | 6 ++++++ 3 files changed, 116 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 471ea0a..9a6dcd1 100755 --- a/configure +++ b/configure @@ -1019,6 +1019,9 @@ Optional Features: is disabled. --enable-parallel=TYPE Search for MPI-IO and MPI support files --enable-fphdf5 Enable the Flexible Parallel HDF5 interface + --enable-filters=all Turn on all internal I/O filters. One may also + specify a comma-separated list of filters or the + word no. The default is all internal I/O filters. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -4103,7 +4106,7 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 4106 "configure"' > conftest.$ac_ext + echo '#line 4109 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -4644,7 +4647,7 @@ chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no -if { (eval echo configure:4647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +if { (eval echo configure:4650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 if test -s out/conftest.err; then @@ -6455,7 +6458,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <>confdefs.h <<\_ACEOF #define HAVE_COMPRESSION 1 _ACEOF + +cat >>confdefs.h <<\_ACEOF +#define HAVE_FILTER_GZIP 1 +_ACEOF + fi PABLO="" @@ -30156,6 +30164,45 @@ _ACEOF fi fi +echo "$as_me:$LINENO: checking for I/O filters" >&5 +echo $ECHO_N "checking for I/O filters... $ECHO_C" >&6 +# Check whether --enable-filters or --disable-filters was given. +if test "${enable_filters+set}" = set; then + enableval="$enable_filters" + FILTERS=$enableval +fi; + + +all_filters="shuffle" +case "X-$FILTERS" in + X-|X-all) + FILTERS=$all_filters + echo "$as_me:$LINENO: result: all ($FILTERS)" >&5 +echo "${ECHO_T}all ($FILTERS)" >&6 + ;; + X-no|X-none) + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 + FILTERS="none" + ;; + *) + echo "$as_me:$LINENO: result: $FILTERS" >&5 +echo "${ECHO_T}$FILTERS" >&6 + ;; +esac + +if test -n "$FILTERS"; then + for filter in `echo $FILTERS | tr 'a-z,' 'A-Z '`; do + if test $filter = "SHUFFLE"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_FILTER_SHUFFLE 1 +_ACEOF + + fi + done +fi + H5_VERSION="`cut -d' ' -f3 $srcdir/README.txt | head -1`" @@ -30950,6 +30997,7 @@ s,@PARALLEL@,$PARALLEL,;t t s,@RUNSERIAL@,$RUNSERIAL,;t t s,@RUNPARALLEL@,$RUNPARALLEL,;t t s,@TESTPARALLEL@,$TESTPARALLEL,;t t +s,@FILTERS@,$FILTERS,;t t s,@H5_VERSION@,$H5_VERSION,;t t s,@CONFIG_DATE@,$CONFIG_DATE,;t t s,@CONFIG_USER@,$CONFIG_USER,;t t @@ -31743,6 +31791,9 @@ PRINT "Features:" PRINT_N " dmalloc" IF_YES_NO "$HAVE_DMALLOC" +PRINT_N " internal I/O filters" +PRINT "$FILTERS" + PRINT_N " GASS" IF_YES_NO "$GASS" diff --git a/configure.in b/configure.in index 82e210a..b6daa27 100644 --- a/configure.in +++ b/configure.in @@ -778,6 +778,8 @@ esac if test "x$HAVE_ZLIB" = "xyes" -a "x$HAVE_ZLIB_H" = "xyes" -a "x$HAVE_COMPRESS2" = "xyes"; then AC_DEFINE(HAVE_COMPRESSION, 1, [Define if we have zlib compression support]) + AC_DEFINE(HAVE_FILTER_GZIP, 1, + [Define if support for gzip filter is enabled]) fi dnl ---------------------------------------------------------------------- @@ -1723,6 +1725,9 @@ int main(int argc, char **argv) AC_MSG_RESULT(yes) CPPFLAGS="$CPPFLAGS -DMPI_GET_COUNT_WORKS",AC_MSG_RESULT(no)) +dnl ---------------------------------------------------------------------- +dnl Check if they would like the "Flexible parallel" functions compiled in +dnl AC_MSG_CHECKING([if Flexible Parallel HDF5 interface enabled]) AC_ARG_ENABLE([fphdf5], [AC_HELP_STRING([--enable-fphdf5], @@ -1739,6 +1744,53 @@ int main(int argc, char **argv) fi dnl ---------------------------------------------------------------------- +dnl Turn on internal I/O filters by setting macros in header files +dnl Internal I/O filters are contained entirely within the library and do +dnl not depend on external headers or libraries. The shuffle filter is +dnl an example of an internal filter, while the gzip filter is an example of +dnl an external filter. Each external filter is controlled with an +dnl "--with-foo=" configure flag. +dnl +AC_MSG_CHECKING(for I/O filters) +AC_ARG_ENABLE([filters], + [AC_HELP_STRING([--enable-filters=all], + [Turn on all internal I/O filters. One may + also specify a comma-separated list of filters + or the word no. The default is all internal + I/O filters.])], + [FILTERS=$enableval]) + +AC_SUBST([FILTERS]) +dnl Eventually: all_filters="shuffle,foo,bar,baz" +all_filters="shuffle" +case "X-$FILTERS" in + X-|X-all) + FILTERS=$all_filters + AC_MSG_RESULT(all ($FILTERS)) + ;; + X-no|X-none) + AC_MSG_RESULT(none) + FILTERS="none" + ;; + *) + AC_MSG_RESULT($FILTERS) + ;; +esac + +if test -n "$FILTERS"; then + for filter in `echo $FILTERS | tr 'a-z,' 'A-Z '`; do +dnl ---------------------------------------------------------------------- +dnl Have to use separate 'if' construct for each filter, so that autoheader +dnl can detect the AC_DEFINE for each one... +dnl + if test $filter = "SHUFFLE"; then + AC_DEFINE(HAVE_FILTER_SHUFFLE, 1, + [Define if support for shuffle filter is enabled]) + fi + done +fi + +dnl ---------------------------------------------------------------------- dnl Set some variables for general configuration information to be saved dnl and installed with the libraries. dnl @@ -2094,6 +2146,9 @@ PRINT "Features:" PRINT_N " dmalloc" IF_YES_NO "$HAVE_DMALLOC" +PRINT_N " internal I/O filters" +PRINT "$FILTERS" + PRINT_N " GASS" IF_YES_NO "$GASS" diff --git a/src/H5config.h.in b/src/H5config.h.in index f3738eb..7a45f6c 100644 --- a/src/H5config.h.in +++ b/src/H5config.h.in @@ -24,6 +24,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_FEATURES_H +/* Define if support for gzip filter is enabled */ +#undef HAVE_FILTER_GZIP + +/* Define if support for shuffle filter is enabled */ +#undef HAVE_FILTER_SHUFFLE + /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK -- cgit v0.12