summaryrefslogtreecommitdiffstats
path: root/c++/configure.in
diff options
context:
space:
mode:
authorBill Wendling <wendling@ncsa.uiuc.edu>2000-11-14 23:16:05 (GMT)
committerBill Wendling <wendling@ncsa.uiuc.edu>2000-11-14 23:16:05 (GMT)
commit8767d3db38362814afb56ee0fdbee58c2d87217b (patch)
tree595ac4176e091452a3dc68b799e9f4793d65de08 /c++/configure.in
parent118598968f04b29ad11e8edfd13954fa24f54803 (diff)
downloadhdf5-8767d3db38362814afb56ee0fdbee58c2d87217b.zip
hdf5-8767d3db38362814afb56ee0fdbee58c2d87217b.tar.gz
hdf5-8767d3db38362814afb56ee0fdbee58c2d87217b.tar.bz2
[svn-r2903] Purpose:
Adding Makefiles and configure stuff.
Diffstat (limited to 'c++/configure.in')
-rw-r--r--c++/configure.in371
1 files changed, 371 insertions, 0 deletions
diff --git a/c++/configure.in b/c++/configure.in
new file mode 100644
index 0000000..51f74e4
--- /dev/null
+++ b/c++/configure.in
@@ -0,0 +1,371 @@
+dnl ----------------------------------------------------------------------
+dnl Process this file with autoconf to produce configure.
+dnl
+dnl Copyright (C) 2000 National Center for Supercomputing Applications.
+dnl All rights reserved.
+dnl ----------------------------------------------------------------------
+
+dnl ----------------------------------------------------------------------
+dnl Initialize configure.
+dnl
+AC_REVISION($Id$)
+AC_INIT(src/H5library.C)
+dnl AC_CONFIG_HEADER(config.h)
+AC_CONFIG_AUX_DIR(bin)
+AC_CANONICAL_HOST
+AC_SUBST(CPPFLAGS)
+
+dnl ----------------------------------------------------------------------
+dnl Dump all shell variables values.
+dnl
+AC_MSG_CHECKING(shell variables initial values)
+set >&5
+AC_MSG_RESULT(done)
+
+dnl ----------------------------------------------------------------------
+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.
+dnl
+if test -x "/bin/pwd"; then
+ pwd=/bin/pwd
+else
+ pwd=pwd
+fi
+AC_SUBST(ROOT) ROOT=`$pwd`
+
+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 "X$hdf5_cv_host" = "Xnone"; 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
+dnl If the `OS' ends with a version number then remove it. For instance,
+dnl `freebsd3.1' would become `freebsd'
+case "$host_os" in
+ aix4.*)
+ host_os_novers=aix4.x
+ ;;
+ freebsd*)
+ host_os_novers=freebsd
+ ;;
+ irix5.*)
+ host_os_novers=irix5.x
+ ;;
+ irix6.*)
+ host_os_novers=irix6.x
+ ;;
+ osf4.*)
+ host_os_novers=osf4.x
+ ;;
+ solaris2.*)
+ host_os_novers=solaris2.x
+ ;;
+ *)
+ host_os_novers=$host_os
+ ;;
+esac
+
+host_config="none"
+for f in $host_cpu-$host_vendor-$host_os \
+ $host_cpu-$host_vendor-$host_os_novers \
+ $host_vendor-$host_os \
+ $host_vendor-$host_os_novers \
+ $host_cpu-$host_os \
+ $host_cpu-$host_os_novers \
+ $host_cpu-$host_vendor \
+ $host_os \
+ $host_os_novers \
+ $host_vendor \
+ $host_cpu ; do
+ AC_MSG_CHECKING(for config $f)
+ if test -f $srcdir/config/$f; then
+ host_config=$srcdir/config/$f
+ AC_MSG_RESULT(found)
+ break
+ fi
+ AC_MSG_RESULT(no)
+done
+if test "X$host_config" != "Xnone"; then
+ CXX_BASENAME="`echo $CXX |cut -f1 -d' ' |xargs basename 2>/dev/null`"
+ . $host_config
+fi
+
+dnl ----------------------------------------------------------------------
+dnl Check for programs.
+dnl
+AC_PROG_CXX
+AC_PROG_CXXCPP dnl this is checked for when AC_HEADER_STDC is done
+CXX_BASENAME="`echo $CXX |cut -f1 -d' ' |xargs basename 2>/dev/null`"
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+AM_PROG_LIBTOOL
+
+if test -z "$AR"; then
+ AC_CHECK_PROGS(AR,ar xar,:,$PATH)
+fi
+AC_SUBST(AR)
+
+dnl ----------------------------------------------------------------------
+dnl Sometimes makes think the `.PATH:' appearing before the first rule
+dnl with an action should override the `all' default target. So we have
+dnl to decide what the proper syntax is.
+dnl
+if test -z "$SEARCH"; then
+ AC_MSG_CHECKING(how make searches directories)
+ while true; do #for break
+ dnl The most common method is `VPATH=DIR1 DIR2 ...'
+ cat >maketest <<EOF
+VPATH=$srcdir/config $srcdir/src $srcdir/bin
+.c.o:
+ cp $< H5.o
+
+foo: H5.o
+ /bin/rm -f H5.o
+ @echo works
+EOF
+
+ if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+ SEARCH_RULE='VPATH='
+ SEARCH_SEP=' '
+ AC_MSG_RESULT([VPATH=DIR1 DIR2 ...])
+ break
+ fi
+
+ dnl The second most common method is like above except with the
+ dnl directories separated by colons.
+ cat >maketest <<EOF
+VPATH=$srcdir/config:$srcdir/src:$srcdir/bin
+.c.o:
+ cp $< H5.o
+
+foo: H5.o
+ /bin/rm -f H5.o
+ @echo works
+EOF
+
+ if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+ SEARCH_RULE='VPATH='
+ SEARCH_SEP=':'
+ AC_MSG_RESULT([VPATH=DIR1:DIR2:...])
+ break
+ fi
+
+ dnl pmake uses the construct `.PATH: DIR1 DIR2
+ cat >maketest <<EOF
+.PATH: $srcdir/config $srcdir/src $srcdir/bin
+.c.o:
+ cp $< H5.o
+
+foo: H5.o
+ /bin/rm -f H5.o
+ @echo works
+EOF
+ if (MAKE= ${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+ SEARCH_RULE='.PATH: '
+ SEARCH_SEP=' '
+ AC_MSG_RESULT([.PATH: DIR1 DIR2 ...])
+ break
+ fi
+
+ dnl No way for make to search directories
+ SEARCH_RULE='## SEARCH DISABLED: '
+ SEARCH_SEP=' '
+ AC_MSG_RESULT([it doesn't])
+ if test ! -f configure; then
+ AC_MSG_ERROR(${MAKE-make} requires the build and source directories to be the same)
+ fi
+ break
+ done
+ rm maketest
+fi
+
+dnl ----------------------------------------------------------------------
+dnl Checks for compiler characteristics.
+dnl
+AC_LANG_CPLUSPLUS
+
+AC_MSG_CHECKING(if $CXX can handle namespaces)
+AC_TRY_RUN([
+using namespace std;
+
+namespace H5 {
+
+int main(void) { return 0; }
+
+}
+], [
+echo yes
+], [
+echo no
+CXXFLAGS="${CXXFLAGS} -DH5_NO_NAMESPACE"
+])
+
+AC_MSG_CHECKING(if $CXX needs old style header files in includes)
+AC_TRY_RUN([
+#include <iostream>
+
+int main(void) { return 0; }
+], [
+echo no
+], [
+echo yes
+CXXFLAGS="${CXXFLAGS} -DOLD_HEADER_FILENAME"
+])
+
+dnl ----------------------------------------------------------------------
+dnl Checks for header files.
+dnl
+
+dnl Checkpoint the cache
+AC_CACHE_SAVE
+
+AC_MSG_CHECKING(make)
+AC_SUBST_FILE(DEPEND)
+if test "`${MAKE-make} --version -f /dev/null 2>/dev/null |\
+ sed -n 1p|cut -c1-8`" = "GNU Make"; then
+ AC_MSG_RESULT(GNU make)
+ GMAKE=yes
+ if test "X$GCC" = "Xyes"; then
+ DEPEND=config/depend1
+ else
+ DEPEND=config/depend2
+ fi
+else
+ AC_MSG_RESULT(generic)
+fi
+
+dnl How do we include another file into a Makefile?
+if test -z "$DEPEND"; then
+ AC_MSG_CHECKING(how to include a makefile)
+
+ dnl The include file contains the target for `foo'
+ cat >makeinc <<EOF
+foo:
+ @:
+EOF
+
+ while true; do dnl for break
+ dnl pmake. We have to be careful because some pmake think that the
+ dnl contents of the MAKE environment variable is a target.
+ echo '.include <makeinc>' >maketest
+ if (MAKE= ${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+ AC_MSG_RESULT([.include <FILE>])
+ DEPEND=config/depend3
+ break
+ fi
+
+ dnl Most make's use `include FILE'
+ echo 'include makeinc' >maketest
+ if (${MAKE-make} -f maketest foo) >/dev/null 2>&1; then
+ AC_MSG_RESULT(include FILE)
+ DEPEND=config/depend4
+ break;
+ fi
+
+ dnl default
+ AC_MSG_RESULT(you have a deficient make command)
+ DEPEND=config/dependN
+ break
+ done
+ rm makeinc maketest
+fi
+
+dnl Some cleanup stuff
+rm -f conftest core core.* *.core conftest.o conftest.c dummy.o $ac_clean_files
+
+dnl ----------------------------------------------------------------------
+dnl Determine the runtime libraries we may need to include in the
+dnl libtools command so that executables will find the correct dynamic
+dnl libraries.
+dnl
+DYNAMIC_DIRS=""
+if test -n "$LDFLAGS"; then
+ for d in $LDFLAGS ; do
+ case "$d" in
+ -L*)
+ d=`echo $d | sed -e 's/-L//g'`
+ case "$d" in
+ .*)
+ dnl If the path isn't absolute, make it so by prepending the
+ dnl ROOT directory to it.
+ d=${ROOT}/$d
+ ;;
+ esac
+ DYNAMIC_DIRS="-R${d} $DYNAMIC_DIRS"
+ ;;
+ esac
+ done
+fi
+AC_SUBST(DYNAMIC_DIRS)
+
+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
+
+dnl The directory search list
+if test -z "$SEARCH"; then
+ AC_SUBST(SEARCH) SEARCH='$(srcdir) $(top_builddir)/src $(top_srcdir)/src'
+ cmd='echo $SEARCH |sed "s/ /'$SEARCH_SEP'/g"'
+ SEARCH="$SEARCH_RULE`eval $cmd`"
+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 Some cleanup stuff
+rm -rf conftest* confdefs* core core.* *.core dummy.o
+
+dnl Build config.status, touch the stamp files, and build all the Makefiles.
+dnl The order is such that the first `make' does not need to update any
+dnl configuration information. See config/commence.in for the order in which
+dnl things need to be done.
+
+dnl First the stamp1 file for H5config.h.in
+mkdir ./config >/dev/null 2>&1
+touch ./config/stamp1
+
+dnl Then the config.status file (but not makefiles)
+saved_no_create=$no_create
+no_create=yes
+AC_OUTPUT(config/depend1 config/depend2 config/depend3 config/depend4 \
+ config/dependN config/commence config/conclude Makefile \
+ src/Makefile test/Makefile examples/Makefile)
+no_create=$saved_no_create
+
+dnl Then the stamp2 file for H5config.h
+touch ./config/stamp2
+
+dnl Finally the makefiles
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1