kumquat-buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk
Giulio Benetti a2e55071b4 package/gstreamer/gst-ffmpeg: re-enable package when gcc bug 85180 is present
With Microblaze Gcc version < 8.x the build hangs to gcc bug 85180:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. This package has
been excluded from building if the toolchain is affected by gcc bug
85180. To be consistent with how we deal with this issue in other
packages, we re-enable the package and instead work around the issue
by building with -O0, since gcc bug 85180 manifests itself only when
optimization is enabled.

To achieve this:

- add --disable-optimizations to EXTRA_OPTS, which gets passed down to
  the built-in libav library
- pass -O0 to CFLAGS in CONF_ENV

Then we remove 'depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_85180' and its
comment if not available from Config.in

Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
[Thomas: tweak CFLAGS logic, improve commit log]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-05-24 22:16:08 +02:00

104 lines
3.1 KiB
Makefile

################################################################################
#
# gst-ffmpeg
#
################################################################################
GST_FFMPEG_VERSION = 0.10.13
GST_FFMPEG_SOURCE = gst-ffmpeg-$(GST_FFMPEG_VERSION).tar.bz2
GST_FFMPEG_SITE = http://gstreamer.freedesktop.org/src/gst-ffmpeg
GST_FFMPEG_INSTALL_STAGING = YES
GST_FFMPEG_DEPENDENCIES = host-pkgconf gstreamer gst-plugins-base
ifeq ($(BR2_PACKAGE_GST_FFMPEG_GPL),y)
GST_FFMPEG_CONF_OPTS += --disable-lgpl
GST_FFMPEG_LICENSE = GPL-2.0+ (gst-ffmpeg), GPL-2.0+/GPL-3.0+ (libav)
GST_FFMPEG_LICENSE_FILES = COPYING gst-libs/ext/libav/COPYING.GPLv2 gst-libs/ext/libav/COPYING.GPLv3
else
GST_FFMPEG_CONF_OPTS += --enable-lgpl
GST_FFMPEG_LICENSE = LGPL-2.0+ (gst-ffmpeg), LGPL-2.1+/LGPL-3.0+ (libav)
GST_FFMPEG_LICENSE_FILES = COPYING.LIB gst-libs/ext/libav/COPYING.LGPLv2.1 gst-libs/ext/libav/COPYING.LGPLv3
endif
GST_FFMPEG_CONF_EXTRA_OPTS = \
--cross-prefix=$(TARGET_CROSS) \
--target-os=linux \
--pkg-config='$(PKG_CONFIG_HOST_BINARY)'
ifeq ($(BR2_PACKAGE_ZLIB),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-zlib
GST_FFMPEG_DEPENDENCIES += zlib
else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-zlib
endif
ifeq ($(BR2_PACKAGE_BZIP2),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-bzlib
GST_FFMPEG_DEPENDENCIES += bzip2
else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-bzlib
endif
ifeq ($(BR2_X86_CPU_HAS_MMX),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-yasm
GST_FFMPEG_DEPENDENCIES += host-yasm
else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-yasm
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-mmx
endif
ifeq ($(BR2_X86_CPU_HAS_SSE),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-sse
else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-sse
endif
ifeq ($(BR2_X86_CPU_HAS_SSSE3),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-ssse3
else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-ssse3
endif
# Explicitly disable everything that doesn't match for ARM
# FFMPEG "autodetects" by compiling an extended instruction via AS
# This works on compilers that aren't built for generic by default
ifeq ($(BR2_ARM_CPU_ARMV4),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv5te
endif
ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6
else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2
endif
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-neon
endif
ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-altivec
else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-altivec
endif
# libav configure script misdetects the VIS optimizations as being
# available, so forcefully disable them.
ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-vis
endif
ifeq ($(BR2_STATIC_LIBS),)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-pic
endif
GST_FFMPEG_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-optimizations
GST_FFMPEG_CFLAGS += -O0
endif
GST_FFMPEG_CONF_ENV += CFLAGS="$(GST_FFMPEG_CFLAGS)"
GST_FFMPEG_CONF_OPTS += --with-ffmpeg-extra-configure="$(GST_FFMPEG_CONF_EXTRA_OPTS)"
$(eval $(autotools-package))