Automatic update of common submodule
[platform/upstream/gstreamer.git] / configure.ac
index a342361..d4e095b 100644 (file)
@@ -3,14 +3,14 @@ AC_PREREQ(2.62)
 dnl initialize autoconf
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, cvs and prerelease does Werror too
-AC_INIT(GStreamer libav, 1.0.1,
+AC_INIT(GStreamer libav, 1.3.0.1,
     http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
     gst-libav)
 
 AG_GST_INIT
 
 dnl initialize automake
-AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar])
+AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar subdir-objects])
 
 dnl define PACKAGE_VERSION_* variables
 AS_VERSION
@@ -22,7 +22,7 @@ dnl can autoconf find the source ?
 AC_CONFIG_SRCDIR([ext/libav/gstav.c])
 
 dnl define the output header for config
-AM_CONFIG_HEADER([config.h])
+AC_CONFIG_HEADERS([config.h])
 
 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
 AM_MAINTAINER_MODE([enable])
@@ -42,10 +42,11 @@ GST_API_VERSION=1.0
 AC_SUBST(GST_API_VERSION)
 
 AG_GST_LIBTOOL_PREPARE
-AS_LIBTOOL(GST, 1, 0, 1)
+AS_LIBTOOL(GST, 300, 0, 300)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.0.0
+GST_REQ=1.3.0.1
+GST_PBREQ=1.3.0.1
 
 ORC_REQ=0.4.16
 ORC_CHECK([$ORC_REQ])
@@ -66,6 +67,7 @@ AG_GST_ARG_WITH_PKG_CONFIG_PATH
 AG_GST_ARG_WITH_PACKAGE_NAME
 AG_GST_ARG_WITH_PACKAGE_ORIGIN
 AG_GST_ARG_VALGRIND
+AG_GST_ARG_GCOV
 
 dnl *** checks for platform ***
 
@@ -118,7 +120,7 @@ dnl checks for gstreamer
 dnl uninstalled is selected preferentially -- see pkg-config(1)
 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
-AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_REQ])
+AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_PBREQ])
 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
 
@@ -130,6 +132,28 @@ dnl *** set variables based on configure arguments ***
 dnl set location of plugin directory
 AG_GST_SET_PLUGINDIR
 
+dnl build static plugins or not
+AC_MSG_CHECKING([whether to build static plugins or not])
+AC_ARG_ENABLE(
+  static-plugins,
+  AC_HELP_STRING(
+    [--enable-static-plugins],
+    [build static plugins @<:@default=no@:>@]),
+  [AS_CASE(
+    [$enableval], [no], [], [yes], [],
+    [AC_MSG_ERROR([bad value "$enableval" for --enable-static-plugins])])],
+  [enable_static_plugins=no])
+AC_MSG_RESULT([$enable_static_plugins])
+if test "x$enable_static_plugins" = xyes; then
+  AC_DEFINE(GST_PLUGIN_BUILD_STATIC, 1,
+    [Define if static plugins should be built])
+  GST_PLUGIN_LIBTOOLFLAGS=""
+else
+  GST_PLUGIN_LIBTOOLFLAGS="--tag=disable-static"
+fi
+AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
+AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")
+
 dnl define an ERROR_CFLAGS Makefile variable
 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
     -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
@@ -182,7 +206,7 @@ AC_SUBST(GST_ALL_LDFLAGS)
 
 dnl this really should only contain flags, not libs - they get added before
 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
-GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
+GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
 AC_SUBST(GST_PLUGIN_LDFLAGS)
 
 dnl Add MacOSX specific flags
@@ -198,9 +222,14 @@ esac
 AC_SUBST(DARWIN_LDFLAGS)
 
 dnl *** Check for bz2
-AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzlibVersion, , bzlib.h, have_bz2=yes, have_bz2=no)
-AM_CONDITIONAL(HAVE_BZ2, test "x$have_bz2" = "xyes")
-if test "x$have_bz2" = "xno"; then
+save_LIBS=$LIBS
+LIBS="$LIBS -lbz2"
+AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
+AC_MSG_RESULT($HAVE_BZ2)
+LIBS=$save_LIBS
+AM_CONDITIONAL(HAVE_BZ2, test "x$HAVE_BZ2" = "xyes")
+if test "x$HAVE_BZ2" = "xno"; then
   AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
 fi
 
@@ -228,39 +257,7 @@ if test "x$with_system_libav" = "xyes"; then
   AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
   HAVE_LIBAV_UNINSTALLED=0
   AC_MSG_NOTICE([Using system-installed libav code])
-  AC_MSG_WARN([
-  ======================================================================
-   WARNING: you have chosen to build gst-libav against a random
-   external version of Libav instead of building it against the tested
-   internal Libav snapshot that is included with gst-libav.
-   
-   This is a very bad idea.  So bad in fact that words cannot express
-   just how bad it is.  Suffice to say that it is BAD.
-   
-   The GStreamer developers cannot and will not support a gst-libav
-   built this way.  Any bug reports that indicate there is an external
-   version of Libav involved will be closed immediately without further
-   investigation.
-   
-   The reason such a setup can't be supported is that the Libav API
-   and ABI is in constant flux, yet there aren't any official releases
-   of the Libav library to develop against.  This makes it impossible
-   to guarantee that gst-libav will work reliably, or even compile,
-   with a randomly picked version Libav.  Even if gst-libav compiles
-   and superficially appears to work fine against your chosen external
-   Libav version, that might just not be the case on other systems, or
-   even the same system at a later time, or when using decoders,
-   encoders, demuxers or muxers that have not been tested.
-   
-   Please do not create or distribute binary packages of gst-Libav
-   that link against an external libav. Thank you!
-  ======================================================================
-  ])
-
-  dnl No, this is not too extreme, we want people to see and read the above
-  sleep 15
 else
