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