]> git.sesse.net Git - vlc/blob - contrib/src/ffmpeg/rules.mak
1f2e3177aeeaac3357e57ceda647e8a4f2818cf5
[vlc] / contrib / src / ffmpeg / rules.mak
1 # FFmpeg
2
3 FFMPEG_VERSION=0.4.8
4 FFMPEG_URL=$(SF)/ffmpeg/ffmpeg-$(FFMPEG_VERSION).tar.gz
5 FFMPEG_SVN=svn://svn.ffmpeg.org/ffmpeg/trunk
6 FFMPEG_SVN_REV=26400
7
8
9 FFMPEGCONF = --cc="$(CC)" \
10         --disable-doc \
11         --disable-decoder=libvpx \
12         --disable-debug \
13         --enable-gpl \
14         --enable-postproc \
15         --disable-ffprobe \
16         --disable-ffserver \
17         --disable-ffmpeg \
18         --disable-ffplay \
19         --disable-devices \
20         --disable-protocols \
21         --disable-avfilter \
22         --disable-network
23
24 # Optional dependencies
25 ifdef BUILD_ENCODERS
26 # TODO:
27 #FFMPEGCONF+= --enable-libmp3lame
28 #.ffmpeg: .lame
29 #PKGS += lame
30 else
31 FFMPEGCONF += --disable-encoders --disable-muxers
32 # XXX: REVISIT --enable-small ?
33 endif
34
35 #FFMPEGCONF+= --enable-libgsm
36 #.ffmpeg: .gsm
37 #PKGS += gsm
38
39 #FFMPEGCONF += --enable-libvpx
40 #.ffmpeg: .vpx
41 #PKGS += vpx
42
43 # XXX: REVISIT
44 #ifndef HAVE_FPU
45 #FFMPEGCONF+= --disable-mpegaudio-hp
46 #endif
47
48 ifdef HAVE_CROSS_COMPILE
49 FFMPEGCONF += --enable-cross-compile --cross-prefix=$(HOST)-
50 endif
51
52 # ARM stuff
53 ifeq ($(ARCH),arm)
54 FFMPEGCONF += --disable-runtime-cpudetect
55 # TODO: define HAVE_ARM_NEON or something
56 ifdef HAVE_ARM_NEON
57 # XXX: REVISIT choice of CPU?
58 FFMPEGCONF += --cpu=cortex-a8 --enable-neon
59 endif
60 # TODO: --enable-iwmmxt if anyone still cares
61 endif
62
63 # Darwin
64 ifdef HAVE_DARWIN_OS
65 FFMPEGCONF += --arch=$(ARCH) --target-os=darwin
66 FFMPEG_CFLAGS += -DHAVE_LRINTF
67 endif
68 ifdef HAVE_MACOSX
69 ifneq ($(findstring $(ARCH),i386 x86_64),)
70 FFMPEGCONF += --enable-memalign-hack
71 endif
72 ifeq ($(ARCH),x86_64)
73 FFMPEGCONF += --cpu=core2
74 endif
75 .ffmpeg: .yasm
76 PKGS += yasm
77 endif
78
79 # Linux
80 ifdef HAVE_LINUX
81 FFMPEGCONF += --target-os=linux --enable-pic
82 endif
83
84 # Windows
85 ifdef HAVE_WIN32
86 FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
87 FFMPEGCONF += --enable-w32threads \
88         --disable-bzlib --disable-bsfs \
89         --disable-decoder=dca --disable-encoder=vorbis
90
91 ifdef HAVE_WIN64
92 FFMPEGCONF += --disable-dxva2
93
94 FFMPEGCONF += --cpu=athlon64 --arch=x86_64
95 else # !WIN64
96 FFMPEGCONF += --enable-dxva2
97 .ffmpeg: .directx
98 PKGS += directx
99
100 FFMPEGCONF+= --cpu=i686 --arch=x86
101 endif
102 else
103 FFMPEGCONF += --enable-pthreads
104 endif
105
106 ifdef HAVE_WINCE
107 FFMPEGCONF += --target-os=mingw32ce --arch=armv4l --cpu=armv4t \
108         --disable-decoder=snow --disable-decoder=vc9 \
109         --disable-decoder=wmv3 --disable-decoder=vorbis \
110         --disable-decoder=dvdsub --disable-decoder=dvbsub
111 endif
112
113 FFMPEG_CFLAGS += --std=gnu99
114
115 # Build
116
117 PKGS += ffmpeg
118
119 ffmpeg-$(FFMPEG_VERSION).tar.gz:
120         $(error FFmpeg snapshot is too old, VCS must be used!)
121         $(call download,$(FFMPEG_URL))
122
123 $(TARBALLS)/ffmpeg-svn.tar.gz:
124         $(SVN) export $(FFMPEG_SVN) ffmpeg-svn
125         tar cvz ffmpeg-svn > $@
126
127 FFMPEG_VERSION := svn
128
129 .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(FFMPEG_VERSION).tar.gz
130         $(warning Not implemented.)
131         touch $@
132
133 ffmpeg: ffmpeg-$(FFMPEG_VERSION).tar.gz .sum-ffmpeg
134         $(UNPACK)
135 ifdef HAVE_WIN64
136         (cd $@-$(FFMPEG_VERSION)/libswscale && patch -p0) < $(SRC)/ffmpeg/ffmpeg-win64.patch
137 endif
138 ifdef HAVE_WIN32
139         sed -i "s/std=c99/std=gnu99/" $@-$(FFMPEG_VERSION)/configure
140 endif
141         (cd $@-$(FFMPEG_VERSION) && patch -p1) < $(SRC)/ffmpeg/libavformat-ape.c.patch
142         mv $@-$(FFMPEG_VERSION) $@
143         touch $@
144
145 .ffmpeg: ffmpeg
146         # TODO: .zlib
147         cd $< && $(HOSTVARS) ./configure \
148                 --extra-cflags="$(FFMPEG_CFLAGS) -DHAVE_STDINT_H"  \
149                 --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
150                 --prefix="$(PREFIX)" --enable-static --disable-shared
151         cd $< && $(MAKE) install-libs install-headers
152         touch $@