OSDN Git Service

a3019ade7bda5c0e6e07cb0b0260629ea67c0c82
[handbrake-jp/handbrake-jp-git.git] / make / include / contrib.defs
1 CONTRIB.build/    = $(BUILD/)contrib/
2 CONTRIB.download/ = $(SRC/)download/
3 CONTRIB.host      = $(if $(filter 1,$(BUILD.cross)),$(BUILD.spec))
4
5 ###############################################################################
6
7 ##
8 ## $(1) = module name (uppercase)
9 ##
10 define import.CONTRIB.defs
11     ##
12     ## import gcc/g++ support mainly so we can force contrib choice of
13     ## gcc executable, and debug/optimization flags.
14     ##
15     $$(eval $$(call import.GCC,$(1)))
16
17     ##
18     ## common values useful across targets
19     ##
20     $(1).src/   = $$(SRC/)contrib/$($(1).name)/
21     $(1).build/ = $$(CONTRIB.build/)$($(1).name)/
22     $(1).deps   = $$(foreach n,$($(1).prerequisites),$$($$n.INSTALL.target))
23
24     ##
25     ## target: fetch
26     ##
27     $(1).FETCH.tar    = $$(CONTRIB.download/)$$(notdir $$($(1).FETCH.url))
28     $(1).FETCH.url    = FETCH_IS_UNDEFINED
29     $(1).FETCH.target = $$($(1).FETCH.tar)
30     define $(1).FETCH
31         $$(call FETCH,$$@,$$($(1).FETCH.url))
32     endef
33
34     ##
35     ## target: extract
36     ##
37     $(1).EXTRACT.tarbase = $$(patsubst %.tar.gz,%,$$(notdir $$($(1).FETCH.url)))
38     $(1).EXTRACT.dir/    = $$($(1).build/)$$($(1).EXTRACT.tarbase)/
39     $(1).EXTRACT.target  = $$($(1).build/).stamp.extract
40     define $(1).EXTRACT
41         $$(RM.exe) -fr $$($(1).EXTRACT.dir/)
42         $$(TAR.exe) xfC $$($(1).FETCH.tar) $$($(1).build/)
43         $$(TOUCH.exe) $$@
44     endef
45
46     ##
47     ## target: patch
48     ##
49     $(1).PATCH.srcs = $$(wildcard \
50         $$($(1).src/)A??-*.patch \
51         $$($(1).src/)P??-$$(BUILD.system)*.patch )
52
53     # extra line feed is required
54     define $(1).PATCH.item
55         $$(PATCH.exe) -t -N -p1 -d $$(1) < $$(2)
56
57     endef
58
59     $(1).PATCH.target = $$($(1).build/).stamp.patch
60     define $(1).PATCH
61         $$(foreach p,$$($(1).PATCH.srcs),$$(call $(1).PATCH.item,$$($(1).EXTRACT.dir/),$$(p)))
62         $$(TOUCH.exe) $$@
63     endef
64
65     ##
66     ## target: configure
67     ##
68     $(1).CONFIGURE.sete       = set -e;
69     $(1).CONFIGURE.dir        = $$($(1).EXTRACT.dir/)
70     $(1).CONFIGURE.bootstrap  =
71     $(1).CONFIGURE.exe        = ./configure
72     $(1).CONFIGURE.host       = $$(CONTRIB.host)
73     $(1).CONFIGURE.prefix     = $$(call fn.ABSOLUTE,$$(CONTRIB.build/))
74     $(1).CONFIGURE.deps       = --disable-dependency-tracking
75     $(1).CONFIGURE.shared     = --disable-shared
76     $(1).CONFIGURE.static     = --enable-static
77     $(1).CONFIGURE.extra      =
78
79     $(1).CONFIGURE.args.dir    = cd $$(1);
80     $(1).CONFIGURE.args.host   = --host=$$(1)
81     $(1).CONFIGURE.args.prefix = --prefix=$$(1)
82
83     $(1).CONFIGURE.args = !sete @dir !bootstrap !env !exe @host @prefix !deps !shared !static !extra
84
85     $(1).CONFIGURE.env.CC       = CC=$$($(1).GCC.gcc)
86     $(1).CONFIGURE.env.CFLAGS   = CFLAGS="$$(call fn.ARGS,$(1).GCC,*archs ?extra)"
87     $(1).CONFIGURE.env.CXX      = CXX=$$($(1).GCC.gxx)
88     $(1).CONFIGURE.env.CXXFLAGS = CXXFLAGS="$$(call fn.ARGS,$(1).GCC,*archs ?extra)"
89     $(1).CONFIGURE.env.CPPFLAGS = CPPFLAGS="$$(call fn.ARGS,$(1).GCC,*archs ?extra)"
90     $(1).CONFIGURE.env.LDFLAGS  = LDFLAGS="$$(call fn.ARGS,$(1).GCC,*archs)"
91
92     $(1).CONFIGURE.env.args = !CC !CFLAGS !CXX !CXXFLAGS !CPPFLAGS !LDFLAGS
93     $(1).CONFIGURE.env = $$(call fn.ARGS,$(1).CONFIGURE.env,$$($(1).CONFIGURE.env.args))
94
95     $(1).CONFIGURE.target = $$($(1).build/).stamp.configure
96     define $(1).CONFIGURE
97         $$(call fn.ARGS,$(1).CONFIGURE,$$($(1).CONFIGURE.args))
98         $$(TOUCH.exe) $$@
99     endef
100
101     ##
102     ## target: build
103     ##
104     $(1).BUILD.make     = $$(MAKE)
105     $(1).BUILD.dir      = $$($(1).EXTRACT.dir/)
106     $(1).BUILD.extra    =
107     $(1).BUILD.ntargets =
108
109     $(1).BUILD.args = !make @dir !extra !ntargets
110     $(1).BUILD.args.dir = -C $$(1)
111
112     $(1).BUILD.target = $$($(1).build/).stamp.build
113     define $(1).BUILD
114         $$(call fn.ARGS,$(1).BUILD,$$($(1).BUILD.args))
115         $$(TOUCH.exe) $$@
116     endef
117
118     ##
119     ## target: install
120     ##
121     $(1).INSTALL.make     = $$(MAKE)
122     $(1).INSTALL.dir      = $$($(1).EXTRACT.dir/)
123     $(1).INSTALL.extra    =
124     $(1).INSTALL.ntargets =
125
126     $(1).INSTALL.args = !make @dir !extra !ntargets
127     $(1).INSTALL.args.dir = -C $$(1) install
128
129     $(1).INSTALL.mkdirs = $$(CONTRIB.build/)lib/ $$(CONTRIB.build/)include/
130     $(1).INSTALL.target = $$($(1).build/).stamp.install
131     define $(1).INSTALL
132         $$(call fn.ARGS,$(1).INSTALL,$$($(1).INSTALL.args))
133         $$(TOUCH.exe) $$@
134     endef
135
136     ##
137     ## target: uninstall
138     ##
139     $(1).UNINSTALL.make     = $$(MAKE)
140     $(1).UNINSTALL.dir      = $$($(1).EXTRACT.dir/)
141     $(1).UNINSTALL.extra    =
142     $(1).UNINSTALL.ntargets = uninstall
143
144     $(1).UNINSTALL.args = !make @dir !extra !ntargets
145     $(1).UNINSTALL.args.dir = -C $$(1)
146
147     define $(1).UNINSTALL
148         $$(call fn.ARGS,$(1).UNINSTALL,$$($(1).UNINSTALL.args))
149         $$(RM.exe) -f $$($(1).INSTALL.target)
150     endef
151
152     ##
153     ## target: clean
154     ##
155     $(1).CLEAN.make     = $$(MAKE)
156     $(1).CLEAN.dir      = $$($(1).EXTRACT.dir/)
157     $(1).CLEAN.extra    =
158     $(1).CLEAN.ntargets = clean
159
160     $(1).CLEAN.args = !make @dir !extra !ntargets
161     $(1).CLEAN.args.dir = -C $$(1)
162
163     define $(1).CLEAN
164         $$(call fn.ARGS,$(1).CLEAN,$$($(1).CLEAN.args))
165         $$(RM.exe) -f $$($(1).BUILD.target)
166     endef
167
168     ##
169     ## other values used to aid prerequisite dirs and cleanup
170     ##
171     $(1).out += $$($(1).build/)
172     $(1).out += $$($(1).FETCH.target)
173     $(1).out += $$($(1).EXTRACT.target)
174     $(1).out += $$($(1).PATCH.target)
175     $(1).out += $$($(1).CONFIGURE.target)
176     $(1).out += $$($(1).BUILD.target)
177     $(1).out += $$($(1).INSTALL.mkdirs)
178     $(1).out += $$($(1).INSTALL.target)
179
180     BUILD.out += $$($(1).out)
181 endef
182
183 ###############################################################################
184
185 ##
186 ## $(1) = module name
187 ##
188 define import.CONTRIB.rules
189
190 ##
191 ## target: fetch
192 ##
193 $($(1).name).fetch: $$($(1).FETCH.target)
194
195 $$($(1).FETCH.target): | $$(dir $$($(1).FETCH.target))
196         $$($(1).FETCH)
197
198 ##
199 ## target: extract
200 ## must touch dir after extraction because old timestamp is restored via tar.
201 ##
202 $($(1).name).extract: $$($(1).EXTRACT.target)
203
204 $$($(1).EXTRACT.target): | $$(dir $$($(1).EXTRACT.target))
205 $$($(1).EXTRACT.target): $$($(1).FETCH.target)
206         $$($(1).EXTRACT)
207
208 $($(1).name).extract.touch:
209         $$(TOUCH.exe) $$($(1).EXTRACT.target)
210
211 $($(1).name).extract.untouch:
212         $$(RM.exe) -f $$($(1).EXTRACT.target)
213
214 ##
215 ## target: patch
216 ##
217 $($(1).name).patch: $$($(1).PATCH.target)
218
219 $$($(1).PATCH.target): | $$(dir $$($(1).PATCH.target))
220 $$($(1).PATCH.target): $$($(1).EXTRACT.target)
221         $$($(1).PATCH)
222
223 $($(1).name).patch.touch:
224         $$(TOUCH.exe) $$($(1).PATCH.target)
225
226 $($(1).name).patch.untouch:
227         $$(RM.exe) -f $$($(1).PATCH.target)
228
229 ##
230 ## target: configure
231 ##
232 $($(1).name).configure: $$($(1).CONFIGURE.target)
233
234 $$($(1).CONFIGURE.target): | $$(dir $$($(1).CONFIGURE.target))
235 $$($(1).CONFIGURE.target): $$($(1).deps)
236 $$($(1).CONFIGURE.target): $$($(1).PATCH.target)
237         $$($(1).CONFIGURE)
238
239 $($(1).name).configure.touch:
240         $$(TOUCH.exe) $$($(1).CONFIGURE.target)
241
242 $($(1).name).configure.untouch:
243         $$(RM.exe) -f $$($(1).CONFIGURE.target)
244
245 ##
246 ## target: build
247 ##
248 $($(1).name).build: $$($(1).BUILD.target)
249
250 $$($(1).BUILD.target): | $$(dir $$($(1).BUILD.target))
251 $$($(1).BUILD.target): $$($(1).CONFIGURE.target)
252         -$$($(1).CLEAN)
253         +$$($(1).BUILD)
254
255 $($(1).name).build.touch:
256         $$(TOUCH.exe) $$($(1).BUILD.target)
257
258 $($(1).name).build.untouch:
259         $$(RM.exe) -f $$($(1).BUILD.target)
260
261 ##
262 ## target: install
263 ##
264 $($(1).name).install: $$($(1).INSTALL.target)
265
266 $$($(1).INSTALL.target): | $$(dir $$($(1).INSTALL.target)) $$($(1).INSTALL.mkdirs)
267 $$($(1).INSTALL.target): $$($(1).BUILD.target)
268         $$($(1).INSTALL)
269
270 $($(1).name).install.touch:
271         $$(TOUCH.exe) $$($(1).INSTALL.target)
272
273 $($(1).name).install.untouch:
274         $$(RM.exe) -f $$($(1).INSTALL.target)
275
276 ##
277 ## target: uninstall
278 ##
279 $($(1).name).uninstall:
280         -$$($(1).UNINSTALL)
281
282 ##
283 ## target: clean
284 ##
285 $($(1).name).clean:
286         -$$($(1).CLEAN)
287
288 ##
289 ## target: xclean
290 ##
291 $($(1).name).xclean: $($(1).name).uninstall
292         $$(RM.exe) -fr $$($(1).build/)
293
294 ##
295 ## alias: module name is same as build
296 ##
297 $($(1).name): $($(1).name).build
298
299 ##
300 ## participate with global convenience targets
301 ##
302 contrib.fetch: $($(1).name).fetch
303 contrib.extract: $($(1).name).extract
304 contrib.patch: $($(1).name).patch
305 contrib.configure: $($(1).name).configure
306 contrib.build: $($(1).name).build
307 contrib.install: $($(1).name).install
308 contrib.uninstall: $($(1).name).uninstall
309 contrib.clean: $($(1).name).clean
310 contrib.xclean: $($(1).name).xclean
311
312 endef