tarball,Makefiles: add empty recipe rules for makefiles and their includes. they...
[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 mkdir,$(OBJDIR)))
175         $(if $(wildcard $(OBJBINDIR)),,$(call mkdir,$(OBJBINDIR)))
176         $(if $(wildcard $(OBJLIBDIR)),,$(call mkdir,$(OBJLIBDIR)))
177 ifdef CROSS_TARGET
178         $(if $(wildcard $(XOBJDIR)),,$(call mkdir,$(XOBJDIR)))
179         $(if $(wildcard $(XOBJBINDIR)),,$(call mkdir,$(XOBJBINDIR)))
180         $(if $(wildcard $(XOBJLIBDIR)),,$(call mkdir,$(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 cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJBINDIR))
244         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJBINDIR))
245         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJBINDIR))
246 endif
247 ifdef LINUX_TARGET
248         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
249         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
250         $(call cp,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 cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
261         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
262         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
263 endif
264 endif
265         $(call cp,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
266         $(call cp,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
267         $(call cp,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
268         $(call cp,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
269
270 ifdef CROSS_TARGET
271
272 ifdef WINDOWS_HOST
273         $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJBINDIR))
274         $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJBINDIR))
275         $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJBINDIR))
276 endif
277 ifdef WINDOWS_HOST
278         $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJLIBDIR))
279         $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJLIBDIR))
280         $(call cp,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 cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SO),$(XOBJLIBDIR))
291         $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SO),$(XOBJLIBDIR))
292         $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SO),$(XOBJLIBDIR))
293 endif
294 endif
295         $(call cp,ear/cmd/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(HOST_E),$(XOBJBINDIR))
296         $(call cp,compiler/ecc/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(HOST_E),$(XOBJBINDIR))
297         $(call cp,compiler/ecp/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(HOST_E),$(XOBJBINDIR))
298         $(call cp,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 cp,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
330 endif
331
332 ifdef LINUX_TARGET
333         $(call cp,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 cp,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 rm,$(OBJLIBDIR)libecereVanilla$(A))
355         $(call rm,$(SODESTDIR)$(LP)ecere$(SO))
356         $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SO))
357         $(call rm,$(SODESTDIR)$(LP)ec$(SO))
358         $(call rm,$(SODESTDIR)$(LP)EDA$(SO))
359         $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SO))
360 ifdef EDASQLiteCipher
361         $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
362 endif
363 ifneq ($(ECERE_AUDIO),n)
364         $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SO))
365 endif
366 ifdef LINUX_TARGET
367         $(call rm,$(SODESTDIR)$(LP)ecere$(SO).0)
368         $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
369         $(call rm,$(SODESTDIR)$(LP)ec$(SO).0)
370         $(call rm,$(SODESTDIR)$(LP)EDA$(SO).0)
371         $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SO).0)
372 ifdef EDASQLiteCipher
373         $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
374 endif
375 ifneq ($(ECERE_AUDIO),n)
376         $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SO).0)
377 endif
378         $(call rm,$(SODESTDIR)$(LP)ecere$(SOV))
379         $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SOV))
380         $(call rm,$(SODESTDIR)$(LP)ec$(SOV))
381         $(call rm,$(SODESTDIR)$(LP)EDA$(SOV))
382         $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SOV))
383 ifdef EDASQLiteCipher
384         $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
385 endif
386 ifneq ($(ECERE_AUDIO),n)
387         $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SOV))
388 endif
389 endif   
390         $(call rm,$(OBJBINDIR)ear$(E))
391         $(call rm,$(OBJBINDIR)ecc$(E))
392         $(call rm,$(OBJBINDIR)ecp$(E))
393         $(call rm,$(OBJBINDIR)ecs$(E))
394         $(call rm,$(OBJBINDIR)epj2make$(E))
395         $(call rm,$(OBJBINDIR)ide$(E))
396         $(call rm,$(OBJBINDIR)documentor$(E))
397 ifdef CodeGuard
398         $(call rm,$(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) realclean
460 endif
461 ifdef CodeGuard
462         cd codeGuard && $(MAKE) realclean
463 endif
464         cd eda && $(MAKE) realclean
465         $(call rmr,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 rmr,obj/)
486         @$(call echo,Done.)
487
488 DOC = doc
489
490 Makefile: ;
491 crossplatform.mk: ;
492 default.cf: ;
493
494 BINARIES = \
495         ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV) \
496         ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV) \
497         ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A) \
498         compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV) \
499         compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E) \
500         compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E) \
501         compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E) \
502         ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E) \
503         epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E) \
504         documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E) \
505         ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E) \
506         eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV) \
507         eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV)
508
509 ifneq ($(ECERE_AUDIO),n)
510 BINARIES += audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV)
511 endif
512
513 ifdef CodeGuard
514 BINARIES += codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E)
515 endif
516
517 ifdef EDASQLiteCipher
518 BINARIES += eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV)
519 endif
520
521 # Making sure everything is in $(OBJBINDIR) and $(OBJLIBDIR)
522 # Shared Libraries (in $(OBJBINDIR) on Windows and $(OBJLIBDIR) otherwise)
523 # Symlinks for libs on Linux
524 # Binaries (always in $(OBJBINDIR)) and Static Libraries (always in $(OBJLIBDIR))
525 prepinstall: $(DOC) $(BINARIES) outputdirs
526
527 ifdef WINDOWS_TARGET
528         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
529         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
530         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
531         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
532         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
533 ifneq ($(ECERE_AUDIO),n)
534         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
535 endif
536 ifdef EDASQLiteCipher
537         $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
538 endif
539 endif
540
541 ifdef LINUX_TARGET
542         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
543         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
544         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
545         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
546         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
547 ifneq ($(ECERE_AUDIO),n)
548         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
549 endif
550 ifdef EDASQLiteCipher
551         $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
552 endif
553         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
554         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
555         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
556         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
557         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO).0
558 ifdef EDASQLiteCipher
559         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
560 endif
561 ifneq ($(ECERE_AUDIO),n)
562         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO).0
563 endif
564
565         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
566         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
567         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
568         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
569         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO)
570 ifdef EDASQLiteCipher
571         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO)
572 endif
573         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO)
574 endif
575
576 ifndef WINDOWS_TARGET
577 ifndef LINUX_TARGET
578         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
579         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
580         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
581         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
582         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
583 ifneq ($(ECERE_AUDIO),n)
584         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
585 endif
586 ifdef EDASQLiteCipher
587         $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
588 endif
589 endif
590 endif
591
592         $(call cp,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E),$(OBJBINDIR))
593         $(call cp,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
594         $(call cp,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
595         $(call cp,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
596         $(call cp,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
597         $(call cp,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
598         $(call cp,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
599 ifdef CodeGuard
600         $(call cp,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
601 endif
602         $(call cp,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
603
604 #TODO: Samples?
605 install: prepinstall actualinstall
606         @$(call echo,The Ecere SDK has been installed.)
607
608 copyonlyinstall: actualinstall
609         @$(call echo,The Ecere SDK has been installed. copyonlyinstall.)
610
611 actualinstall:
612 ifdef WINDOWS_TARGET
613         $(call mkdir,"$(BINDIR)/")
614         $(call mkdir,"$(DESTSLIBDIR)/")
615         $(call mkdir,"$(DOCDIR)/")
616         $(call cp,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
617         $(call cp,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
618         $(call cp,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
619         $(call cp,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
620         $(call cp,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
621 ifdef EDASQLiteCipher
622         $(call cp,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
623 endif
624 ifneq ($(ECERE_AUDIO),n)
625         $(call cp,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
626 endif
627         $(call cp,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
628         $(call cp,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
629         $(call cp,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
630         $(call cp,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
631         $(call cp,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
632         $(call cp,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
633         $(call cp,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
634 ifdef CodeGuard
635         $(call cp,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
636 endif
637         $(call cp,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
638         $(call cp,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"
639         $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
640         $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
641         $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
642 endif
643
644 ifdef OSX_TARGET
645         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
646         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
647         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
648         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
649         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
650 ifdef EDASQLiteCipher
651         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
652 endif
653 ifneq ($(ECERE_AUDIO),n)
654         install $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
655 endif
656         install $(OBJBINDIR)ide$(E) $(BINDIR)/
657         install $(OBJBINDIR)ear$(E) $(BINDIR)/
658         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
659         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
660         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
661         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
662         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
663 ifdef CodeGuard
664         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
665 endif
666         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
667         install -d $(DOCDIR)/
668         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"
669         $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
670         $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
671         $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
672         mkdir -p $(MANDIR)/man1
673         $(call cpr,share/man/man1,$(MANDIR)/man1)
674         mkdir -p $(SAMPLESDIR)
675         $(call cpr,samples,$(SAMPLESDIR))
676         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
677         find $(DOCDIR) -type d -exec chmod 755 {} \;
678         find $(DOCDIR) -type f -exec chmod 644 {} \;
679         mkdir -p $(EXTRASDIR)
680         $(call cpr,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/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"
745         $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
746         $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
747         $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
748         mkdir -p $(MANDIR)/man1
749         cp -pRf share/man/man1/* $(MANDIR)/man1
750         mkdir -p $(SAMPLESDIR)
751         cp -pRf samples/* $(SAMPLESDIR)
752         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
753         find $(DOCDIR) -type d -exec chmod 755 {} \;
754         find $(DOCDIR) -type f -exec chmod 644 {} \;
755         mkdir -p $(EXTRASDIR)
756         cp $(CPFLAGS) extras/* $(EXTRASDIR)
757 ifdef DEBIAN_PACKAGE
758         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
759         install $(INSTALL_FLAG) -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
760         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
761         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
762         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
763         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
764         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
765         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
766         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
767         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
768         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
769         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecc0
770         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecc0/
771         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
772         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
773         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
774         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
775         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
776         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
777         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecereaudio0
778         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecereaudio0/
779 endif
780 endif
781 endif
782
783 uninstall:
784         $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
785         $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
786         $(call rm,"$(DESTLIBDIR)/$(LP)ec$(SO)")
787         $(call rm,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
788 ifdef LINUX_TARGET
789         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)")
790 ifdef EDASQLiteCipher
791         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)")
792 endif
793 ifneq ($(ECERE_AUDIO),n)
794         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)")
795 endif
796 else
797         $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
798 ifdef EDASQLiteCipher
799         $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
800 endif
801 ifneq ($(ECERE_AUDIO),n)
802         $(call rm,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
803 endif
804 endif
805         $(call rm,"$(BINDIR)/ide$(E)")
806         $(call rm,"$(BINDIR)/ear$(E)")
807         $(call rm,"$(BINDIR)/ecc$(E)")
808         $(call rm,"$(BINDIR)/ecp$(E)")
809         $(call rm,"$(BINDIR)/ecs$(E)")
810         $(call rm,"$(BINDIR)/epj2make$(E)")
811         $(call rm,"$(BINDIR)/documentor$(E)")
812 ifdef CodeGuard
813         $(call rm,"$(BINDIR)/CodeGuard$(E)")
814 endif
815         $(call rm,"$(DESTSLIBDIR)/libecereVanilla$(A)")
816         $(call rm,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
817         $(call rm,"$(DOCDIR)/ecere.eCdoc")
818         $(call rm,"$(DOCDIR)/ecereCOM.eCdoc")
819         $(call rm,"$(DOCDIR)/EDA.eCdoc")
820         $(call rmr,"$(DOCDIR)/ecere")
821         $(call rmr,"$(DOCDIR)/ecereCOM")
822         $(call rmr,"$(DOCDIR)/EDA")
823 ifdef LINUX_TARGET
824         $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
825         $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
826         $(call rm,"$(DESTLIBDIR)/ec/$(LP)ec$(SO).0")
827         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDA$(SO).0")
828         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0")
829 ifdef EDASQLiteCipher
830         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0")
831 endif
832         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereaAudio$(SO).0")
833         $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
834         $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
835         $(call rm,"$(DESTLIBDIR)/ec/$(LP)ec$(SOV)")
836         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDA$(SOV)")
837         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)")
838 ifdef EDASQLiteCipher
839         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)")
840 endif
841 ifneq ($(ECERE_AUDIO),n)
842         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)")
843 endif
844         $(call rm,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
845         $(call rm,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
846 endif
847         $(call rmdir,"$(BINDIR)/")
848         $(call rmdir,"$(DESTLIBDIR)/")
849         $(call rmdir,"$(DESTSLIBDIR)/")
850         $(call rmdir,"$(DOCDIR)/")
851 ifdef WINDOWS_TARGET
852         $(call rmdir,"$(DESTDIR)/")
853 endif
854         @$(call echo,The Ecere SDK has been uninstalled.)
855
856 regenbootstrap: update_ecere update_libec update_ecp update_ecc update_ecs
857         @echo Bootstrap regenerated.
858
859 updatebootstrap: regenbootstrap
860         @echo Copying files...
861         $(call cp,ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecere/bootstrap)
862         $(call cp,compiler/libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/libec/bootstrap)
863         $(call cp,compiler/ecp/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecp/bootstrap)
864         $(call cp,compiler/ecc/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecc/bootstrap)
865         $(call cp,compiler/ecs/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecs/bootstrap)
866         @echo Bootstrap updated.
867
868 update_ecere:
869         @echo Regenerating ecere bootstrapper...
870         cd ecere && $(MAKE) -f Makefile.bootstrap clean
871         cd ecere && $(MAKE) -f Makefile.bootstrap
872
873 update_libec:
874         @echo Regenerating ec bootstrapper...
875         cd compiler/libec && $(MAKE) -f Makefile.bootstrap clean
876         cd compiler/libec && $(MAKE) -f Makefile.bootstrap
877
878 update_ecp:
879         @echo Regenerating ecp bootstrapper...
880         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap clean
881         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap
882
883 update_ecc:
884         @echo Regenerating ecc bootstrapper...
885         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap clean
886         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap
887
888 update_ecs:
889         @echo Regenerating ecs bootstrapper...
890         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap clean
891         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap
892
893 troubleshoot:
894         @$(call echo,Printing values of some variables.)
895         @$(call echo,_CF_DIR=$(_CF_DIR))
896         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
897         @$(call echo,TARGET_PLATFORM=$(TARGET_PLATFORM))
898         @$(call echo,PLATFORM=$(PLATFORM))
899         @$(call echo,LINUX_HOST=$(LINUX_HOST))
900         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
901         @$(call echo,OSX_HOST=$(OSX_HOST))
902         @$(call echo,OSX_TARGET=$(OSX_TARGET))
903         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
904         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
905         @$(call echo,BSD_HOST=$(BSD_HOST))
906         @$(call echo,BSD_TARGET=$(BSD_TARGET))
907         @$(call echo,CCACHE=$(CCACHE))
908         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
909         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
910         @$(call echo,DISTCC=$(DISTCC))
911         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
912         @$(call echo,CC=$(CC))
913         @$(call echo,CPP=$(CPP))
914         @$(call echo,ECP=$(ECP))
915         @$(call echo,ECC=$(ECC))
916         @$(call echo,ECS=$(ECS))
917         @$(call echo,EAR=$(EAR))
918         @$(call echo,AS=$(AS))
919         @$(call echo,LD=$(LD))
920         @$(call echo,AR=$(AR))
921         @$(call echo,STRIP=$(STRIP))
922         @$(call echo,UPX=$(UPX))
923         @$(call echo,TARGET_ARCH=$(TARGET_ARCH))
924         @$(call echo,DESTDIR=$(DESTDIR))
925         @$(call echo,PREFIXLIBDIR=$(PREFIXLIBDIR))
926         @$(call echo,ARCH=$(ARCH))
927         @$(call echo,ARCH_FLAGS=$(ARCH_FLAGS))
928         @$(call echo,GIT_REPOSITORY=$(GIT_REPOSITORY))
929         @$(call echo,DIR_VER=$(DIR_VER))
930         @$(call echo,REPOSITORY_VER=$(REPOSITORY_VER))
931         @$(call echo,CPPFLAGS=$(CPPFLAGS))