]> git.sesse.net Git - vlc/blob - contrib/src/ffmpeg/rules.mak
contribs: ffmpeg/libav: Properly pass NM/AR env variables
[vlc] / contrib / src / ffmpeg / rules.mak
1 # FFmpeg
2
3 #Uncomment the one you want
4 #USE_LIBAV ?= 1
5 #USE_FFMPEG ?= 1
6
7 ifdef USE_FFMPEG
8 HASH=HEAD
9 FFMPEG_SNAPURL := http://git.videolan.org/?p=ffmpeg.git;a=snapshot;h=$(HASH);sf=tgz
10 else
11 HASH=HEAD
12 FFMPEG_SNAPURL := http://git.libav.org/?p=libav.git;a=snapshot;h=$(HASH);sf=tgz
13 endif
14
15 FFMPEGCONF = \
16         --cc="$(CC)" \
17         --pkg-config="$(PKG_CONFIG)" \
18         --disable-doc \
19         --disable-encoder=vorbis \
20         --enable-libgsm \
21         --enable-libopenjpeg \
22         --disable-debug \
23         --disable-avdevice \
24         --disable-devices \
25         --disable-avfilter \
26         --disable-filters \
27         --disable-bsfs \
28         --disable-bzlib \
29         --disable-programs \
30         --disable-avresample
31
32 ifdef USE_FFMPEG
33 FFMPEGCONF += \
34         --disable-swresample \
35         --disable-iconv
36 endif
37
38 DEPS_ffmpeg = zlib gsm openjpeg
39
40 # Optional dependencies
41 ifndef BUILD_NETWORK
42 FFMPEGCONF += --disable-network
43 endif
44 ifdef BUILD_ENCODERS
45 FFMPEGCONF += --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx --disable-decoder=libvpx_vp8 --disable-decoder=libvpx_vp9
46 DEPS_ffmpeg += lame $(DEPS_lame) vpx $(DEPS_vpx)
47 else
48 FFMPEGCONF += --disable-encoders --disable-muxers
49 endif
50
51 # Small size
52 ifdef ENABLE_SMALL
53 FFMPEGCONF += --enable-small
54 endif
55 ifeq ($(ARCH),arm)
56 ifdef HAVE_ARMV7A
57 FFMPEGCONF += --enable-thumb
58 endif
59 endif
60
61 ifdef HAVE_CROSS_COMPILE
62 FFMPEGCONF += --enable-cross-compile
63 ifndef HAVE_DARWIN_OS
64 FFMPEGCONF += --cross-prefix=$(HOST)-
65 endif
66 endif
67
68 # ARM stuff
69 ifeq ($(ARCH),arm)
70 ifndef HAVE_DARWIN_OS
71 FFMPEGCONF += --arch=arm
72 endif
73 ifdef HAVE_NEON
74 FFMPEGCONF += --enable-neon
75 endif
76 ifdef HAVE_ARMV7A
77 FFMPEGCONF += --cpu=cortex-a8
78 endif
79 ifdef HAVE_ARMV6
80 FFMPEGCONF += --cpu=armv6 --disable-neon
81 endif
82 endif
83
84 # ARM64 stuff
85 ifeq ($(ARCH),aarch64)
86 ifndef HAVE_DARWIN_OS
87 FFMPEGCONF += --arch=aarch64
88 endif
89 endif
90
91 # MIPS stuff
92 ifeq ($(ARCH),mipsel)
93 FFMPEGCONF += --arch=mips
94 endif
95
96 # x86 stuff
97 ifeq ($(ARCH),i386)
98 ifndef HAVE_DARWIN_OS
99 FFMPEGCONF += --arch=x86
100 endif
101 endif
102
103 # x86_64 stuff
104 ifeq ($(ARCH),x86_64)
105 ifndef HAVE_DARWIN_OS
106 FFMPEGCONF += --arch=x86_64
107 endif
108 endif
109
110 # Darwin
111 ifdef HAVE_DARWIN_OS
112 FFMPEGCONF += --arch=$(ARCH) --target-os=darwin
113 ifeq ($(ARCH),x86_64)
114 FFMPEGCONF += --cpu=core2
115 endif
116 endif
117 ifdef HAVE_IOS
118 FFMPEGCONF += --enable-pic
119 ifdef HAVE_NEON
120 FFMPEGCONF += --as="$(AS)"
121 endif
122 endif
123 ifdef HAVE_MACOSX
124 FFMPEGCONF += --enable-vda
125 endif
126
127 # Linux
128 ifdef HAVE_LINUX
129 FFMPEGCONF += --target-os=linux --enable-pic
130
131 endif
132
133 # Windows
134 ifdef HAVE_WIN32
135 ifndef HAVE_MINGW_W64
136 DEPS_ffmpeg += directx
137 endif
138 FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
139 FFMPEGCONF += --enable-w32threads --enable-dxva2 \
140         --disable-decoder=dca
141
142 ifdef HAVE_WIN64
143 FFMPEGCONF += --cpu=athlon64 --arch=x86_64
144 else # !WIN64
145 FFMPEGCONF+= --cpu=i686 --arch=x86
146 endif
147
148 else # !Windows
149 FFMPEGCONF += --enable-pthreads
150 endif
151
152 # Solaris
153 ifdef HAVE_SOLARIS
154 ifeq ($(ARCH),x86_64)
155 FFMPEGCONF += --cpu=core2
156 endif
157 FFMPEGCONF += --target-os=sunos --enable-pic
158 endif
159
160 # Build
161 PKGS += ffmpeg
162 ifeq ($(call need_pkg,"libavcodec >= 54.25.0 libavformat >= 53.21.0 libswscale"),)
163 PKGS_FOUND += ffmpeg
164 endif
165
166 FFMPEGCONF += --nm="$(NM)" --ar="$(AR)"
167
168 $(TARBALLS)/ffmpeg-$(HASH).tar.gz:
169         $(call download,$(FFMPEG_SNAPURL))
170
171 .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(HASH).tar.gz
172         $(warning Not implemented.)
173         touch $@
174
175 ffmpeg: ffmpeg-$(HASH).tar.gz .sum-ffmpeg
176         rm -Rf $@ $@-$(HASH)
177         mkdir -p $@-$(HASH)
178         $(ZCAT) "$<" | (cd $@-$(HASH) && tar xv --strip-components=1)
179         $(MOVE)
180
181 .ffmpeg: ffmpeg
182         cd $< && $(HOSTVARS) ./configure \
183                 --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
184                 --prefix="$(PREFIX)" --enable-static --disable-shared
185         cd $< && $(MAKE) install-libs install-headers
186         touch $@