3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.38 2002/12/26 10:55:35 massiot 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"
51 ALL_FLAGS="`sed -n -e '/^[^=A-Z]*[A-Z]*FLAGS_[^=]*=/s/[^=A-Z]*\([A-Z]*FLAGS_[^=]*=\).*/\1/p' < configure.ac.in | sort | uniq`"
53 cat >> configure.ac << EOF
54 dnl ################################################################
55 dnl # Do not edit this file, it was generated from configure.ac.in #
56 dnl ################################################################
59 sed -n -e '/dnl do not touch this line/q;p' < configure.ac.in >> configure.ac
62 for mf in `sed -ne 's@[^a-z]*\([^ ]*\)am.*@modules/\1am@p' < modules/Makefile.am`
65 dir=`echo ${mf} | sed -e 's@\(.*\)/.*@\1@'`
66 topdir=`echo ${dir} | cut -f2 -d/`
67 sym=`echo ${dir} | sed -e 'y@/@_@'`
68 cat >> Modules.am << EOF
71 include ${dir}/Modules.am
74 sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | while read mod
77 if echo "$ALL_FLAGS" | grep '^CPPFLAGS_'${mod}'=$' >/dev/null 2>&1; then
78 echo "AC_SUBST(CPPFLAGS_${mod})" >> configure.ac; fi
79 if echo "$ALL_FLAGS" | grep '^CFLAGS_'${mod}'=$' >/dev/null 2>&1; then
80 echo "AC_SUBST(CFLAGS_${mod})" >> configure.ac; fi
81 if echo "$ALL_FLAGS" | grep '^CXXFLAGS_'${mod}'=$' >/dev/null 2>&1; then
83 echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
84 if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
86 echo "AC_SUBST(OBJCFLAGS_${mod})" >> configure.ac; fi
87 if echo "$ALL_FLAGS" | grep '^LDFLAGS_'${mod}'=$' >/dev/null 2>&1; then
88 echo "AC_SUBST(LDFLAGS_${mod})" >> configure.ac; fi
89 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
92 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
95 cat >> configure.ac << EOF
96 AM_CONDITIONAL(${mod}_plugin, test x\$${mod}_plugin = xyes)
97 AM_CONDITIONAL(${mod}_builtin, test x\$${mod}_builtin = xyes)
99 # Generation of Modules.am
100 # ~~~~~~~~~~~~~~~~~~~~~~~~
101 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
102 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
103 # the resulting file size.
104 # - *_CFLAGS, *_CXXFLAGS etc. include *_CPPFLAGS because per-object CPPFLAGS
105 # does not seem to work properly with any automake version I tested.
106 cat >> Modules.am << EOF
111 L_${mod}_p = ${dir}/lib${mod}_plugin.a
113 D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
114 ${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
117 L_${mod}_b = ${dir}/lib${mod}.a
118 F_${mod}_b = \$(LDFLAGS_${mod})
120 L_${mod}_pic = ${dir}/lib${mod}_pic.a
122 ${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
125 L_builtin += \$(L_${mod}_b)
126 L_builtin_pic += \$(L_${mod}_pic)
127 LDFLAGS_builtin += \$(F_${mod}_b)
128 ${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
129 PLUGIN_FILES += \$(D_${mod}_p)
131 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
132 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
133 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
134 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
135 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
136 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
138 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
139 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
140 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
141 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
142 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
143 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
145 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
146 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
147 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
148 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
149 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
150 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
152 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
153 lib${mod}_DATA = \$(D_${mod}_p)
155 lib${mod}dir = \$(libdir)/vlc/${topdir}
156 ${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
157 ${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
158 ${PRIVATE} \$(${LINKER}) \$^ -shared \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
165 echo "AM_CONDITIONAL(UNTRUE, false)" >> configure.ac
166 sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac
171 ### classic bootstrap stuff
174 rm -f aclocal.m4 m4/oldgettext.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
178 if gettextize --version >/dev/null 2>&1
180 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
181 '>' 0.11.2 >/dev/null 2>&1
183 # We have gettext, and a recent version! Everything is cool.
187 # User's gettext is too old. try to continue anyway.
189 echo > intl/Makefile.am
190 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
193 # we don't have gettext. grmbl. try to continue anyway.
195 echo > intl/Makefile.am
196 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
202 if automake-1.7 --version >/dev/null 2>&1
206 if automake-1.6 --version >/dev/null 2>&1
209 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
210 then AUTOMAKESUCKS=yes
213 if automake-1.5 --version >/dev/null 2>&1
218 if automake --version > /dev/null 2>&1
220 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
228 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
237 if test x$amvers = xnone
240 echo "you need automake version 1.5 or later"
245 aclocal${amvers} -I m4 || exit 1
248 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
257 =======================================================================
258 IMPORTANT NOTE: automake failed, please check the error messages. If it
259 actually segfaulted, it might be because of insufficient stack size; set
260 the stack size to something bigger or unlimited (\`unlimit stacksize')
267 # Wrap automake's long lines, because the Solaris sed doesn't support lines
268 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
269 # of sed for obvious reasons :)
270 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
275 ## headers which need to be regenerated
277 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
278 rm -f include/vlc_symbols.h
279 rm -f mozilla/vlcintf.h
287 ## Glade sometimes sucks
289 echo "workarounds for annoying glade features"
290 for file in gnome_interface.c gtk_interface.c
292 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
294 rm -f /tmp/$$.$file.bak
295 cat > /tmp/$$.$file.bak << EOF
296 /* This file was created automatically by glade and fixed by bootstrap */
301 -e 's#_("-:--:--")#"-:--:--"#' \
302 -e 's#_("---")#"---"#' \
303 -e 's#_("--")#"--"#' \
304 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
305 -e 's#_(\("./."\))#\1#' \
306 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
307 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
312 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
314 rm -f /tmp/$$.$file.bak
315 sed -e 's/DO NOT EDIT THIS FILE.*/This file was created automatically by glade and fixed by bootstrap/ ; s/#if.*ENABLE_NLS.*/#if defined( ENABLE_NLS ) \&\& defined ( HAVE_GETTEXT )/' < modules/gui/gtk/$file > /tmp/$$.$file.bak
316 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
320 ## Tell the user about gettext and sed
328 ===========================================================
329 IMPORTANT NOTE: you do not have gettext installed on your
330 system. The vlc build will work, but you will not have
331 internationalization support. We suggest installing gettext.
337 ==========================================================
338 NOTE: you have an old version of gettext installed on your
339 system. The vlc build will work, but if your system does not
340 have libintl you will not have internationalization support.
341 We suggest upgrading to gettext 0.11.3 or later.
346 case "$AUTOMAKESUCKS" in
352 =============================================================
353 IMPORTANT NOTE: your version of automake has a bug which will
354 prevent proper plugin compilation. Either compile VLC with
355 the --disable-plugins flag, or use a version of automake newer
356 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
361 case "$INSTALLSUCKS" in
367 =============================================================
368 IMPORTANT NOTE: your version of automake has a bug which will
369 prevent proper installation. Do not use "make install" with this
370 version of automake, or use a version of automake newer than 1.5
371 (such as 1.6 or 1.7).
382 =============================================================
383 IMPORTANT NOTE: the version of 'sed' on your system is unable
384 to handle long lines. bootstrap will try its best to generate
385 a correct Makefile, but you should expect problems. We highly
386 recommend installing GNU sed.