blob: 1c6e734d14602f0ed8e94db4c121514da8685484 [file] [log] [blame]
Luca Ceresoli13293402010-06-14 21:41:42 +02001#############################################################
2#
3# ffmpeg
4#
5#############################################################
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -03006
7FFMPEG_VERSION = 0.6.1
8FFMPEG_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 \
14 --enable-shared \
Luca Ceresoli13293402010-06-14 21:41:42 +020015 --disable-avfilter \
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
Gustavo Zacarias3f6aa3e2011-02-28 11:18:21 -0300126# MMX on is default for x86, disable it for lowly x86-type processors
127ifeq ($(BR2_x86_i386)$(BR2_x86_i486)$(BR2_x86_i586)$(BR2_x86_i686)$(BR2_x86_pentiumpro)$(BR2_x86_geode),y)
128FFMPEG_CONF_OPT += --disable-mmx
129endif
130
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300131# ARM defaults to v5: clear if less, add extra if more
132ifeq ($(BR2_generic_arm)$(BR2_arm7tdmi)$(BR2_arm610)$(BR2_arm710)$(BR2_arm720t)$(BR2_arm920t)$(BR2_arm922t),y)
133FFMPEG_CONF_OPT += --disable-armv5te
134endif
135ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf-s),y)
136FFMPEG_CONF_OPT += --enable-armv6
137endif
138ifeq ($(BR2_arm10)$(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf-s)$(BR2_cortex_a8)$(BR2_cortex_a9),y)
139FFMPEG_CONF_OPT += --enable-armvfp
140endif
141# NEON is optional for A9
142ifeq ($(BR2_cortex_a8),y)
143FFMPEG_CONF_OPT += --enable-neon
144endif
Mike Williams29a07682011-05-12 16:12:40 -0400145# Set powerpc altivec appropriately
146ifeq ($(BR2_powerpc),y)
147ifeq ($(BR2_powerpc_7400)$(BR2_powerpc_7450)$(BR2_powerpc_970),y)
148FFMPEG_CONF_OPT -= --enable-altivec
149else
150FFMPEG_CONF_OPT += --disable-altivec
151endif
152endif
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300153
Luca Ceresoli5db72042010-06-14 21:41:45 +0200154FFMPEG_CONF_OPT += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF))
155
Luca Ceresoli13293402010-06-14 21:41:42 +0200156# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others
157define FFMPEG_CONFIGURE_CMDS
158 (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \
159 $(TARGET_CONFIGURE_OPTS) \
160 $(TARGET_CONFIGURE_ARGS) \
Luca Ceresoli13293402010-06-14 21:41:42 +0200161 $(FFMPEG_CONF_ENV) \
162 ./configure \
163 --enable-cross-compile \
164 --cross-prefix=$(TARGET_CROSS) \
165 --sysroot=$(STAGING_DIR) \
Peter Korsgaarde18087a2011-01-01 11:49:01 +0100166 --host-cc="$(HOSTCC)" \
Luca Ceresoli13293402010-06-14 21:41:42 +0200167 --arch=$(BR2_ARCH) \
Gustavo Zacarias1b269dd2011-03-01 13:20:00 -0300168 --target-os=linux \
Luca Ceresoli13293402010-06-14 21:41:42 +0200169 --extra-cflags=-fPIC \
Luca Ceresoli13293402010-06-14 21:41:42 +0200170 $(FFMPEG_CONF_OPT) \
171 )
172endef
173
Luca Ceresoli13293402010-06-14 21:41:42 +0200174$(eval $(call AUTOTARGETS,package/multimedia,ffmpeg))