]> git.sesse.net Git - vlc/blob - extras/tools/tools.mak
6ea4169498999247ec74606bfbba1aa01bcfdb1c
[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
22 download = $(error Neither curl nor wget found!)
23 endif
24
25 UNPACK = $(RM) -R $@ \
26     $(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzf $(f)) \
27     $(foreach f,$(filter %.tar.bz2,$^), && tar xvjf $(f)) \
28     $(foreach f,$(filter %.tar.xz,$^), && tar xvJf $(f)) \
29     $(foreach f,$(filter %.zip,$^), && unzip $(f))
30
31 UNPACK_DIR = $(basename $(basename $(notdir $<)))
32 APPLY = (cd $(UNPACK_DIR) && patch -p1) <
33 MOVE = mv $(UNPACK_DIR) $@ && touch $@
34
35 #
36 # package rules
37 #
38
39 # yasm
40
41 yasm-$(YASM_VERSION).tar.gz:
42         $(download) $(YASM_URL)
43
44 yasm: yasm-$(YASM_VERSION).tar.gz
45         $(UNPACK)
46         $(MOVE)
47
48 .yasm: yasm
49         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
50         touch $@
51
52 CLEAN_FILE += .yasm
53 CLEAN_PKG += yasm
54 DISTCLEAN_PKG += yasm-$(YASM_VERSION).tar.gz
55
56 # cmake
57
58 cmake-$(CMAKE_VERSION).tar.gz:
59         $(download) $(CMAKE_URL)
60
61 cmake: cmake-$(CMAKE_VERSION).tar.gz
62         $(UNPACK)
63         $(MOVE)
64
65 .cmake: cmake
66         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
67         touch $@
68
69 CLEAN_FILE += .cmake
70 CLEAN_PKG += cmake
71 DISTCLEAN_PKG += cmake-$(CMAKE_VERSION).tar.gz
72
73 # libtool
74
75 libtool-$(LIBTOOL_VERSION).tar.gz:
76         $(download) $(LIBTOOL_URL)
77
78 libtool: libtool-$(LIBTOOL_VERSION).tar.gz
79         $(UNPACK)
80         $(MOVE)
81
82 .libtool: libtool
83         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
84         ln -sf libtool $(PREFIX)/bin/glibtool
85         ln -sf libtoolize $(PREFIX)/bin/glibtoolize
86         touch $@
87
88 CLEAN_PKG += libtool
89 DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.gz
90 CLEAN_FILE += .libtool
91
92 # GNU tar (with xz support)
93
94 tar-$(TAR_VERSION).tar.bz2:
95         $(download) $(TAR_URL)
96
97 tar: tar-$(TAR_VERSION).tar.bz2
98         $(UNPACK)
99         $(MOVE)
100
101 .tar: tar
102         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
103         touch $@
104
105 CLEAN_PKG += tar
106 DISTCLEAN_PKG += tar-$(TAR_VERSION).tar.bz2
107 CLEAN_FILE += .tar
108
109 # xz
110
111 xz-$(XZ_VERSION).tar.bz2:
112         $(download) $(XZ_URL)
113
114 xz: xz-$(XZ_VERSION).tar.bz2
115         $(UNPACK)
116         $(MOVE)
117
118 .xz: xz
119         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
120         touch $@
121
122 CLEAN_PKG += xz
123 DISTCLEAN_PKG += xz-$(XZ_VERSION).tar.bz2
124 CLEAN_FILE += .xz
125
126 # autoconf
127
128 autoconf-$(AUTOCONF_VERSION).tar.bz2:
129         $(download) $(AUTOCONF_URL)
130
131 autoconf: autoconf-$(AUTOCONF_VERSION).tar.bz2
132         $(UNPACK)
133         $(MOVE)
134
135 .autoconf: autoconf
136         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
137         touch $@
138
139 CLEAN_FILE += .autoconf
140 CLEAN_PKG += autoconf
141 DISTCLEAN_PKG += autoconf-$(AUTOCONF_VERSION).tar.bz2
142
143 # automake
144
145 automake-$(AUTOMAKE_VERSION).tar.gz:
146         $(download) $(AUTOMAKE_URL)
147
148 automake: automake-$(AUTOMAKE_VERSION).tar.gz
149         $(UNPACK)
150         $(MOVE)
151
152 .automake: automake .autoconf
153         (cd $<; ./configure --prefix=$(PREFIX) && make && make install)
154         touch $@
155
156 CLEAN_FILE += .automake
157 CLEAN_PKG += automake
158 DISTCLEAN_PKG += automake-$(AUTOMAKE_VERSION).tar.gz
159
160 # pkg-config
161
162 pkg-config-$(PKGCFG_VERSION).tar.gz:
163         $(download) $(PKGCFG_URL)
164
165 pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz .autoconf
166         $(UNPACK)
167         $(MOVE)
168         (cd $@; $(AUTOCONF))
169
170 .pkg-config: pkgconfig
171         (cd pkgconfig; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && make && make install)
172         touch $@
173
174 CLEAN_FILE += .pkg-config
175 CLEAN_PKG += pkgconfig
176 DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
177
178 #
179 #
180 #
181
182 clean:
183         rm -fr $(CLEAN_FILE) $(CLEAN_PKG) build/
184
185 distclean: clean
186         rm -fr $(DISTCLEAN_PKG)
187
188 .PHONY: all clean distclean