rules.mak 3.52 KB
Newer Older
Edric Milaret's avatar
Edric Milaret committed
1
FFMPEG_HASH := c40983a6f631d22fede713d535bb9c31d5c9740c
Edric Milaret's avatar
Edric Milaret committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
FFMPEG_GITURL := https://github.com/FFmpeg/FFmpeg.git

ifdef HAVE_WIN32
PKGS += ffmpeg
endif

FFMPEGCONF = \
		--cc="$(CC)" \
		--pkg-config="$(PKG_CONFIG)"

#disable everything
FFMPEGCONF += \
		--disable-everything \
		--enable-zlib \
		--enable-gpl \
		--enable-swscale \
		--enable-protocols \
		--disable-programs \
		--disable-sdl


#enable muxers/demuxers
FFMPEGCONF += \
		--enable-demuxers \
		--enable-muxers

#enable parsers
FFMPEGCONF += \
		--enable-parser=h263 \
		--enable-parser=h264 \
		--enable-parser=mpeg4video \
		--enable-parser=vp8

#librairies
36
ifndef HAVE_ANDROID
Edric Milaret's avatar
Edric Milaret committed
37 38 39
FFMPEGCONF += \
		--enable-libx264 \
		--enable-libvpx
40
endif
Edric Milaret's avatar
Edric Milaret committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

#encoders/decoders
FFMPEGCONF += \
		--enable-encoder=adpcm_g722 \
		--enable-decoder=adpcm_g722 \
		--enable-encoder=rawvideo \
		--enable-decoder=rawvideo \
		--enable-encoder=libx264 \
		--enable-decoder=h264 \
		--enable-encoder=pcm_alaw \
		--enable-decoder=pcm_alaw \
		--enable-encoder=pcm_mulaw \
		--enable-decoder=pcm_mulaw \
		--enable-encoder=mpeg4 \
		--enable-decoder=mpeg4 \
		--enable-encoder=libvpx_vp8 \
		--enable-decoder=vp8 \
		--enable-encoder=h263 \
Éloi Bail's avatar
Éloi Bail committed
59
		--enable-encoder=h263p \
Edric Milaret's avatar
Edric Milaret committed
60 61 62 63
		--enable-decoder=h263 \
		--enable-encoder=mjpeg \
		--enable-decoder=mjpeg \
		--enable-decoder=mjpegb \
Edric Milaret's avatar
Edric Milaret committed
64 65 66
		--enable-libspeex \
		--enable-libopus \
		--enable-encoder=libspeex \
Edric Milaret's avatar
Edric Milaret committed
67 68 69
		--enable-decoder=libspeex \
		--enable-encoder=libopus \
		--enable-decoder=libopus
Edric Milaret's avatar
Edric Milaret committed
70

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
#encoders/decoders for images
FFMPEGCONF += \
		--enable-encoder=gif \
		--enable-decoder=gif \
		--enable-encoder=jpegls \
		--enable-decoder=jpegls \
		--enable-encoder=ljpeg \
		--enable-decoder=jpeg2000 \
		--enable-encoder=png \
		--enable-decoder=png \
		--enable-encoder=bmp \
		--enable-decoder=bmp \
		--enable-encoder=tiff \
		--enable-decoder=tiff

Edric Milaret's avatar
Edric Milaret committed
86 87
FFMPEGCONF += \
	--enable-indev=dshow \
88
	--enable-indev=gdigrab \
Edric Milaret's avatar
Edric Milaret committed
89 90 91 92
	--enable-dxva2

DEPS_ffmpeg = iconv zlib x264 vpx opus speex $(DEPS_vpx)

93 94 95 96 97 98 99 100 101 102 103 104
# Linux
ifdef HAVE_LINUX
FFMPEGCONF += --target-os=linux --enable-pic
ifndef HAVE_ANDROID
FFMPEGCONF += --enable-indev=v4l2 --enable-indev=x11grab --enable-x11grab
else
# used to avoid Text Relocations
FFMPEGCONF += --extra-cxxflags=-fPIC --extra-cflags=-fPIC
FFMPEGCONF += --disable-asm
endif
endif

Edric Milaret's avatar
Edric Milaret committed
105 106 107 108 109 110 111 112 113 114 115 116 117
ifdef HAVE_CROSS_COMPILE
FFMPEGCONF += --cross-prefix=$(HOST)-
endif

# x86 stuff
ifeq ($(ARCH),i386)
FFMPEGCONF += --arch=x86
endif

ifeq ($(ARCH),x86_64)
FFMPEGCONF += --arch=x86_64
endif

118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
# ARM stuff
ifeq ($(ARCH),arm)
FFMPEGCONF += --arch=arm
ifdef HAVE_NEON
FFMPEGCONF += --enable-neon
endif
ifdef HAVE_ARMV7A
FFMPEGCONF += --cpu=cortex-a8
endif
ifdef HAVE_ARMV6
FFMPEGCONF += --cpu=armv6 --disable-neon
endif
endif

# ARM64 stuff
ifeq ($(ARCH),aarch64)
FFMPEGCONF += --arch=aarch64
endif

Edric Milaret's avatar
Edric Milaret committed
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
# Windows
ifdef HAVE_WIN32
FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
FFMPEGCONF += --enable-w32threads --disable-decoder=dca
endif

ifeq ($(call need_pkg,"ffmpeg >= 2.6.1"),)
PKGS_FOUND += ffmepg
endif

$(TARBALLS)/ffmpeg-$(FFMPEG_HASH).tar.xz:
	$(call download_git,$(FFMPEG_GITURL),release/2.6, $(FFMPEG_HASH))

.sum-ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.xz
	$(warning Not implemented.)
	touch $@

ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.xz .sum-ffmpeg
	rm -Rf $@ $@-$(FFMPEG_HASH)
	mkdir -p $@-$(FFMPEG_HASH)
	(cd $@-$(FFMPEG_HASH) && tar xv --strip-components=1 -f ../$<)
	$(UPDATE_AUTOCONFIG)
	$(MOVE)

.ffmpeg: ffmpeg
	cd $< && $(HOSTVARS) ./configure \
		--extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
164
                --prefix="$(PREFIX)" --enable-static --disable-shared
Edric Milaret's avatar
Edric Milaret committed
165 166
	cd $< && $(MAKE) install-libs install-headers
	touch $@