3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.14 2002/09/30 11:05:32 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`
42 ## Generate the modules makefile, by parsing modules/**/Modules.am
45 printf "generating Modules.am and configure.ac"
50 ALL_FLAGS="`sed -n -e '/^[^=A-Z]*[A-Z]*FLAGS_[^=]*=/s/[^=A-Z]*\([A-Z]*FLAGS_[^=]*=\).*/\1/p' < configure.ac.in | sort | uniq`"
52 cat >> configure.ac << EOF
53 dnl ################################################################
54 dnl # Do not edit this file, it was generated from configure.ac.in #
55 dnl ################################################################
58 sed -n -e '/dnl do not touch this line/q;p' < configure.ac.in >> configure.ac
61 for mf in `sed -ne 's@[^a-z]*\([^ ]*\)am.*@modules/\1am@p' < modules/Makefile.am`
64 dir=`echo ${mf} | sed -e 's@\(.*\)/.*@\1@'`
65 topdir=`echo ${dir} | cut -f2 -d/`
66 sym=`echo ${dir} | sed -e 'y@/@_@'`
67 cat >> Modules.am << EOF
70 include ${dir}/Modules.am
73 sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | while read mod
75 if echo "$ALL_FLAGS" | grep '^CPPFLAGS_'${mod}'=$' >/dev/null 2>&1; then
76 echo "AC_SUBST(CPPFLAGS_${mod})" >> configure.ac; fi
77 if echo "$ALL_FLAGS" | grep '^CFLAGS_'${mod}'=$' >/dev/null 2>&1; then
78 echo "AC_SUBST(CFLAGS_${mod})" >> configure.ac; fi
79 if echo "$ALL_FLAGS" | grep '^CXXFLAGS_'${mod}'=$' >/dev/null 2>&1; then
80 echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
81 if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
82 echo "AC_SUBST(OBJCFLAGS_${mod})" >> configure.ac; fi
83 if echo "$ALL_FLAGS" | grep '^LDFLAGS_'${mod}'=$' >/dev/null 2>&1; then
84 echo "AC_SUBST(LDFLAGS_${mod})" >> configure.ac; fi
85 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
88 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
91 cat >> configure.ac << EOF
92 AM_CONDITIONAL(${mod}_plugin, test x\$${mod}_plugin = xyes)
93 AM_CONDITIONAL(${mod}_builtin, test x\$${mod}_builtin = xyes)
95 # L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_
96 # _p is for _plugin, _b is for _builtin
97 cat >> Modules.am << EOF
101 L_${mod}_p = ${dir}/lib${mod}_plugin.a
102 D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
103 ${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
106 L_${mod}_b = ${dir}/lib${mod}.a
107 F_${mod}_b = \$(LDFLAGS_${mod})
109 L_${mod}_pic = ${dir}/lib${mod}_pic.a
111 ${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
114 L_builtin += \$(L_${mod}_b)
115 L_builtin_pic += \$(L_${mod}_pic)
116 LDFLAGS_builtin += \$(F_${mod}_b)
117 ${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
119 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
120 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
121 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
122 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
123 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
124 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
126 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
127 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
128 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
129 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
130 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
131 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
133 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
134 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
135 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
136 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
137 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
138 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
140 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
141 lib${mod}_DATA = \$(D_${mod}_p)
143 lib${mod}dir = \$(libdir)/vlc/${topdir}
144 MOSTLYCLEANFILES += \$(D_${mod}_p)
145 ${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
146 ${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
147 ${PRIVATE} \$(CC) \$^ -o \$@ -shared \$(LDFLAGS) \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
154 sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac
159 ### classic bootstrap stuff
162 rm -f aclocal.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
165 if gettextize --version >/dev/null 2>&1
167 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
168 '>' 0.11.3 >/dev/null 2>&1
170 # We have gettext, and a recent version! Everything is cool.
171 autopoint --force || exit 1
174 # What?! User is not using a recent version of gettext? We'll have to
177 gettextize --copy --force | grep '^from the' | cut -f3 -d' '
178 test -f po/ChangeLog~ && mv -f po/ChangeLog~ po/ChangeLog
181 test -f intl/Makefile.am || 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.6 --version >/dev/null 2>&1
199 if automake-1.5 --version >/dev/null 2>&1
203 if automake --version > /dev/null 2>&1
205 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
207 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
215 if test x$amvers = xnone
218 echo "you need automake version 1.5 or later"
223 aclocal${amvers} -I m4 || exit 1
226 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
234 echo "==========================================================="
235 echo "IMPORTANT NOTE: automake failed. On certain systems this is"
236 echo "because of insufficient stack size. Please set the stack"
237 echo "size to something bigger or unlimited (\`unlimit stacksize')"
238 echo "and try again."
243 # Wrap automake's long lines, because the Solaris sed doesn't support lines
244 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
245 # of sed for obvious reasons :)
246 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
256 ## headers which need to be regenerated because of the VLC_EXPORT macro
258 files="src/misc/modules_builtin.h src/misc/modules_plugin.h include/vlc_symbols.h"
259 for file in src/misc/modules_builtin.h src/misc/modules_plugin.h include/vlc_symbols.h mozilla/vlcintf.h
261 echo "touching $file"
266 ## Glade sometimes sucks
268 echo "workarounds for annoying glade features"
269 for file in gnome_interface.c gtk_interface.c
271 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
273 rm -f /tmp/$$.$file.bak
274 cat > /tmp/$$.$file.bak << EOF
275 /* This file was created automatically by glade and fixed by bootstrap */
280 -e 's#_("-:--:--")#"-:--:--"#' \
281 -e 's#_("---")#"---"#' \
282 -e 's#_("--")#"--"#' \
283 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
284 -e 's#_(\("./."\))#\1#' \
285 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
286 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
291 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
293 rm -f /tmp/$$.$file.bak
294 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
295 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
299 ## Update the potfiles because no one ever does it
301 if test "$do_po" = "no"
303 echo "not updating potfiles. use --update-po to force doing it."
306 make update-po 2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
311 ## Tell the user about gettext and sed
318 echo "==========================================================="
319 echo "IMPORTANT NOTE: you do not have gettext installed on your"
320 echo "system. The vlc build will work, but you will not have"
321 echo "internationalization support. We suggest installing gettext."
325 echo "=========================================================="
326 echo "NOTE: you have an old version of gettext installed on your"
327 echo "system. We suggest upgrading to gettext 0.11.3 or later."
336 echo "============================================================="
337 echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
338 echo "to handle long lines. bootstrap will try its best to generate"
339 echo "a correct Makefile, but you should expect problems. We highly"
340 echo "recommend installing GNU sed."