sdk;ecere: Tweaks for Debian Multi-Arch support
[sdk] / Makefile
1 .PHONY: all clean realclean distclean emptyoutput prepinstall actualinstall install copyonlyinstall uninstall troubleshoot outputdirs bootstrap deps ecere ecerecom ecerevanilla ear compiler prepbinaries epj2make ide documentor eda prepcodeguard codeguard
2 .SILENT:
3
4 include crossplatform.mk
5 include default.cf
6
7 XBOOT := $(if $(CROSS_TARGET),GCC_PREFIX= TARGET_PLATFORM=$(HOST_PLATFORM) PLATFORM=$(HOST_PLATFORM),)
8
9 LIBVER := .0.44
10
11 ifdef WINDOWS_HOST
12 HOST_SOV := $(HOST_SO)
13 else
14 HOST_SOV := $(HOST_SO)$(LIBVER)
15 endif
16
17 ifdef WINDOWS_TARGET
18
19 SOV := $(SO)
20
21 ifndef DESTDIR
22
23 ifdef ProgramFiles(x86)
24 export DESTDIR=${ProgramFiles(x86)}/Ecere SDK
25 else
26 ifdef ProgramFiles
27 export DESTDIR=$(ProgramFiles)/Ecere SDK
28 else
29 export DESTDIR=$(SystemDrive)/Ecere SDK
30 endif
31 endif
32
33 endif # DESTDIR
34
35 export prefix=
36
37 ifndef DOCDIR
38 export DOCDIR=$(DESTDIR)$(prefix)/doc
39 endif
40
41 ifndef BINDIR
42 export BINDIR=$(DESTDIR)$(prefix)/bin
43 endif
44
45 ifndef LIBDIR
46 export LIBDIR=$(BINDIR)
47 endif
48 export DESTLIBDIR=$(LIBDIR)
49
50 ifndef SLIBDIR
51 export SLIBDIR=$(DESTDIR)$(prefix)/lib
52 endif
53 export DESTSLIBDIR=$(SLIBDIR)
54
55 ifndef SAMPLESDIR
56 export SAMPLESDIR=$(DESTDIR)$(prefix)/samples
57 endif
58
59 ifndef EXTRASDIR
60 export EXTRASDIR=$(DESTDIR)$(prefix)/extras
61 endif
62
63
64 else # WINDOWS_TARGET
65
66 SOV := $(SO)$(LIBVER)
67
68 ifndef DESTDIR
69 export DESTDIR=
70 endif
71
72 ifndef prefix
73 export prefix=/usr
74 endif
75
76 ifndef DOCDIR
77 export DOCDIR=$(DESTDIR)$(prefix)/share/ecere/doc
78 endif
79
80 ifndef MANDIR
81 export MANDIR=$(DESTDIR)$(prefix)/share/man/
82 endif
83
84 ifndef BINDIR
85 export BINDIR=$(DESTDIR)$(prefix)/bin
86 endif
87
88 HOSTTYPE := $(shell uname -m)
89
90 ifdef LIBDIR
91 export PREFIXLIBDIR=$(LIBDIR)
92 else
93
94 ifeq "$(HOSTTYPE)" "x86_64"
95 export PREFIXLIBDIR=$(prefix)/lib32
96 else
97 export PREFIXLIBDIR=$(prefix)/lib
98 endif
99
100 endif
101
102 DESTLIBDIR := $(DESTDIR)$(PREFIXLIBDIR)
103 ifdef SLIBDIR
104 DESTSLIBDIR := $(DESTDIR)$(SLIBDIR)
105 else
106 DESTSLIBDIR := $(DESTLIBDIR)
107 endif
108
109 ifndef SAMPLESDIR
110 export SAMPLESDIR=$(DESTDIR)$(prefix)/share/ecere/samples
111 endif
112
113 ifndef EXTRASDIR
114 export EXTRASDIR=$(DESTDIR)$(prefix)/share/ecere/extras
115 endif
116
117
118 endif
119
120 OBJDIR := obj$(OBJALT)/
121 OBJBINDIR := $(OBJDIR)$(PLATFORM)/bin/
122 OBJLIBDIR := $(OBJDIR)$(PLATFORM)/lib/
123 XOBJDIR := obj$(OBJALT)/
124 XOBJBINDIR := $(OBJDIR)$(HOST_PLATFORM)/bin/
125 XOBJLIBDIR := $(OBJDIR)$(HOST_PLATFORM)/lib/
126
127 all: prepbinaries ide epj2make documentor eda codeguard
128         @$(call echo,The Ecere SDK is fully built.)
129
130 outputdirs:
131         $(if $(wildcard $(OBJDIR)),,$(call mkdirq,$(OBJDIR)))
132         $(if $(wildcard $(OBJBINDIR)),,$(call mkdirq,$(OBJBINDIR)))
133         $(if $(wildcard $(OBJLIBDIR)),,$(call mkdirq,$(OBJLIBDIR)))
134 ifdef CROSS_TARGET
135         $(if $(wildcard $(XOBJDIR)),,$(call mkdirq,$(XOBJDIR)))
136         $(if $(wildcard $(XOBJBINDIR)),,$(call mkdirq,$(XOBJBINDIR)))
137         $(if $(wildcard $(XOBJLIBDIR)),,$(call mkdirq,$(XOBJLIBDIR)))
138 endif
139
140 bootstrap: outputdirs
141         cd compiler && $(MAKE) $(XBOOT) bootstrap
142
143 deps:
144 ifdef CROSS_TARGET
145         @$(call echo,Building dependencies (host)...)
146         cd deps && $(MAKE) $(XBOOT)
147 endif
148         @$(call echo,Building dependencies...)
149         cd deps && $(MAKE)
150
151 ecere: bootstrap deps
152 ifdef CROSS_TARGET
153         @$(call echo,Building 2nd stage ecere (host)...)
154 else
155         @$(call echo,Building 2nd stage ecere...)
156 endif
157         cd ecere && $(MAKE) nores $(XBOOT)
158         cd ear && $(MAKE) nores $(XBOOT)
159         cd ecere && $(MAKE) cleantarget
160 ifdef CROSS_TARGET
161         @$(call echo,Building 2nd stage ecere...)
162 endif
163         cd ecere && $(MAKE)
164
165 ecerecom: bootstrap
166 ifdef CROSS_TARGET
167         @$(call echo,Building eC Core Runtime (host)...)
168         cd ecere && $(MAKE) -f Makefile.ecereCOM $(XBOOT)
169 endif
170         @$(call echo,Building eC Core Runtime...)
171         cd ecere && $(MAKE) -f Makefile.ecereCOM
172
173 ecerevanilla: bootstrap
174         @$(call echo,Building Vanilla Ecere...)
175         cd ecere && $(MAKE) -f Makefile.vanilla
176
177 ear: ecere ecerevanilla
178         @$(call echo,Building ear...)
179         cd ear && cd cmd && $(MAKE) cleantarget
180         cd ear && $(MAKE)
181
182 compiler: ecere ear
183 ifdef CROSS_TARGET
184         @$(call echo,Building 2nd stage compiler (host))
185         cd compiler && $(MAKE) $(XBOOT)
186 endif
187         @$(call echo,Building 2nd stage compiler)
188         cd compiler && $(MAKE)
189
190 prepbinaries: compiler ecerecom
191         @$(call echo,Enabling 2nd stage binaries...)
192 ifdef WINDOWS_TARGET
193         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV),$(OBJBINDIR))
194         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV),$(OBJBINDIR))
195         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV),$(OBJBINDIR))
196 endif
197 ifdef LINUX_TARGET
198         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV),$(OBJLIBDIR))
199         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
200         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV),$(OBJLIBDIR))
201         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
202         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
203         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
204         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
205         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
206         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
207 endif
208 ifndef WINDOWS_TARGET
209 ifndef LINUX_TARGET
210         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SO),$(OBJLIBDIR))
211         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
212         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SO),$(OBJLIBDIR))
213 endif
214 endif
215         $(call cpq,ear/cmd/obj/release.$(PLATFORM)/ear$(E),$(OBJBINDIR))
216         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)/ecc$(E),$(OBJBINDIR))
217         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)/ecp$(E),$(OBJBINDIR))
218         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)/ecs$(E),$(OBJBINDIR))
219
220 ifdef CROSS_TARGET
221
222 ifdef WINDOWS_HOST
223         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJBINDIR))
224         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJBINDIR))
225         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ec$(HOST_SOV),$(XOBJBINDIR))
226 endif
227 ifdef WINDOWS_HOST
228         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJLIBDIR))
229         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJLIBDIR))
230         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ec$(HOST_SOV),$(XOBJLIBDIR))
231         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO).0
232         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO).0
233         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO).0
234         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO)
235         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO)
236         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO)
237 endif
238 ifndef WINDOWS_HOST
239 ifndef LINUX_HOST
240         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ecere$(HOST_SO),$(XOBJLIBDIR))
241         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)/$(HOST_LP)ecereCOM$(HOST_SO),$(XOBJLIBDIR))
242         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ec$(HOST_SO),$(XOBJLIBDIR))
243 endif
244 endif
245         $(call cpq,ear/cmd/obj/release.$(HOST_PLATFORM)/ear$(HOST_E),$(XOBJBINDIR))
246         $(call cpq,compiler/ecc/obj/release.$(HOST_PLATFORM)/ecc$(HOST_E),$(XOBJBINDIR))
247         $(call cpq,compiler/ecp/obj/release.$(HOST_PLATFORM)/ecp$(HOST_E),$(XOBJBINDIR))
248         $(call cpq,compiler/ecs/obj/release.$(HOST_PLATFORM)/ecs$(HOST_E),$(XOBJBINDIR))
249
250 endif
251
252 epj2make: prepbinaries
253         @$(call echo,Building epj2make...)
254         cd epj2make && $(MAKE)
255
256 ide: prepbinaries
257         @$(call echo,Building IDE...)
258         cd ide && $(MAKE)
259
260 documentor: prepbinaries
261         @$(call echo,Building Documentor...)
262         cd documentor && $(MAKE)
263
264 codeguard: prepcodeguard
265 ifdef CodeGuard
266         @$(call echo,Building CodeGuard client...)
267         cd codeGuard && $(MAKE)
268 endif
269
270 prepcodeguard: eda
271 ifdef CodeGuard
272 ifdef WINDOWS_TARGET
273         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
274 endif
275
276 ifdef LINUX_TARGET
277         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
278         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
279         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
280 endif
281
282 ifndef WINDOWS_TARGET
283 ifndef LINUX_TARGET
284         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
285 endif
286 endif
287 endif
288
289 eda: prepbinaries
290         @$(call echo,Building EDA...)
291         cd eda && $(MAKE)
292
293 emptyoutput: outputdirs
294         $(call rmq,$(OBJLIBDIR)libecereVanilla$(A))
295         $(call rmq,$(SODESTDIR)$(LP)ecere$(SO))
296         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO))
297         $(call rmq,$(SODESTDIR)$(LP)ec$(SO))
298         $(call rmq,$(SODESTDIR)$(LP)EDA$(SO))
299         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO))
300 ifdef EDASQLiteCipher
301         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
302 endif
303 ifdef LINUX_TARGET
304         $(call rmq,$(SODESTDIR)$(LP)ecere$(SO).0)
305         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
306         $(call rmq,$(SODESTDIR)$(LP)ec$(SO).0)
307         $(call rmq,$(SODESTDIR)$(LP)EDA$(SO).0)
308         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO).0)
309 ifdef EDASQLiteCipher
310         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
311 endif
312         $(call rmq,$(SODESTDIR)$(LP)ecere$(SOV))
313         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SOV))
314         $(call rmq,$(SODESTDIR)$(LP)ec$(SOV))
315         $(call rmq,$(SODESTDIR)$(LP)EDA$(SOV))
316         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SOV))
317 ifdef EDASQLiteCipher
318         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
319 endif
320 endif   
321         $(call rmq,$(OBJBINDIR)ear$(E))
322         $(call rmq,$(OBJBINDIR)ecc$(E))
323         $(call rmq,$(OBJBINDIR)ecp$(E))
324         $(call rmq,$(OBJBINDIR)ecs$(E))
325         $(call rmq,$(OBJBINDIR)epj2make$(E))
326         $(call rmq,$(OBJBINDIR)ide$(E))
327         $(call rmq,$(OBJBINDIR)documentor$(E))
328 ifdef EDASQLiteCipher
329         $(call rmq,$(OBJBINDIR)CodeGuard$(E))
330 endif
331
332 clean: emptyoutput
333         cd deps && $(MAKE) clean
334         cd ecere && $(MAKE) clean
335         cd compiler && $(MAKE) clean
336         cd ear && $(MAKE) clean
337         cd epj2make && $(MAKE) clean
338         cd ide && $(MAKE) clean
339         cd documentor && $(MAKE) clean
340 ifdef CodeGuard
341         cd codeGuard && $(MAKE) clean
342 endif
343         cd eda && $(MAKE) clean
344         @$(call echo,Done.)
345
346 realclean:
347         cd deps && $(MAKE) realclean
348         cd ecere && $(MAKE) realclean
349         cd compiler && $(MAKE) realclean
350         cd ear && $(MAKE) realclean
351         cd epj2make && $(MAKE) realclean
352         cd ide && $(MAKE) realclean
353         cd documentor && $(MAKE) realclean
354 ifdef CodeGuard
355         cd codeGuard && $(MAKE) realclean
356 endif
357         cd eda && $(MAKE) realclean
358         $(call rmrq,obj/$(PLATFORM)/)
359         @$(call echo,Done.)
360
361 distclean:
362         cd deps && $(MAKE) distclean
363         cd ecere && $(MAKE) distclean
364         cd compiler && $(MAKE) distclean
365         cd ear && $(MAKE) distclean
366         cd epj2make && $(MAKE) distclean
367         cd ide && $(MAKE) distclean
368         cd documentor && $(MAKE) distclean
369 ifdef CodeGuard
370         cd codeGuard && $(MAKE) distclean
371 endif
372         cd eda && $(MAKE) distclean
373         $(call rmrq,obj/)
374         @$(call echo,Done.)
375
376 DOC = doc/ecere.eCdoc doc/ecereCOM.eCdoc doc/EDA.eCdoc
377
378 BINARIES = \
379         ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV) \
380         ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV) \
381         ecere/obj/vanilla.$(PLATFORM)/libecereVanilla$(A) \
382         compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV) \
383         compiler/ecp/obj/release.$(PLATFORM)/ecp$(E) \
384         compiler/ecc/obj/release.$(PLATFORM)/ecc$(E) \
385         compiler/ecs/obj/release.$(PLATFORM)/ecs$(E) \
386         ear/cmd/obj/release.$(PLATFORM)/ear$(E) \
387         epj2make/obj/release.$(PLATFORM)/epj2make$(E) \
388         documentor/obj/release.$(PLATFORM)/documentor$(E) \
389         ide/obj/release.$(PLATFORM)/ide$(E) \
390         eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV) \
391         eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SOV)
392
393 ifdef CodeGuard
394 BINARIES += codeGuard/obj/release.$(PLATFORM)/CodeGuard$(E)
395 endif
396
397 ifdef EDASQLiteCipher
398 BINARIES += eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SOV)
399 endif
400
401 # Making sure everything is in $(OBJBINDIR) and $(OBJLIBDIR)
402 # Shared Libraries (in $(OBJBINDIR) on Windows and $(OBJLIBDIR) otherwise)
403 # Symlinks for libs on Linux
404 # Binaries (always in $(OBJBINDIR)) and Static Libraries (always in $(OBJLIBDIR))
405 prepinstall: $(DOC) $(BINARIES) outputdirs
406
407 ifdef WINDOWS_TARGET
408         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SO),$(OBJBINDIR))
409         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
410         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SO),$(OBJBINDIR))
411         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
412         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
413 ifdef EDASQLiteCipher
414         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
415 endif
416 endif
417
418 ifdef LINUX_TARGET
419         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV),$(OBJLIBDIR))
420         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
421         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV),$(OBJLIBDIR))
422         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
423         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
424 ifdef EDASQLiteCipher
425         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
426 endif
427         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
428         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
429         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
430         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
431         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO).0
432 ifdef EDASQLiteCipher
433         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
434 endif
435         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
436         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
437         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
438         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
439         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO)
440 ifdef EDASQLiteCipher
441         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO)
442 endif
443 endif
444
445 ifndef WINDOWS_TARGET
446 ifndef LINUX_TARGET
447         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SO),$(OBJLIBDIR))
448         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
449         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SO),$(OBJLIBDIR))
450         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
451         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
452 ifdef EDASQLiteCipher
453         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
454 endif
455 endif
456 endif
457
458         $(call cpq,ide/obj/release.$(PLATFORM)/ide$(E),$(OBJBINDIR))
459         $(call cpq,ear/cmd/obj/release.$(PLATFORM)/ear$(E),$(OBJBINDIR))
460         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)/ecc$(E),$(OBJBINDIR))
461         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)/ecp$(E),$(OBJBINDIR))
462         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)/ecs$(E),$(OBJBINDIR))
463         $(call cpq,epj2make/obj/release.$(PLATFORM)/epj2make$(E),$(OBJBINDIR))
464         $(call cpq,documentor/obj/release.$(PLATFORM)/documentor$(E),$(OBJBINDIR))
465 ifdef CodeGuard
466         $(call cpq,codeGuard/obj/release.$(PLATFORM)/CodeGuard$(E),$(OBJBINDIR))
467 endif
468         $(call cpq,ecere/obj/vanilla.$(PLATFORM)/libecereVanilla$(A),$(OBJLIBDIR))
469
470 #TODO: Samples?
471 install: prepinstall actualinstall
472         @$(call echo,The Ecere SDK has been installed.)
473
474 copyonlyinstall: actualinstall
475         @$(call echo,The Ecere SDK has been installed. copyonlyinstall.)
476
477 actualinstall:
478 ifdef WINDOWS_TARGET
479         $(call mkdirq,"$(BINDIR)/")
480         $(call mkdirq,"$(DESTSLIBDIR)/")
481         $(call mkdirq,"$(DOCDIR)/")
482         $(call cpq,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
483         $(call cpq,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
484         $(call cpq,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
485         $(call cpq,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
486         $(call cpq,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
487 ifdef EDASQLiteCipher
488         $(call cpq,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
489 endif
490         $(call cpq,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
491         $(call cpq,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
492         $(call cpq,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
493         $(call cpq,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
494         $(call cpq,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
495         $(call cpq,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
496         $(call cpq,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
497 ifdef CodeGuard
498         $(call cpq,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
499 endif
500         $(call cpq,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
501         $(call cpq,doc/tao.pdf,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf") || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
502         $(call cpq,doc/ecere.eCdoc,"$(DOCDIR)/")
503         $(call cpq,doc/ecereCOM.eCdoc,"$(DOCDIR)/")
504         $(call cpq,doc/EDA.eCdoc,"$(DOCDIR)/")
505 endif
506
507 ifdef OSX_TARGET
508         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
509         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
510         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
511         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
512         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
513 ifdef EDASQLiteCipher
514         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
515 endif
516         install $(OBJBINDIR)ide$(E) $(BINDIR)/
517         install $(OBJBINDIR)ear$(E) $(BINDIR)/
518         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
519         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
520         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
521         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
522         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
523 ifdef CodeGuard
524         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
525 endif
526         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
527         install -d $(DOCDIR)/
528         install doc/tao.pdf $(DOCDIR)/"Ecere Tao of Programming [work in progress].pdf" >/dev/null 2>&1 || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
529         install doc/ecere.eCdoc $(DOCDIR)/
530         install doc/ecereCOM.eCdoc $(DOCDIR)/
531         install doc/EDA.eCdoc $(DOCDIR)/
532         mkdir -p $(SAMPLESDIR)
533         cp -pRf samples/* $(SAMPLESDIR)
534         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
535         mkdir -p $(EXTRASDIR)
536         cp -pRf extras/* $(EXTRASDIR)
537         chmod 777 $(EXTRASDIR)/audio
538 endif
539
540 ifndef OSX_TARGET
541 ifndef WINDOWS_TARGET
542 ifdef LINUX_TARGET
543         install -D $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
544         install -D $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
545         install -D $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/$(LP)ec$(SOV)
546         install -D $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SOV)
547         install -D $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SOV)
548 ifdef EDASQLiteCipher
549         install -D $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)
550 endif
551         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
552         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
553         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/$(LP)ec$(SO).0
554         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SO).0
555         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SO).0
556 ifdef EDASQLiteCipher
557         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0
558 endif
559         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
560         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
561         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/$(LP)ec$(SO)
562         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SO)
563         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
564         mkdir -p $(DESTLIBDIR)/ec
565         ln -sf $(PREFIXLIBDIR)/$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
566         ln -sf $(PREFIXLIBDIR)/$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
567         ln -sf $(PREFIXLIBDIR)/$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
568         ln -sf $(PREFIXLIBDIR)/$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
569         ln -sf $(PREFIXLIBDIR)/$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
570 ifdef EDASQLiteCipher
571         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
572 endif
573         install -D -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
574         install -D -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
575 else
576         install -D $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
577         install -D $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
578         install -D $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/$(LP)ec$(SO)
579         install -D $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/$(LP)EDA$(SO)
580         install -D $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
581 ifdef EDASQLiteCipher
582         install -D $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
583 endif
584 endif
585         install -D $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
586         install -D $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
587         install -D $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
588         install -D $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
589         install -D $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
590         install -D $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
591         install -D $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
592 ifdef CodeGuard
593         install -D $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
594 endif
595         install -D $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
596         install -D -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
597         install -D -m 644 doc/tao.pdf $(DOCDIR)/"Ecere Tao of Programming [work in progress].pdf" >/dev/null 2>&1 || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
598         install -D -m 644 doc/ecere.eCdoc $(DOCDIR)/ecere.eCdoc
599         install -D -m 644 doc/ecereCOM.eCdoc $(DOCDIR)/ecereCOM.eCdoc
600         install -D -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
601         mkdir -p $(MANDIR)/man1
602         cp -pRf share/man/man1/* $(MANDIR)/man1
603         mkdir -p $(SAMPLESDIR)
604         cp -pRf samples/* $(SAMPLESDIR)
605         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
606         mkdir -p $(EXTRASDIR)
607         cp -dpRf extras/* $(EXTRASDIR)
608         chmod 777 $(EXTRASDIR)/audio
609 ifdef DEBIAN_PACKAGE
610         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
611         install -D -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
612         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
613         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
614         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
615         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
616         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
617         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
618         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
619         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
620         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
621         mkdir -p $(DESTDIR)$(prefix)/share/doc/libec0
622         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libec0/
623         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
624         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
625         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
626         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
627         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
628         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
629 endif
630 endif
631 endif
632
633 uninstall:
634         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
635         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
636         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO)")
637         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
638         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
639 ifdef EDASQLiteCipher
640         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
641 endif
642         $(call rmq,"$(BINDIR)/ide$(E)")
643         $(call rmq,"$(BINDIR)/ear$(E)")
644         $(call rmq,"$(BINDIR)/ecc$(E)")
645         $(call rmq,"$(BINDIR)/ecp$(E)")
646         $(call rmq,"$(BINDIR)/ecs$(E)")
647         $(call rmq,"$(BINDIR)/epj2make$(E)")
648         $(call rmq,"$(BINDIR)/documentor$(E)")
649 ifdef CodeGuard
650         $(call rmq,"$(BINDIR)/CodeGuard$(E)")
651 endif
652         $(call rmq,"$(DESTSLIBDIR)/libecereVanilla$(A)")
653         $(call rmq,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
654         $(call rmq,"$(DOCDIR)/ecere.eCdoc")
655         $(call rmq,"$(DOCDIR)/ecereCOM.eCdoc")
656         $(call rmq,"$(DOCDIR)/EDA.eCdoc")
657 ifdef LINUX_TARGET
658         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
659         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
660         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO).0")
661         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO).0")
662         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO).0")
663 ifdef EDASQLiteCipher
664         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0")
665 endif
666         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
667         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
668         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SOV)")
669         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SOV)")
670         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SOV)")
671 ifdef EDASQLiteCipher
672         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)")
673 endif
674         $(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
675         $(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
676 endif
677         $(call rmdirq,"$(BINDIR)/")
678         $(call rmdirq,"$(DESTLIBDIR)/")
679         $(call rmdirq,"$(DESTSLIBDIR)/")
680         $(call rmdirq,"$(DOCDIR)/")
681 ifdef WINDOWS_TARGET
682         $(call rmdirq,"$(DESTDIR)/")
683 endif
684         @$(call echo,The Ecere SDK has been uninstalled.)
685
686 troubleshoot:
687         @$(call echo,Printing values of some variables.)
688         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
689         @$(call echo,TARGET_PLATFORM=$(HOST_PLATFORM))
690         @$(call echo,PLATFORM=$(PLATFORM))
691         @$(call echo,LINUX_HOST=$(LINUX_HOST))
692         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
693         @$(call echo,OSX_HOST=$(OSX_HOST))
694         @$(call echo,OSX_TARGET=$(OSX_TARGET))
695         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
696         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
697         @$(call echo,BSD_HOST=$(BSD_HOST))
698         @$(call echo,BSD_TARGET=$(BSD_TARGET))
699         @$(call echo,CCACHE=$(CCACHE))
700         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
701         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
702         @$(call echo,DISTCC=$(DISTCC))
703         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
704         @$(call echo,CC=$(CC))
705         @$(call echo,CPP=$(CPP))
706         @$(call echo,ECP=$(ECP))
707         @$(call echo,ECC=$(ECC))
708         @$(call echo,ECS=$(ECS))
709         @$(call echo,EAR=$(EAR))
710         @$(call echo,AS=$(AS))
711         @$(call echo,LD=$(LD))
712         @$(call echo,AR=$(AR))
713         @$(call echo,STRIP=$(STRIP))
714         @$(call echo,UPX=$(UPX))