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
217 SUFFIXES = _plugin\$(LIBEXT) _plugin.a
219 libvlcdir = \$(libdir)/vlc/\$(basedir)
221 EXTRA_LIBRARIES = ${extra_libs}
222 EXTRA_LTLIBRARIES = ${extra_ltlibs}
226 LTLIBVLC = \$(top_builddir)/src/libvlc.la
229 LIBVLC = \$(top_builddir)/src/libvlc\$(LIBEXT)
235 # Find out which modules were enabled and tell make to build them
238 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
239 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; \\
240 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; \\
241 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
244 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
245 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; \\
246 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; \\
247 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; \\
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.a_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 #ifneq (,\$(findstring cygwin,\$(host)))
264 # mv -f "\$@.exe" "\$@"
266 @if test -f "\$@.exe"; then mv -f "\$@.exe" "\$@"; fi
269 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
270 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
274 -rm -f *.a *\$(LIBEXT)
276 clean-local: \$(clean_modules)
278 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
279 l=\$\$(\$(VLC_CONFIG) --list plugin); \
280 p=\`for mod in \$(mods); do case "\$\$l " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
281 l=\$\$(\$(VLC_CONFIG) --list builtin); \
282 s=\`for mod in \$(mods); do case "\$\$l " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}.la" ;; esac; done\` ; \
283 test -z "\$\$p\$\$s" || \
284 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$p\$\$s" clean ; \
288 ### automake creates libvlcdir after running install-*-local
289 ### so we have to create it ourselves first
290 install-exec-local: all-modules
292 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
293 z=\$\$(\$(VLC_CONFIG) --list plugin); \
294 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
296 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install ; \
299 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
300 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
301 for mod in \$(mods); do \
303 in *\ \$\${mod}\ *) \
304 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
305 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
309 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
310 for mod in \$(mods); do \
312 in *\ \$\${mod}\ *) \
313 echo \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
314 \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
319 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
320 for mod in \$(mods); do \
322 in *\ \$\${mod}\ *) \
323 echo \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
324 \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
333 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
334 z=\$\$(\$(VLC_CONFIG) --list plugin); \
335 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
337 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall ; \
340 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
341 for mod in \$(mods); do \
343 in *\ \$\${mod}\ *) \
344 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
345 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || 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}.a" ; \
354 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
359 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
360 for mod in \$(mods); do \
362 in *\ \$\${mod}\ *) \
363 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
364 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
374 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
377 cat >> m4/private.m4-tmp4 << EOF
378 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
380 # Generation of modules/**/Makefile.am
381 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
382 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
383 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
384 # the resulting file size.
385 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
386 # work properly with any automake version I tested.
387 cat >> "${makf}" << EOF
391 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
392 clean_modules += clean-${mod}
394 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
398 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
399 BUILT_SOURCES += \$(B${mod})
402 cat >> "${makf}" << EOF
403 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
404 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
406 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
407 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
408 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
411 cat >> "${makf}" << EOF
412 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
413 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
414 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
415 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
416 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
417 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
418 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
419 -rpath '\$(libvlcdir)' -module -shrext \$(LIBEXT)
420 lib${mod}_plugin_la_LIBADD = \$(LTLIBVLC)
422 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
424 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
425 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
428 cat >> "${makf}" << EOF
429 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
430 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
431 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
433 lib${mod}_a_SOURCES = \$(SOURCES_${mod})
434 lib${mod}_la_SOURCES = \$(SOURCES_${mod})
436 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
437 nodist_lib${mod}_a_SOURCES = \$(nodist_SOURCES_${mod})
438 nodist_lib${mod}_la_SOURCES = \$(nodist_SOURCES_${mod})
441 cat >> "${makf}" << EOF
442 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
443 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
444 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
445 lib${mod}_la_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
446 lib${mod}_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
447 lib${mod}_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
448 lib${mod}_la_LDFLAGS = \`\$(VLC_CONFIG) --libs ${mod}\` -static
454 cat >> m4/private.m4-tmp1 << EOF
457 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
458 cat >> m4/private.m4-tmp2 << EOF
461 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
462 cat >> m4/private.m4-tmp3 << EOF
465 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
466 cat >> m4/private.m4-tmp4 << EOF
470 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
475 ### classic bootstrap stuff
479 # remove autotools cruft
480 rm -f aclocal.m4 configure config.log config.h config.h.in
481 rm -Rf autom4te*.cache
482 # remove old autotools extra cruft
483 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
484 # remove new autotools extra cruft
487 # remove libtool cruft
488 rm -f ltmain.sh libtool ltconfig
489 # remove gettext cruft
492 # remove old vlc cruft
493 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
494 # remove new vlc cruft
495 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
497 # Automake complains if these are not present
498 rm -f vlc-config.in && printf "" > vlc-config.in
499 if [ "$GETTEXT" != "yes" ]; then
500 test -d intl || mkdir intl
501 printf "" > intl/Makefile.am
502 printf "" > ABOUT-NLS
505 # Libtoolize directory
506 ${libtoolize} --copy --force
507 if test -f "ltmain.sh"; then
508 echo "$0: working around a minor libtool issue"
509 mv ltmain.sh autotools/
514 ${aclocal} ${ACLOCAL_ARGS}
517 ${automake} --add-missing --copy
520 ## files which need to be regenerated
522 rm -f vlc-config.in vlc-config
523 rm -f src/misc/modules_builtin.h
524 rm -f mozilla/vlcintf.h
530 ## Tell the user about gettext, pkg-config and sed
532 if [ "${GETTEXT}" = "old" ]; then
535 ==========================================================
536 NOTE: you have an old version of gettext installed on your
537 system. The vlc build will work, but if your system does not
538 have libintl you will not have internationalization support.
539 We suggest upgrading to gettext 0.11.5 or later.
543 if [ "$PKGCONFIG" = "no" ]; then
546 ==============================================================
547 NOTE: you do not have the "pkg-config" utility on your system;
548 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
553 if [ "$AUTOMAKESUCKS" = "yes" ]; then
556 =============================================================
557 IMPORTANT NOTE: your version of automake has a bug which will
558 prevent proper plugin compilation. Either compile VLC with
559 the --disable-plugins flag, or use a version of automake newer
560 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
564 if [ "$INSTALLSUCKS" = "yes" ]; then
567 =============================================================
568 IMPORTANT NOTE: your version of automake has a bug which will
569 prevent proper installation. Do not use "make install" with this
570 version of automake, or use a version of automake newer than 1.5
571 (such as 1.6 or 1.7).