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