blob: f8c152651741aa05a70de7a167753f60ced53202 [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 Kuhls4b959fc2014-01-17 21:08:35 +01007FFMPEG_VERSION = 1.2.5
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 \
25 --disable-pic \
26 --enable-optimizations \
27 --disable-extra-warnings \
28 --disable-ffprobe \
29 --enable-avdevice \
30 --enable-avcodec \
31 --enable-avformat \
32 --enable-swscale \
33 --enable-postproc \
34 --disable-x11grab \
35 --enable-network \
36 --disable-gray \
37 --enable-swscale-alpha \
38 --disable-small \
39 --enable-dct \
40 --enable-fft \
41 --enable-mdct \
42 --enable-rdft \
43 --disable-crystalhd \
44 --disable-vaapi \
45 --disable-vdpau \
46 --disable-dxva2 \
47 --enable-runtime-cpudetect \
48 --disable-hardcoded-tables \
49 --disable-memalign-hack \
50 --enable-hwaccels \
51 --disable-avisynth \
52 --disable-frei0r \
53 --disable-libopencore-amrnb \
54 --disable-libopencore-amrwb \
55 --disable-libopencv \
56 --disable-libdc1394 \
57 --disable-libfaac \
58 --disable-libfreetype \
59 --disable-libgsm \
60 --disable-libmp3lame \
61 --disable-libnut \
62 --disable-libopenjpeg \
63 --disable-librtmp \
64 --disable-libschroedinger \
65 --disable-libspeex \
66 --disable-libtheora \
67 --disable-libvo-aacenc \
68 --disable-libvo-amrwbenc \
69 --disable-vis \
70 --disable-sram \
71 --disable-symver \
Thomas De Schampheleire7164a322014-02-05 14:50:56 +010072 --disable-doc
Luca Ceresoli13293402010-06-14 21:41:42 +020073
Bernd Kuhls62ab07e2014-01-02 18:59:44 +010074FFMPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)
75
Luca Ceresoli13293402010-06-14 21:41:42 +020076ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)
77FFMPEG_CONF_OPT += --enable-gpl
78else
79FFMPEG_CONF_OPT += --disable-gpl
80endif
81
82ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y)
83FFMPEG_CONF_OPT += --enable-nonfree
84else
85FFMPEG_CONF_OPT += --disable-nonfree
86endif
87
Luca Ceresoli5253efa2010-06-14 21:41:43 +020088ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y)
89FFMPEG_CONF_OPT += --enable-ffmpeg
90else
91FFMPEG_CONF_OPT += --disable-ffmpeg
92endif
93
94ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y)
95FFMPEG_DEPENDENCIES += sdl
96FFMPEG_CONF_OPT += --enable-ffplay
97FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config
98else
99FFMPEG_CONF_OPT += --disable-ffplay
100endif
101
102ifeq ($(BR2_PACKAGE_FFMPEG_FFSERVER),y)
103FFMPEG_CONF_OPT += --enable-ffserver
104else
105FFMPEG_CONF_OPT += --disable-ffserver
106endif
107
Peter Korsgaard4ff34552010-10-07 09:54:00 +0200108ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y)
109FFMPEG_CONF_OPT += --enable-postproc
110else
111FFMPEG_CONF_OPT += --disable-postproc
112endif
113
114ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)
115FFMPEG_CONF_OPT += --enable-swscale
116else
117FFMPEG_CONF_OPT += --disable-swscale
118endif
119
Luca Ceresoli56e4d692010-06-14 21:41:44 +0200120ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all)
121FFMPEG_CONF_OPT += --disable-encoders \
122 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x))
123endif
124
125ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all)
126FFMPEG_CONF_OPT += --disable-decoders \
127 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x))
128endif
129
130ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all)
131FFMPEG_CONF_OPT += --disable-muxers \
132 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x))
133endif
134
135ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all)
136FFMPEG_CONF_OPT += --disable-demuxers \
137 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x))
138endif
139
140ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all)
141FFMPEG_CONF_OPT += --disable-parsers \
142 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x))
143endif
144
145ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all)
146FFMPEG_CONF_OPT += --disable-bsfs \
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100147 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsfs=$(x))
Luca Ceresoli56e4d692010-06-14 21:41:44 +0200148endif
149
150ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all)
151FFMPEG_CONF_OPT += --disable-protocols \
152 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x))
153endif
154
155ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all)
156FFMPEG_CONF_OPT += --disable-filters \
157 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x))
158endif
159
160ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y)
161FFMPEG_CONF_OPT += --enable-indevs
162else
163FFMPEG_CONF_OPT += --disable-indevs
164endif
165
166ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y)
167FFMPEG_CONF_OPT += --enable-outdevs
168else
169FFMPEG_CONF_OPT += --disable-outdevs
170endif
171
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100172ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
Luca Ceresoli13293402010-06-14 21:41:42 +0200173FFMPEG_CONF_OPT += --enable-pthreads
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100174else
175FFMPEG_CONF_OPT += --disable-pthreads
Luca Ceresoli13293402010-06-14 21:41:42 +0200176endif
177
178ifeq ($(BR2_PACKAGE_ZLIB),y)
179FFMPEG_CONF_OPT += --enable-zlib
180FFMPEG_DEPENDENCIES += zlib
181else
182FFMPEG_CONF_OPT += --disable-zlib
183endif
184
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100185ifeq ($(BR2_PACKAGE_BZIP2),y)
186FFMPEG_CONF_OPT += --enable-bzlib
187FFMPEG_DEPENDENCIES += bzip2
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100188else
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100189FFMPEG_CONF_OPT += --disable-bzlib
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100190endif
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100191
192ifeq ($(BR2_PACKAGE_OPENSSL),y)
Peter Korsgaard457b6462014-01-13 13:11:39 +0100193# openssl isn't license compatible with GPL
194ifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx)
195FFMPEG_CONF_OPT += --disable-openssl
196else
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100197FFMPEG_CONF_OPT += --enable-openssl
198FFMPEG_DEPENDENCIES += openssl
Peter Korsgaard457b6462014-01-13 13:11:39 +0100199endif
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100200else
201FFMPEG_CONF_OPT += --disable-openssl
202endif
203
204ifeq ($(BR2_PACKAGE_LIBVORBIS),y)
205FFMPEG_DEPENDENCIES += libvorbis
206FFMPEG_CONF_OPT += \
207 --enable-libvorbis \
208 --enable-muxer=ogg \
209 --enable-encoder=libvorbis
210endif
211
212ifeq ($(BR2_X86_CPU_HAS_MMX),y)
213FFMPEG_CONF_OPT += --enable-yasm
Bernd Kuhls8eb78ba2014-01-13 06:48:11 +0100214FFMPEG_DEPENDENCIES += host-yasm
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100215else
216FFMPEG_CONF_OPT += --disable-yasm
217FFMPEG_CONF_OPT += --disable-mmx
218endif
219
220ifeq ($(BR2_X86_CPU_HAS_SSE),y)
221FFMPEG_CONF_OPT += --enable-sse
222else
223FFMPEG_CONF_OPT += --disable-sse
224endif
225
226ifeq ($(BR2_X86_CPU_HAS_SSE2),y)
227FFMPEG_CONF_OPT += --enable-sse2
228else
229FFMPEG_CONF_OPT += --disable-sse2
230endif
231
232ifeq ($(BR2_X86_CPU_HAS_SSE3),y)
233FFMPEG_CONF_OPT += --enable-sse3
234else
235FFMPEG_CONF_OPT += --disable-sse3
236endif
237
238ifeq ($(BR2_X86_CPU_HAS_SSSE3),y)
239FFMPEG_CONF_OPT += --enable-ssse3
240else
241FFMPEG_CONF_OPT += --disable-ssse3
Gustavo Zacarias3f6aa3e2011-02-28 11:18:21 -0300242endif
243
Bernd Kuhls0e8e3c22014-01-02 18:59:45 +0100244ifeq ($(BR2_X86_CPU_HAS_SSE4),y)
245FFMPEG_CONF_OPT += --enable-sse4
246else
247FFMPEG_CONF_OPT += --disable-sse4
248endif
249
250ifeq ($(BR2_X86_CPU_HAS_SSE42),y)
251FFMPEG_CONF_OPT += --enable-sse42
252else
253FFMPEG_CONF_OPT += --disable-sse42
254endif
255
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000256# Explicitly disable everything that doesn't match for ARM
257# FFMPEG "autodetects" by compiling an extended instruction via AS
258# This works on compilers that aren't built for generic by default
Gustavo Zacariasbefab212014-05-07 14:10:05 -0300259ifeq ($(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300260FFMPEG_CONF_OPT += --disable-armv5te
261endif
Ryan Coedbb28f72013-08-13 11:54:11 +0200262ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300263FFMPEG_CONF_OPT += --enable-armv6
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000264else
265FFMPEG_CONF_OPT += --disable-armv6 --disable-armv6t2
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300266endif
Ryan Coedbb28f72013-08-13 11:54:11 +0200267ifeq ($(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 +0100268FFMPEG_CONF_OPT += --enable-vfp
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000269else
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100270FFMPEG_CONF_OPT += --disable-vfp
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300271endif
Peter Korsgaardce8a7d52012-12-13 23:25:30 +0100272ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300273FFMPEG_CONF_OPT += --enable-neon
274endif
Gustavo Zacarias9e77eaf2012-12-21 02:40:31 +0000275
Bernd Kuhls0fff2502014-01-13 22:23:06 +0100276ifeq ($(BR2_MIPS_SOFT_FLOAT),y)
277FFMPEG_CONF_OPT += \
278 --disable-mipsfpu
279else
280FFMPEG_CONF_OPT += \
281 --enable-mipsfpu
282endif
283
284ifeq ($(BR2_mips_32r2),y)
285FFMPEG_CONF_OPT += \
286 --enable-mips32r2
287else
288FFMPEG_CONF_OPT += \
289 --disable-mips32r2
290endif
291
292ifeq ($(BR2_mips_64r2),y)
293FFMPEG_CONF_OPT += \
294 --enable-mipsdspr1 \
295 --enable-mipsdspr2
296else
297FFMPEG_CONF_OPT += \
298 --disable-mipsdspr1 \
299 --disable-mipsdspr2
300endif
301
Mike Williams29a07682011-05-12 16:12:40 -0400302# Set powerpc altivec appropriately
303ifeq ($(BR2_powerpc),y)
304ifeq ($(BR2_powerpc_7400)$(BR2_powerpc_7450)$(BR2_powerpc_970),y)
Peter Korsgaard3c61d732012-02-13 22:26:26 +0100305FFMPEG_CONF_OPT += --enable-altivec
Mike Williams29a07682011-05-12 16:12:40 -0400306else
307FFMPEG_CONF_OPT += --disable-altivec
308endif
309endif
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300310
Bernd Kuhls62ab07e2014-01-02 18:59:44 +0100311ifeq ($(BR2_PREFER_STATIC_LIB),)
312FFMPEG_CONF_OPT += --enable-pic
313endif
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" \
330 $(if $(BR2_GCC_TARGET_TUNE),--cpu=$(BR2_GCC_TARGET_TUNE)) \
Luca Ceresoli97a42962011-06-20 17:59:54 +0200331 $(SHARED_STATIC_LIBS_OPTS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200332 $(FFMPEG_CONF_OPT) \
333 )
334endef
335
Arnout Vandecappelle (Essensium/Mind)e1502eb2012-07-03 00:07:32 +0200336$(eval $(autotools-package))