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