extra/tools: fix compatibility with old OSes
[vlc.git] / extras / tools / tools.mak
blobc6cfa0f7a72c4eb6305be1c733e6239170408a5b
1 # Copyright (C) 2003-2011 the VideoLAN team
3 # This file is under the same license as the vlc package.
5 include packages.mak
8 # common rules
11 AUTOCONF=$(PREFIX)/bin/autoconf
12 export AUTOCONF
14 ifeq ($(shell curl --version >/dev/null 2>&1 || echo FAIL),)
15 download = curl -f -L -- "$(1)" > "$@.tmp" && touch $@.tmp && mv $@.tmp $@
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
30 download_pkg = $(call download,$(VIDEOLAN)/$(2)/$(lastword $(subst /, ,$(@)))) || \
31 ( $(call download,$(1)) && echo "Please upload package $(lastword $(subst /, ,$(@))) to our FTP" ) \
32 && grep $(@) SHA512SUMS| shasum -a 512 -c
34 UNPACK = $(RM) -R $@ \
35 $(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzf $(f)) \
36 $(foreach f,$(filter %.tar.bz2,$^), && tar xvjf $(f)) \
37 $(foreach f,$(filter %.tar.xz,$^), && tar xvJf $(f)) \
38 $(foreach f,$(filter %.zip,$^), && unzip $(f))
40 UNPACK_DIR = $(basename $(basename $(notdir $<)))
41 APPLY = (cd $(UNPACK_DIR) && patch -p1) <
42 MOVE = mv $(UNPACK_DIR) $@ && touch $@
45 # package rules
48 # yasm
50 yasm-$(YASM_VERSION).tar.gz:
51 $(call download_pkg,$(YASM_URL),yasm)
53 yasm: yasm-$(YASM_VERSION).tar.gz
54 $(UNPACK)
55 $(MOVE)
57 .yasm: yasm
58 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
59 touch $@
61 CLEAN_FILE += .yasm
62 CLEAN_PKG += yasm
63 DISTCLEAN_PKG += yasm-$(YASM_VERSION).tar.gz
65 # cmake
67 cmake-$(CMAKE_VERSION).tar.gz:
68 $(call download_pkg,$(CMAKE_URL),cmake)
70 cmake: cmake-$(CMAKE_VERSION).tar.gz
71 $(UNPACK)
72 $(MOVE)
74 .cmake: cmake
75 (cd $<; ./configure --prefix=$(PREFIX) $(CMAKEFLAGS) && $(MAKE) && $(MAKE) install)
76 touch $@
78 CLEAN_FILE += .cmake
79 CLEAN_PKG += cmake
80 DISTCLEAN_PKG += cmake-$(CMAKE_VERSION).tar.gz
82 # libtool
84 libtool-$(LIBTOOL_VERSION).tar.gz:
85 $(call download_pkg,$(LIBTOOL_URL),libtool)
87 libtool: libtool-$(LIBTOOL_VERSION).tar.gz
88 $(UNPACK)
89 $(APPLY) libtool-2.4.2-bitcode.patch
90 $(APPLY) libtool-2.4.2-san.patch
91 $(MOVE)
93 .libtool: libtool .automake
94 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
95 ln -sf libtool $(PREFIX)/bin/glibtool
96 ln -sf libtoolize $(PREFIX)/bin/glibtoolize
97 touch $@
99 CLEAN_PKG += libtool
100 DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.gz
101 CLEAN_FILE += .libtool
103 # GNU tar (with xz support)
105 tar-$(TAR_VERSION).tar.bz2:
106 $(call download_pkg,$(TAR_URL),tar)
108 tar: tar-$(TAR_VERSION).tar.bz2
109 $(UNPACK)
110 $(MOVE)
112 .tar: tar
113 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
114 touch $@
116 CLEAN_PKG += tar
117 DISTCLEAN_PKG += tar-$(TAR_VERSION).tar.bz2
118 CLEAN_FILE += .tar
120 # xz
122 xz-$(XZ_VERSION).tar.bz2:
123 $(call download_pkg,$(XZ_URL),xz)
125 xz: xz-$(XZ_VERSION).tar.bz2
126 $(UNPACK)
127 $(MOVE)
129 .xz: xz
130 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install && rm $(PREFIX)/lib/pkgconfig/liblzma.pc)
131 touch $@
133 CLEAN_PKG += xz
134 DISTCLEAN_PKG += xz-$(XZ_VERSION).tar.bz2
135 CLEAN_FILE += .xz
137 # autoconf
139 autoconf-$(AUTOCONF_VERSION).tar.gz:
140 $(call download_pkg,$(AUTOCONF_URL),autoconf)
142 autoconf: autoconf-$(AUTOCONF_VERSION).tar.gz
143 $(UNPACK)
144 $(MOVE)
146 .autoconf: autoconf .pkg-config
147 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
148 touch $@
150 CLEAN_FILE += .autoconf
151 CLEAN_PKG += autoconf
152 DISTCLEAN_PKG += autoconf-$(AUTOCONF_VERSION).tar.gz
154 # automake
156 automake-$(AUTOMAKE_VERSION).tar.gz:
157 $(call download_pkg,$(AUTOMAKE_URL),automake)
159 automake: automake-$(AUTOMAKE_VERSION).tar.gz
160 $(UNPACK)
161 $(MOVE)
163 .automake: automake .autoconf
164 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
165 touch $@
167 CLEAN_FILE += .automake
168 CLEAN_PKG += automake
169 DISTCLEAN_PKG += automake-$(AUTOMAKE_VERSION).tar.gz
171 # m4
173 m4-$(M4_VERSION).tar.gz:
174 $(call download_pkg,$(M4_URL),m4)
176 m4: m4-$(M4_VERSION).tar.gz
177 $(UNPACK)
178 $(MOVE)
180 .m4: m4
181 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
182 touch $@
184 CLEAN_FILE += .m4
185 CLEAN_PKG += m4
186 DISTCLEAN_PKG += m4-$(M4_VERSION).tar.gz
188 # pkg-config
190 pkg-config-$(PKGCFG_VERSION).tar.gz:
191 $(call download_pkg,$(PKGCFG_URL),pkgconfiglite)
193 pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
194 $(UNPACK)
195 mv pkg-config-lite-$(PKGCFG_VERSION) pkg-config-$(PKGCFG_VERSION)
196 $(MOVE)
198 .pkg-config: pkgconfig
199 (cd pkgconfig; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
200 touch $@
202 CLEAN_FILE += .pkg-config
203 CLEAN_PKG += pkgconfig
204 DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
206 # gas-preprocessor
207 gas-preprocessor-$(GAS_VERSION).tar.gz:
208 $(call download_pkg,$(GAS_URL),gas-preprocessor)
210 gas: gas-preprocessor-$(GAS_VERSION).tar.gz
211 $(UNPACK)
212 $(MOVE)
214 .gas: gas
215 mkdir -p $(PREFIX)/bin
216 cp gas/gas-preprocessor.pl $(PREFIX)/bin/
217 touch $@
219 CLEAN_FILE += .gas
220 CLEAN_PKG += gas
221 DISTCLEAN_PKG += gas-preprocessor-$(GAS_VERSION).tar.gz
223 # Ragel State Machine Compiler
224 ragel-$(RAGEL_VERSION).tar.gz:
225 $(call download_pkg,$(RAGEL_URL),ragel)
227 ragel: ragel-$(RAGEL_VERSION).tar.gz
228 $(UNPACK)
229 $(APPLY) ragel-6.8-javacodegen.patch
230 $(MOVE)
233 .ragel: ragel
234 (cd ragel; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
235 touch $@
237 CLEAN_FILE += .ragel
238 CLEAN_PKG += ragel
239 DISTCLEAN_PKG += ragel-$(RAGEL_VERSION).tar.gz
241 # GNU sed
243 sed-$(SED_VERSION).tar.bz2:
244 $(call download_pkg,$(SED_URL),sed)
246 sed: sed-$(SED_VERSION).tar.bz2
247 $(UNPACK)
248 $(MOVE)
250 .sed: sed
251 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
252 touch $@
254 CLEAN_PKG += sed
255 DISTCLEAN_PKG += sed-$(SED_VERSION).tar.bz2
256 CLEAN_FILE += .sed
258 # Apache ANT
260 apache-ant-$(ANT_VERSION).tar.bz2:
261 $(call download_pkg,$(ANT_URL),ant)
263 ant: apache-ant-$(ANT_VERSION).tar.bz2
264 $(UNPACK)
265 $(MOVE)
267 .ant: ant
268 (mkdir -p $(PREFIX)/bin && cp $</bin/* $(PREFIX)/bin/)
269 (mkdir -p $(PREFIX)/lib && cp $</lib/* $(PREFIX)/lib/)
270 touch $@
272 CLEAN_PKG += ant
273 DISTCLEAN_PKG += apache-ant-$(ANT_VERSION).tar.bz2
274 CLEAN_FILE += .ant
277 # Protobuf Protoc
279 protobuf-$(PROTOBUF_VERSION).tar.gz:
280 $(call download_pkg,$(PROTOBUF_URL),protobuf)
282 protobuf: protobuf-$(PROTOBUF_VERSION).tar.gz
283 $(UNPACK)
284 $(MOVE)
286 .protoc: protobuf
287 (cd $< && ./configure --prefix="$(PREFIX)" --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
288 (find $(PREFIX) -name 'protobuf*.pc' -exec rm -f {} \;)
289 touch $@
291 CLEAN_PKG += protobuf
292 DISTCLEAN_PKG += protobuf-$(PROTOBUF_VERSION).tar.gz
293 CLEAN_FILE += .protoc
296 # GNU bison
299 bison-$(BISON_VERSION).tar.xz:
300 $(call download_pkg,$(BISON_URL),bison)
302 bison: bison-$(BISON_VERSION).tar.xz
303 $(UNPACK)
304 $(APPLY) bison-macOS-c41f233c.patch
305 $(APPLY) bison-macOS-7df04f9.patch
306 $(MOVE)
308 .bison: bison
309 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
310 touch $@
312 CLEAN_PKG += bison
313 DISTCLEAN_PKG += bison-$(BISON_VERSION).tar.xz
314 CLEAN_FILE += .bison
321 fetch-all: $(DISTCLEAN_PKG)
323 clean:
324 rm -fr $(CLEAN_FILE) $(CLEAN_PKG) build/
326 distclean: clean
327 rm -fr $(DISTCLEAN_PKG)
329 .PHONY: all clean distclean
331 .DELETE_ON_ERROR: