-AC_PREREQ([2.68])
+AC_PREREQ([2.69])
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, git and prerelease does Werror too
dnl
-AC_INIT([GStreamer],[1.1.0.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
+AC_INIT([GStreamer],[1.5.1.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
AG_GST_INIT
dnl initialize automake (we require GNU make)
-AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar])
+AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
dnl define PACKAGE_VERSION_* variables
AS_VERSION
AC_CONFIG_SRCDIR([gst/gst.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])
dnl sets host_* variables
AC_CANONICAL_HOST
-dnl use pretty build output with automake >= 1.11
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],
- [AM_DEFAULT_VERBOSITY=1
- AC_SUBST(AM_DEFAULT_VERBOSITY)])
+dnl use pretty build output by default
+AM_SILENT_RULES([yes])
dnl GStreamer versioning, this is mostly informational
GST_VERSION_MAJOR=$PACKAGE_VERSION_MAJOR
dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
dnl - interfaces added -> increment AGE
dnl - interfaces removed -> AGE = 0
+dnl
+dnl Keep CURRENT as MINOR * 100 + MICRO
+dnl Ex : 1.0.0 => 0
+dnl 1.0.3 => 3
+dnl 1.1.0 => 100
+dnl 1.2.5 => 205
+dnl 1.10.9 (who knows) => 1009
+dnl
dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 2, 0, 2)
+AS_LIBTOOL(GST, 501, 0, 501)
dnl *** autotools stuff ****
["${srcdir}/gstreamer.doap"],
[$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
+dnl check for bash completion
+AC_ARG_WITH([bash-completion-dir],
+ AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
+ [Install the bash auto-completion script in this directory. @<:@default=yes@:>@]),
+ [],
+ [with_bash_completion_dir=yes])
+
+if test "x$with_bash_completion_dir" = "xyes"
+then
+ extra_args=
+
+ if test "x$prefix" != "xNONE"
+ then
+ extra_args="--define-variable=prefix=\"$prefix\""
+ fi
+
+ PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
+ [BASH_COMPLETION_DIR="`eval pkg-config $extra_args --variable=completionsdir bash-completion`"],
+ [BASH_COMPLETION_DIR="$datadir/bash-completion/completions"])
+ PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0],
+ [BASH_HELPERS_DIR="`eval pkg-config $extra_args --variable=helpersdir bash-completion`"],
+ [BASH_HELPERS_DIR="$datadir/bash-completion/helpers"])
+else
+ BASH_COMPLETION_DIR="$with_bash_completion_dir/completions"
+ BASH_HELPERS_DIR="$with_bash_completion_dir/helpers"
+fi
+
+AC_SUBST([BASH_COMPLETION_DIR])
+AC_SUBST([BASH_HELPERS_DIR])
+AM_CONDITIONAL([ENABLE_BASH_COMPLETION],[test "x$with_bash_completion_dir" != "xno"])
+
+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 building of tests
AC_ARG_ENABLE(tests,
AS_HELP_STRING([--disable-tests],[disable building test apps]),
[Define if we should poison deallocated memory])
fi
+dnl PTP support parts
+AC_MSG_CHECKING([whether PTP support can be enabled])
+case "$host_os" in
+ *android*)
+ dnl Can't run on Android because of permissions
+ HAVE_PTP=no
+ ;;
+ mingw*|pw32*|cygwin*)
+ dnl Not ported to Windows yet
+ HAVE_PTP=no
+ ;;
+ darwin*)
+ dnl Can't run on iOS because of permissions
+ AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_PTP="no", HAVE_PTP="yes", [-])
+ ;;
+ linux*|darwin*|solaris*|netbsd*|freebsd*|openbsd*|kfreebsd*|dragonfly*|gnu*)
+ HAVE_PTP=yes
+ ;;
+ *)
+ HAVE_PTP=no
+ ;;
+esac
+AC_MSG_RESULT([$HAVE_PTP])
+
+dnl user/group to change to in gst-ptp-helper
+AC_ARG_WITH([ptp-helper-setuid-user],
+ AS_HELP_STRING([--with-ptp-helper-setuid-user],[User to switch to when installing gst-ptp-helper setuid root]),
+ [
+ if test "x$withval" != "x"
+ then
+ AC_DEFINE_UNQUOTED(HAVE_PTP_HELPER_SETUID_USER, "$withval", [PTP helper setuid user])
+ fi
+ ], []
+)
+
+dnl group/group to change to in gst-ptp-helper
+AC_ARG_WITH([ptp-helper-setuid-group],
+ AS_HELP_STRING([--with-ptp-helper-setuid-group],[Group to switch to when installing gst-ptp-helper setuid root]),
+ [
+ if test "x$withval" != "x"
+ then
+ AC_DEFINE_UNQUOTED(HAVE_PTP_HELPER_SETUID_GROUP, "$withval", [PTP helper setuid group])
+ fi
+ ], []
+)
+
+AC_ARG_WITH(
+ ptp-helper-permissions,
+ AC_HELP_STRING(
+ [--with-ptp-helper-permissions],
+ [how to gain PTP permissions (none, setuid-root, capabilities, auto)]),
+ [],
+ [with_ptp_helper_permissions=auto])
+
+gst_ptp_have_cap=no
+AG_GST_CHECK_LIBHEADER(CAP, cap,
+ cap_init, ,
+ sys/capability.h,
+ CAP_LIBS="-lcap"
+ AC_SUBST(CAP_LIBS)
+ gst_ptp_have_cap=yes)
+
+AC_PATH_PROG([SETCAP], [setcap], [no], [$PATH:/usr/bin:/bin:/usr/sbin:/sbin])
+
+if test "x$HAVE_PTP" = "xyes"; then
+AC_DEFINE(HAVE_PTP, 1, [PTP support available])
+
+AC_MSG_CHECKING([for SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [[
+ #include <sys/ioctl.h>
+ #include <net/if.h>
+ ]],
+ [[
+ struct ifreq ifr;
+ struct ifconf ifc;
+ ioctl(0, SIOCGIFCONF, &ifc);
+ ioctl(0, SIOCGIFFLAGS, &ifr);
+ ioctl(0, SIOCGIFHWADDR, &ifr);
+ int dummy = ifr.ifr_hwaddr.sa_data[0];
+ ]])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SIOCGIFCONF_SIOCGIFFLAGS_SIOCGIFHWADDR, 1, [SIOCGIFCONF, SIOCGIFFLAGS and SIOCGIFHWADDR is available])
+ ], [
+ AC_MSG_RESULT(no)
+])
+
+AC_MSG_CHECKING([for getifaddrs() and AF_LINK])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [[
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <net/if_dl.h>
+ ]],
+ [[
+ struct ifaddrs *ifaddr;
+ getifaddrs(&ifaddr);
+ int dummy = (ifaddr->ifa_flags & IFF_LOOPBACK) && ifaddr->ifa_addr->sa_family != AF_LINK;
+ ]])], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_GETIFADDRS_AF_LINK, 1, [getifaddrs() and AF_LINK is available])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+
+AC_MSG_CHECKING([how to install gst-ptp-helper])
+if test "x$with_ptp_helper_permissions" = "xauto"; then
+ if test "x$gst_ptp_have_cap" = "xyes" -a "x$SETCAP" != "xno"; then
+ with_ptp_helper_permissions="capabilities"
+ else
+ with_ptp_helper_permissions="setuid-root"
+ fi
+fi
+AC_MSG_RESULT([$with_ptp_helper_permissions])
+
+case "$with_ptp_helper_permissions" in
+ none)
+ ;;
+ setuid-root)
+ AC_DEFINE(HAVE_PTP_HELPER_SETUID, 1,
+ [Use setuid-root for permissions in PTP helper])
+ ;;
+ capabilities)
+ AC_DEFINE(HAVE_PTP_HELPER_CAPABILITIES, 1,
+ [Use capabilities for permissions in PTP helper])
+ ;;
+ *)
+ AC_MSG_ERROR(Invalid parameter [$with_ptp_helper_permissions])
+ ;;
+esac
+
+fi
+
+AM_CONDITIONAL(HAVE_PTP, test "x$HAVE_PTP" = "xyes")
+AM_CONDITIONAL(HAVE_PTP_HELPER_SETUID, test "x$with_ptp_helper_permissions" = "xsetuid-root")
+AM_CONDITIONAL(HAVE_PTP_HELPER_CAPABILITIES, test "x$with_ptp_helper_permissions" = "xcapabilities")
+
dnl *** checks for platform ***
dnl * hardware/architecture *
AC_CHECK_HEADERS([stdio_ext.h], [], [], [AC_INCLUDES_DEFAULT])
dnl check for pthreads
-AX_PTHREAD([HAVE_PTHREAD=yes], [HAVE_PTHREAD=no])
-AM_CONDITIONAL(HAVE_PTHREAD, test "x$HAVE_PTHREAD" = "xyes")
+dnl without arguments AX_PTHREAD() will do AC_DEFINE(HAVE_PTHREAD)
+dnl which later checks use in their test code
+AX_PTHREAD()
+AM_CONDITIONAL(HAVE_PTHREAD, test "x$ax_pthread_ok" = "xyes")
dnl check for sys/prctl for setting thread name on Linux
AC_CHECK_HEADERS([sys/prctl.h], [], [], [AC_INCLUDES_DEFAULT])
+dnl check for pthread_setname_np(const char*)
+dnl which is present on OS X 10.6, iOS 3.2 and above
+AC_MSG_CHECKING(for pthread_setname_np(const char*))
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <pthread.h>],
+ [pthread_setname_np("example")])],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID,1,
+ [Have function pthread_setname_np(const char*)])],
+ [AC_MSG_RESULT(no)])
+
+dnl check for sys/uio.h for writev()
+AC_CHECK_HEADERS([sys/uio.h], [], [], [AC_INCLUDES_DEFAULT])
+
dnl Check for valgrind.h
dnl separate from HAVE_VALGRIND because you can have the program, but not
dnl the dev package
dnl *** checks for library functions ***
+AC_CHECK_FUNCS([strcasestr])
+
AC_CHECK_FUNCS([gmtime_r])
AC_CHECK_FUNCS([localtime_r])
AC_CHECK_FUNCS([sigaction])
AC_CHECK_LIB(rt, clock_gettime, [
AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
LIBS="$LIBS -lrt"
+ ], [
+ AC_CHECK_LIB(pthread, clock_gettime, [
+ AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
+ LIBS="$LIBS -lpthread"
+ ])
])
])
dnl Check for a way to display the function name in debug output
AG_GST_CHECK_FUNCTION
-dnl test for register_printf_specifier or register_printf_function
-AC_CHECK_FUNCS([register_printf_specifier register_printf_function],
- [HAVE_PRINTF_EXTENSION=yes])
-
-if test "$HAVE_PRINTF_EXTENSION" = yes; then
- GST_PRINTF_EXTENSION_POINTER_FORMAT_DEFINE="#define GST_PTR_FORMAT \"P\""
- GST_PRINTF_EXTENSION_SEGMENT_FORMAT_DEFINE="#define GST_SEGMENT_FORMAT \"Q\""
- GST_USING_PRINTF_EXTENSION_DEFINE="#define GST_USING_PRINTF_EXTENSION"
- AC_DEFINE(HAVE_PRINTF_EXTENSION, 1,
- [Defined if we have printf specifier extensions available])
-else
- GST_PRINTF_EXTENSION_POINTER_FORMAT_DEFINE="#define GST_PTR_FORMAT \"p\""
- GST_PRINTF_EXTENSION_SEGMENT_FORMAT_DEFINE="#define GST_SEGMENT_FORMAT \"p\""
- GST_USING_PRINTF_EXTENSION_DEFINE="#undef GST_USING_PRINTF_EXTENSION"
-fi
-AC_SUBST(GST_PRINTF_EXTENSION_POINTER_FORMAT_DEFINE)
-AC_SUBST(GST_PRINTF_EXTENSION_SEGMENT_FORMAT_DEFINE)
-AC_SUBST(GST_USING_PRINTF_EXTENSION_DEFINE)
-
dnl test if we have dladdr(); we use it for debugging; see gst/gstinfo.c
save_cflags="$CFLAGS"
CFLAGS="$CFLAGS -D_GNU_SOURCE"
LIBS="$LIBS -ldl")
CFLAGS="$save_cflags"
+dnl Check printf stuff
+if test "x${GST_DISABLE_GST_DEBUG}" != "xyes"; then
+ AC_TYPE_LONG_LONG_INT
+ AC_TYPE_UNSIGNED_LONG_LONG_INT
+
+ if test x$ac_cv_type_long_long_int$ac_cv_type_unsigned_long_long_int = xyesyes; then
+ AC_DEFINE([HAVE_LONG_LONG], [1], [Define to 1 if the system has the type long long])
+ fi
+
+ dnl /usr/share/aclocal/inttypes_h.m4 - ships with gettext apparently
+ gl_AC_HEADER_INTTYPES_H
+
+ dnl /usr/share/aclocal/stdint_h.m4 - ships with gettext apparently
+ gl_AC_HEADER_STDINT_H
+
+ AC_CHECK_TYPES(ptrdiff_t)
+
+ AC_TYPE_INTMAX_T
+ AC_TYPE_SIZE_T
+fi
+
dnl *** checks for dependency libraries ***
dnl GLib
dnl define an ERROR_CFLAGS Makefile variable
AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [-Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return -Wno-multichar -Wnested-externs $NO_WARNINGS])
+dnl special warning flags for gst/printf
+AS_COMPILER_FLAG([-Wno-format-nonliteral], [PRINTF_CFLAGS="-Wno-format-nonliteral"])
+AC_SUBST(PRINTF_CFLAGS)
+
dnl define correct level for debugging messages
AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
dnl GST_PLUGIN_LDFLAGS
dnl LDFLAGS for plugins; includes GST_ALL_LDFLAGS
-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, "$GST_PLUGIN_LDFLAGS")
dnl plugin scanner locations
"$GST_PLUGIN_SCANNER_INSTALLED", [location of the installed gst-plugin-scanner])
AC_SUBST(GST_PLUGIN_SCANNER_INSTALLED)
+dnl ptp helper locations
+AS_AC_EXPAND(GST_PTP_HELPER_INSTALLED,${libexecdir}/gstreamer-$GST_API_VERSION/gst-ptp-helper)
+AC_DEFINE_UNQUOTED(GST_PTP_HELPER_INSTALLED,
+ "$GST_PTP_HELPER_INSTALLED", [location of the installed gst-ptp-helper])
+AC_SUBST(GST_PTP_HELPER_INSTALLED)
+
dnl things for our internal libcheck (must be called even if building
dnl libcheck is disabled because it defines conditionals)
AG_GST_CHECK_CHECKS()
AC_CONFIG_FILES(
Makefile
+data/Makefile
gst/Makefile
gst/gstconfig.h
gst/gstversion.h
gst/parse/Makefile
+gst/printf/Makefile
libs/Makefile
libs/gst/Makefile
libs/gst/base/Makefile
libs/gst/check/Makefile
libs/gst/check/libcheck/Makefile
-libs/gst/check/libcheck/check.h
+libs/gst/check/internal-check.h:libs/gst/check/libcheck/check.h.in
libs/gst/controller/Makefile
libs/gst/helpers/Makefile
libs/gst/net/Makefile
tests/examples/controller/Makefile
tests/examples/stepping/Makefile
tests/examples/helloworld/Makefile
-tests/examples/launch/Makefile
tests/examples/manual/Makefile
tests/examples/memory/Makefile
-tests/examples/metadata/Makefile
-tests/examples/queue/Makefile
+tests/examples/netclock/Makefile
+tests/examples/ptp/Makefile
+tests/examples/streamiddemux/Makefile
tests/examples/streams/Makefile
-tests/examples/typefind/Makefile
tools/Makefile
common/Makefile
common/m4/Makefile
Allocation tracing : ${enable_alloc_trace}
Plugin registry : ${enable_registry}
Plugin support : ${enable_plugin}
+ Static plugins : ${enable_static_plugins}
Unit testing support : ${BUILD_CHECK}
+ PTP clock support : ${HAVE_PTP}
Debug : ${USE_DEBUG}
Profiling : ${USE_PROFILING}