mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
---------------------- ./configure.in ./acconfig.h ./configure [REGENERATED] ./src/H5config.h.in [REGENERATED] Added checks for functions, structs, constants, and header files used in h5ls.c to determine the output width with various Windows compilers and Unix variants. Added check for <sys/stat.h> and defined HAVE_SYS_STAT_H. Included <sys/stat.h> in H5private.h outside the Posix.1 #include's section. ./src/H5RA.c Less aggressive about failing -- rather returns false, which allows type detection to continue. ./src/h5ls.c Data types are displayed for datasets and named data types when `-v' or `--verbose' is specified on the command-line. The algorithm is a little different than the dumper because we're trying to be human-friendly, not necessarily machine-friendly. * Any data type which matches a native C type gets printed something like `native double'. * A floating point type that matches one of the IEEE standard types but not one of the native types gets printed like `IEEE 64-bit big-endian float'. * Other floating point values have information about sign bit location; exponent size, location, and bias; and significand size, location, and normalization. * Padding and offsets are displayed for types that have padding (precision != size), including internal padding for some floating point data types. * Non-native integer types are displayed like `32-bit little-endian unsigned integer'. * Compound data types have each member displayed including the member name, byte offset within the struct, dimensions, index permutation, and data type. * String types are displayed like `256-byte null-terminated ASCII string'. * References are displayed like `8-byte unknown reference' until the reference interface stabilizes a little. * All other types including types not yet defined will be printed like `4-byte class-9 unknown'. The dimensionality of scalar datasets is printed like `{SCALAR}' instead of just `{}'. If external raw files are used to store a dataset then the offsets, sizes, and file names of each are printed if `-v' or `--verbose' was given on the command-line. If an object is found and h5ls can't determine the object type then it still tries to print the number of hard links, the OID, and any comment that might be present if `-v' or `--verbose' was specified. If the `-d' or `--dump' switch is turned on then ragged arrays will report that the data can only be dumped by dumping the component datasets explicitly. I'm not planning to implement this since we're going to eventually change the whole way ragged arrays are stored. Compound data values do not have the component names displayed by default when `-v' or `--verbose' is turned on. Instead, the names can be displayed with `-l' or `--label'. The output width is determined by the first rule that applies: * If the `-wN', `-w N' or `--width=N' switch appeared on the command line then use N for the output width. * Query the OS for the tty width in a highly unportable way borrowed from GNU `less' depending on what functions and data structures were found during configuration (if any): _getvideoconfig(), gettextinfo(), _srcsize(), ioctl(), GetConsoleScreenBufferInfo(), struct videoconfig, struct text_info, the TIOCGWINSZ ioctl, the TIOCGETD ioctl. * If the `COLUMNS' environment variable is set then use its value. * Use the value 80. Just for kicks, run Mark and Jim's test_vbt and then say `h5ls -dlsv test.vbt'. You can also try it on the various *.h5 files in the test/example directories. ./config/linux Removed turning on parallel by default on Robb's macine.
436 lines
13 KiB
Plaintext
436 lines
13 KiB
Plaintext
dnl Process this file with autoconf to produce configure.
|
|
dnl
|
|
dnl Copyright (C) 1997 National Center for Supercomputing Applications.
|
|
dnl All rights reserved.
|
|
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Initialize configure.
|
|
dnl
|
|
AC_REVISION($Id$)
|
|
AC_INIT(src/H5.c)
|
|
AC_CONFIG_HEADER(src/H5config.h)
|
|
AC_CONFIG_AUX_DIR(bin)
|
|
AC_CANONICAL_HOST
|
|
AC_SUBST(CPPFLAGS)
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Check that the cache file was build on the same host as what we're
|
|
dnl running on now.
|
|
dnl
|
|
AC_CACHE_CHECK(for cached host,hdf5_cv_host,hdf5_cv_host="none");
|
|
if test $hdf5_cv_host = "none"; then
|
|
hdf5_cv_host=$host
|
|
elif test $hdf5_cv_host != $host; then
|
|
echo "The config.cache file was generated on $hdf5_cv_host but"
|
|
echo "this is $host. Please remove that file and try again."
|
|
AC_MSG_ERROR(config.cache file is invalid)
|
|
fi
|
|
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Source any special files that we need. These files normally aren't
|
|
dnl present but can be used by the maintainers to fine tune things like
|
|
dnl turning on debug or profiling flags for the compiler. The search order
|
|
dnl is:
|
|
dnl
|
|
dnl CPU-VENDOR-OS
|
|
dnl VENDOR-OS
|
|
dnl CPU-OS
|
|
dnl CPU-VENDOR
|
|
dnl OS
|
|
dnl VENDOR
|
|
dnl CPU
|
|
dnl
|
|
AC_MSG_CHECKING(for host config file)
|
|
host_config="none"
|
|
for f in $host \
|
|
$host_vendor-$host_os \
|
|
$host_cpu-$host_os \
|
|
$host_cpu-$host_vendor \
|
|
$host_os \
|
|
$host_vendor \
|
|
$host_cpu ; do
|
|
if test -f config/$f; then
|
|
host_config=config/$f
|
|
break
|
|
fi
|
|
done
|
|
AC_MSG_RESULT($host_config)
|
|
if test $host_config != "none"; then
|
|
. $host_config
|
|
fi
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Check for programs.
|
|
dnl
|
|
AC_PROG_CC
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_INSTALL
|
|
AC_PROG_RANLIB
|
|
|
|
if test "X$AR" = "X"; then
|
|
AC_CHECK_PROGS(AR,ar xar,:,$PATH)
|
|
fi
|
|
AC_SUBST(AR)
|
|
|
|
AC_MSG_CHECKING(for GNU Make)
|
|
if test "`${MAKE-make} --version -f /dev/null 2>/dev/null |\
|
|
sed -n 1p|cut -c1-8`" = "GNU Make"; then
|
|
AC_MSG_RESULT(yes)
|
|
GMAKE=yes
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Turn on warning flags for gcc.
|
|
dnl
|
|
if test Xyes = "X$GCC"; then
|
|
CFLAGS="$CFLAGS -Wall -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline"
|
|
fi
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Production flags?
|
|
dnl
|
|
AC_MSG_CHECKING(for production mode)
|
|
AC_ARG_ENABLE(production,
|
|
[--enable-production=yes|no Determines how to run the compiler.])
|
|
|
|
case "X-$enableval" in
|
|
X-yes)
|
|
AC_MSG_RESULT("production")
|
|
CFLAGS="$CFLAGS $PROD_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $PROD_CPPFLAGS"
|
|
;;
|
|
X-|X-no)
|
|
AC_MSG_RESULT("development")
|
|
CFLAGS="$CFLAGS $DEBUG_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $DEBUG_CPPFLAGS"
|
|
;;
|
|
X-pg|X-profile)
|
|
AC_MSG_RESULT("profile")
|
|
CFLAGS="$CFLAGS $PROFILE_CFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $PROFILE_CPPFLAGS"
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT("user-defined")
|
|
;;
|
|
esac
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Check for libraries.
|
|
dnl
|
|
AC_CHECK_LIB(m, ceil)
|
|
AC_CHECK_LIB(coug, main) dnl ...for ASCI/Red
|
|
AC_CHECK_LIB(z, compress2)
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Check for header files.
|
|
dnl
|
|
AC_HEADER_STDC
|
|
AC_HEADER_TIME
|
|
AC_CHECK_HEADERS(io.h sys/resource.h sys/time.h unistd.h winsock.h zlib.h)
|
|
AC_CHECK_HEADERS(sys/ioctl.h sys/stat.h)
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Data types and their sizes.
|
|
dnl
|
|
AC_TYPE_OFF_T
|
|
AC_TYPE_SIZE_T
|
|
AC_C_BIGENDIAN
|
|
AC_CHECK_SIZEOF(short, 2)
|
|
AC_CHECK_SIZEOF(int, 4)
|
|
AC_CHECK_SIZEOF(long, 4)
|
|
AC_CHECK_SIZEOF(long long, 8)
|
|
AC_CHECK_SIZEOF(__int64, 8)
|
|
AC_CHECK_SIZEOF(float, 4)
|
|
AC_CHECK_SIZEOF(double, 8)
|
|
AC_CHECK_SIZEOF(long double, 8)
|
|
AC_CHECK_SIZEOF(size_t, 4)
|
|
cat >>confdefs.h <<\EOF
|
|
#include <sys/types.h> /*for off_t definition*/
|
|
EOF
|
|
AC_CHECK_SIZEOF(off_t, 4)
|
|
|
|
AC_ARG_ENABLE(hsizet,
|
|
[--disable-hsizet Datasets can normally be larger than memory
|
|
and/or files but some compilers are unable to
|
|
handle this (including versions of GCC before
|
|
2.8.0). Disabling the feature causes dataset
|
|
sizes to be restricted to the size of core memory,
|
|
or 'size_t'.],
|
|
HSIZET=$enableval)
|
|
AC_MSG_CHECKING(for sizeof hsize_t and hssize_t)
|
|
case $HSIZET in
|
|
no|small)
|
|
AC_MSG_RESULT(small)
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(large)
|
|
AC_DEFINE(HAVE_LARGE_HSIZET)
|
|
;;
|
|
esac
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl How does one figure out the local time zone? Anyone know of a
|
|
dnl Posix way to do this?
|
|
dnl
|
|
|
|
dnl First check if `struct tm' has a `tm_gmtoff' member.
|
|
AC_MSG_CHECKING(for tm_gmtoff in struct tm)
|
|
AC_TRY_COMPILE([
|
|
#include <sys/time.h>
|
|
#include <time.h>],[struct tm tm; tm.tm_gmtoff=0;],
|
|
AC_DEFINE(HAVE_TM_GMTOFF)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
dnl Check whether the global variable `timezone' is defined.
|
|
AC_MSG_CHECKING(for global timezone variable)
|
|
AC_TRY_LINK([
|
|
#include <sys/time.h>
|
|
#include <time.h>], [timezone=0;],
|
|
AC_DEFINE(HAVE_TIMEZONE)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
dnl Check whether `struct timezone' is defined.
|
|
AC_STRUCT_TIMEZONE
|
|
AC_MSG_CHECKING(for struct timezone)
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#include <sys/time.h>
|
|
#include <time.h>],[struct timezone tz; tz.tz_minuteswest=0;],
|
|
AC_DEFINE(HAVE_STRUCT_TIMEZONE)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Does the struct stat have the st_blocks field? This field is not Posix.
|
|
dnl
|
|
AC_MSG_CHECKING(for st_blocks in struct stat)
|
|
AC_TRY_COMPILE([
|
|
#include <sys/stat.h>],[struct stat sb; sb.st_blocks=0;],
|
|
AC_DEFINE(HAVE_STAT_ST_BLOCKS)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl How do we figure out the width of a tty in characters?
|
|
dnl
|
|
AC_CHECK_FUNCS(_getvideoconfig gettextinfo GetConsoleScreenBufferInfo)
|
|
AC_CHECK_FUNCS(_scrsize ioctl)
|
|
|
|
AC_MSG_CHECKING(for struct videoconfig)
|
|
AC_TRY_COMPILE(,[struct videoconfig w; w.numtextcols=0;],
|
|
AC_DEFINE(HAVE_STRUCT_VIDEOCONFIG)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for struct text_info)
|
|
AC_TRY_COMPILE(,[struct text_info w; w.screenwidth=0;],
|
|
AC_DEFINE(HAVE_STRUCT_TEXT_INFO)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for TIOCGWINSZ)
|
|
AC_TRY_COMPILE([#include <sys/ioctl.h>],[int w=TIOCGWINSZ;],
|
|
AC_DEFINE(HAVE_TIOCGWINSZ)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for TIOCGGETD)
|
|
AC_TRY_COMPILE([#include <sys/ioctl.h>],[int w=TIOCGETD;],
|
|
AC_DEFINE(HAVE_TIOCGETD)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Check for functions.
|
|
dnl
|
|
AC_CHECK_FUNCS(getpwuid gethostname system getrusage fork waitpid)
|
|
AC_CHECK_FUNCS(gettimeofday BSDgettimeofday difftime sigaction)
|
|
|
|
AC_TRY_COMPILE([#include<sys/types.h>],
|
|
[off64_t n = 0;],
|
|
AC_CHECK_FUNCS(lseek64 fseek64),
|
|
AC_MSG_RESULT([skipping test for lseek64() and fseek64()]))
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Check compiler characteristics
|
|
dnl
|
|
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
|
|
AC_MSG_CHECKING(for __attribute__ extension)
|
|
AC_TRY_COMPILE(,[int __attribute__((unused)) f(void){return 1;}],
|
|
AC_DEFINE(HAVE_ATTRIBUTE)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for __FUNCTION__ extension)
|
|
AC_TRY_COMPILE(,[int f(void){return __FUNCTION__;}],
|
|
AC_DEFINE(HAVE_FUNCTION)
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Try to figure out how to print `long long'. Some machines use `%lld'
|
|
dnl and others use `%qd'. There may be more! The final `l' is a
|
|
dnl default in case none of the others work.
|
|
dnl
|
|
AC_MSG_CHECKING(how to print long long)
|
|
AC_CACHE_VAL(hdf5_cv_printf_ll,
|
|
for hdf5_cv_printf_ll in ll q l; do
|
|
AC_TRY_RUN([
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
main() {char *s=malloc(128);
|
|
long long x = (long long)1048576 * (long long)1048576;
|
|
sprintf(s,"%${hdf5_cv_printf_ll}d",x);
|
|
exit (strcmp(s,"1099511627776"));}],
|
|
break)
|
|
done)
|
|
AC_MSG_RESULT($hdf5_cv_printf_ll)
|
|
AC_DEFINE_UNQUOTED(PRINTF_LL_WIDTH,"$hdf5_cv_printf_ll")
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Turn on debugging by setting compiler flags
|
|
dnl
|
|
AC_MSG_CHECKING(for debug flags)
|
|
AC_ARG_ENABLE(debug,
|
|
[--enable-debug=all Turn on debugging in all packages. One may also
|
|
specify a comma-separated list of package names
|
|
without the leading H5 or the word no. The default
|
|
is most packages.],
|
|
DEBUG_PKG=$enableval)
|
|
|
|
all_packages="ac,b,d,e,f,g,hg,hl,i,mf,mm,o,p,s,t,v,z"
|
|
if test X = "X$DEBUG_PKG" -o Xyes = "X$DEBUG_PKG"; then
|
|
DEBUG_PKG=ac,b,d,e,f,g,hg,i,mm,p,s,t,v,z
|
|
CPPFLAGS="$CPPFLAGS -UNDEBUG"
|
|
AC_MSG_RESULT(default ($DEBUG_PKG))
|
|
elif test Xall = "X$DEBUG_PKG"; then
|
|
DEBUG_PKG=$all_packages
|
|
CPPFLAGS="$CPPFLAGS -UNDEBUG"
|
|
AC_MSG_RESULT(all ($DEBUG_PKG))
|
|
elif test Xno = "X$DEBUG_PKG" -o Xnone = "X$DEBUG_PKG"; then
|
|
AC_MSG_RESULT(none)
|
|
DEBUG_PKG=
|
|
CPPFLAGS="$CPPFLAGS -DNDEBUG"
|
|
else
|
|
AC_MSG_RESULT($DEBUG_PKG)
|
|
fi
|
|
|
|
if test "X" != "X$DEBUG_PKG"; then
|
|
for pkg in `echo $DEBUG_PKG | tr 'a-z,' 'A-Z '`; do
|
|
CPPFLAGS="$CPPFLAGS -DH5${pkg}_DEBUG"
|
|
done
|
|
fi
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Enable tracing of the API
|
|
dnl
|
|
AC_MSG_CHECKING(for API tracing);
|
|
AC_ARG_ENABLE(trace,
|
|
[--disable-trace Disable API tracing capability],
|
|
TRACE=$enableval)
|
|
|
|
if test X = "X$TRACE" -o Xyes = "X$TRACE"; then
|
|
AC_MSG_RESULT(yes)
|
|
CPPFLAGS="$CPPFLAGS -DH5_DEBUG_API"
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
CPPFLAGS="$CPPFLAGS -UH5_DEBUG_API"
|
|
fi
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Check for parallel support
|
|
dnl
|
|
AC_ARG_ENABLE(parallel,
|
|
--enable-parallel=mpio Enable parallel support with MPIO,
|
|
PARALLEL=$enableval)
|
|
AC_MSG_CHECKING(for parallel support);
|
|
AC_SUBST(RUNTEST)
|
|
|
|
case "X-$PARALLEL" in
|
|
|
|
X-|X-no)
|
|
# Parallel support is not enabled
|
|
AC_MSG_RESULT(disabled)
|
|
;;
|
|
|
|
X-mpio|X-yes)
|
|
# Use MPIO. Define HAVE_PARALLEL in src/H5config.h (comes from
|
|
# ./acconfig.h) and augment the include and library search paths
|
|
# (it doesn't hurt to have extra paths). Then check for header
|
|
# files and libraries. Some extra source files are added to the
|
|
# list also so we don't have to ifdef out the whole file.
|
|
AC_MSG_RESULT(mpio)
|
|
AC_DEFINE(HAVE_PARALLEL)
|
|
CPPFLAGS="$CPPFLAGS $MPI_INC"
|
|
CFLAGS="$CFLAGS $MPI_LIB"
|
|
RUNTEST="$RUNTEST"
|
|
AC_CHECK_LIB(mpi,main) dnl Replace `main' with some function
|
|
AC_CHECK_LIB(mpio,main) dnl Replace `main' with some function
|
|
;;
|
|
|
|
*)
|
|
AC_MSG_ERROR(unknown parallel support: $PARALLEL)
|
|
;;
|
|
esac
|
|
|
|
|
|
|
|
dnl ----------------------------------------------------------------------
|
|
dnl Build the Makefiles. Almost every Makefile.in will begin with the line
|
|
dnl `@COMMENCE@' and end with the line `@CONCLUDE@'. These lines insert
|
|
dnl various files from the config directory into the Makefile.
|
|
dnl
|
|
AC_SUBST_FILE(COMMENCE) COMMENCE=config/commence
|
|
AC_SUBST_FILE(CONCLUDE) CONCLUDE=config/conclude
|
|
|
|
if test "X$GCC" = "Xyes" && test "X$GMAKE" = "Xyes"; then
|
|
AC_SUBST_FILE(DEPEND1) DEPEND1=config/depend
|
|
AC_SUBST_FILE(DEPEND2) DEPEND2=/dev/null
|
|
else
|
|
AC_SUBST_FILE(DEPEND1) DEPEND1=src/.distdep
|
|
AC_SUBST_FILE(DEPEND2) DEPEND2=test/.distdep
|
|
fi
|
|
|
|
dnl We don't need to say when we're entering directories if we're using
|
|
dnl GNU make becuase make does it for us.
|
|
if test "X$GMAKE" = "Xyes"; then
|
|
AC_SUBST(SETX) SETX=":"
|
|
else
|
|
AC_SUBST(SETX) SETX="set -x"
|
|
fi
|
|
|
|
dnl Where is the root of the source tree. Give an absolute address so
|
|
dnl we can find it no matter which directory of the distribution is our
|
|
dnl current directory. The built-in pwd fails on some systems, but the
|
|
dnl /bin/pwd version works OK.
|
|
if test -x /bin/pwd; then
|
|
pwd=/bin/pwd
|
|
else
|
|
pwd=pwd
|
|
fi
|
|
AC_SUBST(ROOT) ROOT=`$pwd`
|
|
|
|
dnl Touch the time-stamp files for src/H5config.h.in and src/H5config.h
|
|
dnl before we generate them or the Makefiles.
|
|
touch ./config/stamp1 ./config/stamp2
|
|
|
|
AC_OUTPUT(config/depend config/commence config/conclude \
|
|
Makefile src/Makefile test/Makefile tools/Makefile examples/Makefile)
|