]> git.sesse.net Git - vlc/blob - contrib/src/ffmpeg/rules.mak
contrib: ffmpeg: update required versions
[vlc] / contrib / src / ffmpeg / rules.mak
1 # FFmpeg
2
3 HASH=HEAD
4
5 #FFMPEG_SNAPURL := http://git.videolan.org/?p=ffmpeg.git;a=snapshot;h=$(HASH);sf=tgz
6 FFMPEG_SNAPURL := http://git.libav.org/?p=libav.git;a=snapshot;h=$(HASH);sf=tgz
7
8 FFMPEGCONF = \
9         --cc="$(CC)" \
10         --disable-doc \
11         --disable-decoder=bink \
12         --disable-encoder=vorbis \
13         --enable-libgsm \
14         --enable-libopenjpeg \
15         --disable-debug \
16         --disable-avdevice \
17         --disable-devices \
18         --disable-avfilter \
19         --disable-filters \
20         --disable-bsfs \
21         --disable-bzlib
22
23 # Those tools are named differently in FFmpeg and Libav
24 #       --disable-ffserver \
25 #       --disable-ffplay \
26 #       --disable-ffprobe
27 DEPS_ffmpeg = zlib gsm openjpeg
28
29 # Optional dependencies
30 ifdef BUILD_ENCODERS
31 FFMPEGCONF += --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx --disable-decoder=libvpx_vp8 --disable-decoder=libvpx_vp9
32 DEPS_ffmpeg += lame $(DEPS_lame) vpx $(DEPS_vpx)
33 else
34 FFMPEGCONF += --disable-encoders --disable-muxers
35 endif
36
37 # Small size
38 ifdef ENABLE_SMALL
39 FFMPEGCONF += --enable-small
40 ifeq ($(ARCH),arm)
41 ifdef HAVE_ARMV7A
42 FFMPEGCONF += --enable-thumb
43 endif
44 endif
45 endif
46
47 ifdef HAVE_CROSS_COMPILE
48 FFMPEGCONF += --enable-cross-compile
49 ifndef HAVE_DARWIN_OS
50 FFMPEGCONF += --cross-prefix=$(HOST)-
51 endif
52 endif
53
54 # ARM stuff
55 ifeq ($(ARCH),arm)
56 FFMPEGCONF += --arch=arm
57 ifdef HAVE_NEON
58 FFMPEGCONF += --enable-neon
59 endif
60 ifdef HAVE_ARMV7A
61 FFMPEGCONF += --cpu=cortex-a8
62 endif
63 endif
64
65 # MIPS stuff
66 ifeq ($(ARCH),mipsel)
67 FFMPEGCONF += --arch=mips
68 endif
69
70 # x86 stuff
71 ifeq ($(ARCH),i386)
72 ifndef HAVE_DARWIN_OS
73 FFMPEGCONF += --arch=x86
74 endif
75 endif
76
77 # Darwin
78 ifdef HAVE_DARWIN_OS
79 FFMPEGCONF += --arch=$(ARCH) --target-os=darwin
80 ifneq ($(findstring $(ARCH),i386 x86_64),)
81 FFMPEGCONF += --enable-memalign-hack
82 endif
83 ifeq ($(ARCH),x86_64)
84 FFMPEGCONF += --cpu=core2
85 endif
86 endif
87 ifdef HAVE_IOS
88 ifeq ($(ARCH),arm)
89 FFMPEGCONF += --enable-pic --as="$(AS)"
90 endif
91 endif
92 ifdef HAVE_MACOSX
93 FFMPEGCONF += --enable-vda
94 endif
95
96 # Linux
97 ifdef HAVE_LINUX
98 FFMPEGCONF += --target-os=linux --enable-pic
99
100 endif
101
102 # Windows
103 ifdef HAVE_WIN32
104 ifndef HAVE_MINGW_W64
105 DEPS_ffmpeg += directx
106 endif
107 FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
108 FFMPEGCONF += --enable-w32threads --enable-dxva2 \
109         --disable-decoder=dca
110
111 ifdef HAVE_WIN64
112 FFMPEGCONF += --cpu=athlon64 --arch=x86_64
113 else # !WIN64
114 FFMPEGCONF+= --cpu=i686 --arch=x86
115 endif
116
117 else # !Windows
118 FFMPEGCONF += --enable-pthreads
119 endif
120
121 # Build
122 PKGS += ffmpeg
123 ifeq ($(call need_pkg,"libavcodec >= 54.25.0 libavformat >= 53.21.0 libswscale"),)
124 PKGS_FOUND += ffmpeg
125 endif
126
127 $(TARBALLS)/ffmpeg-$(HASH).tar.gz:
128         $(call download,$(FFMPEG_SNAPURL))
129
130 .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(HASH).tar.gz
131         $(warning Not implemented.)
132         touch $@
133
134 ffmpeg: ffmpeg-$(HASH).tar.gz .sum-ffmpeg
135         rm -Rf $@ $@-$(HASH)
136         mkdir -p $@-$(HASH)
137         $(ZCAT) "$<" | (cd $@-$(HASH) && tar xv --strip-components=1)
138         $(MOVE)
139
140 .ffmpeg: ffmpeg
141         cd $< && $(HOSTVARS) ./configure \
142                 --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
143                 --prefix="$(PREFIX)" --enable-static --disable-shared
144         cd $< && $(MAKE) install-libs install-headers
145         touch $@