3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.18 2002/10/04 13:13:54 sam Exp $
6 ## Authors: Samuel Hocevar <sam@zoy.org>
9 ### get a sane environment
18 while test $# -gt 0; do
24 echo "unknown option $1"
31 ## 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`
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
110 L_${mod}_p = ${dir}/lib${mod}_plugin.a
111 D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
112 ${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
115 L_${mod}_b = ${dir}/lib${mod}.a
116 F_${mod}_b = \$(LDFLAGS_${mod})
118 L_${mod}_pic = ${dir}/lib${mod}_pic.a
120 ${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
123 L_builtin += \$(L_${mod}_b)
124 L_builtin_pic += \$(L_${mod}_pic)
125 LDFLAGS_builtin += \$(F_${mod}_b)
126 ${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
128 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
129 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
130 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
131 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
132 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
133 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
135 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
136 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
137 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
138 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
139 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
140 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
142 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
143 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
144 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
145 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
146 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
147 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
149 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
150 lib${mod}_DATA = \$(D_${mod}_p)
152 lib${mod}dir = \$(libdir)/vlc/${topdir}
153 MOSTLYCLEANFILES += \$(D_${mod}_p)
154 ${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
155 ${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
156 ${PRIVATE} \$(${LINKER}) \$^ -o \$@ -shared \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
163 sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac
168 ### classic bootstrap stuff
171 rm -f aclocal.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
174 if gettextize --version >/dev/null 2>&1
176 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
177 '>' 0.11.3 >/dev/null 2>&1
179 # We have gettext, and a recent version! Everything is cool.
180 autopoint --force || exit 1
183 # What?! User is not using a recent version of gettext? We'll have to
186 gettextize --copy --force | grep '^from the' | cut -f3 -d' '
187 test -f po/ChangeLog~ && mv -f po/ChangeLog~ po/ChangeLog
190 test -f intl/Makefile.am || echo > intl/Makefile.am
192 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
195 # we don't have gettext. grmbl. try to continue anyway.
197 echo > intl/Makefile.am
198 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
204 if automake-1.6 --version >/dev/null 2>&1
207 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
208 then AUTOMAKESUCKS=yes
211 if automake-1.5 --version >/dev/null 2>&1
215 if automake --version > /dev/null 2>&1
217 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
223 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
231 if test x$amvers = xnone
234 echo "you need automake version 1.5 or later"
239 aclocal${amvers} -I m4 || exit 1
242 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
250 echo "==========================================================="
251 echo "IMPORTANT NOTE: automake failed. On certain systems this is"
252 echo "because of insufficient stack size. Please set the stack"
253 echo "size to something bigger or unlimited (\`unlimit stacksize')"
254 echo "and try again."
259 # Wrap automake's long lines, because the Solaris sed doesn't support lines
260 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
261 # of sed for obvious reasons :)
262 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
267 ## headers which need to be regenerated
269 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
270 rm -f include/vlc_symbols.h
271 rm -f mozilla/vlcintf.h
279 ## Glade sometimes sucks
281 echo "workarounds for annoying glade features"
282 for file in gnome_interface.c gtk_interface.c
284 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
286 rm -f /tmp/$$.$file.bak
287 cat > /tmp/$$.$file.bak << EOF
288 /* This file was created automatically by glade and fixed by bootstrap */
293 -e 's#_("-:--:--")#"-:--:--"#' \
294 -e 's#_("---")#"---"#' \
295 -e 's#_("--")#"--"#' \
296 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
297 -e 's#_(\("./."\))#\1#' \
298 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
299 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
304 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
306 rm -f /tmp/$$.$file.bak
307 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
308 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
312 ## Update the potfiles because no one ever does it
314 if test "$do_po" = "no"
316 echo "not updating potfiles. use --update-po to force doing it."
319 make update-po 2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
324 ## Tell the user about gettext and sed
331 echo "==========================================================="
332 echo "IMPORTANT NOTE: you do not have gettext installed on your"
333 echo "system. The vlc build will work, but you will not have"
334 echo "internationalization support. We suggest installing gettext."
338 echo "=========================================================="
339 echo "NOTE: you have an old version of gettext installed on your"
340 echo "system. We suggest upgrading to gettext 0.11.3 or later."
344 case "$AUTOMAKESUCKS" in
349 echo "============================================================="
350 echo "IMPORTANT NOTE: your version of automake has a bug which will"
351 echo "prevent proper plugin compilation. Either compile VLC with"
352 echo "the --disable-plugins flag, or use a version of automake newer"
353 echo "than 1.6.1 (1.6.2 is OK, and so are the 1.5 series)."
362 echo "============================================================="
363 echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
364 echo "to handle long lines. bootstrap will try its best to generate"
365 echo "a correct Makefile, but you should expect problems. We highly"
366 echo "recommend installing GNU sed."