]> git.sesse.net Git - vlc/blob - contrib/src/ffmpeg/rules.mak
Contribs: deactivate libavcodec vorbis encoder
[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 --optflags=-O2
38 ifeq ($(ARCH),arm)
39 ifdef HAVE_ARMV7A
40 # XXX: assumes > ARMv7-A, and thus thumb2-able
41 FFMPEGCONF += --enable-thumb
42 endif
43 endif
44 endif
45
46 ifdef HAVE_CROSS_COMPILE
47 FFMPEGCONF += --enable-cross-compile
48 ifndef HAVE_IOS
49 FFMPEGCONF += --cross-prefix=$(HOST)-
50 endif
51 endif
52
53 # ARM stuff
54 ifeq ($(ARCH),arm)
55 FFMPEGCONF += --arch=arm
56 ifdef HAVE_NEON
57 FFMPEGCONF += --cpu=cortex-a8 --enable-neon
58 FFMPEG_CFLAGS += -mfpu=neon
59 endif
60 endif
61
62 # x86 stuff
63 ifeq ($(ARCH),i386)
64 FFMPEGCONF += --arch=x86
65 endif
66
67 # Darwin
68 ifdef HAVE_DARWIN_OS
69 FFMPEGCONF += --arch=$(ARCH) --target-os=darwin
70 ifneq ($(findstring $(ARCH),i386 x86_64),)
71 FFMPEGCONF += --enable-memalign-hack
72 endif
73 ifeq ($(ARCH),x86_64)
74 FFMPEGCONF += --cpu=core2
75 endif
76 endif
77 ifdef HAVE_IOS
78 FFMPEGCONF += --enable-pic --as="$(AS)"
79 endif
80
81 # Linux
82 ifdef HAVE_LINUX
83 FFMPEGCONF += --target-os=linux --enable-pic
84
85 # Android x86
86 ifeq ($(ANDROID_ABI), x86)
87 ifdef HAVE_ANDROID
88 # Android-x86 gcc doesn't guarantee an aligned stack, but this is
89 # handled by __attribute__((force_align_arg_pointer)) in libavcodec
90 # already, so we tell gcc to assume this alignment, so we don't need
91 # to waste a precious register in assembly functions to realign it.
92 FFMPEG_CFLAGS += -mincoming-stack-boundary=4
93 endif # HAVE_ANDROID
94 endif # x86
95
96 endif
97
98 # Windows
99 ifdef HAVE_WIN32
100 ifndef HAVE_MINGW_W64
101 DEPS_ffmpeg += directx
102 endif
103 FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
104 FFMPEGCONF += --enable-w32threads --enable-dxva2 \
105         --disable-decoder=dca
106
107 ifdef HAVE_WIN64
108 FFMPEGCONF += --cpu=athlon64 --arch=x86_64
109 else # !WIN64
110 FFMPEGCONF+= --cpu=i686 --arch=x86
111 endif
112
113 else # !Windows
114 FFMPEGCONF += --enable-pthreads
115 endif
116
117 # Build
118 PKGS += ffmpeg
119 ifeq ($(call need_pkg,"libavcodec >= 52.25.0 libavformat >= 52.30.0 libswscale"),)
120 PKGS_FOUND += ffmpeg
121 endif
122
123 $(TARBALLS)/ffmpeg-git.tar.gz:
124         $(call download,$(FFMPEG_SNAPURL))
125
126 FFMPEG_VERSION := git
127
128 .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(FFMPEG_VERSION).tar.gz
129         $(warning Not implemented.)
130         touch $@
131
132 ffmpeg: ffmpeg-$(FFMPEG_VERSION).tar.gz .sum-ffmpeg
133         rm -Rf $@ $@-git
134         mkdir -p $@-git
135         $(ZCAT) "$<" | (cd $@-git && tar xv --strip-components=1)
136         $(MOVE)
137
138 .ffmpeg: ffmpeg
139         cd $< && $(HOSTVARS) ./configure \
140                 --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
141                 --prefix="$(PREFIX)" --enable-static --disable-shared
142         cd $< && $(MAKE) install-libs install-headers
143         touch $@