430f9c609d3101dc8deb4112ebed4848c98039ea
[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   if test `which autopoint` = "/home/buildslave/slave/win32-trunk-contrib/build/extras/contrib/bin/autopoint"; then
125     (cd extras/contrib/src ; rm -rf gettext .gettext ; make gettext && make .intl)
126   fi
127 else
128   # User's gettext is too old. try to continue anyway.
129   autopoint=:
130   GETTEXT=old
131 fi;else
132   set +x
133   echo "$0: you need gettextize (package gettext-devel or gettext)"
134   exit 1
135 fi
136
137 # Check for pkg-config
138 if pkg-config --version >/dev/null 2>&1; then
139   # We have pkg-config, everything is cool.
140   PKGCONFIG=yes
141 else
142   PKGCONFIG=no
143 fi
144
145 aclocal=aclocal${amsuff}
146 automake=automake${amsuff}
147 autoconf=autoconf
148 autoheader=autoheader
149
150 ##
151 ## Generate the modules makefile, by parsing modules/**/Modules.am
152 ##
153
154 set +x
155 echo "generating modules/**/Makefile.am and m4/private.m4"
156
157 # Prepare m4/private.m4
158 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
159 dnl  Private VLC macros - generated by bootstrap
160
161 EOF
162
163 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
164 dnl  User does not have pkg-config, so assume package was not found
165 AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])])
166
167 EOF
168 fi
169
170 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
171 dnl  User does not have gettext, so this is a no-op
172 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
173
174 EOF
175 fi
176
177 cat >> m4/private.m4 << EOF
178 dnl  Helper macro for vlc-config generation
179 AC_DEFUN([VLC_CONFIG_HELPER], [
180   cat >> vlc-config.in << BLAH
181 EOF
182
183 modules=""
184
185 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
186 # Autogenerated by bootstrap - DO NOT EDIT
187 EXTRA_DIST = LIST
188 dist_noinst_SCRIPTS = genmf
189 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
190
191 EOF
192
193 modules/genmf `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
194
195 cat >> m4/private.m4 << EOF
196 BLAH
197 ])
198 EOF
199
200 ###
201 ###  classic bootstrap stuff
202 ###
203 set -x
204
205 # remove autotools cruft
206 rm -f aclocal.m4 configure config.log config.h config.h.in
207 rm -Rf autom4te*.cache
208 # remove old autotools extra cruft
209 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
210 # remove new autotools extra cruft
211 rm -Rf autotools
212 mkdir autotools
213 # remove libtool cruft
214 rm -f ltmain.sh libtool ltconfig
215 # remove gettext cruft
216 rm -f ABOUT-NLS
217 rm -Rf intl
218 # remove vlc cruft
219 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
220
221 # Automake complains if these are not present
222 rm -f vlc-config.in && printf "" > vlc-config.in
223 if [ "$GETTEXT" != "yes" ]; then
224   test -d intl || mkdir intl
225   printf "" > intl/Makefile.am
226   printf "" > ABOUT-NLS
227 fi
228
229 # Libtoolize directory
230 ${libtoolize} --copy --force
231 if test -f "ltmain.sh"; then
232   echo "$0: working around a minor libtool issue"
233   mv ltmain.sh autotools/
234 fi
235
236 # Do the rest
237 ${autopoint} -f
238 rm -f po/Makevars.template
239 ${aclocal} ${ACLOCAL_ARGS}
240 ${autoconf}
241 ${autoheader}
242 ${automake} --add-missing --copy -Wall
243
244 ##
245 ##  files which need to be regenerated
246 ##
247 rm -f vlc-config.in vlc-config
248 rm -f src/misc/modules_builtin.h
249
250 # Shut up
251 set +x
252
253 ##
254 ##  Tell the user about gettext, pkg-config and sed
255 ##
256 if [ "${GETTEXT}" = "old" ]; then
257   cat << EOF
258
259 ==========================================================
260 NOTE: you have an old version of gettext installed on your
261 system. The vlc build will work, but if your system does not
262 have libintl you will not have internationalization support.
263 We suggest upgrading to gettext 0.11.5 or later.
264 EOF
265 fi
266
267 if [ "$PKGCONFIG" = "no" ]; then
268   cat << EOF
269
270 ==============================================================
271 NOTE: you do not have the "pkg-config" utility on your system;
272 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
273 reliable.
274 EOF
275 fi
276
277 echo "Successfully bootstrapped"