-
Notifications
You must be signed in to change notification settings - Fork 7
/
bootstrap.vendor.sh
executable file
·186 lines (159 loc) · 6.16 KB
/
bootstrap.vendor.sh
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010 Free Software
# Foundation, Inc,
# Mritten by Gary V. Vaughan, 2003
#
# This file is part of GNU Libtool.
#
# GNU Libtool is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# GNU Libtool is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Libtool; see the file COPYING. If not, a copy
# can be downloaded from http://www.gnu.org/licenses/gpl.html,
# or obtained by writing to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
####
# Exit upon failure.
set -e
# It is okay for the bootstrap process to require unreleased autoconf
# or automake, as long as any released libtool will work with at least
# the newest stable versions of each. Generally, newer versions offer
# better features, and configure.ac documents oldest version of each
# required for bootstrap (AC_PREREQ, and AM_INIT_AUTOMAKE).
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
: ${AUTORECONF=autoreconf}
: ${AUTOCONF=autoconf}
: ${AUTOMAKE=automake}
: ${AUTOM4TE=autom4te}
: ${MAKE=make}
: ${GREP=grep}
: ${EGREP=egrep}
: ${FGREP=fgrep}
: ${SED=sed}
: ${LN_S='ln -s'}
: ${MAKEINFO=makeinfo}
case $1 in
--help|-h*)
cat <<EOF
`echo $0 | sed 's,^.*/,,g'`: This script is designed to bootstrap a fresh repository checkout
of Libtool. Useful environment variable settings:
reconfdirs='. libltdl' Do not bootstrap the old test suite.
EOF
exit
;;
esac
test -f ./configure.ac || {
echo "bootstrap: can't find ./configure.ac, please rerun from top_srcdir"
exit 1
}
# Extract auxdir and m4dir from configure.ac:
lt_tab=' '
my_sed_traces='s,#.*$,,; s,^dnl .*$,,; s, dnl .*$,,;
/AC_CONFIG_AUX_DIR[^_]/ {
s,^.*AC_CONFIG_AUX_DIR([[ '"$lt_tab"']*\([^])]*\).*$,auxdir=\1,; p;
};
/AC_CONFIG_MACRO_DIR/ {
s,^.*AC_CONFIG_MACRO_DIR([[ '"$lt_tab"']*\([^])]*\).*$,m4dir=\1,; p;
};
d;'
eval `cat configure.ac 2>/dev/null | $SED "$my_sed_traces"`
# Upgrade caveat:
cat <<'EOF'
WARNING: If bootstrapping with this script fails, it may be due to an
WARNING: incompatible installed `libtool.m4' being pulled in to
WARNING: `aclocal.m4'. The best way to work around such a problem is to
WARNING: uninstall your system libtool files, or failing that, overwrite
WARNING: them with all m4 file as shipped with this distribution (except
WARNING: `lt~obsolete.m4'). After that, retry this bootstrap.
EOF
find . -depth \( -name autom4te.cache -o -name libtool \) -print \
| grep -v '{arch}' \
| xargs rm -rf
# Delete stale files from previous libtool versions.
rm -f acinclude.m4 libltdl/config.h
for file in argz.c lt__dirent.c lt__strl.c; do
rm -f $file
done
if test -z "$reconfdirs"; then
reconfdirs=". libltdl `ls -1d tests/*demo tests/*demo[0-9]`"
fi
# Extract the package name and version number from configure.ac:
set dummy `$SED -n '
/AC_INIT/{
s/[][,()]/ /g
s/ GNU / /
p
}' configure.ac`
shift
PACKAGE=`echo "$2" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
PACKAGE_NAME=$2
PACKAGE_URL=
if grep 'AC_INIT.*GNU' configure.ac >/dev/null; then
PACKAGE_NAME="GNU $PACKAGE_NAME"
PACKAGE_URL="http://www.gnu.org/software/$PACKAGE/"
fi
VERSION=$3
# Whip up a dirty Makefile:
makes='Makefile.am libltdl/Makefile.inc'
rm -f Makefile
$SED '/^if /,/^endif$/d;/^else$/,/^endif$/d;/^include /d' $makes > Makefile
# Building distributed files from configure is bad for automake, so we
# generate them here, and have Makefile rules to keep them up to date.
# We don't have all the substitution values to build ltmain.sh from this
# script yet, but we need config/ltmain.sh for the libtool commands in
# configure, and ltversion.m4 to generate configure in the first place:
rm -f $auxdir/ltmain.sh $m4dir/ltversion.m4
$MAKE ./$auxdir/ltmain.sh ./$m4dir/ltversion.m4 \
./libtoolize.in ./tests/defs.in ./tests/package.m4 \
./tests/testsuite ./libltdl/Makefile.am ./doc/notes.txt \
srcdir=. top_srcdir=. PACKAGE="$PACKAGE" VERSION="$VERSION" \
PACKAGE_NAME="$PACKAGE_NAME" PACKAGE_URL="$PACKAGE_URL" \
PACKAGE_BUGREPORT="[email protected]" M4SH="$AUTOM4TE --language=m4sh" \
AUTOTEST="$AUTOM4TE --language=autotest" SED="$SED" MAKEINFO="$MAKEINFO" \
GREP="$GREP" FGREP="$FGREP" EGREP="$EGREP" LN_S="$LN_S"
rm -f Makefile
# Make a dummy libtoolize script for autoreconf:
cat > $auxdir/libtoolize <<'EOF'
#! /bin/sh
# This is a dummy file for bootstrapping libtool.
echo "$0: Bootstrap detected, no files installed." | sed 's,^.*/,,g'
exit 0
EOF
chmod 755 $auxdir/libtoolize
# Running the installed `libtoolize' will trash the local (newer) libtool.m4
# among others. Call the dummy script we made earlier.
LIBTOOLIZE=`pwd`/$auxdir/libtoolize
export LIBTOOLIZE
for sub in $reconfdirs; do
$AUTORECONF --force --verbose --install $sub
done
# Autoheader valiantly tries to prevent needless reconfigurations by
# not changing the timestamp of config-h.in unless the file contents
# are updated. Unfortunately config-h.in depends on aclocal.m4 which
# *is* updated, so running 'libtoolize --ltdl=. && configure && make'
# causes autoheader to be called... undesireable for users that do not
# have it! Fudge the timestamp to prevent that:
sleep 2 && touch libltdl/config-h.in
# Remove our dummy libtoolize
rm -f $auxdir/libtoolize
# These files can cause an infinite configure loop if left behind.
rm -f Makefile libltdl/Makefile libtool vcl.tmp
# This file is misgenerated earlier in bootstrap to satisfy automake 1.9.1
# and earlier, but has a new enough timestamp to not be updated. Force it
# to be regenerated at make-time with proper substitutions in place:
touch $auxdir/ltmain.m4sh
for macro in LT_INIT AC_PROG_LIBTOOL AM_PROG_LIBTOOL; do
if grep $macro aclocal.m4 libltdl/aclocal.m4; then
echo "Bogus $macro macro contents in an aclocal.m4 file." >&2
exit 1
else :; fi
done
exit 0