~epii/+junk/encenv

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: epii
  • Date: 2010-08-31 16:57:57 UTC
  • Revision ID: public.epii@gmail.com-20100831165757-vdzesg0nvs1hrogt
first commit.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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