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\` ; \
278 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install ; \
281 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
282 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
283 for mod in \$(mods); do \
285 in *\ \$\${mod}\ *) \
286 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
287 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
291 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
292 for mod in \$(mods); do \
294 in *\ \$\${mod}\ *) \
295 echo \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
296 \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
301 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
302 for mod in \$(mods); do \
304 in *\ \$\${mod}\ *) \
305 echo \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
306 \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
315 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
316 z=\$\$(\$(VLC_CONFIG) --list plugin); \
317 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
318 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall ; \
321 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
322 for mod in \$(mods); do \
324 in *\ \$\${mod}\ *) \
325 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
326 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
330 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
331 for mod in \$(mods); do \
333 in *\ \$\${mod}\ *) \
334 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \
335 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
340 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
341 for mod in \$(mods); do \
343 in *\ \$\${mod}\ *) \
344 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
345 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
355 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
358 cat >> m4/private.m4-tmp4 << EOF
359 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
361 # Generation of modules/**/Makefile.am
362 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
364 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
365 # the resulting file size.
366 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
367 # work properly with any automake version I tested.
368 cat >> "${makf}" << EOF
372 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
373 clean-local: clean-${mod}
375 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
379 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
380 BUILT_SOURCES += \$(B${mod})
383 cat >> "${makf}" << EOF
384 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
385 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
387 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
388 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
389 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
392 cat >> "${makf}" << EOF
393 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
394 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
395 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
396 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
397 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
398 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
399 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
400 -rpath '\$(libvlcdir)' -module -shrext \$(LIBEXT)
401 lib${mod}_plugin_la_LIBADD = \$(LTLIBVLC)
403 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
405 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
406 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
409 cat >> "${makf}" << EOF
410 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
411 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
412 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
414 lib${mod}_a_SOURCES = \$(SOURCES_${mod})
415 lib${mod}_la_SOURCES = \$(SOURCES_${mod})
417 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
418 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
419 nodist_lib${mod}_la_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
422 cat >> "${makf}" << EOF
423 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
424 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
425 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
426 lib${mod}_la_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
427 lib${mod}_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
428 lib${mod}_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
429 lib${mod}_la_LDFLAGS = \`\$(VLC_CONFIG) --libs ${mod}\` -static
435 cat >> m4/private.m4-tmp1 << EOF
438 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
439 cat >> m4/private.m4-tmp2 << EOF
442 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
443 cat >> m4/private.m4-tmp3 << EOF
446 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
447 cat >> m4/private.m4-tmp4 << EOF
451 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
456 ### classic bootstrap stuff
460 # remove autotools cruft
461 rm -f aclocal.m4 configure config.log config.h config.h.in
462 rm -Rf autom4te*.cache
463 # remove old autotools extra cruft
464 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
465 # remove new autotools extra cruft
468 # remove libtool cruft
469 rm -f ltmain.sh libtool ltconfig
470 # remove gettext cruft
473 # remove old vlc cruft
474 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
475 # remove new vlc cruft
476 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
478 # Automake complains if these are not present
479 rm -f vlc-config.in && printf "" > vlc-config.in
480 if [ "$GETTEXT" != "yes" ]; then
481 test -d intl || mkdir intl
482 printf "" > intl/Makefile.am
483 printf "" > ABOUT-NLS
486 # Libtoolize directory
487 ${libtoolize} --copy --force
488 if test -f "ltmain.sh"; then
489 echo "$0: working around a minor libtool issue"
490 mv ltmain.sh autotools/
495 ${aclocal} ${ACLOCAL_ARGS}
498 ${automake} --add-missing --copy
501 ## files which need to be regenerated
503 rm -f vlc-config.in vlc-config
504 rm -f src/misc/modules_builtin.h
505 rm -f mozilla/vlcintf.h
511 ## Tell the user about gettext, pkg-config and sed
513 if [ "${GETTEXT}" = "old" ]; then
516 ==========================================================
517 NOTE: you have an old version of gettext installed on your
518 system. The vlc build will work, but if your system does not
519 have libintl you will not have internationalization support.
520 We suggest upgrading to gettext 0.11.5 or later.
524 if [ "$PKGCONFIG" = "no" ]; then
527 ==============================================================
528 NOTE: you do not have the "pkg-config" utility on your system;
529 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
534 if [ "$AUTOMAKESUCKS" = "yes" ]; then
537 =============================================================
538 IMPORTANT NOTE: your version of automake has a bug which will
539 prevent proper plugin compilation. Either compile VLC with
540 the --disable-plugins flag, or use a version of automake newer
541 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
545 if [ "$INSTALLSUCKS" = "yes" ]; then
548 =============================================================
549 IMPORTANT NOTE: your version of automake has a bug which will
550 prevent proper installation. Do not use "make install" with this
551 version of automake, or use a version of automake newer than 1.5
552 (such as 1.6 or 1.7).