]> jfr.im git - irc/atheme/atheme.git/blame - buildsys.mk.in
Merge pull request #927 from runxiyu/master
[irc/atheme/atheme.git] / buildsys.mk.in
CommitLineData
21a25172
AJ
1# SPDX-License-Identifier: ISC
2# SPDX-URL: https://spdx.org/licenses/ISC.html
505f945e 3#
21a25172
AJ
4# Copyright (C) 2010-2012 William Pitcock <nenolod@dereferenced.org>
5# Copyright (C) 2010-2013 Jilles Tjoelker <jilles@stack.nl>
6# Copyright (C) 2011 Yoshiki Yazawa <yaz@honeyplanet.jp>
7# Copyright (C) 2011 Stephen Bennett <spb@exherbo.org>
a67197d2 8# Copyright (C) 2018-2019 Aaron M. D. Jones <me@aaronmdjones.net>
505f945e 9#
21a25172 10# Based on buildsys.mk: <https://git.nil.im/buildsys.git/>
505f945e 11#
21a25172
AJ
12# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012
13# Jonathan Schleifer <js@heap.zone>
505f945e 14#
21a25172
AJ
15# Permission to use, copy, modify, and/or distribute this software for any
16# purpose with or without fee is hereby granted, provided that the above
17# copyright notice and this permission notice is present in all copies.
505f945e 18#
21a25172
AJ
19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29# POSSIBILITY OF SUCH DAMAGE.
505f945e 30
d8159d55 31#V=1
df690163 32PACKAGE_NAME = @PACKAGE_NAME@
109cf8f3 33PACKAGE_TARNAME = @PACKAGE_TARNAME@
df690163 34PACKAGE_VERSION = @PACKAGE_VERSION@
c47ee7ea
AJ
35PACKAGE_STRING = @PACKAGE_STRING@
36PACKAGE_BUGREPORT ?= @PACKAGE_BUGREPORT@
37PACKAGE_URL ?= @PACKAGE_URL@
38VENDOR_STRING ?= @VENDOR_STRING@
505f945e 39AS = @AS@
e413c334 40CC = @CC@
505f945e 41CXX = @CXX@
e413c334 42CPP = @CPP@
505f945e
WP
43DC = @DC@
44ERLC = @ERLC@
45OBJC = @OBJC@
46OBJCXX = @OBJCXX@
47AR = @AR@
c2d29773 48LD = @CC@
505f945e
WP
49RANLIB = @RANLIB@
50PYTHON = @PYTHON@
51ASFLAGS = @ASFLAGS@
e413c334 52CFLAGS = @CFLAGS@
505f945e 53CXXFLAGS = @CXXFLAGS@
d19ec966 54CPPFLAGS = @CPPFLAGS@
505f945e
WP
55DFLAGS = @DFLAGS@
56ERLCFLAGS = @ERLCFLAGS@
57OBJCFLAGS = @OBJCFLAGS@
58OBJCXXFLAGS = @OBJCXXFLAGS@
e413c334
WP
59LDFLAGS = @LDFLAGS@
60LIBS = @LIBS@
505f945e
WP
61PYTHON_FLAGS = @PYTHON_FLAGS@
62PROG_IMPLIB_NEEDED = @PROG_IMPLIB_NEEDED@
63PROG_IMPLIB_LDFLAGS = @PROG_IMPLIB_LDFLAGS@
e413c334 64PROG_SUFFIX = @EXEEXT@
e413c334
WP
65LIB_CFLAGS = @LIB_CFLAGS@
66LIB_LDFLAGS = @LIB_LDFLAGS@
67LIB_PREFIX = @LIB_PREFIX@
68LIB_SUFFIX = @LIB_SUFFIX@
e413c334
WP
69PLUGIN_CFLAGS = @PLUGIN_CFLAGS@
70PLUGIN_LDFLAGS = @PLUGIN_LDFLAGS@
71PLUGIN_SUFFIX = @PLUGIN_SUFFIX@
e413c334
WP
72INSTALL_LIB = @INSTALL_LIB@
73UNINSTALL_LIB = @UNINSTALL_LIB@
74CLEAN_LIB = @CLEAN_LIB@
75LN_S = @LN_S@
7bd5e4be 76MKDIR_P = mkdir -p
e413c334
WP
77INSTALL = @INSTALL@
78SHELL = @SHELL@
505f945e 79MSGFMT = @MSGFMT@
80774a27
WP
80JAVAC = @JAVAC@
81JAVACFLAGS = @JAVACFLAGS@
82JAR = @JAR@
83WINDRES = @WINDRES@
07899cf2 84prefix = @prefix@
e413c334
WP
85exec_prefix = @exec_prefix@
86bindir = @bindir@
87libdir = @libdir@
109cf8f3 88plugindir ?= ${libdir}/${PACKAGE_TARNAME}
e413c334
WP
89datarootdir = @datarootdir@
90datadir = @datadir@
91includedir = @includedir@
109cf8f3 92includesubdir ?= ${PACKAGE_TARNAME}
d1a10ef7 93localedir = @localedir@
109cf8f3 94localename ?= ${PACKAGE_TARNAME}
e413c334 95mandir = @mandir@
505f945e
WP
96mansubdir ?= man1
97
80774a27
WP
98OBJS1 = ${SRCS:.c=.o}
99OBJS2 = ${OBJS1:.cc=.o}
100OBJS3 = ${OBJS2:.cxx=.o}
101OBJS4 = ${OBJS3:.d=.o}
102OBJS5 = ${OBJS4:.erl=.beam}
103OBJS6 = ${OBJS5:.java=.class}
104OBJS7 = ${OBJS6:.m=.o}
105OBJS8 = ${OBJS7:.mm=.o}
106OBJS9 = ${OBJS8:.py=.pyc}
107OBJS10 = ${OBJS9:.rc=.o}
108OBJS11 = ${OBJS10:.S=.o}
109OBJS += ${OBJS11:.xpm=.o}
110
111LIB_OBJS = ${OBJS:.o=.lib.o}
112PLUGIN_OBJS = ${OBJS:.o=.plugin.o}
442c6774
WP
113
114MO_FILES = ${LOCALES:.po=.mo}
0e92127b 115DEPFLAGS = -MMD -MP
505f945e
WP
116
117.SILENT:
118.SUFFIXES:
0e92127b 119.SUFFIXES: .beam .c .cc .class .cxx .d .erl .lib.o .java .mo .m .mm .mm.d .o .plugin.o .po .py .pyc .rc .S .xpm
3c114948 120.PHONY: all subdirs ${SUBDIRS} pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales
505f945e 121
3c114948 122all: subdirs depend ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales
505f945e 123
22ebc80b
WP
124pre-recurse:
125subdirs: pre-recurse ${SUBDIRS}
3c114948
WP
126${SUBDIRS}:
127 ${MAKE} -C $@ ${MFLAGS}
505f945e 128
0e92127b 129depend: pre-depend
fa3db6ee 130pre-depend:
505f945e 131
a76a2f89
WP
132echo-cmd = $(if $($(QUIET)$(1)),$(info $(phase_$(1)): $($(QUIET)$(1))))
133
df690163
WP
134${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
135 LDOBJS="${OBJS} ${OBJS_EXTRA}"; \
136 ${LINK_STATUS}; \
137 if ${LD} -o $@ ${OBJS} ${OBJS_EXTRA} ${LDFLAGS} ${LIBS}; then \
505f945e
WP
138 ${LINK_OK}; \
139 else \
140 ${LINK_FAILED}; \
141 fi
142
df690163 143${JARFILE}: ${EXT_DEPS} ${JAR_MANIFEST} ${OBJS} ${OBJS_EXTRA}
80774a27
WP
144 ${LINK_STATUS}
145 if test x"${JAR_MANIFEST}" != x""; then \
df690163 146 if ${JAR} cfm ${JARFILE} ${JAR_MANIFEST} ${OBJS} ${OBJS_EXTRA}; then \
80774a27
WP
147 ${LINK_OK}; \
148 else \
149 ${LINK_FAILED}; \
150 fi \
151 else \
df690163 152 if ${JAR} cf ${JARFILE} ${OBJS} ${OBJS_EXTRA}; then \
80774a27
WP
153 ${LINK_OK}; \
154 else \
155 ${LINK_FAILED}; \
156 fi \
157 fi
505f945e 158
df690163
WP
159${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
160 LDOBJS="${LIB_OBJS} ${LIB_OBJS_EXTRA}"; \
161 ${LINK_STATUS}; \
80774a27
WP
162 objs=""; \
163 ars=""; \
df690163 164 for i in ${LIB_OBJS} ${LIB_OBJS_EXTRA}; do \
80774a27
WP
165 case $$i in \
166 *.a) \
167 ars="$$ars $$i" \
168 ;; \
169 *.o) \
170 objs="$$objs $$i" \
171 ;; \
172 esac \
173 done; \
174 for i in $$ars; do \
175 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
176 rm -fr $$dir; \
177 mkdir -p $$dir; \
178 cd $$dir; \
df690163 179 ${AR} x ../$$i; \
80774a27
WP
180 for j in *.o; do \
181 objs="$$objs $$dir/$$j"; \
182 done; \
183 cd ..; \
184 done; \
110fddcc 185 if ${LD} -o $@ $$objs ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
80774a27
WP
186 ${LINK_OK}; \
187 else \
188 ${LINK_FAILED}; \
80774a27
WP
189 fi; \
190 for i in $$ars; do \
191 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
192 rm -fr $$dir; \
193 done
194
195${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS}
df690163
WP
196 LDOBJS="${PLUGIN_OBJS}"; \
197 ${LINK_STATUS}; \
198 objs=""; \
199 ars=""; \
200 for i in ${PLUGIN_OBJS}; do \
201 case $$i in \
202 *.a) \
203 ars="$$ars $$i" \
204 ;; \
205 *.o) \
206 objs="$$objs $$i" \
207 ;; \
208 esac \
209 done; \
210 for i in $$ars; do \
211 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
212 rm -fr $$dir; \
213 mkdir -p $$dir; \
214 cd $$dir; \
215 ${AR} x ../$$i; \
216 for j in *.o; do \
217 objs="$$objs $$dir/$$j"; \
218 done; \
219 cd ..; \
220 done; \
221 if ${LD} -o $@ $$objs ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
505f945e
WP
222 ${LINK_OK}; \
223 else \
224 ${LINK_FAILED}; \
df690163
WP
225 fi; \
226 for i in $$ars; do \
227 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
228 rm -fr $$dir; \
229 done
505f945e 230
df690163
WP
231${STATIC_LIB} ${STATIC_LIB_NOINST}: ${EXT_DEPS} ${OBJS} ${OBJS_EXTRA}
232 LDOBJS="${OBJS} ${OBJS_EXTRA}"; \
233 ${LINK_STATUS}; \
234 rm -f $@; \
80774a27
WP
235 objs=""; \
236 ars=""; \
df690163 237 for i in ${OBJS} ${OBJS_EXTRA}; do \
80774a27
WP
238 case $$i in \
239 *.a) \
240 ars="$$ars $$i" \
241 ;; \
242 *.o) \
243 objs="$$objs $$i" \
244 ;; \
245 esac \
246 done; \
247 for i in $$ars; do \
248 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
249 rm -fr $$dir; \
250 mkdir -p $$dir; \
251 cd $$dir; \
df690163 252 ${AR} x ../$$i; \
80774a27
WP
253 for j in *.o; do \
254 objs="$$objs $$dir/$$j"; \
255 done; \
256 cd ..; \
257 done; \
258 if ${AR} cr $@ $$objs && ${RANLIB} $@; then \
259 ${LINK_OK}; \
260 else \
261 ${LINK_FAILED}; \
262 rm -f $@; \
263 fi; \
264 for i in $$ars; do \
265 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
266 rm -fr $$dir; \
267 done
268
df690163
WP
269${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
270 LDOBJS="${LIB_OBJS} ${LIB_OBJS_EXTRA}"; \
271 ${LINK_STATUS}; \
80774a27 272 rm -f $@
df690163
WP
273 objs=""; \
274 ars=""; \
275 for i in ${LIB_OBJS} ${LIB_OBJS_EXTRA}; do \
276 case $$i in \
277 *.a) \
278 ars="$$ars $$i" \
279 ;; \
280 *.o) \
281 objs="$$objs $$i" \
282 ;; \
283 esac \
284 done; \
285 for i in $$ars; do \
286 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
287 rm -fr $$dir; \
288 mkdir -p $$dir; \
289 cd $$dir; \
290 ${AR} x ../$$i; \
291 for j in *.o; do \
292 objs="$$objs $$dir/$$j"; \
293 done; \
294 cd ..; \
295 done; \
296 if ${AR} cr $@ $$objs && ${RANLIB} $@; then \
505f945e
WP
297 ${LINK_OK}; \
298 else \
299 ${LINK_FAILED}; \
300 rm -f $@; \
df690163
WP
301 fi; \
302 for i in $$ars; do \
303 dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
304 rm -fr $$dir; \
305 done
505f945e 306
442c6774
WP
307locales: ${MO_FILES}
308
a76a2f89
WP
309phase_cmd_cc = CompileExe
310quiet_cmd_cc = $@
0e92127b 311 cmd_cc = ${CC} ${DEPFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<
a76a2f89
WP
312
313phase_cmd_cc_lib = CompileLib
314quiet_cmd_cc_lib = $@
0e92127b 315 cmd_cc_lib = ${CC} ${DEPFLAGS} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<
a76a2f89
WP
316
317phase_cmd_cc_plugin = CompilePlugin
318quiet_cmd_cc_plugin = $@
0e92127b 319 cmd_cc_plugin = ${CC} ${DEPFLAGS} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<
a76a2f89 320
505f945e 321.c.o:
a76a2f89
WP
322 $(call echo-cmd,cmd_cc)
323 $(cmd_cc)
818e9695 324
80774a27 325.c.lib.o:
a76a2f89
WP
326 $(call echo-cmd,cmd_cc_lib)
327 $(cmd_cc_lib)
818e9695 328
80774a27 329.c.plugin.o:
a76a2f89
WP
330 $(call echo-cmd,cmd_cc_plugin)
331 $(cmd_cc_plugin)
332
333phase_cmd_cxx = CompileExe
334quiet_cmd_cxx = $@
0e92127b 335 cmd_cxx = ${CXX} ${DEPFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<
a76a2f89
WP
336
337phase_cmd_cxx_lib = CompileLib
338quiet_cmd_cxx_lib = $@
0e92127b 339 cmd_cxx_lib = ${CXX} ${DEPFLAGS} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<
a76a2f89
WP
340
341phase_cmd_cxx_plugin = CompilePlugin
342quiet_cmd_cxx_plugin = $@
0e92127b 343 cmd_cxx_plugin = ${CXX} ${DEPFLAGS} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<
505f945e
WP
344
345.cc.o .cxx.o:
a76a2f89
WP
346 $(call echo-cmd,cmd_cxx)
347 $(cmd_cxx)
818e9695 348
80774a27 349.cc.lib.o .cxx.lib.o:
a76a2f89
WP
350 $(call echo-cmd,cmd_cxx_lib)
351 $(cmd_cxx_lib)
818e9695 352
80774a27 353.cc.plugin.o .cxx.plugin.o:
a76a2f89
WP
354 $(call echo-cmd,cmd_cxx_plugin)
355 $(cmd_cxx_plugin)
356
357phase_cmd_dc = CompileExe
358quiet_cmd_dc = $@
359
360ifeq ($(basename ${DC}),dmd)
361 cmd_dc = ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -of$@ $<
362else
363 cmd_dc = ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<
364endif
505f945e
WP
365
366.d.o:
a76a2f89
WP
367 $(call echo-cmd,cmd_dc)
368 $(cmd_dc)
369
370phase_cmd_erlc = CompileErlang
371quiet_cmd_erlc = $@
372 cmd_erlc = ${ERLC} ${ERLCFLAGS} -o $@ $<
505f945e
WP
373
374.erl.beam:
a76a2f89
WP
375 $(call echo-cmd,cmd_erlc)
376 $(cmd_erlc)
377
378phase_cmd_javac = CompileJava
379quiet_cmd_javac = $@
380 cmd_javac = ${JAVAC} ${JAVACFLAGS} $<
505f945e 381
80774a27 382.java.class:
a76a2f89
WP
383 $(call echo-cmd,cmd_javac)
384 $(cmd_javac)
385
386phase_cmd_objc = CompileExe
387quiet_cmd_objc = $@
388 cmd_objc = ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<
389
390phase_cmd_objc_lib = CompileLib
391quiet_cmd_objc_lib = $@
392 cmd_objc_lib = ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<
393
394phase_cmd_objc_plugin = CompilePlugin
395quiet_cmd_objc_plugin = $@
396 cmd_objc_plugin = ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<
80774a27 397
505f945e 398.m.o:
a76a2f89
WP
399 $(call echo-cmd,cmd_objc)
400 $(cmd_objc)
818e9695 401
80774a27 402.m.lib.o:
a76a2f89
WP
403 $(call echo-cmd,cmd_objc_lib)
404 $(cmd_objc_lib)
818e9695 405
80774a27 406.m.plugin.o:
a76a2f89
WP
407 $(call echo-cmd,cmd_objc_plugin)
408 $(cmd_objc_plugin)
409
410phase_cmd_objcxx = CompileExe
411quiet_cmd_objcxx = $@
412 cmd_objcxx = ${OBJCXX} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<
413
414phase_cmd_objcxx_lib = CompileLib
415quiet_cmd_objcxx_lib = $@
416 cmd_objcxx_lib = ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<
417
418phase_cmd_objcxx_plugin = CompilePlugin
419quiet_cmd_objcxx_plugin = $@
420 cmd_objcxx_plugin = ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<
505f945e
WP
421
422.mm.o:
a76a2f89
WP
423 $(call echo-cmd,cmd_objcxx)
424 $(cmd_objcxx)
818e9695 425
80774a27 426.mm.lib.o:
a76a2f89
WP
427 $(call echo-cmd,cmd_objcxx_lib)
428 $(cmd_objcxx_lib)
818e9695 429
80774a27 430.mm.plugin.o:
a76a2f89
WP
431 $(call echo-cmd,cmd_objcxx_plugin)
432 $(cmd_objcxx_plugin)
433
434phase_cmd_msgfmt = CompileResource
435quiet_cmd_msgfmt = $@
436 cmd_msgfmt = ${MSGFMT} -c -o $@ $<
505f945e 437
442c6774 438.po.mo:
a76a2f89
WP
439 $(call echo-cmd,cmd_msgfmt)
440 $(cmd_msgfmt)
441
442phase_cmd_pythonc = CompilePython
443quiet_cmd_pythonc = $@
444 cmd_pythonc = ${PYTHON} ${PYTHON_FLAGS} -c "import py_compile; py_compile.compile('$<')"
505f945e
WP
445
446.py.pyc:
a76a2f89
WP
447 $(call echo-cmd,cmd_pythonc)
448 $(cmd_pythonc)
449
450phase_cmd_windres = CompileResource
451quiet_cmd_windres = $@
452 cmd_windres = ${WINDRES} ${CPPFLAGS} -J rc -O coff -o $@ $<
505f945e 453
80774a27 454.rc.o .rc.lib.o .rc.plugin.o:
a76a2f89
WP
455 $(call echo-cmd,cmd_windres)
456 $(cmd_windres)
457
458phase_cmd_as = CompileExe
459quiet_cmd_as = $@
460 cmd_as = ${AS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<
461
462phase_cmd_as_lib = CompileLib
463quiet_cmd_as_lib = $@
464 cmd_as_lib = ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<
465
466phase_cmd_as_plugin = CompilePlugin
467quiet_cmd_as_plugin = $@
468 cmd_as_plugin = ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<
505f945e
WP
469
470.S.o:
a76a2f89
WP
471 $(call echo-cmd,cmd_as)
472 $(cmd_as)
818e9695 473
80774a27 474.S.lib.o:
a76a2f89
WP
475 $(call echo-cmd,cmd_as_lib)
476 $(cmd_as_lib)
818e9695 477
80774a27 478.S.plugin.o:
a76a2f89
WP
479 $(call echo-cmd,cmd_as_plugin)
480 $(cmd_as_plugin)
481
482phase_cmd_xpm = CompileExe
483quiet_cmd_xpm = $@
484 cmd_xpm = ${CC} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<
485
486phase_cmd_xpm_lib = CompileLib
487quiet_cmd_xpm_lib = $@
488 cmd_xpm_lib = ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<
489
490phase_cmd_xpm_plugin = CompilePlugin
491quiet_cmd_xpm_plugin = $@
492 cmd_xpm_plugin = ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<
80774a27
WP
493
494.xpm.o:
a76a2f89
WP
495 $(call echo-cmd,cmd_xpm)
496 $(cmd_xpm)
818e9695 497
80774a27 498.xpm.lib.o:
a76a2f89
WP
499 $(call echo-cmd,cmd_xpm_lib)
500 $(cmd_xpm_lib)
818e9695 501
80774a27 502.xpm.plugin.o:
a76a2f89
WP
503 $(call echo-cmd,cmd_xpm_plugin)
504 $(cmd_xpm_plugin)
505f945e 505
80774a27 506install: ${SHARED_LIB} ${STATIC_LIB} ${STATIC_PIC_LIB} ${PLUGIN} ${PROG} install-extra
505f945e 507 for i in ${SUBDIRS}; do \
a76a2f89 508 ${MAKE} -C $$i ${MFLAGS} install || exit $$?; \
505f945e
WP
509 done
510
80774a27 511 for i in ${SHARED_LIB}; do \
505f945e 512 ${INSTALL_STATUS}; \
80774a27 513 if ${MKDIR_P} ${DESTDIR}${libdir} ${INSTALL_LIB}; then \
505f945e
WP
514 ${INSTALL_OK}; \
515 else \
516 ${INSTALL_FAILED}; \
517 fi \
518 done
519
80774a27 520 for i in ${STATIC_LIB} ${STATIC_PIC_LIB}; do \
505f945e
WP
521 ${INSTALL_STATUS}; \
522 if ${MKDIR_P} ${DESTDIR}${libdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${libdir}/$$i; then \
523 ${INSTALL_OK}; \
524 else \
525 ${INSTALL_FAILED}; \
526 fi \
527 done
528
529 for i in ${PLUGIN}; do \
530 ${INSTALL_STATUS}; \
531 if ${MKDIR_P} ${DESTDIR}${plugindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${plugindir}/$$i; then \
532 ${INSTALL_OK}; \
533 else \
534 ${INSTALL_FAILED}; \
535 fi \
536 done
537
538 for i in ${DATA}; do \
539 ${INSTALL_STATUS}; \
109cf8f3 540 if ${MKDIR_P} $$(dirname ${DESTDIR}${datadir}/${PACKAGE_TARNAME}/$$i) && ${INSTALL} -m 644 $$i ${DESTDIR}${datadir}/${PACKAGE_TARNAME}/$$i; then \
505f945e
WP
541 ${INSTALL_OK}; \
542 else \
543 ${INSTALL_FAILED}; \
544 fi \
545 done
546
547 for i in ${PROG}; do \
548 ${INSTALL_STATUS}; \
549 if ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i; then \
550 ${INSTALL_OK}; \
551 else \
552 ${INSTALL_FAILED}; \
553 fi \
554 done
555
556 for i in ${INCLUDES}; do \
557 ${INSTALL_STATUS}; \
558 if ${MKDIR_P} ${DESTDIR}${includedir}/${includesubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${includedir}/${includesubdir}/$$i; then \
559 ${INSTALL_OK}; \
560 else \
561 ${INSTALL_FAILED}; \
562 fi \
563 done
564
80774a27
WP
565 for i in ${MO_FILES}; do \
566 ${INSTALL_STATUS}; \
567 if ${MKDIR_P} ${DESTDIR}${localedir}/$${i%.mo}/LC_MESSAGES && ${INSTALL} -m 644 $$i ${DESTDIR}${localedir}/$${i%.mo}/LC_MESSAGES/${localename}.mo; then \
568 ${INSTALL_OK}; \
569 else \
570 ${INSTALL_FAILED}; \
571 fi \
572 done
573
505f945e
WP
574 for i in ${MAN}; do \
575 ${INSTALL_STATUS}; \
576 if ${MKDIR_P} ${DESTDIR}${mandir}/${mansubdir} && ${INSTALL} -m 644 $$i ${DESTDIR}${mandir}/${mansubdir}/$$i; then \
577 ${INSTALL_OK}; \
578 else \
579 ${INSTALL_FAILED}; \
580 fi \
581 done
582
583install-extra:
584
585uninstall: uninstall-extra
586 for i in ${SUBDIRS}; do \
a76a2f89 587 ${MAKE} -C $$i ${MFLAGS} uninstall || exit $$?; \
505f945e
WP
588 done
589
80774a27 590 for i in ${SHARED_LIB}; do \
505f945e 591 if test -f ${DESTDIR}${libdir}/$$i; then \
80774a27 592 if : ${UNINSTALL_LIB}; then \
505f945e
WP
593 ${DELETE_OK}; \
594 else \
595 ${DELETE_FAILED}; \
596 fi \
597 fi; \
598 done
599
80774a27 600 for i in ${STATIC_LIB} ${STATIC_PIC_LIB}; do \
505f945e
WP
601 if test -f ${DESTDIR}${libdir}/$$i; then \
602 if rm -f ${DESTDIR}${libdir}/$$i; then \
603 ${DELETE_OK}; \
604 else \
605 ${DELETE_FAILED}; \
606 fi \
607 fi \
608 done
609
610 for i in ${PLUGIN}; do \
611 if test -f ${DESTDIR}${plugindir}/$$i; then \
612 if rm -f ${DESTDIR}${plugindir}/$$i; then \
613 ${DELETE_OK}; \
614 else \
615 ${DELETE_FAILED}; \
616 fi \
617 fi \
618 done
619 -rmdir ${DESTDIR}${plugindir} >/dev/null 2>&1
620
621 for i in ${DATA}; do \
109cf8f3
AJ
622 if test -f ${DESTDIR}${datadir}/${PACKAGE_TARNAME}/$$i; then \
623 if rm -f ${DESTDIR}${datadir}/${PACKAGE_TARNAME}/$$i; then \
505f945e
WP
624 ${DELETE_OK}; \
625 else \
626 ${DELETE_FAILED}; \
627 fi \
80774a27 628 fi; \
109cf8f3 629 rmdir "$$(dirname ${DESTDIR}${datadir}/${PACKAGE_TARNAME}/$$i)" >/dev/null 2>&1 || true; \
505f945e 630 done
109cf8f3 631 -rmdir ${DESTDIR}${datadir}/${PACKAGE_TARNAME} >/dev/null 2>&1
505f945e
WP
632
633 for i in ${PROG}; do \
634 if test -f ${DESTDIR}${bindir}/$$i; then \
635 if rm -f ${DESTDIR}${bindir}/$$i; then \
636 ${DELETE_OK}; \
637 else \
638 ${DELETE_FAILED}; \
639 fi \
640 fi \
641 done
642
643 for i in ${INCLUDES}; do \
644 if test -f ${DESTDIR}${includedir}/${includesubdir}/$$i; then \
645 if rm -f ${DESTDIR}${includedir}/${includesubdir}/$$i; then \
646 ${DELETE_OK}; \
647 else \
648 ${DELETE_FAILED}; \
649 fi \
650 fi \
651 done
652 -rmdir ${DESTDIR}${includedir}/${includesubdir} >/dev/null 2>&1
653
80774a27
WP
654 for i in ${MO_FILES}; do \
655 if test -f ${DESTDIR}${localedir}/$${i%.mo}/LC_MESSAGES/${localename}.mo; then \
656 if rm -f ${DESTDIR}${localedir}/$${i%.mo}/LC_MESSAGES/${localename}.mo; then \
657 ${DELETE_OK}; \
658 else \
659 ${DELETE_FAILED}; \
660 fi \
661 fi \
662 done
663
505f945e
WP
664 for i in ${MAN}; do \
665 if test -f ${DESTDIR}${mandir}/${mansubdir}/$$i; then \
666 if rm -f ${DESTDIR}${mandir}/${mansubdir}/$$i; then \
667 ${DELETE_OK}; \
668 else \
669 ${DELETE_FAILED}; \
670 fi \
671 fi \
672 done
673
674uninstall-extra:
675
676clean:
677 for i in ${SUBDIRS}; do \
a76a2f89 678 ${MAKE} -C $$i ${MFLAGS} clean || exit $$?; \
505f945e
WP
679 done
680
df690163 681 for i in ${DEPS} ${OBJS} ${OBJS_EXTRA} ${LIB_OBJS} ${LIB_OBJS_EXTRA} ${PLUGIN_OBJS} ${PROG} ${PROG_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${CLEAN_LIB} ${MO_FILES} ${CLEAN}; do \
505f945e
WP
682 if test -f $$i -o -d $$i; then \
683 if rm -fr $$i; then \
684 ${DELETE_OK}; \
685 else \
686 ${DELETE_FAILED}; \
687 fi \
688 fi \
689 done
690
691distclean: clean
692 for i in ${SUBDIRS}; do \
a76a2f89 693 ${MAKE} -C $$i ${MFLAGS} distclean || exit $$?; \
505f945e
WP
694 done
695
0e92127b 696 for i in ${DISTCLEAN} *.d *~; do \
505f945e
WP
697 if test -f $$i -o -d $$i; then \
698 if rm -fr $$i; then \
699 ${DELETE_OK}; \
700 else \
701 ${DELETE_FAILED}; \
702 fi \
703 fi \
704 done
705
df690163
WP
706ifndef V
707
a76a2f89 708QUIET = quiet_
d8159d55
WP
709LINK_STATUS = printf "Link: $@\n"
710LINK_OK = true
711LINK_FAILED = exit $$?
712INSTALL_STATUS = printf "Install: $$i\n"
713INSTALL_OK = true
714INSTALL_FAILED = exit $$?
715DELETE_OK = printf "Delete: $$i\n"
716DELETE_FAILED = exit $$?
505f945e 717
df690163
WP
718else
719
a76a2f89 720QUIET =
34d4140f 721LINK_STATUS = printf "Link: ${LD} -o $@ $$LDOBJS ${LDFLAGS} ${LIBS}\n"
df690163
WP
722LINK_OK = true
723LINK_FAILED = exit $$?
724INSTALL_STATUS = printf "Install: $$i\n"
725INSTALL_OK = true
726INSTALL_FAILED = exit $$?
727DELETE_OK = printf "Delete: $$i\n"
728DELETE_FAILED = exit $$?
729
730endif
731
0e92127b 732-include *.d