3 ## bootstrap file for vlc, the VideoLAN Client
4 ## $Id: bootstrap,v 1.23 2002/11/04 18:27:30 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)
129 PLUGIN_FILES += \$(D_${mod}_p)
131 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
132 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
133 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
134 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
135 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
136 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
138 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
139 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
140 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
141 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
142 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
143 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
145 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
146 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
147 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
148 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
149 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
150 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
152 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
153 lib${mod}_DATA = \$(D_${mod}_p)
155 lib${mod}dir = \$(libdir)/vlc/${topdir}
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 m4/oldgettext.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.7 --version >/dev/null 2>&1
206 if automake-1.6 --version >/dev/null 2>&1
209 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
210 then AUTOMAKESUCKS=yes
213 if automake-1.5 --version >/dev/null 2>&1
217 if automake --version > /dev/null 2>&1
219 amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
225 if expr "$amvers" "<" "1.5" > /dev/null 2>&1
234 if test x$amvers = xnone
237 echo "you need automake version 1.5 or later"
242 aclocal${amvers} -I m4 || exit 1
245 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
253 echo "==========================================================="
254 echo "IMPORTANT NOTE: automake failed. On certain systems this is"
255 echo "because of insufficient stack size. Please set the stack"
256 echo "size to something bigger or unlimited (\`unlimit stacksize')"
257 echo "and try again."
262 # Wrap automake's long lines, because the Solaris sed doesn't support lines
263 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
264 # of sed for obvious reasons :)
265 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
270 ## headers which need to be regenerated
272 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
273 rm -f include/vlc_symbols.h
274 rm -f mozilla/vlcintf.h
282 ## Glade sometimes sucks
284 echo "workarounds for annoying glade features"
285 for file in gnome_interface.c gtk_interface.c
287 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
289 rm -f /tmp/$$.$file.bak
290 cat > /tmp/$$.$file.bak << EOF
291 /* This file was created automatically by glade and fixed by bootstrap */
296 -e 's#_("-:--:--")#"-:--:--"#' \
297 -e 's#_("---")#"---"#' \
298 -e 's#_("--")#"--"#' \
299 -e 's#_("/dev/dvd")#"/dev/dvd"#' \
300 -e 's#_(\("./."\))#\1#' \
301 < modules/gui/gtk/$file >> /tmp/$$.$file.bak
302 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
307 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
309 rm -f /tmp/$$.$file.bak
310 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
311 mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
315 ## Update the potfiles because no one ever does it
317 if test "$do_po" = "no"
319 echo "not updating potfiles. use --update-po to force doing it."
322 make update-po 2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
327 ## Tell the user about gettext and sed
334 echo "==========================================================="
335 echo "IMPORTANT NOTE: you do not have gettext installed on your"
336 echo "system. The vlc build will work, but you will not have"
337 echo "internationalization support. We suggest installing gettext."
341 echo "=========================================================="
342 echo "NOTE: you have an old version of gettext installed on your"
343 echo "system. We suggest upgrading to gettext 0.11.3 or later."
347 case "$AUTOMAKESUCKS" in
352 echo "============================================================="
353 echo "IMPORTANT NOTE: your version of automake has a bug which will"
354 echo "prevent proper plugin compilation. Either compile VLC with"
355 echo "the --disable-plugins flag, or use a version of automake newer"
356 echo "than 1.6.1 (1.6.2 is OK, and so are the 1.5 series)."
365 echo "============================================================="
366 echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
367 echo "to handle long lines. bootstrap will try its best to generate"
368 echo "a correct Makefile, but you should expect problems. We highly"
369 echo "recommend installing GNU sed."