blob: bed37287af96e793e2c039524ec5bf5807f2131e [file] [log] [blame]
Luca Ceresoli13293402010-06-14 21:41:42 +02001#############################################################
2#
3# ffmpeg
4#
5#############################################################
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -03006
Gustavo Zacariasc2e372b2012-01-05 15:26:20 -03007FFMPEG_VERSION = 0.8.8
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
12FFMPEG_CONF_OPT = \
13 --prefix=/usr \
Luca Ceresoli13293402010-06-14 21:41:42 +020014 --disable-avfilter \
Peter Korsgaarddcad5232011-05-13 15:12:25 +020015 $(if $(BR2_HAVE_DOCUMENTATION),,--disable-doc)
Luca Ceresoli13293402010-06-14 21:41:42 +020016
17ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)
18FFMPEG_CONF_OPT += --enable-gpl
19else
20FFMPEG_CONF_OPT += --disable-gpl
21endif
22
23ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y)
24FFMPEG_CONF_OPT += --enable-nonfree
25else
26FFMPEG_CONF_OPT += --disable-nonfree
27endif
28
Luca Ceresoli5253efa2010-06-14 21:41:43 +020029ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y)
30FFMPEG_CONF_OPT += --enable-ffmpeg
31else
32FFMPEG_CONF_OPT += --disable-ffmpeg
33endif
34
35ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y)
36FFMPEG_DEPENDENCIES += sdl
37FFMPEG_CONF_OPT += --enable-ffplay
38FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config
39else
40FFMPEG_CONF_OPT += --disable-ffplay
41endif
42
43ifeq ($(BR2_PACKAGE_FFMPEG_FFSERVER),y)
44FFMPEG_CONF_OPT += --enable-ffserver
45else
46FFMPEG_CONF_OPT += --disable-ffserver
47endif
48
Peter Korsgaard4ff34552010-10-07 09:54:00 +020049ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y)
50FFMPEG_CONF_OPT += --enable-postproc
51else
52FFMPEG_CONF_OPT += --disable-postproc
53endif
54
55ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)
56FFMPEG_CONF_OPT += --enable-swscale
57else
58FFMPEG_CONF_OPT += --disable-swscale
59endif
60
Luca Ceresoli56e4d692010-06-14 21:41:44 +020061ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all)
62FFMPEG_CONF_OPT += --disable-encoders \
63 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x))
64endif
65
66ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all)
67FFMPEG_CONF_OPT += --disable-decoders \
68 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x))
69endif
70
71ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all)
72FFMPEG_CONF_OPT += --disable-muxers \
73 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x))
74endif
75
76ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all)
77FFMPEG_CONF_OPT += --disable-demuxers \
78 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x))
79endif
80
81ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all)
82FFMPEG_CONF_OPT += --disable-parsers \
83 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x))
84endif
85
86ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all)
87FFMPEG_CONF_OPT += --disable-bsfs \
88 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsf=$(x))
89endif
90
91ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all)
92FFMPEG_CONF_OPT += --disable-protocols \
93 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x))
94endif
95
96ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all)
97FFMPEG_CONF_OPT += --disable-filters \
98 $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x))
99endif
100
101ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y)
102FFMPEG_CONF_OPT += --enable-indevs
103else
104FFMPEG_CONF_OPT += --disable-indevs
105endif
106
107ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y)
108FFMPEG_CONF_OPT += --enable-outdevs
109else
110FFMPEG_CONF_OPT += --disable-outdevs
111endif
112
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100113ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
Luca Ceresoli13293402010-06-14 21:41:42 +0200114FFMPEG_CONF_OPT += --enable-pthreads
Thomas Petazzoni9eaad202010-12-13 17:27:44 +0100115else
116FFMPEG_CONF_OPT += --disable-pthreads
Luca Ceresoli13293402010-06-14 21:41:42 +0200117endif
118
119ifeq ($(BR2_PACKAGE_ZLIB),y)
120FFMPEG_CONF_OPT += --enable-zlib
121FFMPEG_DEPENDENCIES += zlib
122else
123FFMPEG_CONF_OPT += --disable-zlib
124endif
125
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100126ifeq ($(BR2_i386)$(BR2_x86_64),y)
Gustavo Zacarias3f6aa3e2011-02-28 11:18:21 -0300127# MMX on is default for x86, disable it for lowly x86-type processors
128ifeq ($(BR2_x86_i386)$(BR2_x86_i486)$(BR2_x86_i586)$(BR2_x86_i686)$(BR2_x86_pentiumpro)$(BR2_x86_geode),y)
129FFMPEG_CONF_OPT += --disable-mmx
Arnout Vandecappelle (Essensium/Mind)4e20ad12012-01-22 13:04:16 +0100130else
131# If it is enabled, nasm is required
132FFMPEG_DEPENDENCIES += host-nasm
133endif
Gustavo Zacarias3f6aa3e2011-02-28 11:18:21 -0300134endif
135
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300136# ARM defaults to v5: clear if less, add extra if more
137ifeq ($(BR2_generic_arm)$(BR2_arm7tdmi)$(BR2_arm610)$(BR2_arm710)$(BR2_arm720t)$(BR2_arm920t)$(BR2_arm922t),y)
138FFMPEG_CONF_OPT += --disable-armv5te
139endif
140ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf-s),y)
141FFMPEG_CONF_OPT += --enable-armv6
142endif
143ifeq ($(BR2_arm10)$(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf-s)$(BR2_cortex_a8)$(BR2_cortex_a9),y)
144FFMPEG_CONF_OPT += --enable-armvfp
145endif
146# NEON is optional for A9
147ifeq ($(BR2_cortex_a8),y)
148FFMPEG_CONF_OPT += --enable-neon
149endif
Mike Williams29a07682011-05-12 16:12:40 -0400150# Set powerpc altivec appropriately
151ifeq ($(BR2_powerpc),y)
152ifeq ($(BR2_powerpc_7400)$(BR2_powerpc_7450)$(BR2_powerpc_970),y)
Peter Korsgaard3c61d732012-02-13 22:26:26 +0100153FFMPEG_CONF_OPT += --enable-altivec
Mike Williams29a07682011-05-12 16:12:40 -0400154else
155FFMPEG_CONF_OPT += --disable-altivec
156endif
157endif
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300158
Luca Ceresoli5db72042010-06-14 21:41:45 +0200159FFMPEG_CONF_OPT += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF))
160
Luca Ceresoli13293402010-06-14 21:41:42 +0200161# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others
162define FFMPEG_CONFIGURE_CMDS
163 (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \
164 $(TARGET_CONFIGURE_OPTS) \
165 $(TARGET_CONFIGURE_ARGS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200166 $(FFMPEG_CONF_ENV) \
167 ./configure \
168 --enable-cross-compile \
169 --cross-prefix=$(TARGET_CROSS) \
170 --sysroot=$(STAGING_DIR) \
Peter Korsgaarde18087a2011-01-01 11:49:01 +0100171 --host-cc="$(HOSTCC)" \
Luca Ceresoli13293402010-06-14 21:41:42 +0200172 --arch=$(BR2_ARCH) \
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300173 --target-os=linux \
Luca Ceresoli13293402010-06-14 21:41:42 +0200174 --extra-cflags=-fPIC \
Luca Ceresoli97a42962011-06-20 17:59:54 +0200175 $(SHARED_STATIC_LIBS_OPTS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200176 $(FFMPEG_CONF_OPT) \
177 )
178endef
179
Thomas Petazzoni300f9c92011-09-29 21:57:43 +0200180$(eval $(call AUTOTARGETS))