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