Couldn't bootstrap properly if a number existed anywhere in the path
[vlc.git] / bootstrap
1 #! /bin/sh
2
3 ##  bootstrap file for the VLC media player
4 ##
5 ## Copyright (C) 2005-2006 the VideoLAN team
6 ##
7 ##  Authors: Sam Hocevar <sam@zoy.org>
8 ##           RĂ©mi Denis-Courmont <rem # videolan # org>
9
10 if test "$#" != "0"; then
11   echo "Usage: $0"
12   echo "  Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
13   echo "  m4 macros and prepare Makefiles."
14   exit 1
15 fi
16
17 ###
18 ###  Get a sane environment, just in case
19 ###
20 LANG=C
21 export LANG
22 CYGWIN=binmode
23 export CYGWIN
24
25 set -e
26 set -x
27
28 ##
29 ## Check for various tools
30 ##
31
32 ACLOCAL_ARGS="-I m4 ${ACLOCAL_ARGS}"
33
34 # Check for contrib directory
35 if test -d extras/contrib/bin; then
36   export PATH="`pwd`/extras/contrib/bin:$PATH"
37   if test -d extras/contrib/share/aclocal; then
38     ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
39   fi
40   if test ".`uname -s`" = ".Darwin"; then
41     export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
42     export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
43   elif test ".`uname -s`" = ".BeOS"; then
44     export LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH
45     export BELIBRARIES=./extras/contrib/lib:$BELIBRARIES
46   fi
47 elif test ".`uname -s`" = ".Darwin"; then
48   set +x
49   echo ""
50   echo "ERR: Contribs haven't been built"
51   echo "ERR: Please run:"
52   echo "ERR: "
53   echo "ERR:    'cd extras/contrib && ./bootstrap && make && cd ../..'"
54   echo "ERR: "
55   echo "ERR: Make sure fink has been disabled too."
56   echo ""
57   set -x
58   exit 1
59 fi
60
61 # Check for autoconf
62 rm -f m4/autoconf260.m4
63 case "$(autoconf --version|head -n 1)" in
64   *2.5[012345678]*)
65     echo "$0: you need autoconf version 2.59 or later (2.60 recommanded)."
66     exit 1
67     ;;
68
69   *2.59*)
70     echo "Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP."
71     echo "Press Enter to continue"
72     read
73     cp -f extras/m4/autoconf260.m4 m4/
74     ;;
75 esac
76
77 # Check for automake
78 amvers="no"
79 for v in "-1.10" "110" "-1.9" "19"; do
80   if automake${v} --version >/dev/null 2>&1; then
81     amsuff="${v}"
82     amvers="`echo ${v} | sed -e 's/^-//'`"
83     break
84   fi
85 done
86
87 if test "${amvers}" = "no" && automake --version > /dev/null 2>&1; then
88   amvers="`automake --version | sed -e '1s/[^0-9]*//' -e q`"
89   amsuff=""
90 fi
91
92 case "${amvers}" in
93   no|1.[012345678]|1.[0123456].*|1[0123456]|1.[0123456]-*)
94     set +x
95     echo "$0: you need automake version 1.9 or later"
96     exit 1
97     ;;
98 esac
99
100 # Check for libtool
101 libtoolize="no"
102 if test -x extras/contrib/bin/libtoolize; then
103   libtoolize="extras/contrib/bin/libtoolize"
104 elif glibtoolize --version >/dev/null 2>&1; then
105   libtoolize="glibtoolize"
106 elif libtoolize --version >/dev/null 2>&1; then
107   libtoolize="libtoolize"
108 fi
109
110 if test "$libtoolize" = "no"; then
111   set +x
112   echo "$0: you need libtool"
113   exit 1
114 fi
115
116 # Check for gettext
117 if gettextize --version >/dev/null 2>&1; then
118 # Autopoint is available from 0.11.3, but we need 0.11.5
119 if expr `gettextize --version |cut -d' ' -f2- | sed -e '1s/[^0-9]*//' -e q` \
120         '>=' 0.11.5 >/dev/null 2>&1; then
121   # We have gettext, and a recent version! Everything is cool.
122   autopoint=autopoint
123   GETTEXT=yes
124 else
125   # User's gettext is too old. try to continue anyway.
126   autopoint=:
127   GETTEXT=old
128 fi;else
129   set +x
130   echo "$0: you need gettextize (package gettext-devel or gettext)"
131   exit 1
132 fi
133
134 # Check for pkg-config
135 if pkg-config --version >/dev/null 2>&1; then
136   # We have pkg-config, everything is cool.
137   PKGCONFIG=yes
138 else
139   PKGCONFIG=no
140 fi
141
142 aclocal=aclocal${amsuff}
143 automake=automake${amsuff}
144 autoconf=autoconf
145 autoheader=autoheader
146
147 ##
148 ## Generate the modules makefile, by parsing modules/**/Modules.am
149 ##
150
151 set +x
152 echo "generating modules/**/Makefile.am and m4/private.m4"
153
154 # Prepare m4/private.m4
155 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
156 dnl  Private VLC macros - generated by bootstrap
157
158 EOF
159
160 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
161 dnl  User does not have pkg-config, so assume package was not found
162 AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])])
163
164 EOF
165 fi
166
167 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
168 dnl  User does not have gettext, so this is a no-op
169 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
170
171 EOF
172 fi
173
174 cat >> m4/private.m4 << EOF
175 dnl  Helper macro for vlc-config generation
176 AC_DEFUN([VLC_CONFIG_HELPER], [
177   cat >> vlc-config.in << BLAH
178 EOF
179
180 modules=""
181
182 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
183 # Autogenerated by bootstrap - DO NOT EDIT
184 EXTRA_DIST = LIST
185 dist_noinst_SCRIPTS = genmf
186 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
187
188 EOF
189
190 modules/genmf `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
191
192 cat >> m4/private.m4 << EOF
193 BLAH
194 ])
195 EOF
196
197 ###
198 ###  classic bootstrap stuff
199 ###
200 set -x
201
202 # remove autotools cruft
203 rm -f aclocal.m4 configure config.log config.h config.h.in
204 rm -Rf autom4te*.cache
205 # remove old autotools extra cruft
206 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
207 # remove new autotools extra cruft
208 rm -Rf autotools
209 mkdir autotools
210 # remove libtool cruft
211 rm -f ltmain.sh libtool ltconfig
212 # remove gettext cruft
213 rm -f ABOUT-NLS
214 rm -Rf intl
215 # remove vlc cruft
216 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
217
218 # Automake complains if these are not present
219 rm -f vlc-config.in && printf "" > vlc-config.in
220 if [ "$GETTEXT" != "yes" ]; then
221   test -d intl || mkdir intl
222   printf "" > intl/Makefile.am
223   printf "" > ABOUT-NLS
224 fi
225
226 # Libtoolize directory
227 ${libtoolize} --copy --force
228 if test -f "ltmain.sh"; then
229   echo "$0: working around a minor libtool issue"
230   mv ltmain.sh autotools/
231 fi
232
233 # Do the rest
234 ${autopoint} -f
235 rm -f po/Makevars.template
236 ${aclocal} ${ACLOCAL_ARGS}
237 ${autoconf}
238 ${autoheader}
239 ${automake} --add-missing --copy -Wall
240
241 ##
242 ##  files which need to be regenerated
243 ##
244 rm -f vlc-config.in vlc-config
245 rm -f src/misc/modules_builtin.h
246
247 # Shut up
248 set +x
249
250 ##
251 ##  Tell the user about gettext, pkg-config and sed
252 ##
253 if [ "${GETTEXT}" = "old" ]; then
254   cat << EOF
255
256 ==========================================================
257 NOTE: you have an old version of gettext installed on your
258 system. The vlc build will work, but if your system does not
259 have libintl you will not have internationalization support.
260 We suggest upgrading to gettext 0.11.5 or later.
261 EOF
262 fi
263
264 if [ "$PKGCONFIG" = "no" ]; then
265   cat << EOF
266
267 ==============================================================
268 NOTE: you do not have the "pkg-config" utility on your system;
269 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
270 reliable.
271 EOF
272 fi
273
274 echo "Successfully bootstrapped"