]> git.sesse.net Git - vlc/blob - extras/tools/tools.mak
extra/tools: added Ragel
[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.bz2:
134         $(call download,$(AUTOCONF_URL))
135
136 autoconf: autoconf-$(AUTOCONF_VERSION).tar.bz2
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.bz2
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 # pkg-config
166
167 pkg-config-$(PKGCFG_VERSION).tar.gz:
168         $(call download,$(PKGCFG_URL))
169
170 pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
171         $(UNPACK)
172         $(MOVE)
173
174 .pkg-config: pkgconfig
175         (cd pkgconfig; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && make && make install)
176         touch $@
177
178 CLEAN_FILE += .pkg-config
179 CLEAN_PKG += pkgconfig
180 DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
181
182 # openssl
183 # we need to use -j1 here, since otherwise compilation fails (at least on Darwin)
184
185 openssl-$(OPENSSL_VERSION).tar.gz:
186         $(call download,$(OPENSSL_URL))
187
188 openssl: openssl-$(OPENSSL_VERSION).tar.gz
189         $(UNPACK)
190         $(MOVE)
191
192 .openssl: openssl
193         (cd openssl; ./config --prefix=$(PREFIX) no-shared no-zlib && make -j1 && make test && make install)
194         touch $@
195
196 CLEAN_FILE += .openssl
197 CLEAN_PKG += openssl
198 DISTCLEAN_PKG += openssl-$(OPENSSL_VERSION).tar.gz
199
200 # gas-preprocessor
201 mansr-gas-preprocessor-$(GAS_VERSION).tar.gz:
202         $(call download,$(GAS_URL))
203
204 gas: mansr-gas-preprocessor-$(GAS_VERSION).tar.gz
205         $(UNPACK)
206         $(MOVE)
207
208 .gas: gas
209         cp gas/gas-preprocessor.pl build/bin/
210         touch $@
211
212 CLEAN_FILE += .gas
213 CLEAN_PKG += gas
214 DISTCLEAN_PKG += yuvi-gas-preprocessor-$(GAS_VERSION).tar.gz
215
216 # Ragel State Machine Compiler
217 ragel-$(RAGEL_VERSION).tar.gz:
218         $(call download,$(RAGEL_URL))
219
220 ragel: ragel-$(RAGEL_VERSION).tar.gz
221         $(UNPACK)
222         $(MOVE)
223
224 .ragel: ragel
225         (cd ragel; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && make && make install)
226         touch $@
227
228 CLEAN_FILE += .ragel
229 CLEAN_PKG += ragel
230 DISTCLEAN_PKG += ragel-$(RAGEL_VERSION).tar.gz
231
232 #
233 #
234 #
235
236 clean:
237         rm -fr $(CLEAN_FILE) $(CLEAN_PKG) build/
238
239 distclean: clean
240         rm -fr $(DISTCLEAN_PKG)
241
242 .PHONY: all clean distclean