3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.19 2002/10/16 15:10:38 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
175 if gettextize --version >/dev/null 2>&1
177 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
178 '>' 0.11.2 >/dev/null 2>&1
180 # We have gettext, and a recent version! Everything is cool.
184 # User's gettext is too old. try to continue anyway.
186 echo > intl/Makefile.am
187 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
190 # we don't have gettext. grmbl. try to continue anyway.
192 echo > intl/Makefile.am
193 echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
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
210 if automake --version > /dev/null 2>&1
212 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
218 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
226 if test x$amvers = xnone
229 echo "you need automake version 1.5 or later"
234 aclocal${amvers} -I m4 || exit 1
237 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
245 echo "==========================================================="
246 echo "IMPORTANT NOTE: automake failed. On certain systems this is"
247 echo "because of insufficient stack size. Please set the stack"
248 echo "size to something bigger or unlimited (\`unlimit stacksize')"
249 echo "and try again."
254 # Wrap automake's long lines, because the Solaris sed doesn't support lines
255 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
256 # of sed for obvious reasons :)
257 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
262 ## headers which need to be regenerated
264 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
265 rm -f include/vlc_symbols.h
266 rm -f mozilla/vlcintf.h
274 ## Glade sometimes sucks
276 echo "workarounds for annoying glade features"
277 for file in gnome_interface.c gtk_interface.c
279 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
281 rm -f /tmp/$$.$file.bak
282 cat > /tmp/$$.$file.bak << EOF
283 /* This file was created automatically by glade and fixed by bootstrap */
288 -e 's#_("-:--:--")#"-:--:--"#' \
289 -e 's#_("---")#"---"#' \
290 -e 's#_("--")#"--"#' \
291 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
292 -e 's#_(\("./."\))#\1#' \
293 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
294 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
299 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
301 rm -f /tmp/$$.$file.bak
302 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
303 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
307 ## Update the potfiles because no one ever does it
309 if test "$do_po" = "no"
311 echo "not updating potfiles. use --update-po to force doing it."
314 make update-po 2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
319 ## Tell the user about gettext and sed
326 echo "==========================================================="
327 echo "IMPORTANT NOTE: you do not have gettext installed on your"
328 echo "system. The vlc build will work, but you will not have"
329 echo "internationalization support. We suggest installing gettext."
333 echo "=========================================================="
334 echo "NOTE: you have an old version of gettext installed on your"
335 echo "system. We suggest upgrading to gettext 0.11.3 or later."
339 case "$AUTOMAKESUCKS" in
344 echo "============================================================="
345 echo "IMPORTANT NOTE: your version of automake has a bug which will"
346 echo "prevent proper plugin compilation. Either compile VLC with"
347 echo "the --disable-plugins flag, or use a version of automake newer"
348 echo "than 1.6.1 (1.6.2 is OK, and so are the 1.5 series)."
357 echo "============================================================="
358 echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
359 echo "to handle long lines. bootstrap will try its best to generate"
360 echo "a correct Makefile, but you should expect problems. We highly"
361 echo "recommend installing GNU sed."