mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-09 07:32:32 +08:00
254ae8d43d
---------------------- ./MANIFEST Added new Pablo files HDF5record_RT.h and ProcIDs.h ./acconfig.h ./configure [REGENERATED] ./configure.in ./src/H5.c ./src/H5Vprivate.h ./src/H5config.h.in [REGENERATED] ./src/H5private.h ./src/H5public.h ./test/big.c Added more configuration stuff for the Win32 environment. Removed all the #ifdef WIN32 from the source and replaced them with OS-independent stuff. Specifics follow: Check for non-Posix.1 `st_blocks' field in `struct stat' which is used by the big file test to decide if the file system supports holes. If the st_blocks field isn't present then we just skip the test. Configure checks for <io.h> <sys/resource.h> <sys/time.h> and <winsock.h> and defines HAVE_IO_H, HAVE_SYS_RESOURCE_H, HAVE_SYS_TIME_H and HAVE_WINSOCK_H when they're found. Configure checks whether both <sys/time.h> and <time.h> can be included and defines SYS_TIME_WITH_TIME if so. Otherwise include only <sys/time.h> or <time.h> even if both exist. Configure checks sizeof(__int64) and defines SIZEOF___INT64 to the result or to zero if __int64 isn't defined. The source uses `long long' in preference to `__int64'. Removed null WIN32 definition for `inline' since such a definition already exists in H5config.h Protected gettimeofday() calls in debugging code with HAVE_GETTIMEOFDAY instead of WIN32. ./src/H5F.c ./src/H5Flow.c ./src/H5Fmpio.c ./src/H5Fsec2.c ./src/H5Fstdio.h ./src/H5P.c ./src/H5Tconv.c ./src/H5private.h Removed #include of system files from library source files and consolodated them into H5private.h where they're protected by various configuration macros (most of them were duplicated there already anyway). ./test/big.c ./test/chunk.c ./test/cmpd_dset.c ./test/dsets.c ./test/dtypes.c ./test/extend.c ./test/external.c ./test/fillval.c ./test/flush1.c ./test/flush2.c ./test/iopipe.c ./test/links.c ./test/mount.c ./test/mtime.c ./test/overhead.c ./test/ragged.c ./test/shtype.c ./test/unlink.c Protected system #include's with #ifdef's from H5config.h. Undefined NDEBUG since some of the tests rely on assert() to check return values. Removed WIN32 definitions for __unused__ since this can be controlled by the definition of HAVE_ATTRIBUTE in H5config.h ./test/testhdf5.h Removed the CLEAN_CMD definition because we no longer use it. Albert's cleanup() functions replaced it. ./test/fillval.c Initialized auto hid_t variables to fix warnings in error recovery code when data flow analysis is turned on in compilers. ./test/h5tools.c Initialized an auto variable to fix a compiler warning. ./test/chunk.c ./test/ragged.c The WIN32 had some unsigned variables changed to signed because the compiler generates warnings when coercing unsigned to double(?). I changed them back to unsigned because they really are unsigned quantities. If this the change was just to shut up extraneous warnings then perhaps a compiler flag can do the same; otherwise if the compiler generates bad code then we should supply a patch file instead messing up source code with bug work-arounds. ./src/H5detect.c Protected system #include's with #ifdef's from H5config.h thereby removing a WIN32. If getpwuid() doesn't exist (HAVE_GETPWUID) then we assume that `struct passwd' doesn't exist either (we don't really need it in that case). The H5T_NATIVE_LLONG and H5T_NATIVE_ULLONG are defined in terms of `long long' or else `__int64' or else `long' depending on what's available. ./src/H5Flow.c ./src/H5Ofill.c Added __unused__ to some function arguments that aren't used when assertions are turned off. ./src/H5V.c Changed an auto variable name in some hand-inlined code to get rid of a warning about the variable shadowing a previous auto.
405 lines
12 KiB
Plaintext
405 lines
12 KiB
Plaintext
dnl Process this file with autoconf to produce configure. -*-indented-text-*-
|
|
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. (none required yet)
|
|
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)
|
|
|
|
|
|
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 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)
|