3 ## bootstrap file for the VLC media player
4 ## $Id: bootstrap,v 1.48 2003/05/25 22:36:33 titer Exp $
6 ## Authors: Samuel Hocevar <sam@zoy.org>
8 if test x$# != x0; then
9 echo "Usage: ./bootstrap"
10 echo " Calls automake, autoconf, autoheader, autopoint and other auto* to build"
16 ### Get a sane environment, just in case
24 ## Naively assume our system doesn't suck. Unfortunately it seldom doesn't.
32 ## Check that our tools don't suck
34 if test ! 20000 -eq `perl -e 'printf "%s\n","a"x20000' | sed -e 's/.//' 2>/dev/null | wc -c`
39 # Mac OS X stacksize sucks
40 if test x`uname -s` = xDarwin; then ulimit -s 20000; fi
43 ## Generate the modules makefile, by parsing modules/**/Modules.am
46 printf "generating Modules.am and configure.ac"
48 rm -f Modules.am configure.ac
53 ALL_FLAGS="`sed -n -e '/^[^=A-Z]*[A-Z]*FLAGS_[^=]*=/s/[^=A-Z]*\([A-Z]*FLAGS_[^=]*=\).*/\1/p' < configure.ac.in | sort | uniq`"
55 cat >> configure.ac << EOF
56 dnl ################################################################
57 dnl # Do not edit this file, it was generated from configure.ac.in #
58 dnl ################################################################
61 sed -n -e '/dnl do not touch this line/q;p' < configure.ac.in >> configure.ac
64 for mf in `sed -ne 's@[^a-z]*\([^ ]*\)am.*@modules/\1am@p' < modules/Makefile.am`
67 dir=`echo ${mf} | sed -e 's@\(.*\)/.*@\1@'`
68 topdir=`echo ${dir} | cut -f2 -d/`
69 sym=`echo ${dir} | sed -e 'y@/@_@'`
70 cat >> Modules.am << EOF
73 include ${dir}/Modules.am
76 sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | while read mod
79 if echo "$ALL_FLAGS" | grep '^CPPFLAGS_'${mod}'=$' >/dev/null 2>&1; then
80 echo "AC_SUBST(CPPFLAGS_${mod})" >> configure.ac; fi
81 if echo "$ALL_FLAGS" | grep '^CFLAGS_'${mod}'=$' >/dev/null 2>&1; then
82 echo "AC_SUBST(CFLAGS_${mod})" >> configure.ac; fi
83 if echo "$ALL_FLAGS" | grep '^CXXFLAGS_'${mod}'=$' >/dev/null 2>&1; then
85 echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
86 if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
88 echo "AC_SUBST(OBJCFLAGS_${mod})" >> configure.ac; fi
89 if echo "$ALL_FLAGS" | grep '^LDFLAGS_'${mod}'=$' >/dev/null 2>&1; then
90 echo "AC_SUBST(LDFLAGS_${mod})" >> configure.ac; fi
91 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
94 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
97 cat >> configure.ac << EOF
98 AM_CONDITIONAL(${mod}_plugin, test x\$${mod}_plugin = xyes)
99 AM_CONDITIONAL(${mod}_builtin, test x\$${mod}_builtin = xyes)
101 # Generation of Modules.am
102 # ~~~~~~~~~~~~~~~~~~~~~~~~
103 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
104 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
105 # the resulting file size.
106 # - *_CFLAGS, *_CXXFLAGS etc. include *_CPPFLAGS because per-object CPPFLAGS
107 # does not seem to work properly with any automake version I tested.
108 cat >> Modules.am << EOF
113 L_${mod}_p = ${dir}/lib${mod}_plugin.a
115 D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
116 ${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
119 L_${mod}_b = ${dir}/lib${mod}.a
120 F_${mod}_b = \$(LDFLAGS_${mod})
122 L_${mod}_pic = ${dir}/lib${mod}_pic.a
124 ${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
127 L_builtin += \$(L_${mod}_b)
128 L_builtin_pic += \$(L_${mod}_pic)
129 LDFLAGS_builtin += \$(F_${mod}_b)
130 ${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
131 PLUGIN_FILES += \$(D_${mod}_p)
133 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
134 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
135 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
136 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
137 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
138 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
140 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
141 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
142 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
143 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
144 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
145 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
147 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
148 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
149 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
150 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
151 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
152 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
154 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
155 lib${mod}_DATA = \$(D_${mod}_p)
157 lib${mod}dir = \$(libdir)/vlc/${topdir}
158 ${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
159 ${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
160 ${PRIVATE} \$(${LINKER}) \$(${sym}_lib${mod}_plugin_a_OBJECTS) \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
167 echo "AM_CONDITIONAL(UNTRUE, false)" >> configure.ac
168 sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac
173 ### classic bootstrap stuff
177 # remove autotools cruft
178 rm -f aclocal.m4 configure config.log
179 # remove old autotools extra cruft
180 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
181 # remove new autotools extra cruft
182 (cd autotools && rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh)
183 # remove libtool cruft
184 rm -f ltmain.sh libtool ltconfig
185 # remove gettext cruft
186 rm -f m4/oldgettext.m4 ABOUT-NLS
188 # update m4 local macros
189 rm -f m4/vlc.m4 && echo "dnl Private VLC macros" > m4/vlc.m4
192 if gettextize --version >/dev/null 2>&1
194 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
195 '>' 0.11.2 >/dev/null 2>&1
197 # We have gettext, and a recent version! Everything is cool.
201 # User's gettext is too old. try to continue anyway.
204 echo > intl/Makefile.am
205 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' >> m4/vlc.m4
208 # we don't have gettext. grmbl. try to continue anyway.
211 echo > intl/Makefile.am
212 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' >> m4/vlc.m4
216 # Check for pkg-config
217 if pkg-config --version >/dev/null 2>&1
219 # We have pkg-config, everything is cool.
222 # Not present, use a workaround.
223 echo 'AC_DEFUN([PKG_CHECK_MODULES], [])' > m4/vlc.m4
229 if automake-1.7 --version >/dev/null 2>&1
233 if automake-1.6 --version >/dev/null 2>&1
236 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
237 then AUTOMAKESUCKS=yes
240 if automake-1.5 --version >/dev/null 2>&1
245 if automake --version > /dev/null 2>&1
247 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
255 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
264 if test x$amvers = xnone
267 echo "you need automake version 1.5 or later"
272 aclocal${amvers} -I m4 || exit 1
275 automake${amvers} --add-missing --copy || PERLSUCKS=yes
284 =======================================================================
285 IMPORTANT NOTE: automake failed, please check the error messages. If it
286 actually segfaulted, it might be because of insufficient stack size; set
287 the stack size to something bigger or unlimited (\`unlimit stacksize')
294 # Wrap automake's long lines, because the Solaris sed doesn't support lines
295 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
296 # of sed for obvious reasons :)
297 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
302 ## headers which need to be regenerated
304 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
305 rm -f include/vlc_symbols.h
306 rm -f mozilla/vlcintf.h
314 ## Tell the user about gettext, pkg-config and sed
322 ===========================================================
323 IMPORTANT NOTE: you do not have gettext installed on your
324 system. The vlc build will work, but you will not have
325 internationalization support. We suggest installing gettext.
331 ==========================================================
332 NOTE: you have an old version of gettext installed on your
333 system. The vlc build will work, but if your system does not
334 have libintl you will not have internationalization support.
335 We suggest upgrading to gettext 0.11.3 or later.
346 ==============================================================
347 NOTE: you do not have the "pkg-config" utility on your system;
348 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
354 case "$AUTOMAKESUCKS" in
360 =============================================================
361 IMPORTANT NOTE: your version of automake has a bug which will
362 prevent proper plugin compilation. Either compile VLC with
363 the --disable-plugins flag, or use a version of automake newer
364 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
369 case "$INSTALLSUCKS" in
375 =============================================================
376 IMPORTANT NOTE: your version of automake has a bug which will
377 prevent proper installation. Do not use "make install" with this
378 version of automake, or use a version of automake newer than 1.5
379 (such as 1.6 or 1.7).
390 =============================================================
391 IMPORTANT NOTE: the version of 'sed' on your system is unable
392 to handle long lines. bootstrap will try its best to generate
393 a correct Makefile, but you should expect problems. We highly
394 recommend installing GNU sed.