]> git.sesse.net Git - vlc/blobdiff - bootstrap
- Improve DIST_SUBDIR
[vlc] / bootstrap
index b46cd8a04f405b0436190510a8fda00682390c8c..915dc63f7c45fc3050b4aef81328262c2f38ea8e 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -1,11 +1,11 @@
 #! /bin/sh
 
 ##  bootstrap file for the VLC media player
-##  $Id$
 ##
 ## Copyright (C) 2005-2006 the VideoLAN team
 ##
-##  Initial author: Sam Hocevar <sam@zoy.org>
+##  Authors: Sam Hocevar <sam@zoy.org>
+##           RĂ©mi Denis-Courmont <rem # videolan # org>
 
 if test "$#" != "0"; then
   echo "Usage: $0"
@@ -35,7 +35,7 @@ ACLOCAL_ARGS="-I m4"
 
 # 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
@@ -48,42 +48,43 @@ if test -d extras/contrib/bin; then
   fi
 fi
 
+# Check for autoconf
+rm -f m4/autoconf260.m4
+case "$(autoconf --version|head -1)" in
+  *2.5[012345678]*)
+    echo "Hey, your autoconf is quite old. Update it." >&2
+    exit 1
+    ;;
+
+  *2.59*)
+    echo "Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP."
+    cp -f extras/m4/autoconf260.m4 m4/
+    ;;
+esac
+
 # 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
+amvers="no"
+for v in "-1.10" "110" "-1.9" "19"; do
+  if automake${v} --version >/dev/null 2>&1; then
+    amsuff="${v}"
+    amvers="`echo ${v} | sed -e 's/^-//'`"
+    break
   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
+done
 
-if test "${amvers}" = "none"; then
-  set +x
-  echo "$0: you need automake version 1.5 or later"
-  exit 1
+if test "${amvers}" = "no" && automake --version > /dev/null 2>&1; then
+  amvers="`automake --version | sed -e '1s/[^0-9]*//' -e q`"
+  amsuff=""
 fi
 
+case "${amvers}" in
+  no|1.[012345678]|1.[0123456].*|1[0123456]|1.[0123456]-*)
+    set +x
+    echo "$0: you need automake version 1.9 or later"
+    exit 1
+    ;;
+esac
+
 # Check for libtool
 libtoolize="no"
 if glibtoolize --version >/dev/null 2>&1; then
@@ -124,8 +125,8 @@ else
   PKGCONFIG=no
 fi
 
-aclocal=aclocal${amvers}
-automake=automake${amvers}
+aclocal=aclocal${amsuff}
+automake=automake${amsuff}
 autoconf=autoconf
 autoheader=autoheader
 
@@ -197,8 +198,8 @@ do
   extra_ltlibs=""
   for mod in $mods
   do
-    extra_libs="${extra_libs} lib${mod}_plugin.a lib${mod}.a lib${mod}_pic.a"
-    extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la lib${mod}.la"
+    extra_libs="${extra_libs} lib${mod}_plugin.a lib${mod}.a"
+    extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la"
   done
   rm -f "${makf}" && cat > "${makf}" << EOF
 
@@ -210,8 +211,10 @@ mods = ${mods}
 
 NULL =
 libvlc_LTLIBRARIES =
+noinst_LTLIBRARIES =
 EXTRA_DIST = Modules.am
 BUILT_SOURCES =
+clean_modules =
 SUBDIRS = ${subdirs}
 SUFFIXES = _plugin\$(LIBEXT) _plugin.a
 
@@ -224,26 +227,27 @@ include Modules.am
 
 LTLIBVLC = \$(top_builddir)/src/libvlc.la
 
-if BUILD_SHARED
-LIBVLC = \$(top_builddir)/src/libvlc\$(LIBEXT)
+if HAVE_WIN32
+LIBVLC = -L\$(top_builddir)/src -lvlc
 LIBADD = \$(LIBVLC)
 endif
 
 all: all-modules
 
+nice:
+       \$(top_builddir)/compile
+
 # Find out which modules were enabled and tell make to build them
 all-modules:
 if USE_LIBTOOL
        @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.la;; 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}.la;; esac; done; fi; \\
+       z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin.la;; esac; done; \\
        \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
        test -z "\$\$fail"
 else
        @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; \\
