blob: fd7a25677c1c4a6e140aa2618c15c90f2da91453 [file] [log] [blame]
Luca Ceresoli13293402010-06-14 21:41:42 +02001#############################################################
2#
3# ffmpeg
4#
5#############################################################
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -03006
Luca Ceresolidb818412012-07-31 10:51:30 +02007FFMPEG_VERSION = 0.8.12
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -03008FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.bz2
9FFMPEG_SITE = http://ffmpeg.org/releases
Luca Ceresoli13293402010-06-14 21:41:42 +020010FFMPEG_INSTALL_STAGING = YES
Luca Ceresoli13293402010-06-14 21:41:42 +020011
Luca Ceresolia17d8942013-02-07 11:02:33 +000012FFMPEG_LICENSE = LGPLv2.1+, libjpeg license
13FFMPEG_LICENSE_FILES = LICENSE COPYING.LGPLv2.1
14ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)
15FFMPEG_LICENSE += and GPLv2+
16FFMPEG_LICENSE_FILES += COPYING.GPLv2
17endif
18
Luca Ceresoli13293402010-06-14 21:41:42 +020019FFMPEG_CONF_OPT = \
20 --prefix=/usr \
Luca Ceresoli13293402010-06-14 21:41:42 +020021 --disable-avfilter \
Peter Korsgaarddcad5232011-05-13 15:12:25 +020022 $(if $(BR2_HAVE_DOCUMENTATION),,--disable-doc)
Luca Ceresoli13293402010-06-14 21:41:42 +020023
24ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)
25FFMPEG_CONF_OPT += --enable-gpl
26else
27FFMPEG_CONF_OPT += --disable-gpl
28endif
29
30ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y)
31FFMPEG_CONF_OPT += --enable-nonfree
32else
33FFMPEG_CONF_OPT += --disable-nonfree
34endif
35
Luca Ceresoli5253efa2010-06-14 21:41:43 +020036ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y)
37FFMPEG_CONF_OPT += --enable-ffmpeg
38else
39FFMPEG_CONF_OPT += --disable-ffmpeg
40endif
41
42ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y)
43FFMPEG_DEPENDENCIES += sdl
44FFMPEG_CONF_OPT += --enable-ffplay
45FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config
46else
47FFMPEG_CONF_OPT += --disable-ffplay
48endif
49
50ifeq ($(BR2_PACKAGE_FFMPEG_FFSERVER),y)
51FFMPEG_CONF_OPT += --enable-ffserver
52else
53FFMPEG_CONF_OPT += --disable-ffserver
54endif
55
Peter Korsgaard4ff34552010-10-07 09:54:00 +020056ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y)
57FFMPEG_CONF_OPT += --enable-postproc
58else
59FFMPEG_CONF_OPT += --disable-postproc
60endif
61
62ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)
63FFMPEG_CONF_OPT += --enable-swscale
64else
65FFMPEG_CONF_OPT += --disable-swscale
66endif
67
Luca Ceresoli56e4d692010-06-14 21:41:44 +020068ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all)
69FFMPEG_CONF_OPT += --disable-encoders \
70 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x))
71endif
72
73ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all)
74FFMPEG_CONF_OPT += --disable-decoders \
75 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x))
76endif
77
78ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all)
79FFMPEG_CONF_OPT += --disable-muxers \
80 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x))
81endif
82
83ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all)
84FFMPEG_CONF_OPT += --disable-demuxers \
85 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x))
86endif
87
88ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all)
89FFMPEG_CONF_OPT += --disable-parsers \
90 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x))
91endif
92
93ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all)
94FFMPEG_CONF_OPT += --disable-bsfs \
95 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsf=$(x))
96endif
97
98ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all)
99FFMPEG_CONF_OPT += --disable-protocols \
100 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x))
101endif
102
103ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all)
104FFMPEG_CONF_OPT += --disable-filters \
105 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x))
106endif
107
108ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y)
109FFMPEG_CONF_OPT += --enable-indevs
110else
111FFMPEG_CONF_OPT += --disable-indevs
112endif
113
114ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y)
115FFMPEG_CONF_OPT += --enable-outdevs
116else
117FFMPEG_CONF_OPT += --disable-outdevs
118endif
119
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100120ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
Luca Ceresoli13293402010-06-14 21:41:42 +0200121FFMPEG_CONF_OPT += --enable-pthreads
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100122else
123FFMPEG_CONF_OPT += --disable-pthreads
Luca Ceresoli13293402010-06-14 21:41:42 +0200124endif
125
126ifeq ($(BR2_PACKAGE_ZLIB),y)
127FFMPEG_CONF_OPT += --enable-zlib
128FFMPEG_DEPENDENCIES += zlib
129else
130FFMPEG_CONF_OPT += --disable-zlib
131endif
132
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100133ifeq ($(BR2_i386)$(BR2_x86_64),y)
Gustavo Zacarias3f6aa3e2011-02-28 11:18:21 -0300134# MMX on is default for x86, disable it for lowly x86-type processors
135ifeq ($(BR2_x86_i386)$(BR2_x86_i486)$(BR2_x86_i586)$(BR2_x86_i686)$(BR2_x86_pentiumpro)$(BR2_x86_geode),y)
136FFMPEG_CONF_OPT += --disable-mmx
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100137else
138# If it is enabled, nasm is required
139FFMPEG_DEPENDENCIES += host-nasm
140endif
Gustavo Zacarias3f6aa3e2011-02-28 11:18:21 -0300141endif
142
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000143# Explicitly disable everything that doesn't match for ARM
144# FFMPEG "autodetects" by compiling an extended instruction via AS
145# This works on compilers that aren't built for generic by default
Gustavo Zacarias38393222013-04-04 07:29:48 +0000146ifeq ($(BR2_arm7tdmi)$(BR2_arm720t)$(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300147FFMPEG_CONF_OPT += --disable-armv5te
148endif
149ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf-s),y)
150FFMPEG_CONF_OPT += --enable-armv6
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000151else
152FFMPEG_CONF_OPT += --disable-armv6 --disable-armv6t2
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300153endif
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000154ifeq ($(BR2_arm10)$(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf-s)$(BR2_cortex_a5)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a15),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300155FFMPEG_CONF_OPT += --enable-armvfp
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000156else
157FFMPEG_CONF_OPT += --disable-armvfp
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300158endif
Peter Korsgaardce8a7d52012-12-13 23:25:30 +0100159ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300160FFMPEG_CONF_OPT += --enable-neon
161endif
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000162
Mike Williams29a07682011-05-12 16:12:40 -0400163# Set powerpc altivec appropriately
164ifeq ($(BR2_powerpc),y)
165ifeq ($(BR2_powerpc_7400)$(BR2_powerpc_7450)$(BR2_powerpc_970),y)
Peter Korsgaard3c61d732012-02-13 22:26:26 +0100166FFMPEG_CONF_OPT += --enable-altivec
Mike Williams29a07682011-05-12 16:12:40 -0400167else
168FFMPEG_CONF_OPT += --disable-altivec
169endif
170endif
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300171
Luca Ceresoli5db72042010-06-14 21:41:45 +0200172FFMPEG_CONF_OPT += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF))
173
Luca Ceresoli13293402010-06-14 21:41:42 +0200174# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others
175define FFMPEG_CONFIGURE_CMDS
176 (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \
177 $(TARGET_CONFIGURE_OPTS) \
178 $(TARGET_CONFIGURE_ARGS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200179 $(FFMPEG_CONF_ENV) \
180 ./configure \
181 --enable-cross-compile \
182 --cross-prefix=$(TARGET_CROSS) \
183 --sysroot=$(STAGING_DIR) \
Peter Korsgaarde18087a2011-01-01 11:49:01 +0100184 --host-cc="$(HOSTCC)" \
Luca Ceresoli13293402010-06-14 21:41:42 +0200185 --arch=$(BR2_ARCH) \
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300186 --target-os=linux \
Luca Ceresoli13293402010-06-14 21:41:42 +0200187 --extra-cflags=-fPIC \
Luca Ceresoli97a42962011-06-20 17:59:54 +0200188 $(SHARED_STATIC_LIBS_OPTS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200189 $(FFMPEG_CONF_OPT) \
190 )
191endef
192
Arnout Vandecappelle (Essensium/Mind)e1502eb2012-07-03 00:07:32 +0200193$(eval $(autotools-package))