]> git.sesse.net Git - vlc/blob - extras/tools/tools.mak
extras/tools: use another gas-pp fork fixing mp1/2/3 decoding on iOS on ARM
[vlc] / extras / tools / tools.mak
1 # Copyright (C) 2003-2011 the VideoLAN team
2 #
3 # This file is under the same license as the vlc package.
4
5 include packages.mak
6
7 #
8 # common rules
9 #
10
11 AUTOCONF=$(PREFIX)/bin/autoconf
12 export AUTOCONF
13
14 ifeq ($(shell curl --version >/dev/null 2>&1 || echo FAIL),)
15 download = curl -f -L -- "$(1)" > "$@"
16 else ifeq ($(shell wget --version >/dev/null 2>&1 || echo FAIL),)
17 download = rm -f $@.tmp && \
18         wget --passive -c -p -O $@.tmp "$(1)" && \
19         touch $@.tmp && \
20         mv $@.tmp $@
21 else ifeq ($(which fetch >/dev/null 2>&1 || echo FAIL),)
22 download = rm -f $@.tmp && \
23         fetch -p -o $@.tmp "$(1)" && \
24         touch $@.tmp && \
25         mv $@.tmp $@
26 else
27 download = $(error Neither curl nor wget found!)
28 endif
29
30 UNPACK = $(RM) -R $@ \
31     $(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzf $(f)) \
32     $(foreach f,$(filter %.tar.bz2,$^), && tar xvjf $(f)) \
33     $(foreach f,$(filter %.tar.xz,$^), && tar xvJf $(f)) \
34     $(foreach f,$(filter %.zip,$^), && unzip $(f))
35
36 UNPACK_DIR = $(basename $(basename $(notdir $<)))
37 APPLY = (cd $(UNPACK_DIR) && patch -p1) <
38 MOVE = mv $(UNPACK_DIR) $@ && touch $@
39
40 #
41 # package rules
42 #
43
44 # yasm
45
46 yasm-$(YASM_VERSION).tar.gz:
47         $(call download,$(YASM_URL))
48
49 yasm: yasm-$(YASM_VERSION).tar.gz
50         $(UNPACK)
51         $(MOVE)
52
53 .yasm: yasm
54         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
55         touch $@
56
57 CLEAN_FILE += .yasm
58 CLEAN_PKG += yasm
59 DISTCLEAN_PKG += yasm-$(YASM_VERSION).tar.gz
60
61 # cmake
62
63 cmake-$(CMAKE_VERSION).tar.gz:
64         $(call download,$(CMAKE_URL))
65
66 cmake: cmake-$(CMAKE_VERSION).tar.gz
67         $(UNPACK)
68         $(MOVE)
69
70 .cmake: cmake
71         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
72         touch $@
73
74 CLEAN_FILE += .cmake
75 CLEAN_PKG += cmake
76 DISTCLEAN_PKG += cmake-$(CMAKE_VERSION).tar.gz
77
78 # libtool
79
80 libtool-$(LIBTOOL_VERSION).tar.gz:
81         $(call download,$(LIBTOOL_URL))
82
83 libtool: libtool-$(LIBTOOL_VERSION).tar.gz
84         $(UNPACK)
85         $(MOVE)
86
87 .libtool: libtool
88         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
89         ln -sf libtool $(PREFIX)/bin/glibtool
90         ln -sf libtoolize $(PREFIX)/bin/glibtoolize
91         touch $@
92
93 CLEAN_PKG += libtool
94 DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.gz
95 CLEAN_FILE += .libtool
96
97 # GNU tar (with xz support)
98
99 tar-$(TAR_VERSION).tar.bz2:
100         $(call download,$(TAR_URL))
101
102 tar: tar-$(TAR_VERSION).tar.bz2
103         $(UNPACK)
104         $(MOVE)
105
106 .tar: tar
107         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
108         touch $@
109
110 CLEAN_PKG += tar
111 DISTCLEAN_PKG += tar-$(TAR_VERSION).tar.bz2
112 CLEAN_FILE += .tar
113
114 # xz
115
116 xz-$(XZ_VERSION).tar.bz2:
117         $(call download,$(XZ_URL))
118
119 xz: xz-$(XZ_VERSION).tar.bz2
120         $(UNPACK)
121         $(MOVE)
122
123 .xz: xz
124         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
125         touch $@
126
127 CLEAN_PKG += xz
128 DISTCLEAN_PKG += xz-$(XZ_VERSION).tar.bz2
129 CLEAN_FILE += .xz
130
131 # autoconf
132
133 autoconf-$(AUTOCONF_VERSION).tar.gz:
134         $(call download,$(AUTOCONF_URL))
135
136 autoconf: autoconf-$(AUTOCONF_VERSION).tar.gz
137         $(UNPACK)
138         $(MOVE)
139
140 .autoconf: autoconf .pkg-config
141         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
142         touch $@
143
144 CLEAN_FILE += .autoconf
145 CLEAN_PKG += autoconf
146 DISTCLEAN_PKG += autoconf-$(AUTOCONF_VERSION).tar.gz
147
148 # automake
149
150 automake-$(AUTOMAKE_VERSION).tar.gz:
151         $(call download,$(AUTOMAKE_URL))
152
153 automake: automake-$(AUTOMAKE_VERSION).tar.gz
154         $(UNPACK)
155         $(MOVE)
156
157 .automake: automake .autoconf
158         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
159         touch $@
160
161 CLEAN_FILE += .automake
162 CLEAN_PKG += automake
163 DISTCLEAN_PKG += automake-$(AUTOMAKE_VERSION).tar.gz
164
165 # m4
166
167 m4-$(M4_VERSION).tar.gz:
168         $(call download,$(M4_URL))
169
170 m4: m4-$(M4_VERSION).tar.gz
171         $(UNPACK)
172         $(MOVE)
173
174 .m4: m4 .autoconf
175         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
176         touch $@
177
178 CLEAN_FILE += .m4
179 CLEAN_PKG += m4
180 DISTCLEAN_PKG += m4-$(M4_VERSION).tar.gz
181
182 # pkg-config
183
184 pkg-config-$(PKGCFG_VERSION).tar.gz:
185         $(call download,$(PKGCFG_URL))
186
187 pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
188         $(UNPACK)
189         mv pkg-config-lite-$(PKGCFG_VERSION) pkg-config-$(PKGCFG_VERSION)
190         $(MOVE)
191
192 .pkg-config: pkgconfig
193         (cd pkgconfig; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && make && make install)
194         touch $@
195
196 CLEAN_FILE += .pkg-config
197 CLEAN_PKG += pkgconfig
198 DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
199
200 # openssl
201 # we need to use -j1 here, since otherwise compilation fails (at least on Darwin)
202
203 openssl-$(OPENSSL_VERSION).tar.gz:
204         $(call download,$(OPENSSL_URL))
205
206 openssl: openssl-$(OPENSSL_VERSION).tar.gz
207         $(UNPACK)
208         $(MOVE)
209
210 .openssl: openssl
211         (cd openssl; ./config --prefix=$(PREFIX) no-shared no-zlib && make -j1 && make test && make install)
212         touch $@
213
214 CLEAN_FILE += .openssl
215 CLEAN_PKG += openssl
216 DISTCLEAN_PKG += openssl-$(OPENSSL_VERSION).tar.gz
217
218 # gas-preprocessor
219 libav-gas-preprocessor-$(GAS_VERSION).tar.gz:
220         $(call download,$(GAS_URL))
221
222 gas: libav-gas-preprocessor-$(GAS_VERSION).tar.gz
223         $(UNPACK)
224         $(MOVE)
225
226 .gas: gas
227         cp gas/gas-preprocessor.pl build/bin/
228         touch $@
229
230 CLEAN_FILE += .gas
231 CLEAN_PKG += gas
232 DISTCLEAN_PKG += yuvi-gas-preprocessor-$(GAS_VERSION).tar.gz
233
234 # Ragel State Machine Compiler
235 ragel-$(RAGEL_VERSION).tar.gz:
236         $(call download,$(RAGEL_URL))
237
238 ragel: ragel-$(RAGEL_VERSION).tar.gz
239         $(UNPACK)
240         $(MOVE)
241
242 .ragel: ragel
243         (cd ragel; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && make && make install)
244         touch $@
245
246 CLEAN_FILE += .ragel
247 CLEAN_PKG += ragel
248 DISTCLEAN_PKG += ragel-$(RAGEL_VERSION).tar.gz
249
250 #
251 #
252 #
253
254 clean:
255         rm -fr $(CLEAN_FILE) $(CLEAN_PKG) build/
256
257 distclean: clean
258         rm -fr $(DISTCLEAN_PKG)
259
260 .PHONY: all clean distclean