directsound: fix crash when guid is NULL
[vlc.git] / extras / tools / tools.mak
blob44517799dc1eff8644a4daa8d5b49e40dc19c0b1
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 = $(patsubst %.tar,%,$(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 nasm-$(NASM_VERSION).tar.gz:
66 $(call download_pkg,$(NASM_URL),nasm)
68 nasm: nasm-$(NASM_VERSION).tar.gz
69 $(UNPACK)
70 $(MOVE)
72 .nasm: nasm
73 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
74 touch $@
76 CLEAN_FILE += .nasm
77 CLEAN_PKG += nasm
78 DISTCLEAN_PKG += nasm-$(NASM_VERSION).tar.gz
80 # cmake
82 cmake-$(CMAKE_VERSION).tar.gz:
83 $(call download_pkg,$(CMAKE_URL),cmake)
85 cmake: cmake-$(CMAKE_VERSION).tar.gz
86 $(UNPACK)
87 $(MOVE)
89 .cmake: cmake
90 (cd $<; ./configure --prefix=$(PREFIX) $(CMAKEFLAGS) && $(MAKE) && $(MAKE) install)
91 touch $@
93 CLEAN_FILE += .cmake
94 CLEAN_PKG += cmake
95 DISTCLEAN_PKG += cmake-$(CMAKE_VERSION).tar.gz
97 # libtool
99 libtool-$(LIBTOOL_VERSION).tar.gz:
100 $(call download_pkg,$(LIBTOOL_URL),libtool)
102 libtool: libtool-$(LIBTOOL_VERSION).tar.gz
103 $(UNPACK)
104 $(APPLY) libtool-2.4.2-bitcode.patch
105 $(APPLY) libtool-2.4.2-san.patch
106 $(APPLY) libtool-2.4.6-clang-libs.patch
107 $(MOVE)
109 .libtool: libtool .automake
110 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
111 ln -sf libtool $(PREFIX)/bin/glibtool
112 ln -sf libtoolize $(PREFIX)/bin/glibtoolize
113 touch $@
115 CLEAN_PKG += libtool
116 DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.gz
117 CLEAN_FILE += .libtool
119 # GNU tar (with xz support)
121 tar-$(TAR_VERSION).tar.bz2:
122 $(call download_pkg,$(TAR_URL),tar)
124 tar: tar-$(TAR_VERSION).tar.bz2
125 $(UNPACK)
126 $(MOVE)
128 .tar: tar
129 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
130 touch $@
132 CLEAN_PKG += tar
133 DISTCLEAN_PKG += tar-$(TAR_VERSION).tar.bz2
134 CLEAN_FILE += .tar
136 # xz
138 xz-$(XZ_VERSION).tar.bz2:
139 $(call download_pkg,$(XZ_URL),xz)
141 xz: xz-$(XZ_VERSION).tar.bz2
142 $(UNPACK)
143 $(MOVE)
145 .xz: xz
146 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install && rm $(PREFIX)/lib/pkgconfig/liblzma.pc)
147 touch $@
149 CLEAN_PKG += xz
150 DISTCLEAN_PKG += xz-$(XZ_VERSION).tar.bz2
151 CLEAN_FILE += .xz
153 # autoconf
155 autoconf-$(AUTOCONF_VERSION).tar.gz:
156 $(call download_pkg,$(AUTOCONF_URL),autoconf)
158 autoconf: autoconf-$(AUTOCONF_VERSION).tar.gz
159 $(UNPACK)
160 $(MOVE)
162 .autoconf: autoconf .pkg-config
163 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
164 touch $@
166 CLEAN_FILE += .autoconf
167 CLEAN_PKG += autoconf
168 DISTCLEAN_PKG += autoconf-$(AUTOCONF_VERSION).tar.gz
170 # automake
172 automake-$(AUTOMAKE_VERSION).tar.gz:
173 $(call download_pkg,$(AUTOMAKE_URL),automake)
175 automake: automake-$(AUTOMAKE_VERSION).tar.gz
176 $(UNPACK)
177 $(MOVE)
179 .automake: automake .autoconf
180 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
181 touch $@
183 CLEAN_FILE += .automake
184 CLEAN_PKG += automake
185 DISTCLEAN_PKG += automake-$(AUTOMAKE_VERSION).tar.gz
187 # m4
189 m4-$(M4_VERSION).tar.gz:
190 $(call download_pkg,$(M4_URL),m4)
192 m4: m4-$(M4_VERSION).tar.gz
193 $(UNPACK)
194 $(APPLY) bison-macOS-c41f233c.patch
195 $(APPLY) bison-macOS-7df04f9.patch
196 $(MOVE)
198 .m4: m4
199 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
200 touch $@
202 CLEAN_FILE += .m4
203 CLEAN_PKG += m4
204 DISTCLEAN_PKG += m4-$(M4_VERSION).tar.gz
206 # pkg-config
208 pkg-config-$(PKGCFG_VERSION).tar.gz:
209 $(call download_pkg,$(PKGCFG_URL),pkgconfiglite)
211 pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
212 $(UNPACK)
213 mv pkg-config-lite-$(PKGCFG_VERSION) pkg-config-$(PKGCFG_VERSION)
214 $(MOVE)
216 .pkg-config: pkgconfig
217 (cd pkgconfig; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
218 touch $@
220 CLEAN_FILE += .pkg-config
221 CLEAN_PKG += pkgconfig
222 DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
224 # gas-preprocessor
225 gas-preprocessor-$(GAS_VERSION).tar.gz:
226 $(call download_pkg,$(GAS_URL),gas-preprocessor)
228 gas: gas-preprocessor-$(GAS_VERSION).tar.gz
229 $(UNPACK)
230 $(MOVE)
232 .gas: gas
233 mkdir -p $(PREFIX)/bin
234 cp gas/gas-preprocessor.pl $(PREFIX)/bin/
235 touch $@
237 CLEAN_FILE += .gas
238 CLEAN_PKG += gas
239 DISTCLEAN_PKG += gas-preprocessor-$(GAS_VERSION).tar.gz
241 # Ragel State Machine Compiler
242 ragel-$(RAGEL_VERSION).tar.gz:
243 $(call download_pkg,$(RAGEL_URL),ragel)
245 ragel: ragel-$(RAGEL_VERSION).tar.gz
246 $(UNPACK)
247 $(APPLY) ragel-6.8-javacodegen.patch
248 $(MOVE)
251 .ragel: ragel
252 (cd ragel; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
253 touch $@
255 CLEAN_FILE += .ragel
256 CLEAN_PKG += ragel
257 DISTCLEAN_PKG += ragel-$(RAGEL_VERSION).tar.gz
259 # GNU sed
261 sed-$(SED_VERSION).tar.bz2:
262 $(call download_pkg,$(SED_URL),sed)
264 sed: sed-$(SED_VERSION).tar.bz2
265 $(UNPACK)
266 $(MOVE)
268 .sed: sed
269 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
270 touch $@
272 CLEAN_PKG += sed
273 DISTCLEAN_PKG += sed-$(SED_VERSION).tar.bz2
274 CLEAN_FILE += .sed
276 # Apache ANT
278 apache-ant-$(ANT_VERSION).tar.bz2:
279 $(call download_pkg,$(ANT_URL),ant)
281 ant: apache-ant-$(ANT_VERSION).tar.bz2
282 $(UNPACK)
283 $(MOVE)
285 .ant: ant
286 (mkdir -p $(PREFIX)/bin && cp $</bin/* $(PREFIX)/bin/)
287 (mkdir -p $(PREFIX)/lib && cp $</lib/* $(PREFIX)/lib/)
288 touch $@
290 CLEAN_PKG += ant
291 DISTCLEAN_PKG += apache-ant-$(ANT_VERSION).tar.bz2
292 CLEAN_FILE += .ant
295 # Protobuf Protoc
297 protobuf-$(PROTOBUF_VERSION).tar.gz:
298 $(call download_pkg,$(PROTOBUF_URL),protobuf)
300 protobuf: protobuf-$(PROTOBUF_VERSION).tar.gz
301 $(UNPACK)
302 $(MOVE)
304 .protoc: protobuf
305 (cd $< && ./configure --prefix="$(PREFIX)" --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
306 (find $(PREFIX) -name 'protobuf*.pc' -exec rm -f {} \;)
307 touch $@
309 CLEAN_PKG += protobuf
310 DISTCLEAN_PKG += protobuf-$(PROTOBUF_VERSION).tar.gz
311 CLEAN_FILE += .protoc
314 # GNU bison
317 bison-$(BISON_VERSION).tar.xz:
318 $(call download_pkg,$(BISON_URL),bison)
320 bison: bison-$(BISON_VERSION).tar.xz
321 $(UNPACK)
322 $(APPLY) bison-macOS-c41f233c.patch
323 $(APPLY) bison-macOS-7df04f9.patch
324 $(MOVE)
326 .bison: bison
327 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
328 touch $@
330 CLEAN_PKG += bison
331 DISTCLEAN_PKG += bison-$(BISON_VERSION).tar.xz
332 CLEAN_FILE += .bison
335 # GNU flex
338 flex-$(FLEX_VERSION).tar.gz:
339 $(call download_pkg,$(FLEX_URL),flex)
341 flex: flex-$(FLEX_VERSION).tar.gz
342 $(UNPACK)
343 $(MOVE)
345 .flex: flex
346 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
347 touch $@
349 CLEAN_PKG += flex
350 DISTCLEAN_PKG += flex-$(FLEX_VERSION).tar.gz
351 CLEAN_FILE += .flex
356 # GNU gettext
359 gettext-$(GETTEXT_VERSION).tar.gz:
360 $(call download_pkg,$(GETTEXT_URL),gettext)
362 gettext: gettext-$(GETTEXT_VERSION).tar.gz
363 $(UNPACK)
364 $(MOVE)
366 .gettext: gettext
367 (cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
368 touch $@
370 CLEAN_PKG += gettext
371 DISTCLEAN_PKG += gettext-$(GETTEXT_VERSION).tar.gz
372 CLEAN_FILE += .gettext
379 fetch-all: $(DISTCLEAN_PKG)
381 clean:
382 rm -fr $(CLEAN_FILE) $(CLEAN_PKG) build/
384 distclean: clean
385 rm -fr $(DISTCLEAN_PKG)
387 .PHONY: all clean distclean
389 .DELETE_ON_ERROR: