2
# This Makefile provides automatic build environment for FFmpeg
5
####################################################################################################
16
CHECKINSTALL = checkinstall --backup=no --default
18
# version suffix (.deb)
19
VERSION_SUFFIX = $(shell date +%Y%m%d)
21
# libx264 configure script options
22
X264_OPTS ?= --enable-pic --enable-shared
24
# FFmpeg configure script options
26
--enable-gpl --enable-version3 --enable-nonfree \
27
--enable-postproc --enable-pthreads --enable-runtime-cpudetect --enable-pic --disable-stripping \
28
--enable-avfilter --enable-vdpau --enable-bzlib --enable-zlib --enable-vaapi --enable-x11grab \
29
--enable-libfaac --enable-libmp3lame \
30
--enable-libopencore-amrnb --enable-libopencore-amrwb \
31
--enable-libx264 --enable-libxvid --enable-libtheora --enable-libvorbis \
32
--enable-libdirac --enable-libschroedinger \
33
--enable-libopenjpeg --enable-libgsm --enable-libspeex --enable-libdc1394
35
# FFmpeg repository root
36
FFMPEG_REPOS_ROOT = svn://svn.ffmpeg.org/ffmpeg
37
# libx264 repository root
38
X264_REPOS_ROOT = git://git.videolan.org/x264.git
39
# FFmpeg mobile mod repository root
40
FFMPEG_MM_REPOS_ROOT = lp:~epii/+junk/ffmpeg-mm
42
# FFmpeg repository directory
43
FFMPEG_REPOS_DIR = ffmpeg_repos
44
# libx264 repository directory
45
X264_REPOS_DIR = x264_repos
46
# FFmpeg mobile mod repository directory
47
FFMPEG_MM_REPOS_DIR = $(FFMPEG_REPOS_DIR)/patches
50
SUITE = $(shell lsb_release --codename --short)
52
# all extra tools (or, more precisely targets) that should be run
53
FFMPEG_CONFIGURE_EXTRA_DEPENDS_ALL = ffmpeg-mm-all
55
####################################################################################################
61
clean: ffmpeg-clean ffmpeg-mm-clean x264-clean
64
####################################################################################################
67
ifeq ($(SUITE), karmic)
68
ffmpeg-configure-extra-depends-stamp: $(FFMPEG_CONFIGURE_EXTRA_DEPENDS_ALL) x264-install-stamp
69
else ifeq ($(SUITE), lucid)
70
ffmpeg-configure-extra-depends-stamp: $(FFMPEG_CONFIGURE_EXTRA_DEPENDS_ALL) x264-install-stamp
71
else ifeq ($(SUITE), maverick)
72
ffmpeg-configure-extra-depends-stamp: $(FFMPEG_CONFIGURE_EXTRA_DEPENDS_ALL)
74
ffmpeg-configure-extra-depends-stamp: $(FFMPEG_CONFIGURE_EXTRA_DEPENDS_ALL)
78
####################################################################################################
80
.PHONY: ffmpeg-all ffmpeg-clean ffmpeg-repos ffmpeg-update ffmpeg-configure ffmpeg-build ffmpeg-install
82
ffmpeg-all: ffmpeg-install-stamp
85
-sudo $(RM) $(FFMPEG_REPOS_DIR)/doc-pak $(FFMPEG_REPOS_DIR)/*.deb $(FFMPEG_REPOS_DIR)/description-pak
86
-$(CD) $(FFMPEG_REPOS_DIR) && $(MAKE) clean
88
ffmpeg-repos: ffmpeg-repos-stamp
90
if [ ! -d $(FFMPEG_REPOS_DIR) ]; then \
91
$(SVN) checkout $(FFMPEG_REPOS_ROOT)/trunk $(FFMPEG_REPOS_DIR); \
95
ffmpeg-update: ffmpeg-update-stamp
96
ffmpeg-update-stamp: ffmpeg-repos-stamp
97
$(MAKE) ffmpeg-mm-clean
98
$(CD) $(FFMPEG_REPOS_DIR) && $(SVN) update
101
ffmpeg-configure: ffmpeg-configure-stamp
102
ffmpeg-configure-stamp: ffmpeg-update-stamp ffmpeg-configure-extra-depends-stamp
103
$(CD) $(FFMPEG_REPOS_DIR) && ./configure $(FFMPEG_OPTS)
106
ffmpeg-build: ffmpeg-build-stamp
107
ffmpeg-build-stamp: ffmpeg-configure-stamp
108
$(CD) $(FFMPEG_REPOS_DIR) && $(MAKE) all
111
ffmpeg-install: ffmpeg-install-stamp
112
ffmpeg-install-stamp: ffmpeg-build-stamp
113
$(CD) $(FFMPEG_REPOS_DIR) && sudo $(CHECKINSTALL) --pkgname ffmpeg --pkgversion "4:0.6+svn$(VERSION_SUFFIX)"
116
####################################################################################################
118
.PHONY: ffmpeg-mm-all ffmpeg-mm-clean ffmpeg-mm-repos ffmpeg-mm-update ffmpeg-mm-apply
120
ffmpeg-mm-all: ffmpeg-mm-apply-stamp
123
-$(CD) $(FFMPEG_REPOS_DIR) && $(QUILT) pop -a
125
ffmpeg-mm-repos: ffmpeg-mm-repos-stamp
126
ffmpeg-mm-repos-stamp: ffmpeg-repos-stamp
127
if [ ! -d $(FFMPEG_MM_REPOS_DIR) ]; then \
128
$(BZR) branch $(FFMPEG_MM_REPOS_ROOT) $(FFMPEG_MM_REPOS_DIR); \
132
ffmpeg-mm-update: ffmpeg-mm-update-stamp
133
ffmpeg-mm-update-stamp: ffmpeg-mm-repos-stamp
134
$(CD) $(FFMPEG_MM_REPOS_DIR) && $(BZR) pull
137
ffmpeg-mm-apply: ffmpeg-mm-apply-stamp
138
ffmpeg-mm-apply-stamp: ffmpeg-mm-update-stamp
139
$(CD) $(FFMPEG_REPOS_DIR) && $(QUILT) push -a
142
####################################################################################################
144
.PHONY: x264-all x264-clean x264-repos x264-update x264-configure x264-build x264-install
146
x264-all: x264-install-stamp
149
-sudo $(RM) $(X264_REPOS_DIR)/doc-pak $(X264_REPOS_DIR)/*.deb $(X264_REPOS_DIR)/description-pak
150
-$(CD) $(X264_REPOS_DIR) && $(MAKE) clean
152
x264-repos: x264-repos-stamp
154
if [ ! -d $(X264_REPOS_DIR) ]; then \
155
$(GIT) clone $(X264_REPOS_ROOT) $(X264_REPOS_DIR); \
159
x264-update: x264-update-stamp
160
x264-update-stamp: x264-repos-stamp
161
$(CD) $(X264_REPOS_DIR) && $(GIT) pull
164
x264-configure: x264-configure-stamp
165
x264-configure-stamp: x264-update-stamp
166
$(CD) $(X264_REPOS_DIR) && ./configure $(X264_OPTS)
169
x264-build: x264-build-stamp
170
x264-build-stamp: x264-configure-stamp
171
$(CD) $(X264_REPOS_DIR) && $(MAKE)
174
x264-install: x264-install-stamp
175
x264-install-stamp: x264-build-stamp
176
$(CD) $(X264_REPOS_DIR) && sudo $(CHECKINSTALL) --pkgname x264 --pkgversion "2:1+git$(VERSION_SUFFIX)"