]> git.ipfire.org Git - thirdparty/squid.git/blob - bootstrap.sh
Um
[thirdparty/squid.git] / bootstrap.sh
1 #!/bin/sh
2 # Used to setup the configure.in, autoheader and Makefile.in's if configure
3 # has not been generated. This script is only needed for developers when
4 # configure has not been run, or if a Makefile.am in a non-configured directory
5 # has been updated
6
7 # Autotool versions preferred. To override either edit the script
8 # to match the versions you want to use, or set the variables on
9 # the command line like "env acver=.. amver=... ./bootstrap.sh"
10 acversions="${acver:-2.63 2.62 2.61}"
11 amversions="${amver:-1.11 1.10 1.9}"
12 ltversions="${ltver:-2.2 1.5 1.4}"
13
14 check_version()
15 {
16 eval $2 --version 2>/dev/null | grep -i "$1.* $3" >/dev/null
17 }
18
19 show_version()
20 {
21 tool=$1
22 found="NOT_FOUND"
23 shift
24 versions="$*"
25 for version in $versions; do
26 for variant in "" "-${version}" "`echo $version | sed -e 's/\.//g'`"; do
27 if check_version $tool ${tool}${variant} $version; then
28 found="${version}"
29 break
30 fi
31 done
32 if [ "x$found" != "xNOT_FOUND" ]; then
33 break
34 fi
35 done
36 if [ "x$found" = "xNOT_FOUND" ]; then
37 found="??"
38 fi
39 echo $found
40 }
41
42 find_variant()
43 {
44 tool=$1
45 found="NOT_FOUND"
46 shift
47 versions="$*"
48 for version in $versions; do
49 for variant in "" "-${version}" "`echo $version | sed -e 's/\.//g'`"; do
50 if check_version $tool ${tool}${variant} $version; then
51 found="${variant}"
52 break
53 fi
54 done
55 if [ "x$found" != "xNOT_FOUND" ]; then
56 break
57 fi
58 done
59 if [ "x$found" = "xNOT_FOUND" ]; then
60 echo "WARNING: Cannot find $tool version $versions" >&2
61 echo "Trying `$tool --version | head -1`" >&2
62 found=""
63 fi
64 echo $found
65 }
66
67 find_path()
68 {
69 tool=$1
70 path=`which $tool`
71 if test $? -gt 0 ; then
72 # path for $tool not found. Not defining, and hoping for the best
73 echo
74 return
75 fi
76 echo $(dirname $path)
77 }
78
79 bootstrap() {
80 if "$@"; then
81 true # Everything OK
82 else
83 echo "$1 failed"
84 echo "Autotool bootstrapping failed. You will need to investigate and correct" ;
85 echo "before you can develop on this source tree"
86 exit 1
87 fi
88 }
89
90 bootstrap_libtoolize() {
91 ltver=$1
92
93 # TODO: when we have libtool2, tell libtoolize where to put its files
94 # instead of manualy moving files from ltdl to lib/libLtdl
95 if egrep -q '^[[:space:]]*AC_LIBLTDL_' configure.in
96 then
97 ltdl="--ltdl"
98 else
99 ltdl=""
100 fi
101
102 bootstrap libtoolize$ltver $ltdl --force --copy --automake
103
104 # customize generated libltdl, if any
105 if test -d libltdl
106 then
107 src=libltdl
108
109 # do not bundle with the huge standard license text
110 rm -f $src/COPYING.LIB
111 makefile=$src/Makefile.in
112 sed 's/COPYING.LIB/ /g' $makefile > $makefile.new;
113 chmod u+w $makefile
114 mv $makefile.new $makefile
115 chmod u-w $makefile
116
117 # Libtool 2.2.6b we bundle is slightly broken with non-portable dependencies
118 # HACK: Make it backward-compatible by linking the bundled headers.
119 for f in ltdl.h libltdl/lt_error.h libltdl/lt_system.h libltdl/lt_dlloader.h libltdl/slist.h; do
120 echo "Fixing $f ..."
121 sed 's/<libltdl\/lt_system.h>/\"libltdl\/lt_system.h\"/g' $src/$f |
122 sed 's/<libltdl\/lt__glibc.h>/\"libltdl\/lt__glibc.h\"/g' |
123 sed 's/<libltdl\/lt_error.h>/\"libltdl\/lt_error.h\"/g' |
124 sed 's/<libltdl\/lt_dlloader.h>/\"libltdl\/lt_dlloader.h\"/g' > $src/$f.new;
125 chmod u+w $src/$f
126 mv $src/$f.new $src/$f
127 chmod u-w $src/$f
128 done
129 fi
130 }
131
132 # Adjust paths of required autool packages
133 amver=`find_variant automake ${amversions}`
134 acver=`find_variant autoconf ${acversions}`
135 ltver=`find_variant libtool ${ltversions}`
136
137 # Produce debug output about what version actually found.
138 amversion=`show_version automake ${amversions}`
139 acversion=`show_version autoconf ${acversions}`
140 ltversion=`show_version libtool ${ltversions}`
141
142 # Find the libtool path to get the right aclocal includes
143 ltpath=`find_path libtool$ltver`
144
145 # Set environment variable to tell automake which autoconf to use.
146 AUTOCONF="autoconf${acver}" ; export AUTOCONF
147
148 echo "automake ($amversion) : automake$amver"
149 echo "autoconf ($acversion) : autoconf$acver"
150 echo "libtool ($ltversion) : libtool$ltver"
151 echo "libtool path : $ltpath"
152
153 for dir in \
154 "" \
155 lib/libTrie
156 do
157 if [ -z "$dir" ] || [ -d $dir ]; then
158 if (
159 echo "Bootstrapping $dir"
160 cd ./$dir
161 if [ -n "$dir" ] && [ -f bootstrap.sh ]; then
162 ./bootstrap.sh
163 elif [ ! -f $dir/configure ]; then
164 # Make sure cfgaux exists
165 mkdir -p cfgaux
166
167 if test -n "$ltpath"; then
168 acincludeflag="-I $ltpath/../share/aclocal"
169 else
170 acincludeflag=""
171 fi
172
173 # Bootstrap the autotool subsystems
174 bootstrap aclocal$amver $acincludeflag
175 bootstrap autoheader$acver
176 bootstrap_libtoolize $ltver
177 bootstrap automake$amver --foreign --add-missing --copy -f
178 bootstrap autoconf$acver --force
179 fi ); then
180 : # OK
181 else
182 exit 1
183 fi
184 fi
185 done
186
187 # Fixup autoconf recursion using --silent/--quiet option
188 # autoconf should inherit this option whe recursing into subdirectories
189 # but it currently doesn't for some reason.
190 if ! grep "configure_args --quiet" configure >/dev/null; then
191 echo "Fixing configure recursion"
192 ed -s configure <<'EOS' >/dev/null || true
193 /ac_sub_configure_args=/
194 +1
195 i
196 # Add --quiet option if used
197 test "$silent" = yes &&
198 ac_sub_configure_args="$ac_sub_configure_args --quiet"
199 .
200 w
201 EOS
202 fi
203
204 echo "Autotool bootstrapping complete."