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 ## Muahaha! no annoying dollar I dee dollar that causes rebuild at commit
12 if test "$#" != "0"; then
14 echo " Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
15 echo " m4 macros and prepare Makefiles."
20 ### Get a sane environment, just in case
31 ## Check for various tools
38 # Check for contrib directory
39 if test -d extras/contrib/bin; then
40 export PATH=./extras/contrib/bin:$PATH
41 if test -d extras/contrib/share/aclocal; then
42 ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
44 if test ".`uname -s`" = ".Darwin"; then
45 export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
46 export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
47 elif test ".`uname -s`" = ".BeOS"; then
48 export LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH
49 export BELIBRARIES=./extras/contrib/lib:$BELIBRARIES
55 for v in "-1.9" "19" "-1.8" "18" "-1.7" "17" "-1.6" "16" "-1.5" "15"; do
56 if automake${v} --version >/dev/null 2>&1; then
63 if test "${amvers}" = "no" && automake --version > /dev/null 2>&1; then
64 amvers="`automake --version | sed -e '1s/[^0-9]*//' -e q`"
69 -1.6|16|1.6|1.6.0*|1.6.1*)
75 no|1.[01234]|1.[01234].*|1[01234])
77 echo "$0: you need automake version 1.5 or later"
84 if glibtoolize --version >/dev/null 2>&1; then
85 libtoolize="glibtoolize"
86 elif libtoolize --version >/dev/null 2>&1; then
87 libtoolize="libtoolize"
90 if test "$libtoolize" = "no"; then
92 echo "$0: you need libtool"
97 if gettextize --version >/dev/null 2>&1; then
98 # Autopoint is available from 0.11.3, but we need 0.11.5
99 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
100 '>=' 0.11.5 >/dev/null 2>&1; then
101 # We have gettext, and a recent version! Everything is cool.
105 # User's gettext is too old. try to continue anyway.
110 echo "you need gettextize (package gettext-devel or gettext)"
114 # Check for pkg-config
115 if pkg-config --version >/dev/null 2>&1; then
116 # We have pkg-config, everything is cool.
122 aclocal=aclocal${amvers}
123 automake=automake${amvers}
125 autoheader=autoheader
128 ## Generate the modules makefile, by parsing modules/**/Modules.am
132 echo "generating modules/**/Makefile.am and m4/private.m4"
134 # Prepare m4/private.m4
135 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
136 dnl Private VLC macros - generated by bootstrap
140 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
141 dnl User does not have pkg-config, so assume package was not found
142 AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])])
147 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
148 dnl User does not have gettext, so this is a no-op
149 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
154 rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
155 dnl The required AM_CONDITIONAL calls
156 dnl XXX: too many conditionals make the build very slow, disabled them
157 AC_DEFUN([VLC_CONDITIONALS], [
159 rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
160 dnl The required AC_SUBST calls
161 AC_DEFUN([VLC_SUBSTS], [
163 rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
164 dnl The required AC_OUTPUT calls
165 dnl XXX: this feature is only supported starting from automake-1.7
166 AC_DEFUN([VLC_MAKEFILES], [AC_OUTPUT([
168 rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
169 dnl Helper macro for vlc-config generation
170 AC_DEFUN([VLC_CONFIG_HELPER], [
171 cat >> vlc-config.in << BLAH
176 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
177 # Autogenerated by bootstrap - DO NOT EDIT
179 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
182 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
185 modf="modules/${dir}/Modules.am"
186 makf="modules/${dir}/Makefile.am"
187 basedir="`echo "${dir}" | cut -f1 -d/`"
188 # automake will not recurse for make dist if we don't define SUBDIRS = .
189 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
190 mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`"
195 extra_libs="${extra_libs} lib${mod}_plugin.a lib${mod}.a lib${mod}_pic.a"
196 extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la lib${mod}_builtin.la"
198 rm -f "${makf}" && cat > "${makf}" << EOF
200 # ${makf} automatically generated from ${modf} by bootstrap
201 # DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead
209 EXTRA_DIST = Modules.am
213 SUFFIXES = _plugin\$(LIBEXT) _plugin.a
215 libvlcdir = \$(libdir)/vlc/\$(basedir)
217 EXTRA_LIBRARIES = ${extra_libs}
218 EXTRA_LTLIBRARIES = ${extra_ltlibs}
222 LTLIBVLC = \$(top_builddir)/src/libvlc.la
225 LIBVLC = \$(top_builddir)/src/libvlc\$(LIBEXT)
231 # Find out which modules were enabled and tell make to build them
234 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
235 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; \\
236 if test "\$(builtin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_builtin.la;; esac; done; fi; \\
237 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
240 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
241 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; \\
242 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; \\
243 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; \\
244 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
248 # Build a plugin with the adequate linker and linker's flags
249 _plugin.a_plugin\$(LIBEXT):
250 @mod="\$*" ; mod=\$\${mod#lib} ; \
251 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBADD) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
252 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
253 c++) ld="\$(CXXLINK)" ;; \
254 objc) ld="\$(OBJCLINK)" ;; \
255 c|*) ld="\$(LINK)" ;; \
257 echo \$\$ld \$< \$\$ldfl ; \
259 #ifneq (,\$(findstring cygwin,\$(host)))
260 # mv -f "\$@.exe" "\$@"
262 @if test -f "\$@.exe"; then mv -f "\$@.exe" "\$@"; fi
265 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
266 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
273 -rm -f *.a *\$(LIBEXT)
276 clean-local: \$(clean_modules)
278 ### automake creates libvlcdir after running install-*-local
279 ### so we have to create it ourselves first
280 install-exec-local: all-modules
282 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
283 z=\$\$(\$(VLC_CONFIG) --list plugin); \
284 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-libvlcLTLIBRARIES || exit \$\$? ; \
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\` ; \
327 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall-libvlcLTLIBRARIES || exit \$\$?; \
330 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
331 for mod in \$(mods); do \
333 in *\ \$\${mod}\ *) \
334 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
335 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
339 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
340 for mod in \$(mods); do \
342 in *\ \$\${mod}\ *) \
343 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \
344 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
349 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
350 for mod in \$(mods); do \
352 in *\ \$\${mod}\ *) \
353 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
354 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
364 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
367 cat >> m4/private.m4-tmp4 << EOF
368 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
370 # Generation of modules/**/Makefile.am
371 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
372 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
373 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
374 # the resulting file size.
375 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
376 # work properly with any automake version I tested.
377 cat >> "${makf}" << EOF
381 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
382 clean_modules += clean-${mod}
384 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
388 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
389 BUILT_SOURCES += \$(B${mod})
392 cat >> "${makf}" << EOF
393 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
394 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
396 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
397 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
398 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
401 cat >> "${makf}" << EOF
402 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
403 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
404 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
405 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
406 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
407 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
408 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
409 -rpath '\$(libvlcdir)' -module -shrext \$(LIBEXT)
410 lib${mod}_plugin_la_LIBADD = \$(LTLIBVLC)
412 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
414 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
415 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
418 cat >> "${makf}" << EOF
419 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
420 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
421 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
423 lib${mod}_a_SOURCES = \$(SOURCES_${mod})
424 lib${mod}_builtin_la_SOURCES = \$(SOURCES_${mod})
426 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
427 nodist_lib${mod}_a_SOURCES = \$(nodist_SOURCES_${mod})
428 nodist_lib${mod}_builtin_la_SOURCES = \$(nodist_SOURCES_${mod})
431 cat >> "${makf}" << EOF
432 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
433 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
434 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
435 lib${mod}_builtin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
436 lib${mod}_builtin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
437 lib${mod}_builtin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
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).