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)
234 # Find out which modules were enabled and tell make to build them
237 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
238 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; \\
239 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; \\
240 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
243 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
244 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; \\
245 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; \\
246 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; \\
247 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
251 # Build a plugin with the adequate linker and linker's flags
252 _plugin.a_plugin\$(LIBEXT):
253 @mod="\$*" ; mod=\$\${mod#lib} ; \
254 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBADD) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
255 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
256 c++) ld="\$(CXXLINK)" ;; \
257 objc) ld="\$(OBJCLINK)" ;; \
258 c|*) ld="\$(LINK)" ;; \
260 echo \$\$ld \$< \$\$ldfl ; \
264 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
265 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
269 -rm -f *.a *\$(LIBEXT)
271 ### automake creates libvlcdir after running install-*-local
272 ### so we have to create it ourselves first
273 install-exec-local: all-modules
275 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
276 z=\$\$(\$(VLC_CONFIG) --list plugin); \
277 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
279 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install ; \
282 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
283 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
284 for mod in \$(mods); do \
286 in *\ \$\${mod}\ *) \
287 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
288 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
292 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
293 for mod in \$(mods); do \
295 in *\ \$\${mod}\ *) \
296 echo \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
297 \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
302 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
303 for mod in \$(mods); do \
305 in *\ \$\${mod}\ *) \
306 echo \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
307 \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
316 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
317 z=\$\$(\$(VLC_CONFIG) --list plugin); \
318 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
320 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall ; \
323 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
324 for mod in \$(mods); do \
326 in *\ \$\${mod}\ *) \
327 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
328 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
332 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
333 for mod in \$(mods); do \
335 in *\ \$\${mod}\ *) \
336 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \
337 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
342 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
343 for mod in \$(mods); do \
345 in *\ \$\${mod}\ *) \
346 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
347 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
357 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
360 cat >> m4/private.m4-tmp4 << EOF
361 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
363 # Generation of modules/**/Makefile.am
364 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
365 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
366 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
367 # the resulting file size.
368 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
369 # work properly with any automake version I tested.
370 cat >> "${makf}" << EOF
374 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
375 clean-local: clean-${mod}
377 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
381 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
382 BUILT_SOURCES += \$(B${mod})
385 cat >> "${makf}" << EOF
386 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
387 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
389 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
390 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
391 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
394 cat >> "${makf}" << EOF
395 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
396 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
397 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
398 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
399 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
400 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
401 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
402 -rpath '\$(libvlcdir)' -module -shrext \$(LIBEXT)
403 lib${mod}_plugin_la_LIBADD = \$(LTLIBVLC)
405 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
407 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
408 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
411 cat >> "${makf}" << EOF
412 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
413 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
414 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
416 lib${mod}_a_SOURCES = \$(SOURCES_${mod})
417 lib${mod}_la_SOURCES = \$(SOURCES_${mod})
419 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
420 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
421 nodist_lib${mod}_la_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
424 cat >> "${makf}" << EOF
425 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
426 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
427 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
428 lib${mod}_la_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
429 lib${mod}_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
430 lib${mod}_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
431 lib${mod}_la_LDFLAGS = \`\$(VLC_CONFIG) --libs ${mod}\` -static
437 cat >> m4/private.m4-tmp1 << EOF
440 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
441 cat >> m4/private.m4-tmp2 << EOF
444 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
445 cat >> m4/private.m4-tmp3 << EOF
448 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
449 cat >> m4/private.m4-tmp4 << EOF
453 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
458 ### classic bootstrap stuff
462 # remove autotools cruft
463 rm -f aclocal.m4 configure config.log config.h config.h.in
464 rm -Rf autom4te*.cache
465 # remove old autotools extra cruft
466 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
467 # remove new autotools extra cruft
470 # remove libtool cruft
471 rm -f ltmain.sh libtool ltconfig
472 # remove gettext cruft
475 # remove old vlc cruft
476 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
477 # remove new vlc cruft
478 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
480 # Automake complains if these are not present
481 rm -f vlc-config.in && printf "" > vlc-config.in
482 if [ "$GETTEXT" != "yes" ]; then
483 test -d intl || mkdir intl
484 printf "" > intl/Makefile.am
485 printf "" > ABOUT-NLS
488 # Libtoolize directory
489 ${libtoolize} --copy --force
490 if test -f "ltmain.sh"; then
491 echo "$0: working around a minor libtool issue"
492 mv ltmain.sh autotools/
497 ${aclocal} ${ACLOCAL_ARGS}
500 ${automake} --add-missing --copy
503 ## files which need to be regenerated
505 rm -f vlc-config.in vlc-config
506 rm -f src/misc/modules_builtin.h
507 rm -f mozilla/vlcintf.h
513 ## Tell the user about gettext, pkg-config and sed
515 if [ "${GETTEXT}" = "old" ]; then
518 ==========================================================
519 NOTE: you have an old version of gettext installed on your
520 system. The vlc build will work, but if your system does not
521 have libintl you will not have internationalization support.
522 We suggest upgrading to gettext 0.11.5 or later.
526 if [ "$PKGCONFIG" = "no" ]; then
529 ==============================================================
530 NOTE: you do not have the "pkg-config" utility on your system;
531 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
536 if [ "$AUTOMAKESUCKS" = "yes" ]; then
539 =============================================================
540 IMPORTANT NOTE: your version of automake has a bug which will
541 prevent proper plugin compilation. Either compile VLC with
542 the --disable-plugins flag, or use a version of automake newer
543 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
547 if [ "$INSTALLSUCKS" = "yes" ]; then
550 =============================================================
551 IMPORTANT NOTE: your version of automake has a bug which will
552 prevent proper installation. Do not use "make install" with this
553 version of automake, or use a version of automake newer than 1.5
554 (such as 1.6 or 1.7).