Makefile: Added missing EcereAudio clean rules
[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 fixprecompile cleantarget pots installer regenbootstrap updatebootstrap update_ecere update_libec update_ecp update_ecc update_ecs ecereaudio
2 ifneq "$V" "1"
3 .SILENT:
4 endif
5
6 include crossplatform.mk
7 include default.cf
8
9 ifdef BSD_HOST
10 INSTALL_FLAGS :=
11 CPFLAGS := -pRf
12 else
13 INSTALL_FLAGS := -D
14 CPFLAGS := -dpRf
15 endif
16
17 XBOOT := $(if $(CROSS_TARGET),GCC_PREFIX= TARGET_PLATFORM=$(HOST_PLATFORM) PLATFORM=$(HOST_PLATFORM),)
18
19 LIBVER := .0.44
20
21 ifneq "$ECERE_AUDIO" "n"
22 ifdef WINDOWS_TARGET
23 ECERE_AUDIO := y
24 endif
25
26 ifdef LINUX_TARGET
27 ECERE_AUDIO := y
28 endif
29 endif
30
31 ifdef WINDOWS_HOST
32 HOST_SOV := $(HOST_SO)
33 else
34 HOST_SOV := $(HOST_SO)$(LIBVER)
35 endif
36
37 ifdef WINDOWS_TARGET
38
39 SOV := $(SO)
40
41 ifndef DESTDIR
42
43 ifeq "$(TARGET_ARCH)" "x86_64"
44    ifneq "$(wildcard $(SystemDrive)/Program\ Files )" ""
45       export DESTDIR=$(SystemDrive)/Program Files/Ecere SDK
46    else
47       export DESTDIR=$(SystemDrive)/Ecere SDK
48    endif
49 else
50    ifdef ProgramFiles(x86)
51       export DESTDIR=${ProgramFiles(x86)}/Ecere SDK
52    else
53       ifdef ProgramFiles
54          export DESTDIR=$(ProgramFiles)/Ecere SDK
55       else
56          export DESTDIR=$(SystemDrive)/Ecere SDK
57       endif
58    endif
59 endif
60
61 endif # DESTDIR
62
63 export prefix=
64
65 ifndef DOCDIR
66 export DOCDIR=$(DESTDIR)$(prefix)/doc
67 endif
68
69 ifndef BINDIR
70 export BINDIR=$(DESTDIR)$(prefix)/bin
71 endif
72
73 ifndef LIBDIR
74 export LIBDIR=$(BINDIR)
75 endif
76 export DESTLIBDIR=$(LIBDIR)
77
78 ifndef SLIBDIR
79 export SLIBDIR=$(DESTDIR)$(prefix)/lib
80 endif
81 export DESTSLIBDIR=$(SLIBDIR)
82
83 ifndef SAMPLESDIR
84 export SAMPLESDIR=$(DESTDIR)$(prefix)/samples
85 endif
86
87 ifndef EXTRASDIR
88 export EXTRASDIR=$(DESTDIR)$(prefix)/extras
89 endif
90
91
92 else # WINDOWS_TARGET
93
94 ifdef OSX_TARGET
95 # TODO: OSX soname
96 SOV := $(SO)
97 else
98 SOV := $(SO)$(LIBVER)
99 endif
100
101 ifndef DESTDIR
102 export DESTDIR=
103 endif
104
105 ifndef prefix
106 export prefix=/usr
107 endif
108
109 ifndef DOCDIR
110 export DOCDIR=$(DESTDIR)$(prefix)/share/ecere/doc
111 endif
112
113 ifndef MANDIR
114 export MANDIR=$(DESTDIR)$(prefix)/share/man/
115 endif
116
117 ifndef BINDIR
118 export BINDIR=$(DESTDIR)$(prefix)/bin
119 endif
120
121 ifdef LIBDIR
122  export PREFIXLIBDIR=$(LIBDIR)
123 else
124  export PREFIXLIBDIR=$(prefix)/lib/$(TARGET_ARCH)
125
126  ifeq "$(wildcard $(prefix)/lib/$(TARGET_ARCH) )" ""
127   export PREFIXLIBDIR=$(prefix)/lib
128
129   ifeq "$(TARGET_ARCH)" "i386-linux-gnu"
130    ifneq "$(wildcard $(prefix)/lib32 )" ""
131     export PREFIXLIBDIR=$(prefix)/lib32
132    endif
133   endif
134
135  endif
136 endif
137
138 export CPPFLAGS
139 CPPFLAGS += -DDEB_HOST_MULTIARCH=\"$(call escspace,$(PREFIXLIBDIR))\"
140
141 DESTLIBDIR := $(DESTDIR)$(PREFIXLIBDIR)
142 ifdef SLIBDIR
143 DESTSLIBDIR := $(DESTDIR)$(SLIBDIR)
144 else
145 DESTSLIBDIR := $(DESTLIBDIR)
146 endif
147
148 ifndef SAMPLESDIR
149 export SAMPLESDIR=$(DESTDIR)$(prefix)/share/ecere/samples
150 endif
151
152 ifndef EXTRASDIR
153 export EXTRASDIR=$(DESTDIR)$(prefix)/share/ecere/extras
154 endif
155
156
157 endif
158
159 OBJDIR := obj$(OBJALT)/
160 OBJBINDIR := $(OBJDIR)$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/bin/
161 OBJLIBDIR := $(OBJDIR)$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/lib/
162 XOBJDIR := obj$(OBJALT)/
163 XOBJBINDIR := $(OBJDIR)$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/bin/
164 XOBJLIBDIR := $(OBJDIR)$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/lib/
165
166 all: prepbinaries ide epj2make documentor eda codeguard ecereaudio
167         @$(call echo,The Ecere SDK is fully built.)
168
169 outputdirs:
170         $(if $(wildcard $(OBJDIR)),,$(call mkdirq,$(OBJDIR)))
171         $(if $(wildcard $(OBJBINDIR)),,$(call mkdirq,$(OBJBINDIR)))
172         $(if $(wildcard $(OBJLIBDIR)),,$(call mkdirq,$(OBJLIBDIR)))
173 ifdef CROSS_TARGET
174         $(if $(wildcard $(XOBJDIR)),,$(call mkdirq,$(XOBJDIR)))
175         $(if $(wildcard $(XOBJBINDIR)),,$(call mkdirq,$(XOBJBINDIR)))
176         $(if $(wildcard $(XOBJLIBDIR)),,$(call mkdirq,$(XOBJLIBDIR)))
177 endif
178
179 bootstrap: outputdirs
180         cd compiler && $(MAKE) $(XBOOT) bootstrap
181
182 deps:
183 ifdef CROSS_TARGET
184 ifndef LINUX_HOST
185         @$(call echo,Building dependencies (host)...)
186         cd deps && $(MAKE) $(XBOOT)
187 endif
188 endif
189 ifndef LINUX_TARGET
190         @$(call echo,Building dependencies...)
191         cd deps && $(MAKE)
192 endif
193
194 ecere: bootstrap deps
195 ifdef CROSS_TARGET
196         @$(call echo,Building 2nd stage ecere (host)...)
197 else
198         @$(call echo,Building 2nd stage ecere...)
199 endif
200         cd ecere && $(MAKE) nores $(XBOOT)
201         cd ear && $(MAKE) nores $(XBOOT)
202         cd ecere && $(MAKE) cleaneceretarget
203 ifdef CROSS_TARGET
204         @$(call echo,Building 2nd stage ecere...)
205 endif
206         cd ecere && $(MAKE)
207
208 ecerecom: bootstrap
209 ifdef CROSS_TARGET
210         @$(call echo,Building eC Core Runtime (host)...)
211         cd ecere && $(MAKE) -f Makefile.ecereCOM $(XBOOT)
212 endif
213         @$(call echo,Building eC Core Runtime...)
214         cd ecere && $(MAKE) -f Makefile.ecereCOM
215
216 ecerevanilla: bootstrap
217         @$(call echo,Building Vanilla Ecere...)
218         cd ecere && $(MAKE) -f Makefile.vanilla
219
220 ear: ecere ecerevanilla
221         @$(call echo,Building ear...)
222         cd ear && cd cmd && $(MAKE) cleantarget
223         cd ear && $(MAKE)
224
225 fixprecompile:
226         cd compiler && $(MAKE) fixprecompile
227
228 compiler: ecere ear
229 ifdef CROSS_TARGET
230         @$(call echo,Building 2nd stage compiler (host))
231         cd compiler && $(MAKE) $(XBOOT)
232 endif
233         @$(call echo,Building 2nd stage compiler)
234         cd compiler && $(MAKE)
235
236 prepbinaries: compiler ecerecom
237         @$(call echo,Enabling 2nd stage binaries...)
238 ifdef WINDOWS_TARGET
239         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJBINDIR))
240         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJBINDIR))
241         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJBINDIR))
242 endif
243 ifdef LINUX_TARGET
244         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
245         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
246         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
247         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
248         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
249         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
250         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
251         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
252         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
253 endif
254 ifndef WINDOWS_TARGET
255 ifndef LINUX_TARGET
256         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
257         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
258         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
259 endif
260 endif
261         $(call cpq,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
262         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
263         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
264         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
265
266 ifdef CROSS_TARGET
267
268 ifdef WINDOWS_HOST
269         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJBINDIR))
270         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJBINDIR))
271         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJBINDIR))
272 endif
273 ifdef WINDOWS_HOST
274         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJLIBDIR))
275         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJLIBDIR))
276         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJLIBDIR))
277         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO).0
278         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO).0
279         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO).0
280         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO)
281         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO)
282         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO)
283 endif
284 ifndef WINDOWS_HOST
285 ifndef LINUX_HOST
286         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SO),$(XOBJLIBDIR))
287         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SO),$(XOBJLIBDIR))
288         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SO),$(XOBJLIBDIR))
289 endif
290 endif
291         $(call cpq,ear/cmd/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(HOST_E),$(XOBJBINDIR))
292         $(call cpq,compiler/ecc/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(HOST_E),$(XOBJBINDIR))
293         $(call cpq,compiler/ecp/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(HOST_E),$(XOBJBINDIR))
294         $(call cpq,compiler/ecs/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(HOST_E),$(XOBJBINDIR))
295
296 endif
297
298 epj2make: prepbinaries
299         @$(call echo,Building epj2make...)
300         cd epj2make && $(MAKE)
301
302 ecereaudio: prepbinaries
303 ifdef ECERE_AUDIO
304         @$(call echo,Building EcereAudio...)
305         cd extras/audio && $(MAKE)
306 endif
307
308 ide: prepbinaries
309         @$(call echo,Building IDE...)
310         cd ide && $(MAKE)
311
312 documentor: prepbinaries
313         @$(call echo,Building Documentor...)
314         cd documentor && $(MAKE)
315
316 codeguard: prepcodeguard
317 ifdef CodeGuard
318         @$(call echo,Building CodeGuard client...)
319         cd codeGuard && $(MAKE)
320 endif
321
322 prepcodeguard: eda
323 ifdef CodeGuard
324 ifdef WINDOWS_TARGET
325         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
326 endif
327
328 ifdef LINUX_TARGET
329         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
330         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
331         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
332 endif
333
334 ifndef WINDOWS_TARGET
335 ifndef LINUX_TARGET
336         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
337 endif
338 endif
339 endif
340
341 eda: prepbinaries
342 ifdef CROSS_TARGET
343         @$(call echo,Building EDA (host))
344         cd eda && $(MAKE) $(XBOOT)
345 endif
346         @$(call echo,Building EDA...)
347         cd eda && $(MAKE)
348
349 emptyoutput: outputdirs
350         $(call rmq,$(OBJLIBDIR)libecereVanilla$(A))
351         $(call rmq,$(SODESTDIR)$(LP)ecere$(SO))
352         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO))
353         $(call rmq,$(SODESTDIR)$(LP)ec$(SO))
354         $(call rmq,$(SODESTDIR)$(LP)EDA$(SO))
355         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO))
356 ifdef EDASQLiteCipher
357         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
358 endif
359 ifdef ECERE_AUDIO
360         $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SO))
361 endif
362 ifdef LINUX_TARGET
363         $(call rmq,$(SODESTDIR)$(LP)ecere$(SO).0)
364         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
365         $(call rmq,$(SODESTDIR)$(LP)ec$(SO).0)
366         $(call rmq,$(SODESTDIR)$(LP)EDA$(SO).0)
367         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO).0)
368 ifdef EDASQLiteCipher
369         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
370 endif
371 ifdef ECERE_AUDIO
372         $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SO).0)
373 endif
374         $(call rmq,$(SODESTDIR)$(LP)ecere$(SOV))
375         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SOV))
376         $(call rmq,$(SODESTDIR)$(LP)ec$(SOV))
377         $(call rmq,$(SODESTDIR)$(LP)EDA$(SOV))
378         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SOV))
379 ifdef EDASQLiteCipher
380         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
381 endif
382 ifdef ECERE_AUDIO
383         $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SOV))
384 endif
385 endif   
386         $(call rmq,$(OBJBINDIR)ear$(E))
387         $(call rmq,$(OBJBINDIR)ecc$(E))
388         $(call rmq,$(OBJBINDIR)ecp$(E))
389         $(call rmq,$(OBJBINDIR)ecs$(E))
390         $(call rmq,$(OBJBINDIR)epj2make$(E))
391         $(call rmq,$(OBJBINDIR)ide$(E))
392         $(call rmq,$(OBJBINDIR)documentor$(E))
393 ifdef CodeGuard
394         $(call rmq,$(OBJBINDIR)CodeGuard$(E))
395 endif
396
397 cleantarget:
398         cd compiler && $(MAKE) cleantarget
399         cd documentor && $(MAKE) cleantarget
400         cd ear && $(MAKE) cleantarget
401         cd ecere && $(MAKE) cleantarget
402         cd eda && $(MAKE) cleantarget
403         cd epj2make && $(MAKE) cleantarget
404         cd ide && $(MAKE) cleantarget
405         cd installer && $(MAKE) cleantarget
406 ifdef ECERE_AUDIO
407         cd extras/EcereAudio && $(MAKE) cleantarget
408 endif
409
410 pots: cleantarget
411         $(MAKE) OUTPUT_POT=1
412         cd installer && $(MAKE) OUTPUT_POT=1 pots
413
414 ifdef WINDOWS_TARGET
415 installer:
416         $(MAKE) prepinstall ARCH=
417         $(MAKE) prepinstall ARCH=x32
418         @$(call echo,Building Ecere runtime for installer...)
419         cd ecere && @$(MAKE) -f Makefile.installer ARCH=x32
420         @$(call echo,Building Installer for Windows...)
421         cd installer && @$(MAKE) ARCH=x32
422         @$(call echo,The Ecere SDK Windows Installer is fully built.)
423 endif
424
425 clean: emptyoutput
426 ifndef LINUX_TARGET
427         cd deps && $(MAKE) clean
428 endif
429         cd ecere && $(MAKE) clean
430         cd compiler && $(MAKE) clean
431         cd ear && $(MAKE) clean
432         cd epj2make && $(MAKE) clean
433         cd ide && $(MAKE) clean
434         cd documentor && $(MAKE) clean
435 ifdef ECERE_AUDIO
436         cd extras/EcereAudio && $(MAKE) clean
437 endif
438 ifdef CodeGuard
439         cd codeGuard && $(MAKE) clean
440 endif
441         cd eda && $(MAKE) clean
442         @$(call echo,Done.)
443
444 realclean: outputdirs
445 ifndef LINUX_TARGET
446         cd deps && $(MAKE) realclean
447 endif
448         cd ecere && $(MAKE) realclean
449         cd compiler && $(MAKE) realclean
450         cd ear && $(MAKE) realclean
451         cd epj2make && $(MAKE) realclean
452         cd ide && $(MAKE) realclean
453         cd documentor && $(MAKE) realclean
454 ifdef ECERE_AUDIO
455         cd extras/EcereAudio && $(MAKE) realclan
456 endif
457 ifdef CodeGuard
458         cd codeGuard && $(MAKE) realclean
459 endif
460         cd eda && $(MAKE) realclean
461         $(call rmrq,obj/$(PLATFORM)/)
462         @$(call echo,Done.)
463
464 distclean: outputdirs
465 ifndef LINUX_TARGET
466         cd deps && $(MAKE) distclean
467 endif
468         cd ecere && $(MAKE) distclean
469         cd compiler && $(MAKE) distclean
470         cd ear && $(MAKE) distclean
471         cd epj2make && $(MAKE) distclean
472         cd ide && $(MAKE) distclean
473         cd documentor && $(MAKE) distclean
474 ifdef ECERE_AUDIO
475         cd extras/EcereAudio && $(MAKE) distclean
476 endif
477 ifdef CodeGuard
478         cd codeGuard && $(MAKE) distclean
479 endif
480         cd eda && $(MAKE) distclean
481         $(call rmrq,obj/)
482         @$(call echo,Done.)
483
484 DOC = doc/ecere.eCdoc doc/ecereCOM.eCdoc doc/EDA.eCdoc
485
486 BINARIES = \
487         ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV) \
488         ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV) \
489         ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A) \
490         compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV) \
491         compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E) \
492         compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E) \
493         compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E) \
494         ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E) \
495         epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E) \
496         documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E) \
497         ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E) \
498         eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV) \
499         eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV)
500
501 ifdef ECERE_AUDIO
502 BINARIES += extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV)
503 endif
504
505 ifdef CodeGuard
506 BINARIES += codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E)
507 endif
508
509 ifdef EDASQLiteCipher
510 BINARIES += eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV)
511 endif
512
513 # Making sure everything is in $(OBJBINDIR) and $(OBJLIBDIR)
514 # Shared Libraries (in $(OBJBINDIR) on Windows and $(OBJLIBDIR) otherwise)
515 # Symlinks for libs on Linux
516 # Binaries (always in $(OBJBINDIR)) and Static Libraries (always in $(OBJLIBDIR))
517 prepinstall: $(DOC) $(BINARIES) outputdirs
518
519 ifdef WINDOWS_TARGET
520         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
521         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
522         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
523         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
524         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
525 ifdef ECERE_AUDIO
526         $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
527 endif
528 ifdef EDASQLiteCipher
529         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
530 endif
531 endif
532
533 ifdef LINUX_TARGET
534         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
535         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
536         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
537         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
538         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
539 ifdef ECERE_AUDIO
540         $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
541 endif
542 ifdef EDASQLiteCipher
543         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
544 endif
545         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
546         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
547         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
548         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
549         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO).0
550 ifdef EDASQLiteCipher
551         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
552 endif
553 ifdef ECERE_AUDIO
554         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO).0
555 endif
556
557         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
558         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
559         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
560         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
561         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO)
562 ifdef EDASQLiteCipher
563         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO)
564 endif
565         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO)
566 endif
567
568 ifndef WINDOWS_TARGET
569 ifndef LINUX_TARGET
570         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
571         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
572         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
573         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
574         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
575 ifdef ECERE_AUDIO
576         $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
577 endif
578 ifdef EDASQLiteCipher
579         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
580 endif
581 endif
582 endif
583
584         $(call cpq,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E),$(OBJBINDIR))
585         $(call cpq,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
586         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
587         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
588         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
589         $(call cpq,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
590         $(call cpq,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
591 ifdef CodeGuard
592         $(call cpq,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
593 endif
594         $(call cpq,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
595
596 #TODO: Samples?
597 install: prepinstall actualinstall
598         @$(call echo,The Ecere SDK has been installed.)
599
600 copyonlyinstall: actualinstall
601         @$(call echo,The Ecere SDK has been installed. copyonlyinstall.)
602
603 actualinstall:
604 ifdef WINDOWS_TARGET
605         $(call mkdirq,"$(BINDIR)/")
606         $(call mkdirq,"$(DESTSLIBDIR)/")
607         $(call mkdirq,"$(DOCDIR)/")
608         $(call cpq,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
609         $(call cpq,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
610         $(call cpq,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
611         $(call cpq,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
612         $(call cpq,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
613 ifdef EDASQLiteCipher
614         $(call cpq,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
615 endif
616 ifdef ECERE_AUDIO
617         $(call cpq,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
618 endif
619         $(call cpq,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
620         $(call cpq,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
621         $(call cpq,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
622         $(call cpq,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
623         $(call cpq,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
624         $(call cpq,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
625         $(call cpq,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
626 ifdef CodeGuard
627         $(call cpq,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
628 endif
629         $(call cpq,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
630         $(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"
631         $(call cpq,doc/ecere.eCdoc,"$(DOCDIR)/")
632         $(call cpq,doc/ecereCOM.eCdoc,"$(DOCDIR)/")
633         $(call cpq,doc/EDA.eCdoc,"$(DOCDIR)/")
634 endif
635
636 ifdef OSX_TARGET
637         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
638         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
639         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
640         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
641         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
642 ifdef EDASQLiteCipher
643         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
644 endif
645 ifdef ECERE_AUDIO
646         install $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
647 endif
648         install $(OBJBINDIR)ide$(E) $(BINDIR)/
649         install $(OBJBINDIR)ear$(E) $(BINDIR)/
650         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
651         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
652         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
653         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
654         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
655 ifdef CodeGuard
656         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
657 endif
658         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
659         install -d $(DOCDIR)/
660         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"
661         install doc/ecere.eCdoc $(DOCDIR)/
662         install doc/ecereCOM.eCdoc $(DOCDIR)/
663         install doc/EDA.eCdoc $(DOCDIR)/
664         mkdir -p $(MANDIR)/man1
665         cp -pRf share/man/man1/* $(MANDIR)/man1
666         mkdir -p $(SAMPLESDIR)
667         cp -pRf samples/* $(SAMPLESDIR)
668         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
669         mkdir -p $(EXTRASDIR)
670         cp -pRf extras/* $(EXTRASDIR)
671         chmod 777 $(EXTRASDIR)/audio
672 endif
673
674 ifndef OSX_TARGET
675 ifndef WINDOWS_TARGET
676 ifdef LINUX_TARGET
677         mkdir -p $(DESTLIBDIR)/ec
678         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
679         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
680         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SOV)
681         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SOV)
682         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)
683 ifdef EDASQLiteCipher
684         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
685 endif
686 ifdef ECERE_AUDIO
687         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)
688 endif
689         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
690         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
691         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO).0
692         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO).0
693         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0
694 ifdef EDASQLiteCipher
695         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0
696 endif
697 ifdef ECERE_AUDIO
698         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO).0
699 endif
700         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
701         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
702         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
703         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
704         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
705         ln -sf ../$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
706         ln -sf ../$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
707 ifdef EDASQLiteCipher
708         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)
709 endif
710 ifdef ECERE_AUDIO
711         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)
712 endif
713 ifndef BSD_HOST
714         install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
715         install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
716 endif
717 else
718         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
719         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
720         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/$(LP)ec$(SO)
721         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/$(LP)EDA$(SO)
722         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
723 ifdef EDASQLiteCipher
724         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
725 endif
726 endif
727 ifdef ECERE_AUDIO
728         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/$(LP)EcereAudio$(SO)
729 endif
730         install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
731         install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
732         install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
733         install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
734         install $(INSTALL_FLAGS) $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
735         install $(INSTALL_FLAGS) $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
736         install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
737 ifdef CodeGuard
738         install $(INSTALL_FLAGS) $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
739 endif
740         install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
741 ifdef BSD_HOST
742         install $(INSTALL_FLAGS) -d $(DOCDIR)
743 endif
744         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
745         install $(INSTALL_FLAGS) -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"
746         install $(INSTALL_FLAGS) -m 644 doc/ecere.eCdoc $(DOCDIR)/ecere.eCdoc
747         install $(INSTALL_FLAGS) -m 644 doc/ecereCOM.eCdoc $(DOCDIR)/ecereCOM.eCdoc
748         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
749         mkdir -p $(MANDIR)/man1
750         cp -pRf share/man/man1/* $(MANDIR)/man1
751         mkdir -p $(SAMPLESDIR)
752         cp -pRf samples/* $(SAMPLESDIR)
753         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
754         mkdir -p $(EXTRASDIR)
755         cp $(CPFLAGS) extras/* $(EXTRASDIR)
756         chmod 777 $(EXTRASDIR)/audio
757 ifdef DEBIAN_PACKAGE
758         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
759         install $(INSTALL_FLAG) -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
760         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
761         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
762         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
763         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
764         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
765         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
766         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
767         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
768         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
769         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecc0
770         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecc0/
771         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
772         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
773         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
774         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
775         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
776         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
777         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecereaudio0
778         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecereaudio0/
779 endif
780 endif
781 endif
782
783 uninstall:
784         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
785         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
786         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO)")
787         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
788         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
789 ifdef EDASQLiteCipher
790         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
791 endif
792 ifdef ECERE_AUDIO
793         $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
794 endif
795         $(call rmq,"$(BINDIR)/ide$(E)")
796         $(call rmq,"$(BINDIR)/ear$(E)")
797         $(call rmq,"$(BINDIR)/ecc$(E)")
798         $(call rmq,"$(BINDIR)/ecp$(E)")
799         $(call rmq,"$(BINDIR)/ecs$(E)")
800         $(call rmq,"$(BINDIR)/epj2make$(E)")
801         $(call rmq,"$(BINDIR)/documentor$(E)")
802 ifdef CodeGuard
803         $(call rmq,"$(BINDIR)/CodeGuard$(E)")
804 endif
805         $(call rmq,"$(DESTSLIBDIR)/libecereVanilla$(A)")
806         $(call rmq,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
807         $(call rmq,"$(DOCDIR)/ecere.eCdoc")
808         $(call rmq,"$(DOCDIR)/ecereCOM.eCdoc")
809         $(call rmq,"$(DOCDIR)/EDA.eCdoc")
810 ifdef LINUX_TARGET
811         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
812         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
813         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO).0")
814         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO).0")
815         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO).0")
816 ifdef EDASQLiteCipher
817         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0")
818 endif
819         $(call rmq,"$(DESTLIBDIR)/$(LP)EcereaAudio$(SO).0")
820         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
821         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
822         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SOV)")
823         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SOV)")
824         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SOV)")
825 ifdef EDASQLiteCipher
826         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)")
827 endif
828 ifdef ECERE_AUDIO
829         $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SOV)")
830 endif
831         $(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
832         $(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
833 endif
834         $(call rmdirq,"$(BINDIR)/")
835         $(call rmdirq,"$(DESTLIBDIR)/")
836         $(call rmdirq,"$(DESTSLIBDIR)/")
837         $(call rmdirq,"$(DOCDIR)/")
838 ifdef WINDOWS_TARGET
839         $(call rmdirq,"$(DESTDIR)/")
840 endif
841         @$(call echo,The Ecere SDK has been uninstalled.)
842
843 regenbootstrap: update_ecere update_libec update_ecp update_ecc update_ecs
844         @echo Bootstrap regenerated.
845
846 updatebootstrap: regenbootstrap
847         @echo Copying files...
848         $(call cpq,ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecere/bootstrap)
849         $(call cpq,compiler/libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/libec/bootstrap)
850         $(call cpq,compiler/ecp/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecp/bootstrap)
851         $(call cpq,compiler/ecc/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecc/bootstrap)
852         $(call cpq,compiler/ecs/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecs/bootstrap)
853         @echo Bootstrap updated.
854
855 update_ecere:
856         @echo Regenerating ecere bootstrapper...
857         cd ecere && $(MAKE) -f Makefile.bootstrap clean
858         cd ecere && $(MAKE) -f Makefile.bootstrap
859
860 update_libec:
861         @echo Regenerating ec bootstrapper...
862         cd compiler/libec && $(MAKE) -f Makefile.bootstrap clean
863         cd compiler/libec && $(MAKE) -f Makefile.bootstrap
864
865 update_ecp:
866         @echo Regenerating ecp bootstrapper...
867         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap clean
868         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap
869
870 update_ecc:
871         @echo Regenerating ecc bootstrapper...
872         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap clean
873         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap
874
875 update_ecs:
876         @echo Regenerating ecs bootstrapper...
877         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap clean
878         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap
879
880 troubleshoot:
881         @$(call echo,Printing values of some variables.)
882         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
883         @$(call echo,TARGET_PLATFORM=$(TARGET_PLATFORM))
884         @$(call echo,PLATFORM=$(PLATFORM))
885         @$(call echo,LINUX_HOST=$(LINUX_HOST))
886         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
887         @$(call echo,OSX_HOST=$(OSX_HOST))
888         @$(call echo,OSX_TARGET=$(OSX_TARGET))
889         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
890         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
891         @$(call echo,BSD_HOST=$(BSD_HOST))
892         @$(call echo,BSD_TARGET=$(BSD_TARGET))
893         @$(call echo,CCACHE=$(CCACHE))
894         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
895         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
896         @$(call echo,DISTCC=$(DISTCC))
897         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
898         @$(call echo,CC=$(CC))
899         @$(call echo,CPP=$(CPP))
900         @$(call echo,ECP=$(ECP))
901         @$(call echo,ECC=$(ECC))
902         @$(call echo,ECS=$(ECS))
903         @$(call echo,EAR=$(EAR))
904         @$(call echo,AS=$(AS))
905         @$(call echo,LD=$(LD))
906         @$(call echo,AR=$(AR))
907         @$(call echo,STRIP=$(STRIP))
908         @$(call echo,UPX=$(UPX))
909         @$(call echo,TARGET_ARCH=$(TARGET_ARCH))
910         @$(call echo,DESTDIR=$(DESTDIR))
911         @$(call echo,PREFIXLIBDIR=$(PREFIXLIBDIR))
912         @$(call echo,ARCH=$(ARCH))
913         @$(call echo,ARCH_FLAGS=$(ARCH_FLAGS))
914         @$(call echo,GIT_REPOSITORY=$(GIT_REPOSITORY))
915         @$(call echo,DIR_VER=$(DIR_VER))
916         @$(call echo,REPOSITORY_VER=$(REPOSITORY_VER))
917         @$(call echo,CPPFLAGS=$(CPPFLAGS))