-
   AC_MSG_NOTICE([Using local Libav snapshot])
   
   dnl libgstlibav.la: include dirs
@@ -268,19 +265,35 @@ else
                 -I \$(top_builddir)/gst-libs/ext/libav \
                  -Wno-deprecated-declarations"
 
-  dnl libgstlibav.la: libs to statically link to        
-  LIBAV_LIBS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
-               \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
-               \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
+  LIBAV_DEPS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
+              \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
+              \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
+  if test "x$enable_static_plugins" = xyes; then
+      dnl with static linking we can't use the .a archive directly as they would
+      dnl be included in the final libgstlibav.a as a file and won't be usable.
+      dnl libav*.a must be copied to the final destination too
+      LIBAV_LIBS="-lavformat -lavcodec -lavutil"
+  else
+      dnl libgstlibav.la: libs to statically link to
+      LIBAV_LIBS="$LIBAV_DEPS"
+  fi
 
   dnl
   SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
                   -I \$(top_builddir)/gst-libs/ext/libav \
                   -Wno-deprecated-declarations"
 
-  dnl libgstswscale.la: libs to statically link to
-  SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
+  SWSCALE_DEPS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
                 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
+  if test "x$enable_static_plugins" = xyes; then
+      dnl with static linking we can't use the .a archive directly as they would
+      dnl be included in the final libgstswscale.a as a file and won't be usable.
+      dnl libav*.a must be copied to the final destination too
+      SWSCALE_LIBS="-lswscale -lavutil"
+  else
+      dnl libgstswscale.la: libs to statically link to
+      SWSCALE_LIBS="$SWSCALE_DEPS"
+  fi
 
   LIBAV_SUBDIRS=gst-libs
   AC_DEFINE(HAVE_AVI_H)
@@ -298,28 +311,32 @@ else
   emblibav_configure_args="$emblibav_configure_args --disable-avserver --disable-avplay\
         --disable-avconv --disable-avprobe --enable-static --enable-pic \
        --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
-       --disable-network --disable-hwaccels --disable-filters --disable-doc\
-       --enable-optimizations"
+       --disable-network --disable-hwaccels --disable-dxva2 --disable-vdpau\
+       --disable-filters --disable-doc --enable-optimizations"
 
   if test "x$enable_lgpl" != "xyes"; then
     emblibav_configure_args="$emblibav_configure_args --enable-gpl"
   fi
 
   # if we are cross-compiling, tell libav so
-  target_os=`echo $host_os | sed 's/-gnu//'`
+  case $host in
+      *android*)
+        target_os=linux
+      ;;
+      *darwin*)
+        target_os=darwin
+      ;;
+      *)
+        target_os=`echo $host_os | sed 's/-gnu//'`
+      ;;
+  esac
+
   if test "x$cross_compiling" = xyes; then
     emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
         --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
   fi
 
   case $host_os in
-    # Unfortunately, in Mac OS 10.5 the current rev of libav builds
-    # some non-PIC code into the .a file. See
-    # http://trac.macosforge.org/projects/macports/ticket/13725 for more
-    # info.
-    darwin*) 
-      emblibav_configure_args="$emblibav_configure_args --disable-mmx --disable-altivec"
-      ;;
     mingw32*)
       emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
       WIN32_LIBS="-lws2_32"
@@ -329,8 +346,28 @@ else
       ;;
   esac
 
+  if test x"$AR" != x; then
+    emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
+  fi
+
+  if test x"$AS" != x; then
+    emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$CC\\\""
+  fi
+
+  if test x"$CC" != x; then
+    emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
+  fi
+
+  if test x"$LD" != x; then
+    emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
+  fi
+
+  if test x"$NM" != x; then
+    emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
+  fi
+
   dnl checks for extra enable/disable flags
-  LIBAV_OPTS="(cd $srcdir/gst-libs/ext/libav && ./configure --help)"
+  LIBAV_OPTS=`cd $srcdir/gst-libs/ext/libav && ./configure --help`
   # Let's check if we can disable the building of the libav binary
   can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
   if test "$can_disable" != ""; then
@@ -373,9 +410,11 @@ else
 fi
 
 AC_SUBST(LIBAV_CFLAGS)
+AC_SUBST(LIBAV_DEPS)
 AC_SUBST(LIBAV_LIBS)
 AC_SUBST(LIBAV_SUBDIRS)
 AC_SUBST(SWSCALE_CFLAGS)
+AC_SUBST(SWSCALE_DEPS)
 AC_SUBST(SWSCALE_LIBS)
 AC_SUBST(WIN32_LIBS)
  
@@ -399,6 +438,8 @@ docs/version.entities
 tests/Makefile
 tests/check/Makefile
 tests/files/Makefile
+pkgconfig/Makefile
+pkgconfig/gstreamer-plugins-libav-uninstalled.pc
 )
 AC_OUTPUT