]> git.sesse.net Git - vlc/blob - contrib/src/ffmpeg/rules.mak
contrib: add --disable-net to disable network related code
[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 ifndef BUILD_NETWORK
31 FFMPEGCONF += --disable-network
32 endif
33 ifdef BUILD_ENCODERS
34 FFMPEGCONF += --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx --disable-decoder=libvpx_vp8 --disable-decoder=libvpx_vp9
35 DEPS_ffmpeg += lame $(DEPS_lame) vpx $(DEPS_vpx)
36 else
37 FFMPEGCONF += --disable-encoders --disable-muxers
38 endif
39
40 # Small size
41 ifdef ENABLE_SMALL
42 FFMPEGCONF += --enable-small
43 ifeq ($(ARCH),arm)
44 ifdef HAVE_ARMV7A
45 FFMPEGCONF += --enable-thumb
46 endif
47 endif
48 endif
49
50 ifdef HAVE_CROSS_COMPILE
51 FFMPEGCONF += --enable-cross-compile
52 ifndef HAVE_DARWIN_OS
53 FFMPEGCONF += --cross-prefix=$(HOST)-
54 endif
55 endif
56
57 # ARM stuff
58 ifeq ($(ARCH),arm)
59 FFMPEGCONF += --arch=arm
60 ifdef HAVE_NEON
61 FFMPEGCONF += --enable-neon
62 endif
63 ifdef HAVE_ARMV7A
64 FFMPEGCONF += --cpu=cortex-a8
65 endif
66 ifdef HAVE_ARMV6
67 FFMPEGCONF += --cpu=armv6 --disable-neon
68 endif
69 endif
70
71 # MIPS stuff
72 ifeq ($(ARCH),mipsel)
73 FFMPEGCONF += --arch=mips
74 endif
75
76 # x86 stuff
77 ifeq ($(ARCH),i386)
78 ifndef HAVE_DARWIN_OS
79 FFMPEGCONF += --arch=x86
80 endif
81 endif
82
83 # Darwin
84 ifdef HAVE_DARWIN_OS
85 FFMPEGCONF += --arch=$(ARCH) --target-os=darwin
86 ifeq ($(ARCH),x86_64)
87 FFMPEGCONF += --cpu=core2
88 endif
89 endif
90 ifdef HAVE_IOS
91 ifeq ($(ARCH),arm)
92 FFMPEGCONF += --enable-pic --as="$(AS)"
93 endif
94 endif
95 ifdef HAVE_MACOSX
96 FFMPEGCONF += --enable-vda
97 endif
98
99 # Linux
100 ifdef HAVE_LINUX
101 FFMPEGCONF += --target-os=linux --enable-pic
102
103 endif
104
105 # Windows
106 ifdef HAVE_WIN32
107 ifndef HAVE_MINGW_W64
108 DEPS_ffmpeg += directx
109 endif
110 FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
111 FFMPEGCONF += --enable-w32threads --enable-dxva2 \
112         --disable-decoder=dca
113
114 ifdef HAVE_WIN64
115 FFMPEGCONF += --cpu=athlon64 --arch=x86_64
116 else # !WIN64
117 FFMPEGCONF+= --cpu=i686 --arch=x86
118 endif
119
120 else # !Windows
121 FFMPEGCONF += --enable-pthreads
122 endif
123
124 # Build
125 PKGS += ffmpeg
126 ifeq ($(call need_pkg,"libavcodec >= 54.25.0 libavformat >= 53.21.0 libswscale"),)
127 PKGS_FOUND += ffmpeg
128 endif
129
130 $(TARBALLS)/ffmpeg-$(HASH).tar.gz:
131         $(call download,$(FFMPEG_SNAPURL))
132
133 .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(HASH).tar.gz
134         $(warning Not implemented.)
135         touch $@
136
137 ffmpeg: ffmpeg-$(HASH).tar.gz .sum-ffmpeg
138         rm -Rf $@ $@-$(HASH)
139         mkdir -p $@-$(HASH)
140         $(ZCAT) "$<" | (cd $@-$(HASH) && tar xv --strip-components=1)
141         $(MOVE)
142
143 .ffmpeg: ffmpeg
144         cd $< && $(HOSTVARS) ./configure \
145                 --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
146                 --prefix="$(PREFIX)" --enable-static --disable-shared
147         cd $< && $(MAKE) install-libs install-headers
148         touch $@