controls/TabControl: Modifications to solve Cartographer's styles editor issues
[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 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 endif
428
429 clean: emptyoutput
430 ifndef LINUX_TARGET
431         cd deps && $(MAKE) clean
432 endif
433         cd ecere && $(MAKE) clean
434         cd compiler && $(MAKE) clean
435         cd ear && $(MAKE) clean
436         cd epj2make && $(MAKE) clean
437         cd ide && $(MAKE) clean
438         cd documentor && $(MAKE) clean
439 ifneq "$(ECERE_AUDIO)" "n"
440         cd audio && $(MAKE) clean
441 endif
442 ifdef CodeGuard
443         cd codeGuard && $(MAKE) clean
444 endif
445         cd eda && $(MAKE) clean
446         @$(call echo,Done.)
447
448 realclean: outputdirs
449 ifndef LINUX_TARGET
450         cd deps && $(MAKE) realclean
451 endif
452         cd ecere && $(MAKE) realclean
453         cd compiler && $(MAKE) realclean
454         cd ear && $(MAKE) realclean
455         cd epj2make && $(MAKE) realclean
456         cd ide && $(MAKE) realclean
457         cd documentor && $(MAKE) realclean
458 ifneq "$(ECERE_AUDIO)" "n"
459         cd audio && $(MAKE) realclan
460 endif
461 ifdef CodeGuard
462         cd codeGuard && $(MAKE) realclean
463 endif
464         cd eda && $(MAKE) realclean
465         $(call rmrq,obj/$(PLATFORM)/)
466         @$(call echo,Done.)
467
468 distclean: outputdirs
469 ifndef LINUX_TARGET
470         cd deps && $(MAKE) distclean
471 endif
472         cd ecere && $(MAKE) distclean
473         cd compiler && $(MAKE) distclean
474         cd ear && $(MAKE) distclean
475         cd epj2make && $(MAKE) distclean
476         cd ide && $(MAKE) distclean
477         cd documentor && $(MAKE) distclean
478 ifneq "$(ECERE_AUDIO)" "n"
479         cd audio && $(MAKE) distclean
480 endif
481 ifdef CodeGuard
482         cd codeGuard && $(MAKE) distclean
483 endif
484         cd eda && $(MAKE) distclean
485         $(call rmrq,obj/)
486         @$(call echo,Done.)
487
488 DOC = doc/ecere.eCdoc doc/ecereCOM.eCdoc doc/EDA.eCdoc
489
490 BINARIES = \
491         ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV) \
492         ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV) \
493         ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A) \
494         compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV) \
495         compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E) \
496         compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E) \
497         compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E) \
498         ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E) \
499         epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E) \
500         documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E) \
501         ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E) \
502         eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV) \
503         eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV)
504
505 ifneq "$(ECERE_AUDIO)" "n"
506 BINARIES += audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV)
507 endif
508
509 ifdef CodeGuard
510 BINARIES += codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E)
511 endif
512
513 ifdef EDASQLiteCipher
514 BINARIES += eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV)
515 endif
516
517 # Making sure everything is in $(OBJBINDIR) and $(OBJLIBDIR)
518 # Shared Libraries (in $(OBJBINDIR) on Windows and $(OBJLIBDIR) otherwise)
519 # Symlinks for libs on Linux
520 # Binaries (always in $(OBJBINDIR)) and Static Libraries (always in $(OBJLIBDIR))
521 prepinstall: $(DOC) $(BINARIES) outputdirs
522
523 ifdef WINDOWS_TARGET
524         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
525         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
526         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
527         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
528         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
529 ifneq "$(ECERE_AUDIO)" "n"
530         $(call cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
531 endif
532 ifdef EDASQLiteCipher
533         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
534 endif
535 endif
536
537 ifdef LINUX_TARGET
538         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
539         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
540         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
541         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
542         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
543 ifneq "$(ECERE_AUDIO)" "n"
544         $(call cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
545 endif
546 ifdef EDASQLiteCipher
547         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
548 endif
549         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
550         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
551         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
552         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
553         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO).0
554 ifdef EDASQLiteCipher
555         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
556 endif
557 ifneq "$(ECERE_AUDIO)" "n"
558         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO).0
559 endif
560
561         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
562         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
563         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
564         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
565         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO)
566 ifdef EDASQLiteCipher
567         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO)
568 endif
569         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO)
570 endif
571
572 ifndef WINDOWS_TARGET
573 ifndef LINUX_TARGET
574         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
575         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
576         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
577         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
578         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
579 ifneq "$(ECERE_AUDIO)" "n"
580         $(call cpq,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
581 endif
582 ifdef EDASQLiteCipher
583         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
584 endif
585 endif
586 endif
587
588         $(call cpq,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E),$(OBJBINDIR))
589         $(call cpq,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
590         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
591         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
592         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
593         $(call cpq,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
594         $(call cpq,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
595 ifdef CodeGuard
596         $(call cpq,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
597 endif
598         $(call cpq,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
599
600 #TODO: Samples?
601 install: prepinstall actualinstall
602         @$(call echo,The Ecere SDK has been installed.)
603
604 copyonlyinstall: actualinstall
605         @$(call echo,The Ecere SDK has been installed. copyonlyinstall.)
606
607 actualinstall:
608 ifdef WINDOWS_TARGET
609         $(call mkdirq,"$(BINDIR)/")
610         $(call mkdirq,"$(DESTSLIBDIR)/")
611         $(call mkdirq,"$(DOCDIR)/")
612         $(call cpq,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
613         $(call cpq,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
614         $(call cpq,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
615         $(call cpq,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
616         $(call cpq,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
617 ifdef EDASQLiteCipher
618         $(call cpq,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
619 endif
620 ifneq "$(ECERE_AUDIO)" "n"
621         $(call cpq,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
622 endif
623         $(call cpq,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
624         $(call cpq,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
625         $(call cpq,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
626         $(call cpq,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
627         $(call cpq,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
628         $(call cpq,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
629         $(call cpq,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
630 ifdef CodeGuard
631         $(call cpq,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
632 endif
633         $(call cpq,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
634         $(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"
635         $(call cpq,doc/ecere.eCdoc,"$(DOCDIR)/")
636         $(call cpq,doc/ecereCOM.eCdoc,"$(DOCDIR)/")
637         $(call cpq,doc/EDA.eCdoc,"$(DOCDIR)/")
638 endif
639
640 ifdef OSX_TARGET
641         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
642         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
643         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
644         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
645         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
646 ifdef EDASQLiteCipher
647         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
648 endif
649 ifneq "$(ECERE_AUDIO)" "n"
650         install $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
651 endif
652         install $(OBJBINDIR)ide$(E) $(BINDIR)/
653         install $(OBJBINDIR)ear$(E) $(BINDIR)/
654         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
655         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
656         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
657         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
658         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
659 ifdef CodeGuard
660         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
661 endif
662         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
663         install -d $(DOCDIR)/
664         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"
665         install doc/ecere.eCdoc $(DOCDIR)/
666         install doc/ecereCOM.eCdoc $(DOCDIR)/
667         install doc/EDA.eCdoc $(DOCDIR)/
668         mkdir -p $(MANDIR)/man1
669         cp -pRf share/man/man1/* $(MANDIR)/man1
670         mkdir -p $(SAMPLESDIR)
671         cp -pRf samples/* $(SAMPLESDIR)
672         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
673         mkdir -p $(EXTRASDIR)
674         cp -pRf extras/* $(EXTRASDIR)
675 endif
676
677 ifndef OSX_TARGET
678 ifndef WINDOWS_TARGET
679 ifdef LINUX_TARGET
680         mkdir -p $(DESTLIBDIR)/ec
681         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
682         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
683         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SOV)
684         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SOV)
685         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)
686 ifdef EDASQLiteCipher
687         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
688 endif
689 ifneq "$(ECERE_AUDIO)" "n"
690         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)
691 endif
692         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
693         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
694         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO).0
695         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO).0
696         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0
697 ifdef EDASQLiteCipher
698         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0
699 endif
700 ifneq "$(ECERE_AUDIO)" "n"
701         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO).0
702 endif
703         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
704         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
705         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
706         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
707         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
708         ln -sf ../$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
709         ln -sf ../$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
710 ifdef EDASQLiteCipher
711         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)
712 endif
713 ifneq "$(ECERE_AUDIO)" "n"
714         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)
715 endif
716 ifndef BSD_HOST
717         install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
718         install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
719 endif
720 else
721         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
722         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
723 endif
724         install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
725         install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
726         install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
727         install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
728         install $(INSTALL_FLAGS) $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
729         install $(INSTALL_FLAGS) $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
730         install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
731 ifdef CodeGuard
732         install $(INSTALL_FLAGS) $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
733 endif
734         install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
735 ifdef BSD_HOST
736         install $(INSTALL_FLAGS) -d $(DOCDIR)
737 endif
738         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
739         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"
740         install $(INSTALL_FLAGS) -m 644 doc/ecere.eCdoc $(DOCDIR)/ecere.eCdoc
741         install $(INSTALL_FLAGS) -m 644 doc/ecereCOM.eCdoc $(DOCDIR)/ecereCOM.eCdoc
742         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
743         mkdir -p $(MANDIR)/man1
744         cp -pRf share/man/man1/* $(MANDIR)/man1
745         mkdir -p $(SAMPLESDIR)
746         cp -pRf samples/* $(SAMPLESDIR)
747         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
748         mkdir -p $(EXTRASDIR)
749         cp $(CPFLAGS) extras/* $(EXTRASDIR)
750 ifdef DEBIAN_PACKAGE
751         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
752         install $(INSTALL_FLAG) -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
753         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
754         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
755         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
756         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
757         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
758         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
759         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
760         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
761         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
762         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecc0
763         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecc0/
764         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
765         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
766         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
767         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
768         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
769         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
770         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecereaudio0
771         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecereaudio0/
772 endif
773 endif
774 endif
775
776 uninstall:
777         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
778         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
779         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO)")
780         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
781 ifdef LINUX_TARGET
782         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)")
783 ifdef EDASQLiteCipher
784         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)")
785 endif
786 ifneq "$(ECERE_AUDIO)" "n"
787         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)")
788 endif
789 else
790         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
791 ifdef EDASQLiteCipher
792         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
793 endif
794 ifneq "$(ECERE_AUDIO)" "n"
795         $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
796 endif
797 endif
798         $(call rmq,"$(BINDIR)/ide$(E)")
799         $(call rmq,"$(BINDIR)/ear$(E)")
800         $(call rmq,"$(BINDIR)/ecc$(E)")
801         $(call rmq,"$(BINDIR)/ecp$(E)")
802         $(call rmq,"$(BINDIR)/ecs$(E)")
803         $(call rmq,"$(BINDIR)/epj2make$(E)")
804         $(call rmq,"$(BINDIR)/documentor$(E)")
805 ifdef CodeGuard
806         $(call rmq,"$(BINDIR)/CodeGuard$(E)")
807 endif
808         $(call rmq,"$(DESTSLIBDIR)/libecereVanilla$(A)")
809         $(call rmq,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
810         $(call rmq,"$(DOCDIR)/ecere.eCdoc")
811         $(call rmq,"$(DOCDIR)/ecereCOM.eCdoc")
812         $(call rmq,"$(DOCDIR)/EDA.eCdoc")
813 ifdef LINUX_TARGET
814         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
815         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
816         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)ec$(SO).0")
817         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDA$(SO).0")
818         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0")
819 ifdef EDASQLiteCipher
820         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0")
821 endif
822         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EcereaAudio$(SO).0")
823         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
824         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
825         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)ec$(SOV)")
826         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDA$(SOV)")
827         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)")
828 ifdef EDASQLiteCipher
829         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)")
830 endif
831 ifneq "$(ECERE_AUDIO)" "n"
832         $(call rmq,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)")
833 endif
834         $(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
835         $(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
836 endif
837         $(call rmdirq,"$(BINDIR)/")
838         $(call rmdirq,"$(DESTLIBDIR)/")
839         $(call rmdirq,"$(DESTSLIBDIR)/")
840         $(call rmdirq,"$(DOCDIR)/")
841 ifdef WINDOWS_TARGET
842         $(call rmdirq,"$(DESTDIR)/")
843 endif
844         @$(call echo,The Ecere SDK has been uninstalled.)
845
846 regenbootstrap: update_ecere update_libec update_ecp update_ecc update_ecs
847         @echo Bootstrap regenerated.
848
849 updatebootstrap: regenbootstrap
850         @echo Copying files...
851         $(call cpq,ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecere/bootstrap)
852         $(call cpq,compiler/libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/libec/bootstrap)
853         $(call cpq,compiler/ecp/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecp/bootstrap)
854         $(call cpq,compiler/ecc/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecc/bootstrap)
855         $(call cpq,compiler/ecs/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecs/bootstrap)
856         @echo Bootstrap updated.
857
858 update_ecere:
859         @echo Regenerating ecere bootstrapper...
860         cd ecere && $(MAKE) -f Makefile.bootstrap clean
861         cd ecere && $(MAKE) -f Makefile.bootstrap
862
863 update_libec:
864         @echo Regenerating ec bootstrapper...
865         cd compiler/libec && $(MAKE) -f Makefile.bootstrap clean
866         cd compiler/libec && $(MAKE) -f Makefile.bootstrap
867
868 update_ecp:
869         @echo Regenerating ecp bootstrapper...
870         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap clean
871         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap
872
873 update_ecc:
874         @echo Regenerating ecc bootstrapper...
875         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap clean
876         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap
877
878 update_ecs:
879         @echo Regenerating ecs bootstrapper...
880         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap clean
881         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap
882
883 troubleshoot:
884         @$(call echo,Printing values of some variables.)
885         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
886         @$(call echo,TARGET_PLATFORM=$(TARGET_PLATFORM))
887         @$(call echo,PLATFORM=$(PLATFORM))
888         @$(call echo,LINUX_HOST=$(LINUX_HOST))
889         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
890         @$(call echo,OSX_HOST=$(OSX_HOST))
891         @$(call echo,OSX_TARGET=$(OSX_TARGET))
892         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
893         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
894         @$(call echo,BSD_HOST=$(BSD_HOST))
895         @$(call echo,BSD_TARGET=$(BSD_TARGET))
896         @$(call echo,CCACHE=$(CCACHE))
897         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
898         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
899         @$(call echo,DISTCC=$(DISTCC))
900         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
901         @$(call echo,CC=$(CC))
902         @$(call echo,CPP=$(CPP))
903         @$(call echo,ECP=$(ECP))
904         @$(call echo,ECC=$(ECC))
905         @$(call echo,ECS=$(ECS))
906         @$(call echo,EAR=$(EAR))
907         @$(call echo,AS=$(AS))
908         @$(call echo,LD=$(LD))
909         @$(call echo,AR=$(AR))
910         @$(call echo,STRIP=$(STRIP))
911         @$(call echo,UPX=$(UPX))
912         @$(call echo,TARGET_ARCH=$(TARGET_ARCH))
913         @$(call echo,DESTDIR=$(DESTDIR))
914         @$(call echo,PREFIXLIBDIR=$(PREFIXLIBDIR))
915         @$(call echo,ARCH=$(ARCH))
916         @$(call echo,ARCH_FLAGS=$(ARCH_FLAGS))
917         @$(call echo,GIT_REPOSITORY=$(GIT_REPOSITORY))
918         @$(call echo,DIR_VER=$(DIR_VER))
919         @$(call echo,REPOSITORY_VER=$(REPOSITORY_VER))
920         @$(call echo,CPPFLAGS=$(CPPFLAGS))