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