summaryrefslogtreecommitdiffstats
path: root/bin/reconfigure
blob: 7a0f437ba214497d88abf71a70b1e8bcda937aae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#! /bin/sh
#
# Copyright by the Board of Trustees of the University of Illinois.
# All rights reserved.
#
# This file is part of HDF5.  The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the files COPYING and Copyright.html.  COPYING can be found at the root
# of the source code distribution tree; Copyright.html can be found at the
# root level of an installed copy of the electronic HDF5 document set and
# is linked from the top-level documents page.  It can also be found at
# http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have
# access to either file, you may request a copy from help@hdfgroup.org.
#

# A script to reconfigure autotools for HDF5, and to recreate other
# generated files specifc to HDF5.
# If the paths of the autotools are not specified by the user, they
# are hardcoded to point to their locations on HDF5 Linux machines.
# Users can specify the locations of the autotools with the following
# variables:
# AUTOCONF, AUTOMAKE, ACLOCAL, AUTOHEADER should be the path to the
# corresponding tools.
# LIBTOOL_DIR should be the path to the base libtool directory;
# $LIBTOOL_DIR/bin/libtool should invoke libtool, while
# $LIBTOOL_DIR/share/aclocal needs to be included by aclocal.
# Be very careful when specifying these tools manually!  There are a lot
# of versions that can get confused (not even counting the m4 utility)!

# HDF5 currently uses the following versions of the autotools:
AUTOCONF_VERSION="autoconf (GNU Autoconf) 2.69"
AUTOMAKE_VERSION="automake (GNU automake) 1.14.1"
AUTOHEADER_VERSION="autoheader (GNU Autoconf) 2.69"
ACLOCAL_VERSION="aclocal (GNU automake) 1.14.1"
LIBTOOL_VERSION="(GNU libtool) 2.4.2"
M4_VERSION="m4 (GNU M4) 1.4.17"

#
# When upgrading automake's version, don't forget to also update its
# helper utilities, especially depcomp.


# If paths to autotools are not specified by the user, assume tools are
# running on jam in /mnt/hdf/packages and set paths accordingly.
if test -z ${AUTORECONF}; then
  AUTORECONF=/mnt/hdf/packages/autoconf/autoconf-2.69/bin/autoreconf
fi
if test -z ${AUTOCONF}; then
  AUTOCONF=/mnt/hdf/packages/autoconf/autoconf-2.69/bin/autoconf
fi
if test -z ${AUTOMAKE}; then
  AUTOMAKE=/mnt/hdf/packages/automake/automake-1.14.1/bin/automake-1.14
fi
if test -z ${AUTOHEADER}; then
  AUTOHEADER=/mnt/hdf/packages/autoconf/autoconf-2.69/bin/autoheader
fi
if test -z ${ACLOCAL}; then
  ACLOCAL=/mnt/hdf/packages/automake/automake-1.14.1/bin/aclocal-1.14
fi
if test -z ${LIBTOOL}; then
  LIBTOOL=/mnt/hdf/packages/libtool/libtool-2.4.2/bin/libtool
fi
if test -z ${M4}; then
  M4=/mnt/hdf/packages/m4/m4-1.4.17/bin/m4
fi

# Check version numbers of all autotools against the "correct" versions
AC_VERS=`${AUTOCONF} --version 2>&1 | grep "^${AUTOCONF_VERSION}"`
if test -z "${AC_VERS}"; then
   echo "${AUTOCONF} version is not ${AUTOCONF_VERSION}"
   exit 1
fi
AM_VERS=`${AUTOMAKE} --version 2>&1 | grep "^${AUTOMAKE_VERSION}"`
if test -z "${AM_VERS}"; then
   echo "${AUTOMAKE} version is not ${AUTOMAKE_VERSION}"
   exit 1
fi
AH_VERS=`${AUTOHEADER} --version 2>&1 | grep "^${AUTOHEADER_VERSION}"`
if test -z "${AH_VERS}"; then
   echo "${AUTOHEADER} version is not ${AUTOHEADER_VERSION}"
   exit 1
fi
AL_VERS=`${ACLOCAL} --version 2>&1 | grep "^${ACLOCAL_VERSION}"`
if test -z "${AL_VERS}"; then
   echo "${ACLOCAL} version is not ${ACLOCAL_VERSION}"
   exit 1
fi
LT_VERS=`${LIBTOOL} --version 2>&1 | grep "${LIBTOOL_VERSION}"`
if test -z "${LT_VERS}"; then
   echo "${LIBTOOL} version is not ${LIBTOOL_VERSION}"
   exit 1
fi
M4_VERS=`${M4} --version 2>&1 | grep "${M4_VERSION}"`
if test -z "${M4_VERS}"; then
   echo "${M4} version is not ${M4_VERSION}"
   exit 1
fi

# Make sure that the tools are in the path.
AUTOCONF_DIR=`dirname ${AUTOCONF}`
LIBTOOL_DIR=`dirname ${LIBTOOL}`
M4_DIR=`dirname ${M4}`
PATH=${AUTOCONF_DIR}:${M4_DIR}:$PATH

# Run autoconf/automake commands in order
  echo ${ACLOCAL} -I ${LIBTOOL_DIR}/../share/aclocal
  ${ACLOCAL} -I ${LIBTOOL_DIR}/../share/aclocal || exit 1

  echo ${AUTOHEADER}
  ${AUTOHEADER} || exit 1

  echo ${AUTOMAKE} --add-missing
  ${AUTOMAKE} --add-missing || exit 1

  echo ${AUTOCONF}
  ${AUTOCONF} || exit 1

# Clean up top-level Makefile.in
# pmake wants an argument to be the first non-comment line it encounters
# in the Makefile.  Automake wants to reorganize the Makefile.
# To work around this, we post-process the top-level Makefile.in.
  sed "s/^#xxx//" Makefile.in > Makefile.in.new
  mv Makefile.in.new Makefile.in

# Run trace script
# The trace script adds H5TRACE macros to library source files.  It should
# have no effect on files that don't have HDF5 API macros in them.
echo
echo "    Running trace script:"
bin/trace src/H5*.c || exit 1

# Run make_err
# make_err automatically generates the H5E headers that create error message
# types for HDF5.
echo
echo "    Running error generation script:"
bin/make_err src/H5err.txt || exit 1

# Run make_vers
# make_vers automatically generates the public headers that define the API version
# macros for HDF5.
echo
echo "    Running API version generation script:"
bin/make_vers src/H5vers.txt || exit 1

# Run flex
# automatically generates the lexical file for hl/src/H5LTanalyze.c
echo
echo "    Running flex generation script:"
bin/genltanalyze || exit 1

exit 0