blob: 6339cca99b438323b53bb8ea3646132691f3d629 [file] [log] [blame]
Alexandre Belloni8dfd59d2013-06-05 23:53:30 +00001################################################################################
Luca Ceresoli13293402010-06-14 21:41:42 +02002#
3# ffmpeg
4#
Alexandre Belloni8dfd59d2013-06-05 23:53:30 +00005################################################################################
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -03006
Bernd Kuhls0f57fcb2014-09-21 18:55:51 +02007FFMPEG_VERSION = 2.4
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 \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +010021 --enable-avfilter \
22 --disable-debug \
23 --disable-version3 \
24 --enable-logging \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +010025 --enable-optimizations \
26 --disable-extra-warnings \
27 --disable-ffprobe \
28 --enable-avdevice \
29 --enable-avcodec \
30 --enable-avformat \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +010031 --disable-x11grab \
32 --enable-network \
33 --disable-gray \
34 --enable-swscale-alpha \
35 --disable-small \
36 --enable-dct \
37 --enable-fft \
38 --enable-mdct \
39 --enable-rdft \
40 --disable-crystalhd \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +010041 --disable-vdpau \
42 --disable-dxva2 \
43 --enable-runtime-cpudetect \
44 --disable-hardcoded-tables \
45 --disable-memalign-hack \
46 --enable-hwaccels \
47 --disable-avisynth \
48 --disable-frei0r \
49 --disable-libopencore-amrnb \
50 --disable-libopencore-amrwb \
51 --disable-libopencv \
52 --disable-libdc1394 \
53 --disable-libfaac \
54 --disable-libfreetype \
55 --disable-libgsm \
56 --disable-libmp3lame \
57 --disable-libnut \
58 --disable-libopenjpeg \
59 --disable-librtmp \
60 --disable-libschroedinger \
61 --disable-libspeex \
62 --disable-libtheora \
63 --disable-libvo-aacenc \
64 --disable-libvo-amrwbenc \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +010065 --disable-symver \
Thomas De Schampheleire7164a322014-02-05 14:50:56 +010066 --disable-doc
Luca Ceresoli13293402010-06-14 21:41:42 +020067
Bernd Kuhls62ab07e2014-01-02 18:59:44 +010068FFMPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)
69
Luca Ceresoli13293402010-06-14 21:41:42 +020070ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)
71FFMPEG_CONF_OPT += --enable-gpl
72else
73FFMPEG_CONF_OPT += --disable-gpl
74endif
75
76ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y)
77FFMPEG_CONF_OPT += --enable-nonfree
78else
79FFMPEG_CONF_OPT += --disable-nonfree
80endif
81
Luca Ceresoli5253efa2010-06-14 21:41:43 +020082ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y)
83FFMPEG_CONF_OPT += --enable-ffmpeg
84else
85FFMPEG_CONF_OPT += --disable-ffmpeg
86endif
87
88ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y)
89FFMPEG_DEPENDENCIES += sdl
90FFMPEG_CONF_OPT += --enable-ffplay
91FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config
92else
93FFMPEG_CONF_OPT += --disable-ffplay
94endif
95
96ifeq ($(BR2_PACKAGE_FFMPEG_FFSERVER),y)
97FFMPEG_CONF_OPT += --enable-ffserver
98else
99FFMPEG_CONF_OPT += --disable-ffserver
100endif
101
Peter Korsgaard4ff34552010-10-07 09:54:00 +0200102ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y)
103FFMPEG_CONF_OPT += --enable-postproc
104else
105FFMPEG_CONF_OPT += --disable-postproc
106endif
107
108ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)
109FFMPEG_CONF_OPT += --enable-swscale
110else
111FFMPEG_CONF_OPT += --disable-swscale
112endif
113
Luca Ceresoli56e4d692010-06-14 21:41:44 +0200114ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all)
115FFMPEG_CONF_OPT += --disable-encoders \
116 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x))
117endif
118
119ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all)
120FFMPEG_CONF_OPT += --disable-decoders \
121 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x))
122endif
123
124ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all)
125FFMPEG_CONF_OPT += --disable-muxers \
126 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x))
127endif
128
129ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all)
130FFMPEG_CONF_OPT += --disable-demuxers \
131 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x))
132endif
133
134ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all)
135FFMPEG_CONF_OPT += --disable-parsers \
136 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x))
137endif
138
139ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all)
140FFMPEG_CONF_OPT += --disable-bsfs \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100141 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsfs=$(x))
Luca Ceresoli56e4d692010-06-14 21:41:44 +0200142endif
143
144ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all)
145FFMPEG_CONF_OPT += --disable-protocols \
146 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x))
147endif
148
149ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all)
150FFMPEG_CONF_OPT += --disable-filters \
151 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x))
152endif
153
154ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y)
155FFMPEG_CONF_OPT += --enable-indevs
156else
157FFMPEG_CONF_OPT += --disable-indevs
158endif
159
160ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y)
161FFMPEG_CONF_OPT += --enable-outdevs
162else
163FFMPEG_CONF_OPT += --disable-outdevs
164endif
165
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100166ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
Luca Ceresoli13293402010-06-14 21:41:42 +0200167FFMPEG_CONF_OPT += --enable-pthreads
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100168else
169FFMPEG_CONF_OPT += --disable-pthreads
Luca Ceresoli13293402010-06-14 21:41:42 +0200170endif
171
172ifeq ($(BR2_PACKAGE_ZLIB),y)
173FFMPEG_CONF_OPT += --enable-zlib
174FFMPEG_DEPENDENCIES += zlib
175else
176FFMPEG_CONF_OPT += --disable-zlib
177endif
178
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100179ifeq ($(BR2_PACKAGE_BZIP2),y)
180FFMPEG_CONF_OPT += --enable-bzlib
181FFMPEG_DEPENDENCIES += bzip2
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100182else
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100183FFMPEG_CONF_OPT += --disable-bzlib
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100184endif
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100185
186ifeq ($(BR2_PACKAGE_OPENSSL),y)
Peter Korsgaard457b6462014-01-13 13:11:39 +0100187# openssl isn't license compatible with GPL
188ifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx)
189FFMPEG_CONF_OPT += --disable-openssl
190else
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100191FFMPEG_CONF_OPT += --enable-openssl
192FFMPEG_DEPENDENCIES += openssl
Peter Korsgaard457b6462014-01-13 13:11:39 +0100193endif
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100194else
195FFMPEG_CONF_OPT += --disable-openssl
196endif
197
198ifeq ($(BR2_PACKAGE_LIBVORBIS),y)
199FFMPEG_DEPENDENCIES += libvorbis
200FFMPEG_CONF_OPT += \
201 --enable-libvorbis \
202 --enable-muxer=ogg \
203 --enable-encoder=libvorbis
204endif
205
Bernd Kuhls17240db2014-07-15 21:19:03 +0200206ifeq ($(BR2_PACKAGE_LIBVA),y)
207FFMPEG_CONF_OPT += --enable-vaapi
208FFMPEG_DEPENDENCIES += libva
209else
210FFMPEG_CONF_OPT += --disable-vaapi
211endif
212
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100213ifeq ($(BR2_X86_CPU_HAS_MMX),y)
214FFMPEG_CONF_OPT += --enable-yasm
Bernd Kuhls8eb78ba2014-01-13 06:48:11 +0100215FFMPEG_DEPENDENCIES += host-yasm
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100216else
217FFMPEG_CONF_OPT += --disable-yasm
218FFMPEG_CONF_OPT += --disable-mmx
219endif
220
221ifeq ($(BR2_X86_CPU_HAS_SSE),y)
222FFMPEG_CONF_OPT += --enable-sse
223else
224FFMPEG_CONF_OPT += --disable-sse
225endif
226
227ifeq ($(BR2_X86_CPU_HAS_SSE2),y)
228FFMPEG_CONF_OPT += --enable-sse2
229else
230FFMPEG_CONF_OPT += --disable-sse2
231endif
232
233ifeq ($(BR2_X86_CPU_HAS_SSE3),y)
234FFMPEG_CONF_OPT += --enable-sse3
235else
236FFMPEG_CONF_OPT += --disable-sse3
237endif
238
239ifeq ($(BR2_X86_CPU_HAS_SSSE3),y)
240FFMPEG_CONF_OPT += --enable-ssse3
241else
242FFMPEG_CONF_OPT += --disable-ssse3
Gustavo Zacarias3f6aa3e2011-02-28 11:18:21 -0300243endif
244
Bernd Kuhls0e8e3c22014-01-02 18:59:45 +0100245ifeq ($(BR2_X86_CPU_HAS_SSE4),y)
246FFMPEG_CONF_OPT += --enable-sse4
247else
248FFMPEG_CONF_OPT += --disable-sse4
249endif
250
251ifeq ($(BR2_X86_CPU_HAS_SSE42),y)
252FFMPEG_CONF_OPT += --enable-sse42
253else
254FFMPEG_CONF_OPT += --disable-sse42
255endif
256
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000257# Explicitly disable everything that doesn't match for ARM
258# FFMPEG "autodetects" by compiling an extended instruction via AS
259# This works on compilers that aren't built for generic by default
Gustavo Zacariasbefab212014-05-07 14:10:05 -0300260ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300261FFMPEG_CONF_OPT += --disable-armv5te
262endif
Ryan Coedbb28f72013-08-13 11:54:11 +0200263ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300264FFMPEG_CONF_OPT += --enable-armv6
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000265else
266FFMPEG_CONF_OPT += --disable-armv6 --disable-armv6t2
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300267endif
Ryan Coedbb28f72013-08-13 11:54:11 +0200268ifeq ($(BR2_arm10)$(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s)$(BR2_cortex_a5)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a15),y)
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100269FFMPEG_CONF_OPT += --enable-vfp
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000270else
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100271FFMPEG_CONF_OPT += --disable-vfp
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300272endif
Peter Korsgaardce8a7d52012-12-13 23:25:30 +0100273ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300274FFMPEG_CONF_OPT += --enable-neon
275endif
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000276
Bernd Kuhls0fff2502014-01-13 22:23:06 +0100277ifeq ($(BR2_MIPS_SOFT_FLOAT),y)
278FFMPEG_CONF_OPT += \
279 --disable-mipsfpu
280else
281FFMPEG_CONF_OPT += \
282 --enable-mipsfpu
283endif
284
285ifeq ($(BR2_mips_32r2),y)
286FFMPEG_CONF_OPT += \
287 --enable-mips32r2
288else
289FFMPEG_CONF_OPT += \
290 --disable-mips32r2
291endif
292
293ifeq ($(BR2_mips_64r2),y)
294FFMPEG_CONF_OPT += \
295 --enable-mipsdspr1 \
296 --enable-mipsdspr2
297else
298FFMPEG_CONF_OPT += \
299 --disable-mipsdspr1 \
300 --disable-mipsdspr2
301endif
302
Cody P Schafer40e58da2014-05-12 22:28:17 -0700303ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)
Peter Korsgaard3c61d732012-02-13 22:26:26 +0100304FFMPEG_CONF_OPT += --enable-altivec
Mike Williams29a07682011-05-12 16:12:40 -0400305else
306FFMPEG_CONF_OPT += --disable-altivec
307endif
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300308
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100309ifeq ($(BR2_PREFER_STATIC_LIB),)
310FFMPEG_CONF_OPT += --enable-pic
Danomi Manchego255aab72014-09-08 22:06:44 -0400311else
312FFMPEG_CONF_OPT += --disable-pic
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100313endif
314
Luca Ceresoli5db72042010-06-14 21:41:45 +0200315FFMPEG_CONF_OPT += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF))
316
Luca Ceresoli13293402010-06-14 21:41:42 +0200317# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others
318define FFMPEG_CONFIGURE_CMDS
319 (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \
320 $(TARGET_CONFIGURE_OPTS) \
321 $(TARGET_CONFIGURE_ARGS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200322 $(FFMPEG_CONF_ENV) \
323 ./configure \
324 --enable-cross-compile \
325 --cross-prefix=$(TARGET_CROSS) \
326 --sysroot=$(STAGING_DIR) \
Peter Korsgaarde18087a2011-01-01 11:49:01 +0100327 --host-cc="$(HOSTCC)" \
Luca Ceresoli13293402010-06-14 21:41:42 +0200328 --arch=$(BR2_ARCH) \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100329 --target-os="linux" \
Bernd Kuhls12a3ecf2014-08-10 14:46:46 +0200330 --disable-stripping \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100331 $(if $(BR2_GCC_TARGET_TUNE),--cpu=$(BR2_GCC_TARGET_TUNE)) \
Luca Ceresoli97a42962011-06-20 17:59:54 +0200332 $(SHARED_STATIC_LIBS_OPTS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200333 $(FFMPEG_CONF_OPT) \
334 )
335endef
336
Arnout Vandecappelle (Essensium/Mind)e1502eb2012-07-03 00:07:32 +0200337$(eval $(autotools-package))