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
214 EXTRA_DIST = Modules.am
218 SUFFIXES = _plugin\$(LIBEXT) _plugin.a
220 libvlcdir = \$(libdir)/vlc/\$(basedir)
222 EXTRA_LIBRARIES = ${extra_libs}
223 EXTRA_LTLIBRARIES = ${extra_ltlibs}
227 LTLIBVLC = \$(top_builddir)/src/libvlc.la
230 LIBVLC = \$(top_builddir)/src/libvlc\$(LIBEXT)
236 # Find out which modules were enabled and tell make to build them
239 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
240 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; \\
241 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; \\
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 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; \\
247 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; \\
248 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; \\
249 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
253 # Build a plugin with the adequate linker and linker's flags
254 _plugin.a_plugin\$(LIBEXT):
255 @mod="\$*" ; mod=\$\${mod#lib} ; \
256 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBADD) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
257 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
258 c++) ld="\$(CXXLINK)" ;; \
259 objc) ld="\$(OBJCLINK)" ;; \
260 c|*) ld="\$(LINK)" ;; \
262 echo \$\$ld \$< \$\$ldfl ; \
264 #ifneq (,\$(findstring cygwin,\$(host)))
265 # mv -f "\$@.exe" "\$@"
267 @if test -f "\$@.exe"; then mv -f "\$@.exe" "\$@"; fi
270 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
271 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
275 -rm -f *.a *\$(LIBEXT)
277 clean-local: \$(clean_modules)
279 @if test -z "\$(libvlc_LTLIBRARIES)\$(noinst_LTLIBRARIES)"; then \
280 l=\$\$(\$(VLC_CONFIG) --list plugin); \
281 p=\`for mod in \$(mods); do case "\$\$l " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
282 l=\$\$(\$(VLC_CONFIG) --list builtin); \
283 s=\`for mod in \$(mods); do case "\$\$l " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}.la" ;; esac; done\` ; \
284 test -z "\$\$p\$\$s" || \
285 \$(MAKE) \$(AM_MAKEFLAGS) \
286 libvlc_LTLIBRARIES="\$\$p" noinst_LTLIBRARIES="\$\$s" clean ; \
290 ### automake creates libvlcdir after running install-*-local
291 ### so we have to create it ourselves first
292 install-exec-local: all-modules
294 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
295 z=\$\$(\$(VLC_CONFIG) --list plugin); \
296 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
298 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install ; \
301 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
302 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
303 for mod in \$(mods); do \
305 in *\ \$\${mod}\ *) \
306 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
307 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
311 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
312 for mod in \$(mods); do \
314 in *\ \$\${mod}\ *) \
315 echo \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
316 \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
321 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
322 for mod in \$(mods); do \
324 in *\ \$\${mod}\ *) \
325 echo \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
326 \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
335 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
336 z=\$\$(\$(VLC_CONFIG) --list plugin); \
337 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
339 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall ; \
342 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
343 for mod in \$(mods); do \
345 in *\ \$\${mod}\ *) \
346 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
347 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
351 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
352 for mod in \$(mods); do \
354 in *\ \$\${mod}\ *) \
355 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \
356 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
361 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
362 for mod in \$(mods); do \
364 in *\ \$\${mod}\ *) \
365 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
366 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
376 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
379 cat >> m4/private.m4-tmp4 << EOF
380 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
382 # Generation of modules/**/Makefile.am
383 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
384 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
385 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
386 # the resulting file size.
387 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
388 # work properly with any automake version I tested.
389 cat >> "${makf}" << EOF
393 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
394 clean_modules += clean-${mod}
396 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
400 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
401 BUILT_SOURCES += \$(B${mod})
404 cat >> "${makf}" << EOF
405 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
406 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
408 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
409 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
410 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
413 cat >> "${makf}" << EOF
414 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
415 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
416 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
417 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
418 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
419 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
420 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
421 -rpath '\$(libvlcdir)' -module -shrext \$(LIBEXT)
422 lib${mod}_plugin_la_LIBADD = \$(LTLIBVLC)
423 lib${mod}_plugin_la_DEPENDENCIES = \$(LTLIBVLC)
425 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
427 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
428 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
431 cat >> "${makf}" << EOF
432 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
433 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
434 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
436 lib${mod}_a_SOURCES = \$(SOURCES_${mod})
437 lib${mod}_la_SOURCES = \$(SOURCES_${mod})
439 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
440 nodist_lib${mod}_a_SOURCES = \$(nodist_SOURCES_${mod})
441 nodist_lib${mod}_la_SOURCES = \$(nodist_SOURCES_${mod})
444 cat >> "${makf}" << EOF
445 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
446 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
447 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
448 lib${mod}_la_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
449 lib${mod}_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
450 lib${mod}_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
451 lib${mod}_la_LDFLAGS = \`\$(VLC_CONFIG) --libs ${mod}\` -static
457 cat >> m4/private.m4-tmp1 << EOF
460 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
461 cat >> m4/private.m4-tmp2 << EOF
464 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
465 cat >> m4/private.m4-tmp3 << EOF
468 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
469 cat >> m4/private.m4-tmp4 << EOF
473 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
478 ### classic bootstrap stuff
482 # remove autotools cruft
483 rm -f aclocal.m4 configure config.log config.h config.h.in
484 rm -Rf autom4te*.cache
485 # remove old autotools extra cruft
486 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
487 # remove new autotools extra cruft
490 # remove libtool cruft
491 rm -f ltmain.sh libtool ltconfig
492 # remove gettext cruft
495 # remove old vlc cruft
496 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
497 # remove new vlc cruft
498 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
500 # Automake complains if these are not present
501 rm -f vlc-config.in && printf "" > vlc-config.in
502 if [ "$GETTEXT" != "yes" ]; then
503 test -d intl || mkdir intl
504 printf "" > intl/Makefile.am
505 printf "" > ABOUT-NLS
508 # Libtoolize directory
509 ${libtoolize} --copy --force
510 if test -f "ltmain.sh"; then
511 echo "$0: working around a minor libtool issue"
512 mv ltmain.sh autotools/
517 ${aclocal} ${ACLOCAL_ARGS}
520 ${automake} --add-missing --copy
523 ## files which need to be regenerated
525 rm -f vlc-config.in vlc-config
526 rm -f src/misc/modules_builtin.h
527 rm -f mozilla/vlcintf.h
533 ## Tell the user about gettext, pkg-config and sed
535 if [ "${GETTEXT}" = "old" ]; then
538 ==========================================================
539 NOTE: you have an old version of gettext installed on your
540 system. The vlc build will work, but if your system does not
541 have libintl you will not have internationalization support.
542 We suggest upgrading to gettext 0.11.5 or later.
546 if [ "$PKGCONFIG" = "no" ]; then
549 ==============================================================
550 NOTE: you do not have the "pkg-config" utility on your system;
551 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
556 if [ "$AUTOMAKESUCKS" = "yes" ]; then
559 =============================================================
560 IMPORTANT NOTE: your version of automake has a bug which will
561 prevent proper plugin compilation. Either compile VLC with
562 the --disable-plugins flag, or use a version of automake newer
563 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
567 if [ "$INSTALLSUCKS" = "yes" ]; then
570 =============================================================
571 IMPORTANT NOTE: your version of automake has a bug which will
572 prevent proper installation. Do not use "make install" with this
573 version of automake, or use a version of automake newer than 1.5
574 (such as 1.6 or 1.7).