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