3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.37 2002/12/25 22:36:14 sam Exp $
6 ## Authors: Samuel Hocevar <sam@zoy.org>
9 ### Get a sane environment, just in case
17 ## Naively assume our system doesn't suck. Unfortunately it seldom doesn't.
25 ## Check that our tools don't suck
27 if test ! 20000 -eq `perl -e 'printf "%s\n","a"x20000' | sed -e 's/.//' 2>/dev/null | wc -c`
32 # Mac OS X stacksize sucks
33 if test x`uname -s` = xDarwin; then ulimit -s 20000; fi
36 ## Generate the modules makefile, by parsing modules/**/Modules.am
39 printf "generating Modules.am and configure.ac"
44 ALL_FLAGS="`sed -n -e '/^[^=A-Z]*[A-Z]*FLAGS_[^=]*=/s/[^=A-Z]*\([A-Z]*FLAGS_[^=]*=\).*/\1/p' < configure.ac.in | sort | uniq`"
46 cat >> configure.ac << EOF
47 dnl ################################################################
48 dnl # Do not edit this file, it was generated from configure.ac.in #
49 dnl ################################################################
52 sed -n -e '/dnl do not touch this line/q;p' < configure.ac.in >> configure.ac
55 for mf in `sed -ne 's@[^a-z]*\([^ ]*\)am.*@modules/\1am@p' < modules/Makefile.am`
58 dir=`echo ${mf} | sed -e 's@\(.*\)/.*@\1@'`
59 topdir=`echo ${dir} | cut -f2 -d/`
60 sym=`echo ${dir} | sed -e 'y@/@_@'`
61 cat >> Modules.am << EOF
64 include ${dir}/Modules.am
67 sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | while read mod
70 if echo "$ALL_FLAGS" | grep '^CPPFLAGS_'${mod}'=$' >/dev/null 2>&1; then
71 echo "AC_SUBST(CPPFLAGS_${mod})" >> configure.ac; fi
72 if echo "$ALL_FLAGS" | grep '^CFLAGS_'${mod}'=$' >/dev/null 2>&1; then
73 echo "AC_SUBST(CFLAGS_${mod})" >> configure.ac; fi
74 if echo "$ALL_FLAGS" | grep '^CXXFLAGS_'${mod}'=$' >/dev/null 2>&1; then
76 echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
77 if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
79 echo "AC_SUBST(OBJCFLAGS_${mod})" >> configure.ac; fi
80 if echo "$ALL_FLAGS" | grep '^LDFLAGS_'${mod}'=$' >/dev/null 2>&1; then
81 echo "AC_SUBST(LDFLAGS_${mod})" >> configure.ac; fi
82 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
85 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
88 cat >> configure.ac << EOF
89 AM_CONDITIONAL(${mod}_plugin, test x\$${mod}_plugin = xyes)
90 AM_CONDITIONAL(${mod}_builtin, test x\$${mod}_builtin = xyes)
92 # Generation of Modules.am
93 # ~~~~~~~~~~~~~~~~~~~~~~~~
94 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
95 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
96 # the resulting file size.
97 # - *_CFLAGS, *_CXXFLAGS etc. include *_CPPFLAGS because per-object CPPFLAGS
98 # does not seem to work properly with any automake version I tested.
99 cat >> Modules.am << EOF
104 L_${mod}_p = ${dir}/lib${mod}_plugin.a
106 D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
107 ${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
110 L_${mod}_b = ${dir}/lib${mod}.a
111 F_${mod}_b = \$(LDFLAGS_${mod})
113 L_${mod}_pic = ${dir}/lib${mod}_pic.a
115 ${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
118 L_builtin += \$(L_${mod}_b)
119 L_builtin_pic += \$(L_${mod}_pic)
120 LDFLAGS_builtin += \$(F_${mod}_b)
121 ${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
122 PLUGIN_FILES += \$(D_${mod}_p)
124 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
125 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
126 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
127 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
128 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
129 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
131 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
132 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
133 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
134 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
135 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
136 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
138 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
139 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
140 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
141 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
142 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
143 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
145 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
146 lib${mod}_DATA = \$(D_${mod}_p)
148 lib${mod}dir = \$(libdir)/vlc/${topdir}
149 ${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
150 ${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
151 ${PRIVATE} \$(${LINKER}) \$^ -shared \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
158 echo "AM_CONDITIONAL(UNTRUE, false)" >> configure.ac
159 sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac
164 ### classic bootstrap stuff
167 rm -f aclocal.m4 m4/oldgettext.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
171 if gettextize --version >/dev/null 2>&1
173 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
174 '>' 0.11.2 >/dev/null 2>&1
176 # We have gettext, and a recent version! Everything is cool.
180 # User's gettext is too old. try to continue anyway.
182 echo > intl/Makefile.am
183 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
186 # we don't have gettext. grmbl. try to continue anyway.
188 echo > intl/Makefile.am
189 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
195 if automake-1.7 --version >/dev/null 2>&1
199 if automake-1.6 --version >/dev/null 2>&1
202 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
203 then AUTOMAKESUCKS=yes
206 if automake-1.5 --version >/dev/null 2>&1
211 if automake --version > /dev/null 2>&1
213 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
221 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
230 if test x$amvers = xnone
233 echo "you need automake version 1.5 or later"
238 aclocal${amvers} -I m4 || exit 1
241 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
250 =======================================================================
251 IMPORTANT NOTE: automake failed, please check the error messages. If it
252 actually segfaulted, it might be because of insufficient stack size; set
253 the stack size to something bigger or unlimited (\`unlimit stacksize')
260 # Wrap automake's long lines, because the Solaris sed doesn't support lines
261 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
262 # of sed for obvious reasons :)
263 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
268 ## headers which need to be regenerated
270 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
271 rm -f include/vlc_symbols.h
272 rm -f mozilla/vlcintf.h
280 ## Glade sometimes sucks
282 echo "workarounds for annoying glade features"
283 for file in gnome_interface.c gtk_interface.c
285 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
287 rm -f /tmp/$$.$file.bak
288 cat > /tmp/$$.$file.bak << EOF
289 /* This file was created automatically by glade and fixed by bootstrap */
294 -e 's#_("-:--:--")#"-:--:--"#' \
295 -e 's#_("---")#"---"#' \
296 -e 's#_("--")#"--"#' \
297 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
298 -e 's#_(\("./."\))#\1#' \
299 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
300 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
305 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
307 rm -f /tmp/$$.$file.bak
308 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
309 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
313 ## Tell the user about gettext and sed
321 ===========================================================
322 IMPORTANT NOTE: you do not have gettext installed on your
323 system. The vlc build will work, but you will not have
324 internationalization support. We suggest installing gettext.
330 ==========================================================
331 NOTE: you have an old version of gettext installed on your
332 system. The vlc build will work, but if your system does not
333 have libintl you will not have internationalization support.
334 We suggest upgrading to gettext 0.11.3 or later.
339 case "$AUTOMAKESUCKS" in
345 =============================================================
346 IMPORTANT NOTE: your version of automake has a bug which will
347 prevent proper plugin compilation. Either compile VLC with
348 the --disable-plugins flag, or use a version of automake newer
349 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
354 case "$INSTALLSUCKS" in
360 =============================================================
361 IMPORTANT NOTE: your version of automake has a bug which will
362 prevent proper installation. Do not use "make install" with this
363 version of automake, or use a version of automake newer than 1.5
364 (such as 1.6 or 1.7).
375 =============================================================
376 IMPORTANT NOTE: the version of 'sed' on your system is unable
377 to handle long lines. bootstrap will try its best to generate
378 a correct Makefile, but you should expect problems. We highly
379 recommend installing GNU sed.