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