~epii/+junk/encenv

1 by epii
first commit.
1
#
2
# This Makefile provides automatic build environment for FFmpeg
3
#
4
5
####################################################################################################
6
# Configuration
7
8
# commands
9
RM = rm -rf
10
CD = cd
11
TOUCH = touch
12
QUILT = quilt
13
SVN = svn
14
GIT = git
15
BZR = bzr
16
CHECKINSTALL = checkinstall --backup=no --default
17
18
# version suffix (.deb)
19
VERSION_SUFFIX = $(shell date +%Y%m%d)
20
21
# libx264 configure script options
22
X264_OPTS ?= --enable-pic --enable-shared
23
24
# FFmpeg configure script options
25
FFMPEG_OPTS ?= \
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
34
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
41
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
48
49
# suite
50
SUITE = $(shell lsb_release --codename --short)
51
52
# all extra tools (or, more precisely targets) that should be run
53
FFMPEG_CONFIGURE_EXTRA_DEPENDS_ALL = ffmpeg-mm-all
54
55
####################################################################################################
56
# PHONY targets
57
.PHONY: all clean
58
59
all: ffmpeg-all
60
61
clean: ffmpeg-clean ffmpeg-mm-clean x264-clean
62
	$(RM) *-stamp
63
64
####################################################################################################
65
# Suit specific rules
66
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)
73
else
74
ffmpeg-configure-extra-depends-stamp: $(FFMPEG_CONFIGURE_EXTRA_DEPENDS_ALL)
75
endif
76
	$(TOUCH) $@
77
78
####################################################################################################
79
# FFmpeg
80
.PHONY: ffmpeg-all ffmpeg-clean ffmpeg-repos ffmpeg-update ffmpeg-configure ffmpeg-build ffmpeg-install
81
82
ffmpeg-all: ffmpeg-install-stamp
83
84
ffmpeg-clean:
85
	-sudo $(RM) $(FFMPEG_REPOS_DIR)/doc-pak $(FFMPEG_REPOS_DIR)/*.deb $(FFMPEG_REPOS_DIR)/description-pak
86
	-$(CD) $(FFMPEG_REPOS_DIR) && $(MAKE) clean
87
88
ffmpeg-repos: ffmpeg-repos-stamp
89
ffmpeg-repos-stamp:
90
	if [ ! -d $(FFMPEG_REPOS_DIR) ]; then \
91
		$(SVN) checkout $(FFMPEG_REPOS_ROOT)/trunk $(FFMPEG_REPOS_DIR); \
92
	fi
93
	$(TOUCH) $@
94
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
99
	$(TOUCH) $@
100
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)
104
	$(TOUCH) $@
105
106
ffmpeg-build: ffmpeg-build-stamp
107
ffmpeg-build-stamp: ffmpeg-configure-stamp
108
	$(CD) $(FFMPEG_REPOS_DIR) && $(MAKE) all
109
	$(TOUCH) $@
110
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)"
114
	$(TOUCH) $@
115
116
####################################################################################################
117
# FFmpeg mobile mod
118
.PHONY: ffmpeg-mm-all ffmpeg-mm-clean ffmpeg-mm-repos ffmpeg-mm-update ffmpeg-mm-apply
119
120
ffmpeg-mm-all: ffmpeg-mm-apply-stamp
121
122
ffmpeg-mm-clean:
123
	-$(CD) $(FFMPEG_REPOS_DIR) && $(QUILT) pop -a
124
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); \
129
	fi
130
	$(TOUCH) $@
131
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
135
	$(TOUCH) $@
136
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
140
	$(TOUCH) $@
141
142
####################################################################################################
143
# x264
144
.PHONY: x264-all x264-clean x264-repos x264-update x264-configure x264-build x264-install
145
146
x264-all: x264-install-stamp
147
148
x264-clean:
149
	-sudo $(RM) $(X264_REPOS_DIR)/doc-pak $(X264_REPOS_DIR)/*.deb $(X264_REPOS_DIR)/description-pak
150
	-$(CD) $(X264_REPOS_DIR) && $(MAKE) clean
151
152
x264-repos: x264-repos-stamp
153
x264-repos-stamp:
154
	if [ ! -d $(X264_REPOS_DIR) ]; then \
155
		$(GIT) clone $(X264_REPOS_ROOT) $(X264_REPOS_DIR); \
156
	fi
157
	$(TOUCH) $@
158
159
x264-update: x264-update-stamp
160
x264-update-stamp: x264-repos-stamp
161
	$(CD) $(X264_REPOS_DIR) && $(GIT) pull
162
	$(TOUCH) $@
163
164
x264-configure: x264-configure-stamp
165
x264-configure-stamp: x264-update-stamp
166
	$(CD) $(X264_REPOS_DIR) && ./configure $(X264_OPTS)
167
	$(TOUCH) $@
168
169
x264-build: x264-build-stamp
170
x264-build-stamp: x264-configure-stamp
171
	$(CD) $(X264_REPOS_DIR) && $(MAKE)
172
	$(TOUCH) $@
173
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)"
177
	$(TOUCH) $@
178