3 ## bootstrap file for the VLC media player
5 ## Copyright (C) 2005-2006 the VideoLAN team
7 ## Authors: Sam Hocevar <sam@zoy.org>
8 ## RĂ©mi Denis-Courmont <rem # videolan # org>
10 if test "$#" != "0"; then
12 echo " Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
13 echo " m4 macros and prepare Makefiles."
18 ### Get a sane environment, just in case
29 ## Check for various tools
34 ACLOCAL_ARGS="-I m4 ${ACLOCAL_ARGS}"
36 # Check for contrib directory
37 if test -d extras/contrib/bin; then
38 export PATH="`pwd`/extras/contrib/bin:$PATH"
39 if test -d extras/contrib/share/aclocal; then
40 ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
42 if test ".`uname -s`" = ".Darwin"; then
43 export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
44 export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
45 elif test ".`uname -s`" = ".BeOS"; then
46 export LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH
47 export BELIBRARIES=./extras/contrib/lib:$BELIBRARIES
49 elif test ".`uname -s`" = ".Darwin"; then
52 echo "ERR: Contribs haven't been built"
53 echo "ERR: Please run:"
55 echo "ERR: 'cd extras/contrib && ./bootstrap && make && cd ../..'"
57 echo "ERR: Make sure fink has been disabled too."
64 rm -f m4/autoconf260.m4
65 case "$(autoconf --version|head -n 1)" in
67 echo "Hey, your autoconf is quite old. Update it." >&2
72 echo "Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP."
73 cp -f extras/m4/autoconf260.m4 m4/
79 for v in "-1.10" "110" "-1.9" "19"; do
80 if automake${v} --version >/dev/null 2>&1; then
82 amvers="`echo ${v} | sed -e 's/^-//'`"
87 if test "${amvers}" = "no" && automake --version > /dev/null 2>&1; then
88 amvers="`automake --version | sed -e '1s/[^0-9]*//' -e q`"
93 no|1.[012345678]|1.[0123456].*|1[0123456]|1.[0123456]-*)
95 echo "$0: you need automake version 1.9 or later"
102 if glibtoolize --version >/dev/null 2>&1; then
103 libtoolize="glibtoolize"
104 elif libtoolize --version >/dev/null 2>&1; then
105 libtoolize="libtoolize"
108 if test "$libtoolize" = "no"; then
110 echo "$0: you need libtool"
115 if gettextize --version >/dev/null 2>&1; then
116 # Autopoint is available from 0.11.3, but we need 0.11.5
117 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
118 '>=' 0.11.5 >/dev/null 2>&1; then
119 # We have gettext, and a recent version! Everything is cool.
123 # User's gettext is too old. try to continue anyway.
128 echo "you need gettextize (package gettext-devel or gettext)"
132 # Check for pkg-config
133 if pkg-config --version >/dev/null 2>&1; then
134 # We have pkg-config, everything is cool.
140 aclocal=aclocal${amsuff}
141 automake=automake${amsuff}
143 autoheader=autoheader
146 ## Generate the modules makefile, by parsing modules/**/Modules.am
150 echo "generating modules/**/Makefile.am and m4/private.m4"
152 # Prepare m4/private.m4
153 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
154 dnl Private VLC macros - generated by bootstrap
158 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
159 dnl User does not have pkg-config, so assume package was not found
160 AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])])
165 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
166 dnl User does not have gettext, so this is a no-op
167 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
172 cat >> m4/private.m4 << EOF
173 dnl Helper macro for vlc-config generation
174 AC_DEFUN([VLC_CONFIG_HELPER], [
175 cat >> vlc-config.in << BLAH
180 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
181 # Autogenerated by bootstrap - DO NOT EDIT
183 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
186 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
189 modf="modules/${dir}/Modules.am"
190 makf="modules/${dir}/Makefile.am"
191 basedir="`echo "${dir}" | cut -f1 -d/`"
192 # automake will not recurse for make dist if we don't define SUBDIRS = .
193 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
194 mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`"
198 extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la"
200 rm -f "${makf}" && cat > "${makf}" << EOF
202 # ${makf} automatically generated from ${modf} by bootstrap
203 # DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead
210 EXTRA_DIST = Modules.am
214 SUFFIXES = _plugin\$(LIBEXT) _plugin.la
216 libvlcdir = \$(libdir)/vlc/\$(basedir)
218 EXTRA_LTLIBRARIES = ${extra_ltlibs}
222 LTLIBVLC = \$(top_builddir)/src/libvlc.la
225 LIBADD = \$(LTLIBVLC)
228 LIBVLC = \$(top_builddir)/src/libvlc.dll
235 \$(top_builddir)/compile
237 # Find out which modules were enabled and tell make to build them
240 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
241 z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin.la;; esac; done; \\
242 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
245 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
246 z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin\$(LIBEXT);; esac; done; \\
247 z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}.a;; esac; done; \\
248 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
252 # Build a plugin with the adequate linker and linker's flags
253 _plugin.la_plugin\$(LIBEXT):
254 @mod="\$*" ; mod=\$\${mod#lib} ; \
255 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBADD) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
256 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
257 c++) ld="\$(CXXLINK)" ;; \
258 objc) ld="\$(OBJCLINK)" ;; \
259 c|*) ld="\$(LINK)" ;; \
261 echo \$\$ld \$< \$\$ldfl ; \
263 @if test -f "\$@.exe"; then mv -f -- "\$@.exe" "\$@"; fi
266 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
267 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
276 ### automake creates libvlcdir after running install-*-local
277 ### so we have to create it ourselves first
278 install-exec-local: all-modules
280 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
281 z=\$\$(\$(VLC_CONFIG) --list plugin); \
282 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
284 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install-libvlcLTLIBRARIES || exit \$\$? ; \
287 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
288 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
289 for mod in \$(mods); do \
291 in *\ \$\${mod}\ *) \
292 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
293 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
301 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
302 z=\$\$(\$(VLC_CONFIG) --list plugin); \
303 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
305 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall-libvlcLTLIBRARIES || exit \$\$?; \
308 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
309 for mod in \$(mods); do \
311 in *\ \$\${mod}\ *) \
312 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
313 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
322 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
325 cat >> m4/private.m4 << EOF
326 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
328 # Generation of modules/**/Makefile.am
329 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
330 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
331 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
332 # the resulting file size.
333 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
334 # work properly with any automake version I tested.
335 cat >> "${makf}" << EOF
339 cat >> "${makf}" << EOF
340 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
342 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
343 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
344 CLEANFILES += "\$(nodist_SOURCES_${mod})"
345 BUILT_SOURCES += \$(B${mod})
348 cat >> "${makf}" << EOF
349 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
350 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
351 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
352 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
353 -rpath '\$(libvlcdir)' -avoid-version -module -shrext \$(LIBEXT) \\
354 -export-symbol-regex ^\$(VLC_ENTRY)\$\$ -no-undefined
359 cat >> m4/private.m4 << EOF
365 ### classic bootstrap stuff
369 # remove autotools cruft
370 rm -f aclocal.m4 configure config.log config.h config.h.in
371 rm -Rf autom4te*.cache
372 # remove old autotools extra cruft
373 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
374 # remove new autotools extra cruft
377 # remove libtool cruft
378 rm -f ltmain.sh libtool ltconfig
379 # remove gettext cruft
383 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
385 # Automake complains if these are not present
386 rm -f vlc-config.in && printf "" > vlc-config.in
387 if [ "$GETTEXT" != "yes" ]; then
388 test -d intl || mkdir intl
389 printf "" > intl/Makefile.am
390 printf "" > ABOUT-NLS
393 # Libtoolize directory
394 ${libtoolize} --copy --force
395 if test -f "ltmain.sh"; then
396 echo "$0: working around a minor libtool issue"
397 mv ltmain.sh autotools/
400 # patch for DLL link for libtool on cygwin (remove when fixed)
401 if test ".`uname -s|sed -n '/^CYGWIN/p'`" != "."; then
402 patch -s -p0 << 'EOF'
403 --- autotools/ltmain.orig 2006-12-05 15:15:42.064607000 +0000
404 +++ autotools/ltmain.sh 2006-12-05 15:16:24.705777800 +0000
405 @@ -4360,7 +4360,7 @@
409 - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
410 + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,;s,.dll.exe$,.dll,'` ;;
412 if test -n "$vinfo"; then
413 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
419 ${aclocal} ${ACLOCAL_ARGS}
422 ${automake} --add-missing --copy -Wall
425 ## files which need to be regenerated
427 rm -f vlc-config.in vlc-config
428 rm -f src/misc/modules_builtin.h
434 ## Tell the user about gettext, pkg-config and sed
436 if [ "${GETTEXT}" = "old" ]; then
439 ==========================================================
440 NOTE: you have an old version of gettext installed on your
441 system. The vlc build will work, but if your system does not
442 have libintl you will not have internationalization support.
443 We suggest upgrading to gettext 0.11.5 or later.
447 if [ "$PKGCONFIG" = "no" ]; then
450 ==============================================================
451 NOTE: you do not have the "pkg-config" utility on your system;
452 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be