+       z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin\$(LIBEXT);; esac; done; \\
+       z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}.a;; esac; done; \\
        \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
        test -z "\$\$fail"
 endif
@@ -260,9 +264,9 @@ _plugin.a_plugin\$(LIBEXT):
        echo \$\$ld \$< \$\$ldfl ; \
        \$\$ld \$< \$\$ldfl
 #ifneq (,\$(findstring cygwin,\$(host)))
-#      mv -f "$@.exe" "$@"
+#      mv -f "\$@.exe" "\$@"
 #endif
-       @if test -f "$@.exe"; then mv -f "$@.exe" "$@"; fi
+       @if test -f "\$@.exe"; then mv -f "\$@.exe" "\$@"; fi
 
 if MAINTAINER_MODE
 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
@@ -270,7 +274,13 @@ if MAINTAINER_MODE
 endif
 
 mostlyclean-local:
+if USE_LIBTOOL
+       -rm -f *.la
+else
        -rm -f *.a *\$(LIBEXT)
+endif
+
+clean-local: \$(clean_modules)
 
 ### automake creates libvlcdir after running install-*-local
 ### so we have to create it ourselves first
@@ -280,7 +290,7 @@ if USE_LIBTOOL
          z=\$\$(\$(VLC_CONFIG) --list plugin); \
          m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
          test -z "\$\$m" || \
-           \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install ; \
+           \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install-libvlcLTLIBRARIES || exit \$\$? ; \
        fi
 else
        mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
@@ -293,26 +303,6 @@ else
              ;; \
          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
 endif
 
 uninstall-local:
@@ -321,7 +311,7 @@ if USE_LIBTOOL
          z=\$\$(\$(VLC_CONFIG) --list plugin); \
          m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
          test -z "\$\$m" || \
-           \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall ; \
+           \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall-libvlcLTLIBRARIES || exit \$\$?; \
        fi
 else
        @z=\$\$(\$(VLC_CONFIG) --list plugin); \
@@ -333,26 +323,6 @@ else
              ;; \
          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
 endif
 
 EOF
@@ -376,7 +346,7 @@ EOF
 
 EOF
     if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
-clean-local: clean-${mod}
+clean_modules += clean-${mod}
 clean-${mod}:
        -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
 
@@ -403,36 +373,20 @@ lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \\
-       -rpath '\$(libvlcdir)' -module -shrext \$(LIBEXT)
+       -rpath '\$(libvlcdir)' -avoid-version -module -shrext \$(LIBEXT) \\
+       -export-symbol-regex ^\$(VLC_ENTRY)\$\$ -no-undefined
 lib${mod}_plugin_la_LIBADD = \$(LTLIBVLC)
 
-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 = \$(SOURCES_${mod})
-lib${mod}_la_SOURCES = \$(SOURCES_${mod})
 EOF
     if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
-nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
-nodist_lib${mod}_la_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
+nodist_lib${mod}_a_SOURCES = \$(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}\`
-lib${mod}_la_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
-lib${mod}_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
-lib${mod}_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
-lib${mod}_la_LDFLAGS = \`\$(VLC_CONFIG) --libs ${mod}\` -static
+lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
+lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
+lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
 
 EOF
   done
@@ -476,9 +430,7 @@ 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
+# remove vlc cruft
 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
 
 # Automake complains if these are not present
@@ -496,19 +448,35 @@ if test -f "ltmain.sh"; then
   mv ltmain.sh autotools/
 fi
 
+# patch for DLL link for libtool on cygwin (remove when fixed)
+if test ".`uname -s|sed -n '/^CYGWIN/p'`" != "."; then
+patch -s -p0 << 'EOF'
+--- autotools/ltmain.orig      2006-12-05 15:15:42.064607000 +0000
++++ autotools/ltmain.sh        2006-12-05 15:16:24.705777800 +0000
+@@ -4360,7 +4360,7 @@
+     prog)
+       case $host in
+-      *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
++      *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,;s,.dll.exe$,.dll,'` ;;
+       esac
+       if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+EOF
+fi
+
 # Do the rest
 ${autopoint} -f
 ${aclocal} ${ACLOCAL_ARGS}
 ${autoconf}
 ${autoheader}
-${automake} --add-missing --copy
+${automake} --add-missing --copy -Wall
 
 ##
 ##  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
 
 # Shut up
 set +x
@@ -537,25 +505,3 @@ 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
-