]> git.sesse.net Git - vlc/blob - contrib/src/ffmpeg/rules.mak
contrib: ffmpeg: fix OSX linking with vda enabled
[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=libvpx \
10         --enable-libgsm \
11         --enable-libvpx \
12         --enable-libopenjpeg \
13         --disable-debug \
14         --enable-gpl \
15         --enable-postproc \
16         --disable-ffprobe \
17         --disable-ffserver \
18         --disable-ffmpeg \
19         --disable-ffplay \
20         --disable-avconv \
21         --disable-devices \
22         --disable-protocols \
23         --disable-avfilter \
24         --disable-network
25 DEPS_ffmpeg = zlib gsm vpx $(DEPS_vpx) openjpeg
26
27 # Optional dependencies
28 ifdef BUILD_ENCODERS
29 FFMPEGCONF += --enable-libmp3lame
30 DEPS_ffmpeg += lame $(DEPS_lame)
31 else
32 FFMPEGCONF += --disable-encoders --disable-muxers
33 # XXX: REVISIT --enable-small ?
34 endif
35
36 # XXX: REVISIT
37 #ifndef HAVE_FPU
38 #FFMPEGCONF += --disable-mpegaudio-hp
39 #endif
40
41 ifdef HAVE_CROSS_COMPILE
42 FFMPEGCONF += --enable-cross-compile --cross-prefix=$(HOST)-
43 endif
44
45 # ARM stuff
46 ifeq ($(ARCH),arm)
47 FFMPEGCONF += --disable-runtime-cpudetect
48 endif
49
50 # Darwin
51 ifdef HAVE_DARWIN_OS
52 FFMPEGCONF += --arch=$(ARCH) --target-os=darwin
53 FFMPEG_CFLAGS += -DHAVE_LRINTF
54 endif
55 ifdef HAVE_MACOSX
56 ifneq ($(findstring $(ARCH),i386 x86_64),)
57 FFMPEGCONF += --enable-memalign-hack
58 endif
59 ifeq ($(ARCH),x86_64)
60 FFMPEGCONF += --cpu=core2
61 endif
62 endif
63
64 # Linux
65 ifdef HAVE_LINUX
66 FFMPEGCONF += --target-os=linux --enable-pic
67 endif
68
69 # Windows
70 ifdef HAVE_WIN32
71 DEPS_ffmpeg += directx
72 FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
73 FFMPEGCONF += --enable-w32threads \
74         --disable-bzlib --disable-bsfs \
75         --disable-decoder=dca --disable-encoder=vorbis \
76         --enable-dxva2
77
78 ifdef HAVE_WIN64
79 FFMPEGCONF += --cpu=athlon64 --arch=x86_64
80 else # !WIN64
81 FFMPEGCONF+= --cpu=i686 --arch=x86
82 endif
83 else
84 FFMPEGCONF += --enable-pthreads
85 endif
86
87 ifdef HAVE_WINCE
88 FFMPEGCONF += --target-os=mingw32ce --arch=armv4l --cpu=armv4t \
89         --disable-decoder=snow --disable-decoder=vc9 \
90         --disable-decoder=wmv3 --disable-decoder=vorbis \
91         --disable-decoder=dvdsub --disable-decoder=dvbsub
92 endif
93
94 FFMPEG_CFLAGS += --std=gnu99
95
96 # Build
97
98 PKGS += ffmpeg
99 ifeq ($(call need_pkg,"libavcodec libavformat libswscale"),)
100 PKGS_FOUND += ffmpeg
101 endif
102
103 $(TARBALLS)/ffmpeg-git.tar.gz:
104         $(call download,$(FFMPEG_SNAPURL))
105
106 FFMPEG_VERSION := git
107
108 .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(FFMPEG_VERSION).tar.gz
109         $(warning Not implemented.)
110         touch $@
111
112 ffmpeg: ffmpeg-$(FFMPEG_VERSION).tar.gz .sum-ffmpeg
113         rm -Rf $@ $@-git
114         mkdir -p $@-git
115         $(ZCAT) "$<" | (cd $@-git && tar xv --strip-components=1)
116 ifdef HAVE_WIN32
117         sed -i "s/std=c99/std=gnu99/" $@-$(FFMPEG_VERSION)/configure
118 endif
119         $(APPLY) $(SRC)/ffmpeg/vda.patch
120         $(MOVE)
121
122 .ffmpeg: ffmpeg
123         cd $< && $(HOSTVARS) ./configure \
124                 --extra-cflags="$(FFMPEG_CFLAGS) -DHAVE_STDINT_H"  \
125                 --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
126                 --prefix="$(PREFIX)" --enable-static --disable-shared
127         cd $< && $(MAKE) install-libs install-headers
128         touch $@