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