2014-10-13 09:55:17 +02:00
|
|
|
#
|
|
|
|
# Static Audio/Video libs (ffmpeg version) build
|
|
|
|
# Copyright (C) 2014 Jaroslav Kysela
|
|
|
|
#
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
# (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
|
|
|
|
|
|
include $(dir $(lastword $(MAKEFILE_LIST))).config.mk
|
|
|
|
|
2014-10-13 17:22:21 +02:00
|
|
|
unexport CFLAGS
|
|
|
|
unexport LDFLAGS
|
|
|
|
|
2014-10-13 09:55:17 +02:00
|
|
|
define DOWNLOAD
|
|
|
|
@mkdir -p $(LIBAVDIR)/build
|
2014-10-13 10:23:06 +02:00
|
|
|
if test -z "$${TVHEADEND_FILE_CACHE}"; then \
|
2014-10-13 14:39:30 +02:00
|
|
|
wget --no-verbose -O $(2) $(1); \
|
2014-10-13 10:23:06 +02:00
|
|
|
else \
|
|
|
|
file=$$(basename $(2)); \
|
|
|
|
cp "$$TVHEADEND_FILE_CACHE/$$(file)" $(2); \
|
|
|
|
fi
|
2014-10-15 11:14:11 +02:00
|
|
|
@{ \
|
|
|
|
sum=$$(sha1sum $(2) | cut -d ' ' -f 1); \
|
|
|
|
printf "SHA1SUM test '$${sum}' == '$(3)': "; \
|
2014-10-15 12:33:04 +02:00
|
|
|
test "y$${sum}" = "y$(3)"; \
|
2014-10-15 11:14:11 +02:00
|
|
|
}
|
|
|
|
@echo "OK"
|
2014-10-13 09:55:17 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
define UNTAR
|
|
|
|
tar x -C $(LIBAVDIR) -$(2)f $(LIBAVDIR)/$(1)
|
|
|
|
endef
|
|
|
|
|
|
|
|
LIBAVDIR = $(ROOTDIR)/libav_static
|
|
|
|
|
2014-10-13 14:39:30 +02:00
|
|
|
export PATH := $(LIBAVDIR)/build/ffmpeg/bin:$(PATH)
|
|
|
|
|
2014-10-13 09:55:17 +02:00
|
|
|
ECFLAGS = -I$(LIBAVDIR)/build/ffmpeg/include
|
|
|
|
ELIBS = -L$(LIBAVDIR)/build/ffmpeg/lib -ldl
|
|
|
|
|
|
|
|
FFMPEG = ffmpeg-2.4.2
|
|
|
|
FFMPEG_TB = $(FFMPEG).tar.bz2
|
|
|
|
FFMPEG_URL = http://ffmpeg.org/releases/$(FFMPEG_TB)
|
2014-10-15 11:14:11 +02:00
|
|
|
FFMPEG_SHA1 = 8fedc6f235d8510f716bca1784faa8cbe5d9cf78
|
2014-10-13 09:55:17 +02:00
|
|
|
|
|
|
|
EXTLIBS = libx264 libvorbis libvpx
|
|
|
|
COMPONENTS = avutil avformat avcodec swresample swscale avresample
|
2014-10-14 17:55:38 +02:00
|
|
|
DECODERS = mpeg2video mp2 ac3 eac3 h264 h264_vdpau aac aac_latm vorbis libvorbis
|
2014-10-13 09:55:17 +02:00
|
|
|
ENCODERS = mpeg2video mp2 libx264 libvpx_vp8 libvpx_vp9 aac libaacplus vorbis libvorbis
|
2014-10-17 20:53:57 +02:00
|
|
|
MUXERS = mpegts mpeg2dvd matroska webm
|
2014-10-17 13:50:59 +02:00
|
|
|
BSFS = h264_mp4toannexb
|
2014-10-13 09:55:17 +02:00
|
|
|
|
|
|
|
LIBOGG = libogg-1.3.2
|
|
|
|
LIBOGG_TB = $(LIBOGG).tar.gz
|
|
|
|
LIBOGG_URL = http://downloads.xiph.org/releases/ogg/$(LIBOGG_TB)
|
2014-10-15 11:14:11 +02:00
|
|
|
LIBOGG_SHA1 = df7f3977bbeda67306bc2a427257dd7375319d7d
|
2014-10-13 09:55:17 +02:00
|
|
|
|
|
|
|
LIBVORBIS = libvorbis-1.3.4
|
|
|
|
LIBVORBIS_TB = $(LIBVORBIS).tar.gz
|
|
|
|
LIBVORBIS_URL = http://downloads.xiph.org/releases/vorbis/$(LIBVORBIS_TB)
|
2014-10-15 11:14:11 +02:00
|
|
|
LIBVORBIS_SHA1 = 1602716c187593ffe4302124535240cec2079df3
|
2014-10-13 09:55:17 +02:00
|
|
|
|
2014-10-13 10:23:06 +02:00
|
|
|
LIBX264 = x264-snapshot-20141012-2245
|
2014-10-13 09:55:17 +02:00
|
|
|
LIBX264_TB = $(LIBX264).tar.bz2
|
|
|
|
LIBX264_URL = ftp://ftp.videolan.org/pub/x264/snapshots/$(LIBX264_TB)
|
2014-10-15 11:14:11 +02:00
|
|
|
LIBX264_SHA1 = 392cd6b0e723192e009d731fe44db01b55c97fba
|
2014-10-13 09:55:17 +02:00
|
|
|
|
|
|
|
LIBVPX = libvpx-v1.3.0
|
|
|
|
LIBVPX_TB = $(LIBVPX).tar.bz2
|
|
|
|
LIBVPX_URL = https://webm.googlecode.com/files/$(LIBVPX_TB)
|
2014-10-15 11:14:11 +02:00
|
|
|
LIBVPX_SHA1 = 191b95817aede8c136cc3f3745fb1b8c50e6d5dc
|
2014-10-13 09:55:17 +02:00
|
|
|
|
2014-10-13 13:33:35 +02:00
|
|
|
YASM = yasm-1.3.0
|
|
|
|
YASM_TB = $(YASM).tar.gz
|
|
|
|
YASM_URL = http://www.tortall.net/projects/yasm/releases/$(YASM_TB)
|
2014-10-15 11:14:11 +02:00
|
|
|
YASM_SHA1 = b7574e9f0826bedef975d64d3825f75fbaeef55e
|
2014-10-13 13:33:35 +02:00
|
|
|
|
2014-10-13 09:55:17 +02:00
|
|
|
.PHONY: build
|
|
|
|
build: $(LIBAVDIR)/$(FFMPEG)/.tvh_build
|
|
|
|
|
2014-10-13 13:33:35 +02:00
|
|
|
#
|
|
|
|
# YASM
|
|
|
|
#
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_download:
|
2014-10-15 11:14:11 +02:00
|
|
|
$(call DOWNLOAD,$(YASM_URL),$(LIBAVDIR)/$(YASM_TB),$(YASM_SHA1))
|
2014-10-13 13:33:35 +02:00
|
|
|
$(call UNTAR,$(YASM_TB),z)
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_build: \
|
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_download
|
|
|
|
cd $(LIBAVDIR)/$(YASM) && ./configure \
|
|
|
|
--prefix=/ffmpeg
|
|
|
|
DESTDIR=$(LIBAVDIR)/build \
|
|
|
|
make -C $(LIBAVDIR)/$(YASM) install
|
|
|
|
@touch $@
|
|
|
|
|
2014-10-13 09:55:17 +02:00
|
|
|
#
|
|
|
|
# libogg & libvorbis
|
|
|
|
#
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBOGG)/.tvh_download:
|
2014-10-15 11:14:11 +02:00
|
|
|
$(call DOWNLOAD,$(LIBOGG_URL),$(LIBAVDIR)/$(LIBOGG_TB),$(LIBOGG_SHA1))
|
2014-10-13 09:55:17 +02:00
|
|
|
$(call UNTAR,$(LIBOGG_TB),z)
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBOGG)/.tvh_build: \
|
2014-10-13 13:33:35 +02:00
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_build \
|
2014-10-13 09:55:17 +02:00
|
|
|
$(LIBAVDIR)/$(LIBOGG)/.tvh_download
|
|
|
|
cd $(LIBAVDIR)/$(LIBOGG) && ./configure \
|
|
|
|
--prefix=/ffmpeg \
|
|
|
|
--enable-static \
|
|
|
|
--disable-shared
|
2014-10-13 14:39:30 +02:00
|
|
|
DESTDIR=$(LIBAVDIR)/build \
|
2014-10-13 13:33:35 +02:00
|
|
|
make -C $(LIBAVDIR)/$(LIBOGG) install
|
2014-10-13 09:55:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_download: \
|
|
|
|
$(LIBAVDIR)/$(LIBOGG)/.tvh_download
|
2014-10-15 11:14:11 +02:00
|
|
|
$(call DOWNLOAD,$(LIBVORBIS_URL),$(LIBAVDIR)/$(LIBVORBIS_TB),$(LIBVORBIS_SHA1))
|
2014-10-13 09:55:17 +02:00
|
|
|
$(call UNTAR,$(LIBVORBIS_TB),z)
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_build: \
|
|
|
|
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_download \
|
2014-10-13 13:33:35 +02:00
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_build \
|
2014-10-13 09:55:17 +02:00
|
|
|
$(LIBAVDIR)/$(LIBOGG)/.tvh_build
|
|
|
|
cd $(LIBAVDIR)/$(LIBVORBIS) && ./configure \
|
|
|
|
--prefix=/ffmpeg \
|
|
|
|
--enable-static \
|
|
|
|
--disable-shared \
|
|
|
|
--with-ogg=$(LIBAVDIR)/build/ffmpeg
|
2014-10-13 14:39:30 +02:00
|
|
|
DESTDIR=$(LIBAVDIR)/build \
|
2014-10-13 13:33:35 +02:00
|
|
|
make -C $(LIBAVDIR)/$(LIBVORBIS) install
|
2014-10-13 09:55:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
#
|
|
|
|
# libx264
|
|
|
|
#
|
|
|
|
|
2014-10-13 15:51:09 +02:00
|
|
|
ARCH = $(shell $(CC) -dumpmachine | cut -d '-' -f 1)
|
2014-10-13 15:27:26 +02:00
|
|
|
|
2014-10-13 15:51:09 +02:00
|
|
|
ifneq (,$(filter i386 i486 i586 i686 pentium,$(ARCH)))
|
2014-10-13 15:27:26 +02:00
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBX264)/.tvh_download:
|
|
|
|
@echo "***** PLEASE FIX !!!! libx264 build for i386 *****"
|
2014-10-13 16:24:57 +02:00
|
|
|
@mkdir -p $(LIBAVDIR)/$(LIBX264)
|
2014-10-13 15:27:26 +02:00
|
|
|
@touch $@
|
|
|
|
|
2014-10-13 16:24:57 +02:00
|
|
|
$(LIBAVDIR)/$(LIBX264)/.tvh_build: $(LIBAVDIR)/$(LIBX264)/.tvh_download
|
2014-10-13 16:26:02 +02:00
|
|
|
@touch $@
|
2014-10-13 15:27:26 +02:00
|
|
|
|
|
|
|
else
|
|
|
|
|
2014-10-13 09:55:17 +02:00
|
|
|
$(LIBAVDIR)/$(LIBX264)/.tvh_download:
|
2014-10-15 11:14:11 +02:00
|
|
|
$(call DOWNLOAD,$(LIBX264_URL),$(LIBAVDIR)/$(LIBX264_TB),$(LIBX264_SHA1))
|
2014-10-13 10:23:06 +02:00
|
|
|
#rm -rf $(LIBAVDIR)/x264-snapshot-*
|
2014-10-13 09:55:17 +02:00
|
|
|
$(call UNTAR,$(LIBX264_TB),j)
|
2014-10-13 10:23:06 +02:00
|
|
|
#{ ln -sf $$(basename $(LIBAVDIR)/x264-snapshot-*) $(LIBAVDIR)/$(LIBX264); }
|
2014-10-13 09:55:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBX264)/.tvh_build: \
|
2014-10-13 13:33:35 +02:00
|
|
|
$(LIBAVDIR)/$(LIBX264)/.tvh_download \
|
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_build
|
2014-10-13 09:55:17 +02:00
|
|
|
cd $(LIBAVDIR)/$(LIBX264) && ./configure \
|
|
|
|
--prefix=/ffmpeg \
|
|
|
|
--enable-static \
|
|
|
|
--disable-shared \
|
|
|
|
--disable-avs \
|
|
|
|
--disable-swscale \
|
|
|
|
--disable-lavf \
|
|
|
|
--disable-ffms \
|
|
|
|
--disable-gpac \
|
|
|
|
--disable-lsmash
|
2014-10-13 14:39:30 +02:00
|
|
|
DESTDIR=$(LIBAVDIR)/build \
|
2014-10-13 13:33:35 +02:00
|
|
|
make -C $(LIBAVDIR)/$(LIBX264) install
|
2014-10-13 09:55:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
2014-10-13 15:27:26 +02:00
|
|
|
endif
|
|
|
|
|
2014-10-13 09:55:17 +02:00
|
|
|
#
|
|
|
|
# libvpx (VP8)
|
|
|
|
#
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBVPX)/.tvh_download:
|
|
|
|
@mkdir -p $(LIBAVDIR)
|
2014-10-15 11:14:11 +02:00
|
|
|
$(call DOWNLOAD,$(LIBVPX_URL),$(LIBAVDIR)/$(LIBVPX_TB),$(LIBVPX_SHA1))
|
2014-10-13 09:55:17 +02:00
|
|
|
$(call UNTAR,$(LIBVPX_TB),j)
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(LIBVPX)/.tvh_build: \
|
2014-10-13 13:33:35 +02:00
|
|
|
$(LIBAVDIR)/$(LIBVPX)/.tvh_download \
|
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_build
|
2014-10-13 09:55:17 +02:00
|
|
|
cd $(LIBAVDIR)/$(LIBVPX) && ./configure \
|
|
|
|
--prefix=/ffmpeg \
|
|
|
|
--enable-static \
|
|
|
|
--disable-shared
|
2014-10-13 14:39:30 +02:00
|
|
|
DIST_DIR=$(LIBAVDIR)/build/ffmpeg \
|
2014-10-13 13:33:35 +02:00
|
|
|
make -C $(LIBAVDIR)/$(LIBVPX) install
|
2014-10-13 09:55:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
#
|
|
|
|
# FFMPEG
|
|
|
|
#
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(FFMPEG)/.tvh_download:
|
|
|
|
@mkdir -p $(LIBAVDIR)/build
|
2014-10-15 11:14:11 +02:00
|
|
|
$(call DOWNLOAD,$(FFMPEG_URL),$(LIBAVDIR)/$(FFMPEG_TB),$(FFMPEG_SHA1))
|
2014-10-13 09:55:17 +02:00
|
|
|
$(call UNTAR,$(FFMPEG_TB),j)
|
|
|
|
@touch $@
|
|
|
|
|
|
|
|
$(LIBAVDIR)/$(FFMPEG)/.tvh_build: \
|
2014-10-13 13:33:35 +02:00
|
|
|
$(LIBAVDIR)/$(YASM)/.tvh_build \
|
2014-10-13 09:55:17 +02:00
|
|
|
$(LIBAVDIR)/$(LIBVORBIS)/.tvh_build \
|
|
|
|
$(LIBAVDIR)/$(LIBX264)/.tvh_build \
|
|
|
|
$(LIBAVDIR)/$(LIBVPX)/.tvh_build \
|
|
|
|
$(LIBAVDIR)/$(FFMPEG)/.tvh_download
|
|
|
|
cd $(LIBAVDIR)/$(FFMPEG) && ./configure \
|
|
|
|
--prefix=/ffmpeg \
|
|
|
|
--disable-all \
|
|
|
|
--enable-static \
|
|
|
|
--disable-shared \
|
|
|
|
--enable-gpl \
|
|
|
|
--extra-cflags="$(ECFLAGS)" \
|
|
|
|
--extra-libs="$(ELIBS)" \
|
|
|
|
$(foreach extlib,$(EXTLIBS),--enable-$(extlib)) \
|
|
|
|
$(foreach component,$(COMPONENTS),--enable-$(component)) \
|
|
|
|
$(foreach decoder,$(DECODERS),--enable-decoder=$(decoder)) \
|
|
|
|
$(foreach encoder,$(ENCODERS),--enable-encoder=$(encoder)) \
|
2014-10-17 13:50:59 +02:00
|
|
|
$(foreach muxer,$(MUXERS),--enable-muxer=$(muxer)) \
|
|
|
|
$(foreach bsf,$(BSFS),--enable-bsf=$(bsf))
|
2014-10-13 14:39:30 +02:00
|
|
|
DESTDIR=$(LIBAVDIR)/build \
|
2014-10-13 13:33:35 +02:00
|
|
|
make -C $(LIBAVDIR)/$(FFMPEG) install
|
2014-10-13 09:55:17 +02:00
|
|
|
@touch $@
|
|
|
|
|
|
|
|
.PHONY: static_libav_clean
|
|
|
|
static_libav_clean:
|
|
|
|
@rm -rf $(LIBAVDIR)
|