File: bootstrap

package info (click to toggle)
libtool 2.2.6b-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 10,740 kB
  • ctags: 1,236
  • sloc: sh: 25,677; ansic: 5,052; makefile: 1,149; pascal: 131; cpp: 121; fortran: 37; f90: 37
file content (196 lines) | stat: -rwxr-xr-x 7,061 bytes parent folder | download
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
187
188
189
190
191
192
193
194
195
196
#! /bin/sh
# bootstrap -- Helps bootstrapping libtool, when checked out from CVS.
#
#   Copyright (C) 2003, 2004, 2005, 2006 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.
####

# 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}
: ${WORKING_LIBOBJ_SUPPORT=false}

case $1 in
--help|-h*)
  cat <<EOF
`echo $0 | sed 's,^.*/,,g'`: This script is designed to bootstrap a fresh CVS checkout
of Libtool.  Useful environment variable settings:
  reconfdirs='. libltdl'     Do not bootstrap the old test suite.
  WORKING_LIBOBJ_SUPPORT=:   Declare that you have fixed LIBOBJDIR support
                             in autoconf (> 2.59) and automake (> 1.9.6).
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

# Workaround for missing LIBOBJDIR support in Autoconf 2.59, Automake 1.9.6:
# Have symlinks of the libobj files in top source dir.
# Set WORKING_LIBOBJ_SUPPORT=: when calling bootstrap if you have fixed tools.
case `($AUTOCONF --version) 2>/dev/null` in
  *\ 2.59[c-z]* | *\ 2.[6-9][0-9]* | *\ [3-9].[0-9]*)
  case `($AUTOMAKE --version) 2>/dev/null` in
    *\ 1.9[a-z]* | *\ 1.1[0-9]* | *\ 1.[2-9][0-9]* | *\ [2-9].[0-9]*)
      WORKING_LIBOBJ_SUPPORT=: ;;
  esac ;;
esac
for file in argz.c lt__dirent.c lt__strl.c; do
  rm -f $file
  $WORKING_LIBOBJ_SUPPORT || $LN_S libltdl/$file $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
	p
    }' configure.ac`
shift

# 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 ./doc/notes.txt \
    ./libtoolize.in ./tests/defs.in ./tests/package.m4 \
    ./tests/testsuite ./libltdl/Makefile.am \
    srcdir=. top_srcdir=. PACKAGE="$2" VERSION="$3" \
    PACKAGE_BUGREPORT="bug-$2@gnu.org" M4SH="$AUTOM4TE --language=m4sh" \
    AUTOTEST="$AUTOM4TE --language=autotest" SED="$SED" MAKEINFO="$MAKEINFO" \
    GREP="$GREP" FGREP="$FGREP" EGREP="$EGREP" LN_S="$LN_S"

test -f clcommit.m4sh && $MAKE -f Makefile.maint ./commit \
    srcdir=. top_srcdir=. PACKAGE="$2" VERSION="$3" M4SH="$AUTOM4TE -l m4sh" \
    SED="$SED" 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 CVS 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

# Commit script caveat:
cat <<EOF
WARNING: You might want to regenerate \`commit' and \`$auxdir/mailnotify'
WARNING: after you have run \`configure' to discover the real whereabouts
WARNING: of \`sed', \`grep' etc. like this:
WARNING:
WARNING:      rm -f commit $auxdir/mailnotify
WARNING:      make -f Makefile.maint ./commit ./$auxdir/mailnotify
EOF

exit 0