source: packages/multimedia/ffmpeg/Makefile @ 28488

Last change on this file since 28488 was 28488, checked in by nico, 5 years ago

[packages] ffmpeg: fix typo in libffmpeg-full dependencies (thanks to Espen Jürgensen)

  • Property copyright set to Copyright (C) 2008 OpenWrt.org
  • Property licence set to GPLv2
File size: 8.7 KB
Line 
1#
2# Copyright (C) 2006-2011 OpenWrt.org
3#
4# This is free software, licensed under the GNU General Public License v2.
5# See /LICENSE for more information.
6#
7
8include $(TOPDIR)/rules.mk
9
10PKG_NAME:=ffmpeg
11PKG_VERSION:=0.8.2
12PKG_RELEASE:=3
13
14PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
15PKG_SOURCE_URL:=http://ffmpeg.org/releases/
16PKG_MD5SUM:=967d481c98161582d149aced6e3b2f31
17
18FFMPEG_CUSTOM_ENCODERS:= \
19        ac3 \
20        jpegls \
21        mpeg1video \
22        mpeg2video \
23        mpeg4 \
24        pcm_s16be \
25        pcm_s16le \
26        png \
27        vorbis \
28        zlib \
29
30FFMPEG_CUSTOM_DECODERS:= \
31        aac \
32        ac3 \
33        atrac3 \
34        flac \
35        gif \
36        h264 \
37        jpegls \
38        mp2 \
39        mp3 \
40        mpeg1video \
41        mpeg2video \
42        mpeg4 \
43        mpegvideo \
44        pcm_s16be \
45        pcm_s16le \
46        png \
47        vorbis \
48        wmav1 \
49        wmav2 \
50        zlib \
51
52FFMPEG_CUSTOM_MUXERS:= \
53        ac3 \
54        ffm \
55        h264 \
56        mp3 \
57        mp4 \
58        mpeg1video \
59        mpeg2video \
60        mpegts \
61        ogg \
62        rtp \
63
64FFMPEG_CUSTOM_DEMUXERS:= \
65        aac \
66        ac3 \
67        avi \
68        flac \
69        ffm \
70        h264 \
71        matroska \
72        mov \
73        mp3 \
74        mpegps \
75        mpegts \
76        mpegvideo \
77        ogg \
78        rm \
79        rtsp \
80        sdp \
81        v4l2 \
82
83FFMPEG_CUSTOM_PARSERS:= \
84        aac \
85        ac3 \
86        h264 \
87        mpegaudio \
88        mpeg4video \
89        mpegvideo \
90
91FFMPEG_CUSTOM_PROTOCOLS:= \
92        file http pipe rtp tcp udp
93
94FFMPEG_MINI_ENCODERS:= \
95
96FFMPEG_MINI_DECODERS:= \
97        aac \
98        ac3 \
99        atrac3 \
100        flac \
101        h263 \
102        h264 \
103        jpegls \
104        mp3 \
105        mpeg1video \
106        mpeg2video \
107        mpeg4 \
108        mpegvideo \
109        png \
110        wmav1 \
111        wmav2 \
112
113FFMPEG_MINI_MUXERS:= \
114        ffm \
115
116FFMPEG_MINI_DEMUXERS := \
117        aac \
118        ac3 \
119        asf \
120        avi \
121        ffm \
122        flac \
123        h264 \
124        matroska \
125        mov \
126        mp3 \
127        mpegts \
128        mpegvideo \
129        rtsp \
130
131FFMPEG_MINI_PARSERS:= \
132        ac3 \
133        flac \
134        h263 \
135        h264 \
136        mpeg4video \
137        mpegaudio \
138
139FFMPEG_MINI_PROTOCOLS := \
140        file http rtp tcp udp \
141
142PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
143
144PKG_CONFIG_DEPENDS:= \
145        $(patsubst %,CONFIG_FFMPEG_CUSTOM_ENCODER_%,$(FFMPEG_CUSTOM_ENCODERS)) \
146        $(patsubst %,CONFIG_FFMPEG_CUSTOM_DECODER_%,$(FFMPEG_CUSTOM_DECODERS)) \
147        $(patsubst %,CONFIG_FFMPEG_CUSTOM_MUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
148        $(patsubst %,CONFIG_FFMPEG_CUSTOM_DEMUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
149        $(patsubst %,CONFIG_FFMPEG_CUSTOM_PARSER_%,$(FFMPEG_CUSTOM_PARSERS)) \
150        $(patsubst %,CONFIG_FFMPEG_CUSTOM_PROTOCOL_%,$(FFMPEG_CUSTOM_PROTOCOLS))
151
152include $(INCLUDE_DIR)/package.mk
153
154define Package/ffmpeg/Default
155 TITLE:=FFmpeg
156 URL:=http://ffmpeg.mplayerhq.hu/
157endef
158
159define Package/ffmpeg/Default/description
160 FFmpeg is a a software package that can record, convert and stream digital
161 audio and video in numerous formats.
162endef
163
164
165define Package/ffmpeg
166$(call Package/ffmpeg/Default)
167 SECTION:=multimedia
168 CATEGORY:=Multimedia
169 TITLE+= program
170 DEPENDS+= +libpthread +libffmpeg
171 VARIANT:=full
172endef
173
174define Package/ffmpeg/description
175$(call Package/ffmpeg/Default/description)
176 .
177 This package contains the FFmpeg command line tool.
178endef
179
180
181define Package/ffprobe
182$(call Package/ffmpeg/Default)
183 SECTION:=multimedia
184 CATEGORY:=Multimedia
185 TITLE+= CLI media identifier
186 DEPENDS+= +libffmpeg
187 VARIANT:=full
188endef
189
190define Package/ffprobe/description
191$(call Package/ffmpeg/Default/description)
192 .
193 This package contains the FFprobe command line tool.
194endef
195
196
197define Package/ffserver
198$(call Package/ffserver/Default)
199 SECTION:=multimedia
200 CATEGORY:=Multimedia
201 TITLE+= streaming server
202 DEPENDS+= +libpthread +libffmpeg
203 VARIANT:=full
204endef
205
206define Package/ffserver/description
207$(call Package/ffmpeg/Default/description)
208 .
209 This package contains the FFmpeg streaming server.
210endef
211
212
213define Package/libffmpeg/Default
214$(call Package/ffmpeg/Default)
215 SECTION:=libs
216 CATEGORY:=Libraries
217 TITLE+= libraries
218 DEPENDS+= +libpthread +zlib
219 PROVIDES:= libffmpeg
220endef
221
222
223define Package/libffmpeg-custom
224$(call Package/libffmpeg/Default)
225 TITLE+= (mini)
226 DEPENDS+= @DEVEL
227 VARIANT:=custom
228 MENU:=1
229endef
230
231define Package/libffmpeg-custom/config
232source "$(SOURCE)/Config.in"
233endef
234
235define Package/libffmpeg-custom/description
236$(call Package/ffmpeg/Default/description)
237 .
238 This package contains customized FFmpeg shared libraries.
239endef
240
241
242define Package/libffmpeg-full
243$(call Package/libffmpeg/Default)
244 TITLE+= (full)
245 DEPENDS+= @BUILD_PATENTED +alsa-lib
246 VARIANT:=full
247endef
248
249define Package/libffmpeg-full/description
250$(call Package/ffmpeg/Default/description)
251 .
252 This package contains full-featured FFmpeg shared libraries.
253endef
254
255
256define Package/libffmpeg-mini
257$(call Package/libffmpeg/Default)
258 TITLE+= (mini)
259 DEPENDS+= @BUILD_PATENTED
260 VARIANT:=mini
261endef
262
263define Package/libffmpeg-mini/description
264$(call Package/ffmpeg/Default/description)
265 .
266 This package contains minimal-featured FFmpeg shared libraries.
267endef
268
269
270# XXX: add --disable-mmx & --disable-mmx2 to fix build failure on x86
271# libpostproc/postprocess_template.c:2195: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
272# libpostproc/postprocess_template.c:3124: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
273# libpostproc/postprocess_template.c:3207: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
274
275FFMPEG_CONFIGURE:= \
276        CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
277        LDFLAGS="$(TARGET_LDFLAGS)" \
278        PKG_CONFIG="pkg-config" \
279        ./configure \
280        --enable-cross-compile \
281        --cross-prefix="$(TARGET_CROSS)" \
282        --arch="$(ARCH)" \
283        --target-os=linux \
284        --prefix="/usr" \
285        --enable-shared \
286        --enable-static \
287        --disable-debug \
288        \
289        --enable-gpl \
290        --enable-version3 \
291        \
292        --disable-doc \
293        --disable-dxva2 \
294        --disable-mmx \
295        --disable-mmx2 \
296        --enable-pthreads \
297        --disable-optimizations \
298        --enable-small \
299        --disable-stripping \
300        --enable-zlib \
301
302ifeq ($(BUILD_VARIANT),custom)
303
304  FFMPEG_ENABLE= \
305        $(foreach c, $(2), \
306                $(if $($(3)_$(c)),--enable-$(1)="$(c)") \
307        )
308
309  FFMPEG_CONFIGURE+= \
310        --disable-ffmpeg \
311        --disable-ffplay \
312        --disable-ffprobe \
313        --disable-ffserver \
314        --disable-avfilter \
315        --disable-postproc \
316        --disable-swscale \
317        --disable-everything \
318        $(call FFMPEG_ENABLE,encoder,$(FFMPEG_CUSTOM_ENCODERS),CONFIG_FFMPEG_ENCODER) \
319        $(call FFMPEG_ENABLE,decoder,$(FFMPEG_CUSTOM_DECODERS),CONFIG_FFMPEG_DECODER) \
320        $(call FFMPEG_ENABLE,muxer,$(FFMPEG_CUSTOM_MUXERS),CONFIG_FFMPEG_MUXER) \
321        $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_CUSTOM_DEMUXERS),CONFIG_FFMPEG_DEMUXER) \
322        $(call FFMPEG_ENABLE,parser,$(FFMPEG_CUSTOM_PARSERS),CONFIG_FFMPEG_PARSER) \
323        $(call FFMPEG_ENABLE,protocol,$(FFMPEG_CUSTOM_PROTOCOLS),CONFIG_FFMPEG_PROTOCOL) \
324
325endif
326
327ifeq ($(BUILD_VARIANT),mini)
328
329  FFMPEG_ENABLE= \
330        $(foreach c, $(2), \
331                --enable-$(1)="$(c)" \
332        )
333
334  FFMPEG_CONFIGURE+= \
335        --disable-ffmpeg \
336        --disable-ffplay \
337        --disable-ffprobe \
338        --disable-ffserver \
339        --disable-avfilter \
340        --disable-postproc \
341        --disable-swscale \
342        --disable-everything \
343        $(call FFMPEG_ENABLE,encoder,$(FFMPEG_MINI_ENCODERS)) \
344        $(call FFMPEG_ENABLE,decoder,$(FFMPEG_MINI_DECODERS)) \
345        $(call FFMPEG_ENABLE,muxer,$(FFMPEG_MINI_MUXERS)) \
346        $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_MINI_DEMUXERS)) \
347        $(call FFMPEG_ENABLE,parser,$(FFMPEG_MINI_PARSERS)) \
348        $(call FFMPEG_ENABLE,protocol,$(FFMPEG_MINI_PROTOCOLS)) \
349
350endif
351
352ifneq ($(CONFIG_TARGET_x86),)
353  TARGET_CFLAGS += -fomit-frame-pointer
354endif
355
356define Build/Configure
357        ( cd $(PKG_BUILD_DIR); $(FFMPEG_CONFIGURE) )
358endef
359
360define Build/Compile
361        $(MAKE) -C $(PKG_BUILD_DIR) \
362                DESTDIR="$(PKG_INSTALL_DIR)" \
363                all install
364endef
365
366ifeq ($(BUILD_VARIANT),full)
367  define Build/InstallDev
368        $(INSTALL_DIR) $(1)/usr/include
369        $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swscale} $(1)/usr/include/
370        $(INSTALL_DIR) $(1)/usr/lib
371        $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swscale}.{a,so*} $(1)/usr/lib/
372        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
373        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swscale}.pc $(1)/usr/lib/pkgconfig/
374  endef
375endif
376
377define Package/ffmpeg/install
378        $(INSTALL_DIR) $(1)/usr/bin
379        $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffmpeg $(1)/usr/bin/
380endef
381
382define Package/ffprobe/install
383        $(INSTALL_DIR) $(1)/usr/bin
384        $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffprobe $(1)/usr/bin/
385endef
386
387define Package/ffserver/install
388        $(INSTALL_DIR) $(1)/usr/bin
389        $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffserver $(1)/usr/bin/
390endef
391
392define Package/libffmpeg-custom/install
393        $(INSTALL_DIR) $(1)/usr/lib
394        $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
395endef
396
397define Package/libffmpeg-full/install
398        $(INSTALL_DIR) $(1)/usr/lib
399        $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,postproc,swscale}.so.* $(1)/usr/lib/
400endef
401
402define Package/libffmpeg-mini/install
403        $(INSTALL_DIR) $(1)/usr/lib
404        $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
405endef
406
407$(eval $(call BuildPackage,ffmpeg))
408$(eval $(call BuildPackage,ffprobe))
409$(eval $(call BuildPackage,ffserver))
410$(eval $(call BuildPackage,libffmpeg-custom))
411$(eval $(call BuildPackage,libffmpeg-full))
412$(eval $(call BuildPackage,libffmpeg-mini))
Note: See TracBrowser for help on using the repository browser.