X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=bootstrap;h=52a754ad4d4c1c1883182365aca90767e00a6f1d;hb=670c37bdcf25ed7c5bdc04c6250fb380f3a8debf;hp=ed62199741a17ec1ce57756343cadb216849fdd6;hpb=7a79cedebf6e0bde2e6a3a0be818593a5d7b35d2;p=vlc diff --git a/bootstrap b/bootstrap index ed62199741..52a754ad4d 100755 --- a/bootstrap +++ b/bootstrap @@ -1,11 +1,11 @@ #! /bin/sh ## bootstrap file for the VLC media player -## $Id$ ## -## Copyright (C) 2005 the VideoLAN team +## Copyright (C) 2005-2006 the VideoLAN team ## -## Initial author: Sam Hocevar +## Authors: Sam Hocevar +## Rémi Denis-Courmont if test "$#" != "0"; then echo "Usage: $0" @@ -17,8 +17,6 @@ fi ### ### Get a sane environment, just in case ### -LANG=C -export LANG CYGWIN=binmode export CYGWIN @@ -28,14 +26,12 @@ set -x ## ## Check for various tools ## -AUTOMAKESUCKS=no -INSTALLSUCKS=no -ACLOCAL_ARGS="-I m4" +ACLOCAL_ARGS="-I m4 ${ACLOCAL_ARGS}" # Check for contrib directory if test -d extras/contrib/bin; then - export PATH=./extras/contrib/bin:$PATH + export PATH="`pwd`/extras/contrib/bin:$PATH" if test -d extras/contrib/share/aclocal; then ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal" fi @@ -46,61 +42,30 @@ if test -d extras/contrib/bin; then export LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH export BELIBRARIES=./extras/contrib/lib:$BELIBRARIES fi -fi - -# Check for automake -amvers="none" -if automake-1.9 --version >/dev/null 2>&1; then - amvers="-1.9" -elif automake-1.8 --version >/dev/null 2>&1; then - amvers="-1.8" -elif automake-1.7 --version >/dev/null 2>&1; then - amvers="-1.7" -elif automake-1.6 --version >/dev/null 2>&1; then - amvers="-1.6" - if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then - AUTOMAKESUCKS=yes - fi -elif automake-1.5 --version >/dev/null 2>&1; then - INSTALLSUCKS=yes - amvers="-1.5" -elif automake --version > /dev/null 2>&1; then - amvers="" - case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in - 0|0.*|1|1.[01234]|1.[01234][-.]*) - amvers="none" ;; - 1.5|1.5.*) - INSTALLSUCKS=yes ;; - 1.6|1.6.0|1.6.1) - AUTOMAKESUCKS=yes ;; - 1.9|1.9.2) - ;; - esac -fi - -if test "${amvers}" = "none"; then +elif test ".`uname -s`" = ".Darwin"; then set +x - echo "you need automake version 1.5 or later" + echo "" + echo "ERR: Contribs haven't been built" + echo "ERR: Please run:" + echo "ERR: " + echo "ERR: 'cd extras/contrib && ./bootstrap && make && cd ../..'" + echo "ERR: " + echo "ERR: Make sure fink has been disabled too." + echo "" + set -x exit 1 fi -# Check for gettext -if gettextize --version >/dev/null 2>&1; then -# Autopoint is available from 0.11.3, but we need 0.11.5 -if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \ - '>=' 0.11.5 >/dev/null 2>&1; then - # We have gettext, and a recent version! Everything is cool. - autopoint=autopoint - GETTEXT=yes -else - # User's gettext is too old. try to continue anyway. - autopoint=: - GETTEXT=old -fi;else - set +x - echo "you need gettextize (package gettext-devel or gettext)" - exit 1 -fi +# Check for autoconf +rm -f m4/autoconf260.m4 +case "$(autoreconf --version|head -n 1)" in + *2.59*) + echo "Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP." + echo "Press Enter to continue" + read + cp -f extras/buildsystem/autotools/m4/autoconf260.m4 m4/ + ;; +esac # Check for pkg-config if pkg-config --version >/dev/null 2>&1; then @@ -110,11 +75,6 @@ else PKGCONFIG=no fi -aclocal=aclocal${amvers} -automake=automake${amvers} -autoconf=autoconf -autoheader=autoheader - ## ## Generate the modules makefile, by parsing modules/**/Modules.am ## @@ -135,28 +95,7 @@ AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])]) EOF fi -if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF -dnl User does not have gettext, so this is a no-op -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) - -EOF -fi - -rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF -dnl The required AM_CONDITIONAL calls -dnl XXX: too many conditionals make the build very slow, disabled them -AC_DEFUN([VLC_CONDITIONALS], [ -EOF -rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF -dnl The required AC_SUBST calls -AC_DEFUN([VLC_SUBSTS], [ -EOF -rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF -dnl The required AC_OUTPUT calls -dnl XXX: this feature is only supported starting from automake-1.7 -AC_DEFUN([VLC_MAKEFILES], [AC_OUTPUT([ -EOF -rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF +cat >> m4/private.m4 << EOF dnl Helper macro for vlc-config generation AC_DEFUN([VLC_CONFIG_HELPER], [ cat >> vlc-config.in << BLAH @@ -167,292 +106,38 @@ modules="" rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF # Autogenerated by bootstrap - DO NOT EDIT EXTRA_DIST = LIST +dist_noinst_SCRIPTS = genmf SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs` -EOF - -for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac` -do - printf "." - modf="modules/${dir}/Modules.am" - makf="modules/${dir}/Makefile.am" - basedir="`echo "${dir}" | cut -f1 -d/`" - # automake will not recurse for make dist if we don't define SUBDIRS = . - subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`" - mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`" - extra_libs="" - for mod in $mods - do - extra_libs="${extra_libs} lib${mod}_plugin.a" - extra_libs="${extra_libs} lib${mod}.a lib${mod}_pic.a" - done - rm -f "${makf}" && cat > "${makf}" << EOF - -# ${makf} automatically generated from ${modf} by bootstrap -# DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead - -basedir = ${basedir} -mods = ${mods} - -NULL = -libvlc_LIBRARIES = -noinst_LIBRARIES = -noinst_HEADERS = -EXTRA_DIST = Modules.am -BUILT_SOURCES = -SUBDIRS = ${subdirs} -SUFFIXES = _plugin\$(LIBEXT) _plugin.a - -libvlcdir = \$(libdir)/vlc/\$(basedir) - -EXTRA_LIBRARIES = ${extra_libs} -include Modules.am - -if BUILD_SHARED -if BUILD_PIC -LIBVLC = \$(top_builddir)/libvlc_pic\$(LIBEXT) -else -LIBVLC = \$(top_builddir)/libvlc\$(LIBEXT) -endif -if HAVE_WIN32 -LIBADD = \$(LIBVLC) -endif -if HAVE_WINCE -LIBADD = \$(LIBVLC) -endif -if HAVE_DARWIN -LIBADD = \$(LIBVLC) -endif -endif - -all: all-modules - -# Find out which modules were enabled and tell make to build them -all-modules: - @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\ - 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; \\ - 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; \\ - 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; \\ - \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\ - test -z "\$\$fail" - -# Build a plugin with the adequate linker and linker's flags -_plugin.a_plugin\$(LIBEXT): - @mod="\$*" ; mod=\$\${mod#lib} ; \ - ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBADD) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \ - case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\ - c++) ld="\$(CXXLINK)" ;; \ - objc) ld="\$(OBJCLINK)" ;; \ - c|*) ld="\$(LINK)" ;; \ - esac ; \ - echo \$\$ld \$< \$\$ldfl ; \ - \$\$ld \$< \$\$ldfl - -if MAINTAINER_MODE -\$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap - cd \$(top_srcdir) && \$(SHELL) ./bootstrap -endif - -mostlyclean-local: - -rm -f *.a *\$(LIBEXT) - -### automake creates libvlcdir after running install-*-local -### so we have to create it ourselves first -install-exec-local: all-modules - mkdir -p -- "\$(DESTDIR)\$(libvlcdir)" - @z=\$\$(\$(VLC_CONFIG) --list plugin); \ - for mod in \$(mods); do \ - case "\$\$z " \ - in *\ \$\${mod}\ *) \ - echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \ - \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \ - ;; \ - esac; \ - done - @z=\$\$(\$(VLC_CONFIG) --list builtin); \ - for mod in \$(mods); do \ - case "\$\$z " \ - in *\ \$\${mod}\ *) \ - echo \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \ - \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \ - ;; \ - esac; \ - done -if BUILD_MOZILLA - @z=\$\$(\$(VLC_CONFIG) --list builtin); \ - for mod in \$(mods); do \ - case "\$\$z " \ - in *\ \$\${mod}\ *) \ - echo \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \ - \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \ - ;; \ - esac; \ - done -endif - -uninstall-local: - @z=\$\$(\$(VLC_CONFIG) --list plugin); \ - for mod in \$(mods); do \ - case "\$\$z " \ - in *\ \$\${mod}\ *) \ - echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \ - rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \ - ;; \ - esac; \ - done - @z=\$\$(\$(VLC_CONFIG) --list builtin); \ - for mod in \$(mods); do \ - case "\$\$z " \ - in *\ \$\${mod}\ *) \ - echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \ - rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \ - ;; \ - esac; \ - done -if BUILD_MOZILLA - @z=\$\$(\$(VLC_CONFIG) --list builtin); \ - for mod in \$(mods); do \ - case "\$\$z " \ - in *\ \$\${mod}\ *) \ - echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \ - rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \ - ;; \ - esac; \ - done -endif EOF - for mod in $mods - do - if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then - NODIST=''; else - NODIST='#'; fi - cat >> m4/private.m4-tmp4 << EOF - ${mod}) list="\\\${list} ${dir}/lib${mod}" ;; -EOF -# Generation of modules/**/Makefile.am -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_, -# S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce -# the resulting file size. -# - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to -# work properly with any automake version I tested. - cat >> "${makf}" << EOF -# The ${mod} plugin -EOF - if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF -clean-local: clean-${mod} -clean-${mod}: - -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod}) +modules/genmf `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac` -EOF - fi - if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF -BUILT_SOURCES += \$(B${mod}) -EOF - fi - cat >> "${makf}" << EOF -lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod}) -EOF - if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF -nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod}) -EOF - fi - cat >> "${makf}" << EOF -lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\` -lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\` -lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\` - -lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod}) -EOF - if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF -nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod}) -EOF - fi - cat >> "${makf}" << EOF -lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\` -lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\` -lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\` - -lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod}) -EOF - if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF -nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod}) -EOF - fi - cat >> "${makf}" << EOF -lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\` -lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\` -lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\` - -EOF - done -done - -cat >> m4/private.m4-tmp1 << EOF -]) -EOF -cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1 -cat >> m4/private.m4-tmp2 << EOF -]) -EOF -cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2 -cat >> m4/private.m4-tmp3 << EOF -])]) -EOF -cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3 -cat >> m4/private.m4-tmp4 << EOF +cat >> m4/private.m4 << EOF BLAH ]) EOF -cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4 - -echo " done." ### ### classic bootstrap stuff ### set -x -# remove autotools cruft -rm -f aclocal.m4 configure config.log config.h config.h.in -rm -Rf autom4te*.cache -# remove old autotools extra cruft -rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh -# remove new autotools extra cruft -rm -Rf autotools -mkdir autotools -# remove libtool cruft -rm -f ltmain.sh libtool ltconfig -# remove gettext cruft -rm -f ABOUT-NLS -rm -Rf intl -# remove old vlc cruft -rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am -# remove new vlc cruft -rm -f stamp-builtin stamp-h* mozilla/stamp-pic - # Automake complains if these are not present -rm -f vlc-config.in && printf "" > vlc-config.in -if [ "$GETTEXT" != "yes" ]; then - test -d intl || mkdir intl - printf "" > intl/Makefile.am - printf "" > ABOUT-NLS -fi +echo > vlc-config.in +cp -f INSTALL INSTALL.svn -# Do the rest -${autopoint} -f -${aclocal} ${ACLOCAL_ARGS} -${autoconf} -${autoheader} -${automake} --add-missing --copy +autoreconf --install --force --verbose ${ACLOCAL_ARGS} +rm -f po/Makevars.template +echo > ABOUT-NLS +mv -f INSTALL.svn INSTALL ## ## files which need to be regenerated ## rm -f vlc-config.in vlc-config rm -f src/misc/modules_builtin.h -rm -f mozilla/vlcintf.h +rm -f stamp-builtin stamp-h* mozilla/stamp-pic # Shut up set +x @@ -460,17 +145,6 @@ set +x ## ## Tell the user about gettext, pkg-config and sed ## -if [ "${GETTEXT}" = "old" ]; then - cat << EOF - -========================================================== -NOTE: you have an old version of gettext installed on your -system. The vlc build will work, but if your system does not -have libintl you will not have internationalization support. -We suggest upgrading to gettext 0.11.5 or later. -EOF -fi - if [ "$PKGCONFIG" = "no" ]; then cat << EOF @@ -481,25 +155,4 @@ reliable. EOF fi -if [ "$AUTOMAKESUCKS" = "yes" ]; then - cat << EOF - -============================================================= -IMPORTANT NOTE: your version of automake has a bug which will -prevent proper plugin compilation. Either compile VLC with -the --disable-plugins flag, or use a version of automake newer -than 1.6.1 (1.6.2 is OK, and so are the 1.5 series). -EOF -fi - -if [ "$INSTALLSUCKS" = "yes" ]; then - cat << EOF - -============================================================= -IMPORTANT NOTE: your version of automake has a bug which will -prevent proper installation. Do not use "make install" with this -version of automake, or use a version of automake newer than 1.5 -(such as 1.6 or 1.7). -EOF -fi - +echo "Successfully bootstrapped"