3 ## bootstrap file for the VLC media player
6 ## Copyright (C) 2005-2006 the VideoLAN team
8 ## Initial author: Sam Hocevar <sam@zoy.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
36 # Check for contrib directory
37 if test -d extras/contrib/bin; then
38 export PATH=./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
53 if automake-1.9 --version >/dev/null 2>&1; then
55 elif automake-1.8 --version >/dev/null 2>&1; then
57 elif automake-1.7 --version >/dev/null 2>&1; then
59 elif automake-1.6 --version >/dev/null 2>&1; then
61 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then
64 elif automake-1.5 --version >/dev/null 2>&1; then
67 elif automake --version > /dev/null 2>&1; then
69 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
70 0|0.*|1|1.[01234]|1.[01234][-.]*)
81 if test "${amvers}" = "none"; then
83 echo "$0: you need automake version 1.5 or later"
89 if glibtoolize --version >/dev/null 2>&1; then
90 libtoolize="glibtoolize"
91 elif libtoolize --version >/dev/null 2>&1; then
92 libtoolize="libtoolize"
95 if test "$libtoolize" = "no"; then
97 echo "$0: you need libtool"
102 if gettextize --version >/dev/null 2>&1; then
103 # Autopoint is available from 0.11.3, but we need 0.11.5
104 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
105 '>=' 0.11.5 >/dev/null 2>&1; then
106 # We have gettext, and a recent version! Everything is cool.
110 # User's gettext is too old. try to continue anyway.
115 echo "you need gettextize (package gettext-devel or gettext)"
119 # Check for pkg-config
120 if pkg-config --version >/dev/null 2>&1; then
121 # We have pkg-config, everything is cool.
127 aclocal=aclocal${amvers}
128 automake=automake${amvers}
130 autoheader=autoheader
133 ## Generate the modules makefile, by parsing modules/**/Modules.am
137 echo "generating modules/**/Makefile.am and m4/private.m4"
139 # Prepare m4/private.m4
140 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
141 dnl Private VLC macros - generated by bootstrap
145 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
146 dnl User does not have pkg-config, so assume package was not found
147 AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])])
152 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
153 dnl User does not have gettext, so this is a no-op
154 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
159 rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
160 dnl The required AM_CONDITIONAL calls
161 dnl XXX: too many conditionals make the build very slow, disabled them
162 AC_DEFUN([VLC_CONDITIONALS], [
164 rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
165 dnl The required AC_SUBST calls
166 AC_DEFUN([VLC_SUBSTS], [
168 rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
169 dnl The required AC_OUTPUT calls
170 dnl XXX: this feature is only supported starting from automake-1.7
171 AC_DEFUN([VLC_MAKEFILES], [AC_OUTPUT([
173 rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
174 dnl Helper macro for vlc-config generation
175 AC_DEFUN([VLC_CONFIG_HELPER], [
176 cat >> vlc-config.in << BLAH
181 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
182 # Autogenerated by bootstrap - DO NOT EDIT
184 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
187 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
190 modf="modules/${dir}/Modules.am"
191 makf="modules/${dir}/Makefile.am"
192 basedir="`echo "${dir}" | cut -f1 -d/`"
193 # automake will not recurse for make dist if we don't define SUBDIRS = .
194 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
195 mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`"
200 extra_libs="${extra_libs} lib${mod}_plugin.a lib${mod}.a lib${mod}_pic.a"
201 extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la lib${mod}.la"
203 rm -f "${makf}" && cat > "${makf}" << EOF
205 # ${makf} automatically generated from ${modf} by bootstrap
206 # DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead
213 EXTRA_DIST = Modules.am
216 SUFFIXES = _plugin\$(LIBEXT) _plugin.a
218 libvlcdir = \$(libdir)/vlc/\$(basedir)
220 EXTRA_LIBRARIES = ${extra_libs}
221 EXTRA_LTLIBRARIES = ${extra_ltlibs}
225 LTLIBVLC = \$(top_builddir)/src/libvlc.la
228 LIBVLC = \$(top_builddir)/src/libvlc\$(LIBEXT)
242 # Find out which modules were enabled and tell make to build them
245 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
246 if test "\$(plugin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin.la;; esac; done; fi; \\
247 if test "\$(builtin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}.la;; esac; done; fi; \\
248 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
251 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
252 if test "\$(plugin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin\$(LIBEXT);; esac; done; fi; \\
253 if test "\$(builtin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}.a;; esac; done; fi; \\
254 if test "\$(pic)" = "pic"; then z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_pic.a;; esac; done; fi; \\
255 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
259 # Build a plugin with the adequate linker and linker's flags
260 _plugin.a_plugin\$(LIBEXT):
261 @mod="\$*" ; mod=\$\${mod#lib} ; \
262 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBADD) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
263 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
264 c++) ld="\$(CXXLINK)" ;; \
265 objc) ld="\$(OBJCLINK)" ;; \
266 c|*) ld="\$(LINK)" ;; \
268 echo \$\$ld \$< \$\$ldfl ; \
272 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
273 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
277 -rm -f *.a *\$(LIBEXT)
279 ### automake creates libvlcdir after running install-*-local
280 ### so we have to create it ourselves first
281 install-exec-local: all-modules
283 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
284 z=\$\$(\$(VLC_CONFIG) --list plugin); \
285 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
286 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install ; \
289 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
290 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
291 for mod in \$(mods); do \
293 in *\ \$\${mod}\ *) \
294 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
295 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
299 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
300 for mod in \$(mods); do \
302 in *\ \$\${mod}\ *) \
303 echo \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
304 \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
309 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
310 for mod in \$(mods); do \
312 in *\ \$\${mod}\ *) \
313 echo \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
314 \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
323 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
324 z=\$\$(\$(VLC_CONFIG) --list plugin); \
325 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
326 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall ; \
329 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
330 for mod in \$(mods); do \
332 in *\ \$\${mod}\ *) \
333 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
334 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
338 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
339 for mod in \$(mods); do \
341 in *\ \$\${mod}\ *) \
342 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \
343 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
348 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
349 for mod in \$(mods); do \
351 in *\ \$\${mod}\ *) \
352 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
353 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
363 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
366 cat >> m4/private.m4-tmp4 << EOF
367 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
369 # Generation of modules/**/Makefile.am
370 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
371 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
372 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
373 # the resulting file size.
374 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
375 # work properly with any automake version I tested.
376 cat >> "${makf}" << EOF
380 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
381 clean-local: clean-${mod}
383 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
387 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
388 BUILT_SOURCES += \$(B${mod})
391 cat >> "${makf}" << EOF
392 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
393 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
395 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
396 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
397 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
400 cat >> "${makf}" << EOF
401 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
402 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
403 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
404 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
405 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
406 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
407 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
408 -rpath '\$(libvlcdir)' -module -shrext \$(LIBEXT)
409 lib${mod}_plugin_la_LIBADD = \$(LTLIBVLC)
411 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
413 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
414 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
417 cat >> "${makf}" << EOF
418 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
419 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
420 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
422 lib${mod}_a_SOURCES = \$(SOURCES_${mod})
423 lib${mod}_la_SOURCES = \$(SOURCES_${mod})
425 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
426 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
427 nodist_lib${mod}_la_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
430 cat >> "${makf}" << EOF
431 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
432 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
433 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
434 lib${mod}_la_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
435 lib${mod}_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
436 lib${mod}_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
437 lib${mod}_la_LDFLAGS = \`\$(VLC_CONFIG) --libs ${mod}\` -static
443 cat >> m4/private.m4-tmp1 << EOF
446 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
447 cat >> m4/private.m4-tmp2 << EOF
450 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
451 cat >> m4/private.m4-tmp3 << EOF
454 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
455 cat >> m4/private.m4-tmp4 << EOF
459 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
464 ### classic bootstrap stuff
468 # remove autotools cruft
469 rm -f aclocal.m4 configure config.log config.h config.h.in
470 rm -Rf autom4te*.cache
471 # remove old autotools extra cruft
472 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
473 # remove new autotools extra cruft
476 # remove libtool cruft
477 rm -f ltmain.sh libtool ltconfig
478 # remove gettext cruft
481 # remove old vlc cruft
482 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
483 # remove new vlc cruft
484 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
486 # Automake complains if these are not present
487 rm -f vlc-config.in && printf "" > vlc-config.in
488 if [ "$GETTEXT" != "yes" ]; then
489 test -d intl || mkdir intl
490 printf "" > intl/Makefile.am
491 printf "" > ABOUT-NLS
494 # Libtoolize directory
495 ${libtoolize} --copy --force
496 if test -f "ltmain.sh"; then
497 echo "$0: working around a minor libtool issue"
498 mv ltmain.sh autotools/
503 ${aclocal} ${ACLOCAL_ARGS}
506 ${automake} --add-missing --copy
509 ## files which need to be regenerated
511 rm -f vlc-config.in vlc-config
512 rm -f src/misc/modules_builtin.h
513 rm -f mozilla/vlcintf.h
519 ## Tell the user about gettext, pkg-config and sed
521 if [ "${GETTEXT}" = "old" ]; then
524 ==========================================================
525 NOTE: you have an old version of gettext installed on your
526 system. The vlc build will work, but if your system does not
527 have libintl you will not have internationalization support.
528 We suggest upgrading to gettext 0.11.5 or later.
532 if [ "$PKGCONFIG" = "no" ]; then
535 ==============================================================
536 NOTE: you do not have the "pkg-config" utility on your system;
537 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
542 if [ "$AUTOMAKESUCKS" = "yes" ]; then
545 =============================================================
546 IMPORTANT NOTE: your version of automake has a bug which will
547 prevent proper plugin compilation. Either compile VLC with
548 the --disable-plugins flag, or use a version of automake newer
549 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
553 if [ "$INSTALLSUCKS" = "yes" ]; then
556 =============================================================
557 IMPORTANT NOTE: your version of automake has a bug which will
558 prevent proper installation. Do not use "make install" with this
559 version of automake, or use a version of automake newer than 1.5
560 (such as 1.6 or 1.7).