diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | Makefile.am | 8 | ||||
-rwxr-xr-x | autogen.sh | 141 | ||||
-rw-r--r-- | configure.ac | 270 |
4 files changed, 299 insertions, 121 deletions
diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..30c993fb --- /dev/null +++ b/ChangeLog @@ -0,0 +1 @@ +EMPTY FILE diff --git a/Makefile.am b/Makefile.am index 1f2bcdb4..fad0a41c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,15 +1,15 @@ -ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} +ACLOCAL_AMFLAGS = -I m4 -I common/m4 ${ACLOCAL_FLAGS} -AUTOMAKE_OPTIONS = foreign +SUBDIRS = gst-libs gst tests common -SUBDIRS = gst-libs gst tests docs +DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc # Extra clean files so that maintainer-clean removes *everything* MAINTAINERCLEANFILES = \ $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \ $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \ $(GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL) \ - $(srcdir)/gtk-doc.make $(srcdir)/m4/gtk-doc.m4 \ + $(srcdir)/autoregen.sh $(srcdir)/INSTALL \ $(NULL) -include $(top_srcdir)/git.mk @@ -1,55 +1,124 @@ #!/bin/sh +# +# gstreamer-vaapi autogen.sh +# +# Run this to generate all the initial makefiles, etc. +# +# This file has been generated from common/autogen.sh.in via common/update-autogen -PROJECT="gstreamer-vaapi" -test -n "$srcdir" || srcdir="`dirname \"$0\"`" +test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=. -if ! test -f "$srcdir/configure.ac"; then - echo "Failed to find the top-level $PROJECT directory" - exit 1 -fi - -olddir="`pwd`" +olddir=`pwd` cd "$srcdir" -mkdir -p m4 +package=gstreamer-vaapi +srcfile=gstreamer-vaapi.doap -GIT=`which git` -if test -z "$GIT"; then - echo "*** No git found ***" - exit 1 -else - submodule_init="no" - for ext_module in codecparsers; do - if test ! -f ext/${ext_module}/autogen.sh; then - submodule_init="yes" - fi - done - if test "$submodule_init" = "yes"; then - $GIT submodule init +# Make sure we have common +if test ! -f common/gst-autogen.sh; +then + echo "+ Setting up common submodule" + git submodule init +fi +git submodule update + +# source helper functions +if test ! -f common/gst-autogen.sh; +then + echo There is something wrong with your source tree. + echo You are missing common/gst-autogen.sh + exit 1 +fi +. common/gst-autogen.sh + +# install pre-commit hook for doing clean commits +if test ! \( -x .git/hooks/pre-commit -a -L .git/hooks/pre-commit \); +then + rm -f .git/hooks/pre-commit + if ! ln -s ../../common/hooks/pre-commit.hook .git/hooks/pre-commit 2> /dev/null + then + echo "Failed to create commit hook symlink, copying instead ..." + cp common/hooks/pre-commit.hook .git/hooks/pre-commit fi - $GIT submodule update fi -GTKDOCIZE=`which gtkdocize` -if test -z "$GTKDOCIZE"; then - echo "*** No gtk-doc support ***" - echo "EXTRA_DIST =" > gtk-doc.make -else - gtkdocize || exit $? +# GNU gettext automake support doesn't get along with git. +# https://bugzilla.gnome.org/show_bug.cgi?id=661128 +if test -d po ; then + touch -t 200001010000 po/gstreamer-vaapi-1.0.pot fi -AUTORECONF=`which autoreconf` -if test -z "$AUTORECONF"; then - echo "*** No autoreconf found ***" +CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc' + +if test "x$package" = "xgstreamer"; then + CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --enable-docbook --enable-failing-tests --enable-poisoning" +elif test "x$package" = "xgst-plugins-bad"; then + CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-player-tests" +fi + +autogen_options $@ + +printf "+ check for build tools" +if test -z "$NOCHECK"; then + echo + + printf " checking for autoreconf ... " + echo + which "autoreconf" 2>/dev/null || { + echo "not found! Please install the autoconf package." + exit 1 + } + + printf " checking for pkg-config ... " + echo + which "pkg-config" 2>/dev/null || { + echo "not found! Please install pkg-config." exit 1 + } else - autoreconf -v --install || exit $? + echo ": skipped version checks" fi -cd "$olddir" +# if no arguments specified then this will be printed +if test -z "$*" && test -z "$NOCONFIGURE"; then + echo "+ checking for autogen.sh options" + echo " This autogen script will automatically run ./configure as:" + echo " ./configure $CONFIGURE_DEF_OPT" + echo " To pass any additional options, please specify them on the $0" + echo " command line." +fi + +toplevel_check $srcfile -if test -z "$NO_CONFIGURE"; then - $srcdir/configure "$@" && echo "Now type 'make' to compile $PROJECT." +# autopoint +if test -d po && grep ^AM_GNU_GETTEXT_VERSION configure.ac >/dev/null ; then + tool_run "autopoint" "--force" fi + +# aclocal +if test -f acinclude.m4; then rm acinclude.m4; fi + +autoreconf --force --install || exit 1 + +test -n "$NOCONFIGURE" && { + echo "+ skipping configure stage for package $package, as requested." + echo "+ autogen.sh done." + exit 0 +} + +cd "$olddir" + +echo "+ running configure ... " +test ! -z "$CONFIGURE_DEF_OPT" && echo " default flags: $CONFIGURE_DEF_OPT" +test ! -z "$CONFIGURE_EXT_OPT" && echo " external flags: $CONFIGURE_EXT_OPT" +echo + +echo "$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT +"$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT || { + echo " configure failed" + exit 1 +} + +echo "Now type 'make' to compile $package." diff --git a/configure.ac b/configure.ac index 8689f0a5..299d7523 100644 --- a/configure.ac +++ b/configure.ac @@ -2,16 +2,19 @@ m4_define([gst_vaapi_major_version], [0]) m4_define([gst_vaapi_minor_version], [7]) m4_define([gst_vaapi_micro_version], [1]) -m4_define([gst_vaapi_pre_version], [1]) +m4_define([gst_vaapi_nano_version], [1]) m4_define([gst_vaapi_version], [gst_vaapi_major_version.gst_vaapi_minor_version.gst_vaapi_micro_version]) -m4_if(gst_vaapi_pre_version, [0], [], [ -m4_append([gst_vaapi_version], gst_vaapi_pre_version, [.pre]) -]) +m4_if(gst_vaapi_nano_version, [0], [], + [m4_append([gst_vaapi_version], gst_vaapi_nano_version, [.])]) # Configure defaults m4_define([default_glapi], [any]) +dnl - library source changed -> increment REVISION +dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0 +dnl - interfaces added -> increment AGE +dnl - interfaces removed -> AGE = 0 # gstreamer-vaapi library (libtool) version number m4_define([gst_vaapi_lt_current], [7]) m4_define([gst_vaapi_lt_revision], [0]) @@ -44,25 +47,41 @@ AC_INIT([GStreamer VA-API Plug-ins], [gst_vaapi_version], [http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer], [gstreamer-vaapi]) +dnl define the output header for config AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) -AC_CANONICAL_TARGET +AG_GST_INIT +dnl initialize automake AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects]) -dnl Use pretty build output +dnl define PACKAGE_VERSION_* variables +AS_VERSION + +dnl check if this is a release version +AS_NANO(GST_GIT="no", GST_GIT="yes") + +dnl AM_MAINTAINER_MODE only provides the option to configure to enable it +AM_MAINTAINER_MODE([enable]) + +dnl use pretty build output by default AM_SILENT_RULES([yes]) -dnl Check for tools -AC_PROG_CC -AM_PROG_CC_C_O +dnl our libraries and install dirs use GST_API_VERSION in the filename +dnl to allow side-by-side installation of different API versions +GST_API_VERSION=1.0 +AC_SUBST([GST_API_VERSION]) +AC_DEFINE_UNQUOTED([GST_API_VERSION], ["$GST_API_VERSION"], + [GStreamer API Version]) -AC_ARG_VAR([GIT], [Path to git program, if any]) -AC_PATH_PROG([GIT], [git]) -AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"]) +AG_GST_LIBTOOL_PREPARE + +dnl CURRENT, REVISION, AGE +dnl sets GST_LT_LDFLAGS +AS_LIBTOOL(GST, gst_vaapi_lt_current, gst_vaapi_lt_revision, gst_vaapi_lt_age) dnl *** required versions of GStreamer stuff *** GLIB_REQ=glib_version @@ -79,9 +98,20 @@ VAAPI_DRM_REQ=va_api_drm_version VAAPI_X11_REQ=va_api_x11_version VAAPI_WLD_REQ=va_api_wld_version -dnl Initialize libtool -LT_PREREQ([2.2.6]) -LT_INIT +dnl *** autotools stuff **** + +dnl allow for different autotools +AS_AUTOTOOLS_ALTERNATE + +dnl Add parameters for aclocal +AC_SUBST([ACLOCAL_AMFLAGS], ["-I m4 -I common/m4"]) + +dnl *** check for arguments to configure *** + +AG_GST_ARG_DISABLE_FATAL_WARNINGS +AG_GST_ARG_DEBUG + +AG_GST_ARG_WITH_PKG_CONFIG_PATH AC_ARG_ENABLE([encoders], AS_HELP_STRING([--enable-encoders], @@ -118,17 +148,33 @@ AC_ARG_WITH([glapi], [build with the specified OpenGL APIs @<:@default=default_glapi@:>@]), [GLAPI="$with_glapi"], [GLAPI=default_glapi]) -dnl Check for basic libraries -AC_CHECK_LIB([m], [tan]) +dnl *** checks for platform *** -dnl Check for Gtk doc -# gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line -m4_ifdef([GTK_DOC_CHECK], [ -GTK_DOC_CHECK([$GTKDOC_REQ], [--flavour no-tmpl])], [ -AM_CONDITIONAL([ENABLE_GTK_DOC], [false])]) +dnl * hardware/architecture * -dnl Check for GLib -PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_REQ]) +dnl check CPU type +AG_GST_ARCH + +dnl *** checks for programs *** + +dnl find a compiler +AC_PROG_CC +AC_PROG_CC_STDC + +dnl check if the compiler supports '-c' and '-o' options +AM_PROG_CC_C_O + +dnl check for git command for version generation in libgstvaapi +AC_PATH_PROG([GIT], [git]) +AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"]) + +dnl check for documentation tools +GTK_DOC_CHECK([$GTKDOC_REQ]) +AG_GST_PLUGIN_DOCS([$GTKDOC_REQ]) + +dnl *** checks for libraries *** +dnl check for libm, for sin() etc. +AC_CHECK_LIB([m], [tan]) dnl Check to see if dlopen is in default libraries (like Solaris, which dnl has it in libc), or if libdl is needed to get it. @@ -136,47 +182,65 @@ AC_CHECK_FUNC([dlopen], [], [ AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])]) AC_SUBST([DLOPEN_LIBS]) +dnl define LIBDIR so we can inform people where we live +AS_AC_EXPAND([LIBDIR], [$libdir]) +AC_DEFINE_UNQUOTED([LIBDIR], ["$LIBDIR"], [library dir]) + +dnl set location of plugin directory +AG_GST_SET_PLUGINDIR + +dnl *** checks for header files *** + +dnl *** checks for types/defines *** + +dnl *** checks for structures *** + +dnl *** checks for compiler characteristics *** + +dnl *** checks for library functions *** + +dnl *** checks for headers *** + +dnl *** checks for dependency libraries *** + dnl --------------------------------------------------------------------------- dnl -- GStreamer -- dnl --------------------------------------------------------------------------- -GST_PKG_VERSION="1.0" -AC_SUBST([GST_PKG_VERSION]) -AC_DEFINE_UNQUOTED([GST_PKG_VERSION_S], ["$GST_PKG_VERSION"], - [Defined to the string representation of GStreamer API version]) +dnl GLib is required +AG_GST_GLIB_CHECK([$GLIB_REQ]) -dnl GStreamer Core -PKG_CHECK_MODULES([GST], [gstreamer-$GST_PKG_VERSION >= $GST_REQ]) +dnl checks for gstreamer +dnl uninstalled is selected preferentially -- see pkg-config(1) +AG_GST_CHECK_GST([$GST_API_VERSION], [$GST_REQ], [yes]) +dnl back compatibility AC_MSG_CHECKING([for GStreamer API version]) -gst_api_version=`$PKG_CONFIG --modversion "gstreamer-$GST_PKG_VERSION"` +gst_api_version=`$PKG_CONFIG --modversion "gstreamer-$GST_API_VERSION"` gst_major_version=`echo "$gst_api_version" | cut -d'.' -f1` gst_minor_version=`echo "$gst_api_version" | cut -d'.' -f2` -GST_API_VERSION="${gst_major_version}.${gst_minor_version}" -AC_MSG_RESULT([$GST_API_VERSION]) -AC_DEFINE_UNQUOTED([GST_API_VERSION_S], ["$GST_API_VERSION"], +GST_VERSION="${gst_major_version}.${gst_minor_version}" +AC_MSG_RESULT([$GST_VERSION]) +AC_DEFINE_UNQUOTED([GST_API_VERSION_S], ["$GST_VERSION"], [Defined to the string representation of GStreamer version]) -PKG_CHECK_MODULES([GST_BASE], [gstreamer-base-$GST_PKG_VERSION >= $GST_REQ]) - -dnl GStreamer -base plugins -PKG_CHECK_MODULES([GST_PLUGINS_BASE], - [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PBREQ]) +AG_GST_CHECK_GST_BASE([$GST_API_VERSION], [$GST_REQ], [yes]) +AG_GST_CHECK_GST_PLUGINS_BASE([$GST_API_VERSION], [$GST_PBREQ], [yes]) -dnl ... gst_dmabuf_memory_get_fd (gstreamer-allocators) -PKG_CHECK_MODULES([GST_ALLOCATORS], - [gstreamer-allocators-$GST_PKG_VERSION >= $GST_PBREQ]) +dnl gst_dmabuf_memory_get_fd (gstreamer-allocators) +AG_GST_CHECK_MODULES([GST_ALLOCATORS], + [gstreamer-allocators-$GST_API_VERSION], [$GST_PBREQ], [yes]) -dnl ... GstVideoOverlayComposition (gstreamer-video) -PKG_CHECK_MODULES([GST_VIDEO], - [gstreamer-video-$GST_PKG_VERSION >= $GST_PBREQ]) +dnl GstVideoOverlayComposition (gstreamer-video) +AG_GST_CHECK_MODULES([GST_VIDEO], + [gstreamer-video-$GST_API_VERSION], [$GST_PBREQ], [yes]) dnl ... GStreamer base utils (gstreamer-pbutils) -PKG_CHECK_MODULES([GST_PBUTILS], - [gstreamer-pbutils-$GST_PKG_VERSION >= $GST_PBREQ]) +AG_GST_CHECK_MODULES([GST_PBUTILS], + [gstreamer-pbutils-$GST_API_VERSION], [$GST_PBREQ], [yes]) -dnl ... bitstream parsers -PKG_CHECK_MODULES([GST_CODEC_PARSERS], - [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PBADREQ]) +dnl bitstream parsers (gstreamer-codecparsers) +AG_GST_CHECK_MODULES([GST_CODEC_PARSERS], + [gstreamer-codecparsers-$GST_API_VERSION], [$GST_PBADREQ], [yes]) dnl ... VP9 parser, with required extensions HAVE_GST_VP9_PARSER=0 @@ -211,7 +275,7 @@ dnl ... opengl helper libraries HAVE_GSTGL=0 if test "x$enable_opengl" = "xyes"; then PKG_CHECK_MODULES([GST_GL], - [gstreamer-gl-$GST_PKG_VERSION >= $GST_PBADREQ], + [gstreamer-gl-$GST_API_VERSION >= $GST_PBADREQ], [ HAVE_GSTGL=1 AC_CACHE_CHECK([for GStreamer OpenGL helper libraries], @@ -249,34 +313,6 @@ if test "x$enable_egl" = "xyes" -a $HAVE_GSTGL -ne 1; then enable_egl="no" fi -dnl GST_ALL_LDFLAGS: -dnl LDFLAGS 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_ALL_LDFLAGS="-no-undefined" -AC_SUBST([GST_ALL_LDFLAGS]) - -dnl GST_PLUGIN_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_.*_get_type)\$\$' $GST_ALL_LDFLAGS" -AC_SUBST([GST_PLUGIN_LDFLAGS]) - -dnl Check for the GStreamer plugins directory -AC_ARG_VAR([GST_PLUGIN_PATH_1_0], - [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0]) -AC_MSG_CHECKING([for GStreamer plugins directory]) -if test -n "$GST_PLUGIN_PATH_1_0"; then - GST_PLUGINS_DIR="$GST_PLUGIN_PATH_1_0" -else - GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir` - if test -z "$GST_PLUGINS_DIR"; then - GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION" - fi -fi -AC_MSG_RESULT([$GST_PLUGINS_DIR]) -plugindir="$GST_PLUGINS_DIR" -AC_SUBST([plugindir]) - dnl --------------------------------------------------------------------------- dnl -- Renderers -- dnl --------------------------------------------------------------------------- @@ -820,6 +856,77 @@ if test $USE_WAYLAND -eq 1; then [], [USE_WAYLAND=0]) fi +dnl *** finalize CFLAGS, LDFLAGS, LIBS + +# set by AG_GST_PARSE_SUBSYSTEM_DISABLES above +dnl make sure it doesn't complain about unused variables if debugging is disabled +NO_WARNINGS="" +AG_GST_CHECK_GST_DEBUG_DISABLED([NO_WARNINGS="-Wno-unused"], [ + -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls + -Wwrite-strings -Wformat-security -Wold-style-definition + -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar + -Wnested-externs $NO_WARNINGS]) + +dnl define an ERROR_CFLAGS Makefile variable +AG_GST_SET_ERROR_CFLAGS([$FATAL_WARNINGS], [$NO_WARNINGS]) + +dnl define correct level for debugging messages +AG_GST_SET_LEVEL_DEFAULT([$GST_GIT]) + +dnl Overview: +dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ... +dnl GST_*: flags shared by built objects to link against GStreamer +dnl GST_ALL_LDFLAGS: linker flags shared by all +dnl GST_LIB_LDFLAGS: additional linker flags for all libaries +dnl GST_LT_LDFLAGS: library versioning of our libraries +dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins + +dnl GST_OPTION_CFLAGS +if test "x$USE_DEBUG" = xyes; then + PROFILE_CFLAGS="-g" +fi +AC_SUBST([PROFILE_CFLAGS]) + +if test "x$GST_GIT" = "xyes"; then + DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED" +else + DEPRECATED_CFLAGS="" +fi +AC_SUBST([DEPRECATED_CFLAGS]) + +dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden +dnl at make time with e.g. make ERROR_CFLAGS="" +GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(DEPRECATED_CFLAGS)" +AC_SUBST([GST_OPTION_CFLAGS]) + +dnl FIXME: do we want to rename to GST_ALL_* ? +dnl prefer internal headers to already installed ones +dnl also add builddir include for enumtypes and marshal +dnl add GST_OPTION_CFLAGS, but overridable +GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API" +GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)" +AC_SUBST([GST_CFLAGS]) + +dnl LDFLAGS 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_ALL_LDFLAGS="-no-undefined" +if test "x${enable_Bsymbolic}" = "xyes"; then + GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions" +fi +AC_SUBST([GST_ALL_LDFLAGS]) + +dnl GST_LIB_LDFLAGS +dnl linker flags shared by all libraries +dnl LDFLAGS modifier defining exported symbols from built libraries +dnl (export _gst_foo but not __gst_foo) +GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*" +AC_SUBST([GST_LIB_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_.*' $GST_ALL_LDFLAGS" +AC_SUBST([GST_PLUGIN_LDFLAGS]) + dnl --------------------------------------------------------------------------- dnl -- Generate files and summary -- dnl --------------------------------------------------------------------------- @@ -894,9 +1001,10 @@ AC_DEFINE_UNQUOTED([GST_VAAPI_MAJOR_VERSION_S], ["0"], AC_CONFIG_FILES([ Makefile + common/Makefile + common/m4/Makefile docs/Makefile docs/reference/Makefile - docs/reference/plugins/Makefile docs/reference/plugins/plugins-docs.xml gst-libs/Makefile gst-libs/gst/Makefile @@ -924,7 +1032,7 @@ echo echo $PACKAGE configuration summary: echo echo Installation Prefix .............. : ${prefix} -echo GStreamer API version ............ : $GST_API_VERSION +echo GStreamer API version ............ : $GST_VERSION echo VA-API version ................... : $VA_VERSION_STR echo Video encoding ................... : $(yesno $USE_ENCODERS) echo Video outputs .................... : $VIDEO_OUTPUTS |