3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.21 2002/10/29 18:12:07 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
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)
130 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
131 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
132 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
133 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
134 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
135 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
137 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
138 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
139 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
140 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
141 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
142 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
144 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
145 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
146 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
147 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
148 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
149 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
151 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
152 lib${mod}_DATA = \$(D_${mod}_p)
154 lib${mod}dir = \$(libdir)/vlc/${topdir}
155 MOSTLYCLEANFILES += \$(D_${mod}_p)
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 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.6 --version >/dev/null 2>&1
205 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
206 then AUTOMAKESUCKS=yes
209 if automake-1.5 --version >/dev/null 2>&1
213 if automake --version > /dev/null 2>&1
215 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
221 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
229 if test x$amvers = xnone
232 echo "you need automake version 1.5 or later"
237 aclocal${amvers} -I m4 || exit 1
240 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
248 echo "==========================================================="
249 echo "IMPORTANT NOTE: automake failed. On certain systems this is"
250 echo "because of insufficient stack size. Please set the stack"
251 echo "size to something bigger or unlimited (\`unlimit stacksize')"
252 echo "and try again."
257 # Wrap automake's long lines, because the Solaris sed doesn't support lines
258 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
259 # of sed for obvious reasons :)
260 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
265 ## headers which need to be regenerated
267 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
268 rm -f include/vlc_symbols.h
269 rm -f mozilla/vlcintf.h
277 ## Glade sometimes sucks
279 echo "workarounds for annoying glade features"
280 for file in gnome_interface.c gtk_interface.c
282 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
284 rm -f /tmp/$$.$file.bak
285 cat > /tmp/$$.$file.bak << EOF
286 /* This file was created automatically by glade and fixed by bootstrap */
291 -e 's#_("-:--:--")#"-:--:--"#' \
292 -e 's#_("---")#"---"#' \
293 -e 's#_("--")#"--"#' \
294 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
295 -e 's#_(\("./."\))#\1#' \
296 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
297 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
302 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
304 rm -f /tmp/$$.$file.bak
305 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
306 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
310 ## Update the potfiles because no one ever does it
312 if test "$do_po" = "no"
314 echo "not updating potfiles. use --update-po to force doing it."
317 make update-po 2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
322 ## Tell the user about gettext and sed
329 echo "==========================================================="
330 echo "IMPORTANT NOTE: you do not have gettext installed on your"
331 echo "system. The vlc build will work, but you will not have"
332 echo "internationalization support. We suggest installing gettext."
336 echo "=========================================================="
337 echo "NOTE: you have an old version of gettext installed on your"
338 echo "system. We suggest upgrading to gettext 0.11.3 or later."
342 case "$AUTOMAKESUCKS" in
347 echo "============================================================="
348 echo "IMPORTANT NOTE: your version of automake has a bug which will"
349 echo "prevent proper plugin compilation. Either compile VLC with"
350 echo "the --disable-plugins flag, or use a version of automake newer"
351 echo "than 1.6.1 (1.6.2 is OK, and so are the 1.5 series)."
360 echo "============================================================="
361 echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
362 echo "to handle long lines. bootstrap will try its best to generate"
363 echo "a correct Makefile, but you should expect problems. We highly"
364 echo "recommend installing GNU sed."