3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.15 2002/10/02 12:59:59 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
251 ## headers which need to be regenerated
253 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
254 rm -f include/vlc_symbols.h
255 rm -f mozilla/vlcintf.h
263 ## Glade sometimes sucks
265 echo "workarounds for annoying glade features"
266 for file in gnome_interface.c gtk_interface.c
268 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
270 rm -f /tmp/$$.$file.bak
271 cat > /tmp/$$.$file.bak << EOF
272 /* This file was created automatically by glade and fixed by bootstrap */
277 -e 's#_("-:--:--")#"-:--:--"#' \
278 -e 's#_("---")#"---"#' \
279 -e 's#_("--")#"--"#' \
280 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
281 -e 's#_(\("./."\))#\1#' \
282 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
283 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
288 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
290 rm -f /tmp/$$.$file.bak
291 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
292 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
296 ## Update the potfiles because no one ever does it
298 if test "$do_po" = "no"
300 echo "not updating potfiles. use --update-po to force doing it."
303 make update-po 2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
308 ## Tell the user about gettext and sed
315 echo "==========================================================="
316 echo "IMPORTANT NOTE: you do not have gettext installed on your"
317 echo "system. The vlc build will work, but you will not have"
318 echo "internationalization support. We suggest installing gettext."
322 echo "=========================================================="
323 echo "NOTE: you have an old version of gettext installed on your"
324 echo "system. We suggest upgrading to gettext 0.11.3 or later."
333 echo "============================================================="
334 echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
335 echo "to handle long lines. bootstrap will try its best to generate"
336 echo "a correct Makefile, but you should expect problems. We highly"
337 echo "recommend installing GNU sed."