ecere/gfx/drivers/Win32BitmapPrinter: Fixed warnings
[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 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 cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
525         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
526         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
527         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
528         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
529 ifneq ($(ECERE_AUDIO),n)
530         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
531 endif
532 ifdef EDASQLiteCipher
533         $(call cp,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 cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
539         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
540         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
541         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
542         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
543 ifneq ($(ECERE_AUDIO),n)
544         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
545 endif
546 ifdef EDASQLiteCipher
547         $(call cp,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 cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
575         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
576         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
577         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
578         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
579 ifneq ($(ECERE_AUDIO),n)
580         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
581 endif
582 ifdef EDASQLiteCipher
583         $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
584 endif
585 endif
586 endif
587
588         $(call cp,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E),$(OBJBINDIR))
589         $(call cp,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
590         $(call cp,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
591         $(call cp,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
592         $(call cp,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
593         $(call cp,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
594         $(call cp,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
595 ifdef CodeGuard
596         $(call cp,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
597 endif
598         $(call cp,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 mkdir,"$(BINDIR)/")
610         $(call mkdir,"$(DESTSLIBDIR)/")
611         $(call mkdir,"$(DOCDIR)/")
612         $(call cp,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
613         $(call cp,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
614         $(call cp,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
615         $(call cp,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
616         $(call cp,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
617 ifdef EDASQLiteCipher
618         $(call cp,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
619 endif
620 ifneq ($(ECERE_AUDIO),n)
621         $(call cp,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
622 endif
623         $(call cp,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
624         $(call cp,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
625         $(call cp,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
626         $(call cp,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
627         $(call cp,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
628         $(call cp,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
629         $(call cp,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
630 ifdef CodeGuard
631         $(call cp,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
632 endif
633         $(call cp,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
634         $(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"
635         $(call cpr,$(DOC)/*.econ,"$(DOCDIR)/")
636 endif
637
638 ifdef OSX_TARGET
639         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
640         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
641         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
642         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
643         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
644 ifdef EDASQLiteCipher
645         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
646 endif
647 ifneq ($(ECERE_AUDIO),n)
648         install $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
649 endif
650         install $(OBJBINDIR)ide$(E) $(BINDIR)/
651         install $(OBJBINDIR)ear$(E) $(BINDIR)/
652         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
653         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
654         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
655         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
656         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
657 ifdef CodeGuard
658         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
659 endif
660         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
661         install -d $(DOCDIR)/
662         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"
663         $(call cpr,$(DOC)/*.econ,"$(DOCDIR)/")
664         mkdir -p $(MANDIR)/man1
665         cp -pRf share/man/man1/* $(MANDIR)/man1
666         mkdir -p $(SAMPLESDIR)
667         cp -pRf samples/* $(SAMPLESDIR)
668         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
669         mkdir -p $(EXTRASDIR)
670         cp -pRf extras/* $(EXTRASDIR)
671 endif
672
673 ifndef OSX_TARGET
674 ifndef WINDOWS_TARGET
675 ifdef LINUX_TARGET
676         mkdir -p $(DESTLIBDIR)/ec
677         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
678         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
679         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SOV)
680         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SOV)
681         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)
682 ifdef EDASQLiteCipher
683         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
684 endif
685 ifneq ($(ECERE_AUDIO),n)
686         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)
687 endif
688         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
689         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
690         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO).0
691         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO).0
692         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0
693 ifdef EDASQLiteCipher
694         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0
695 endif
696 ifneq ($(ECERE_AUDIO),n)
697         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO).0
698 endif
699         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
700         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
701         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
702         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
703         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
704         ln -sf ../$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
705         ln -sf ../$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
706 ifdef EDASQLiteCipher
707         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)
708 endif
709 ifneq ($(ECERE_AUDIO),n)
710         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)
711 endif
712 ifndef BSD_HOST
713         install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
714         install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
715 endif
716 else
717         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
718         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
719 endif
720         install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
721         install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
722         install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
723         install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
724         install $(INSTALL_FLAGS) $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
725         install $(INSTALL_FLAGS) $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
726         install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
727 ifdef CodeGuard
728         install $(INSTALL_FLAGS) $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
729 endif
730         install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
731 ifdef BSD_HOST
732         install $(INSTALL_FLAGS) -d $(DOCDIR)
733 endif
734         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"
735         $(call cpr,$(DOC)/*.econ,"$(DOCDIR)/")
736         mkdir -p $(MANDIR)/man1
737         cp -pRf share/man/man1/* $(MANDIR)/man1
738         mkdir -p $(SAMPLESDIR)
739         cp -pRf samples/* $(SAMPLESDIR)
740         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
741         mkdir -p $(EXTRASDIR)
742         cp $(CPFLAGS) extras/* $(EXTRASDIR)
743 ifdef DEBIAN_PACKAGE
744         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
745         install $(INSTALL_FLAG) -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
746         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
747         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
748         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
749         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
750         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
751         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
752         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
753         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
754         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
755         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecc0
756         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecc0/
757         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
758         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
759         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
760         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
761         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
762         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
763         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecereaudio0
764         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecereaudio0/
765 endif
766 endif
767 endif
768
769 uninstall:
770         $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
771         $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
772         $(call rm,"$(DESTLIBDIR)/$(LP)ec$(SO)")
773         $(call rm,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
774 ifdef LINUX_TARGET
775         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)")
776 ifdef EDASQLiteCipher
777         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)")
778 endif
779 ifneq ($(ECERE_AUDIO),n)
780         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)")
781 endif
782 else
783         $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
784 ifdef EDASQLiteCipher
785         $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
786 endif
787 ifneq ($(ECERE_AUDIO),n)
788         $(call rm,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
789 endif
790 endif
791         $(call rm,"$(BINDIR)/ide$(E)")
792         $(call rm,"$(BINDIR)/ear$(E)")
793         $(call rm,"$(BINDIR)/ecc$(E)")
794         $(call rm,"$(BINDIR)/ecp$(E)")
795         $(call rm,"$(BINDIR)/ecs$(E)")
796         $(call rm,"$(BINDIR)/epj2make$(E)")
797         $(call rm,"$(BINDIR)/documentor$(E)")
798 ifdef CodeGuard
799         $(call rm,"$(BINDIR)/CodeGuard$(E)")
800 endif
801         $(call rm,"$(DESTSLIBDIR)/libecereVanilla$(A)")
802         $(call rm,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
803         $(call rm,"$(DOCDIR)/ecere.eCdoc")
804         $(call rm,"$(DOCDIR)/ecereCOM.eCdoc")
805         $(call rm,"$(DOCDIR)/EDA.eCdoc")
806         $(call rmr,"$(DOCDIR)/ecere")
807         $(call rmr,"$(DOCDIR)/ecereCOM")
808         $(call rmr,"$(DOCDIR)/EDA")
809 ifdef LINUX_TARGET
810         $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
811         $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
812         $(call rm,"$(DESTLIBDIR)/ec/$(LP)ec$(SO).0")
813         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDA$(SO).0")
814         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0")
815 ifdef EDASQLiteCipher
816         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0")
817 endif
818         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereaAudio$(SO).0")
819         $(call rm,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
820         $(call rm,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
821         $(call rm,"$(DESTLIBDIR)/ec/$(LP)ec$(SOV)")
822         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDA$(SOV)")
823         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)")
824 ifdef EDASQLiteCipher
825         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)")
826 endif
827 ifneq ($(ECERE_AUDIO),n)
828         $(call rm,"$(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)")
829 endif
830         $(call rm,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
831         $(call rm,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
832 endif
833         $(call rmdir,"$(BINDIR)/")
834         $(call rmdir,"$(DESTLIBDIR)/")
835         $(call rmdir,"$(DESTSLIBDIR)/")
836         $(call rmdir,"$(DOCDIR)/")
837 ifdef WINDOWS_TARGET
838         $(call rmdir,"$(DESTDIR)/")
839 endif
840         @$(call echo,The Ecere SDK has been uninstalled.)
841
842 regenbootstrap: update_ecere update_libec update_ecp update_ecc update_ecs
843         @echo Bootstrap regenerated.
844
845 updatebootstrap: regenbootstrap
846         @echo Copying files...
847         $(call cp,ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecere/bootstrap)
848         $(call cp,compiler/libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/libec/bootstrap)
849         $(call cp,compiler/ecp/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecp/bootstrap)
850         $(call cp,compiler/ecc/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecc/bootstrap)
851         $(call cp,compiler/ecs/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecs/bootstrap)
852         @echo Bootstrap updated.
853
854 update_ecere:
855         @echo Regenerating ecere bootstrapper...
856         cd ecere && $(MAKE) -f Makefile.bootstrap clean
857         cd ecere && $(MAKE) -f Makefile.bootstrap
858
859 update_libec:
860         @echo Regenerating ec bootstrapper...
861         cd compiler/libec && $(MAKE) -f Makefile.bootstrap clean
862         cd compiler/libec && $(MAKE) -f Makefile.bootstrap
863
864 update_ecp:
865         @echo Regenerating ecp bootstrapper...
866         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap clean
867         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap
868
869 update_ecc:
870         @echo Regenerating ecc bootstrapper...
871         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap clean
872         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap
873
874 update_ecs:
875         @echo Regenerating ecs bootstrapper...
876         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap clean
877         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap
878
879 troubleshoot:
880         @$(call echo,Printing values of some variables.)
881         @$(call echo,_SDK_SRC_ROOT=$(_SDK_SRC_ROOT))
882         @$(call echo,_CF_DIR=$(_CF_DIR))
883         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
884         @$(call echo,TARGET_PLATFORM=$(TARGET_PLATFORM))
885         @$(call echo,PLATFORM=$(PLATFORM))
886         @$(call echo,LINUX_HOST=$(LINUX_HOST))
887         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
888         @$(call echo,OSX_HOST=$(OSX_HOST))
889         @$(call echo,OSX_TARGET=$(OSX_TARGET))
890         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
891         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
892         @$(call echo,BSD_HOST=$(BSD_HOST))
893         @$(call echo,BSD_TARGET=$(BSD_TARGET))
894         @$(call echo,CCACHE=$(CCACHE))
895         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
896         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
897         @$(call echo,DISTCC=$(DISTCC))
898         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
899         @$(call echo,CC=$(CC))
900         @$(call echo,CPP=$(CPP))
901         @$(call echo,ECP=$(ECP))
902         @$(call echo,ECC=$(ECC))
903         @$(call echo,ECS=$(ECS))
904         @$(call echo,EAR=$(EAR))
905         @$(call echo,AS=$(AS))
906         @$(call echo,LD=$(LD))
907         @$(call echo,AR=$(AR))
908         @$(call echo,STRIP=$(STRIP))
909         @$(call echo,UPX=$(UPX))
910         @$(call echo,TARGET_ARCH=$(TARGET_ARCH))
911         @$(call echo,DESTDIR=$(DESTDIR))
912         @$(call echo,PREFIXLIBDIR=$(PREFIXLIBDIR))
913         @$(call echo,ARCH=$(ARCH))
914         @$(call echo,ARCH_FLAGS=$(ARCH_FLAGS))
915         @$(call echo,GIT_REPOSITORY=$(GIT_REPOSITORY))
916         @$(call echo,DIR_VER=$(DIR_VER))
917         @$(call echo,REPOSITORY_VER=$(REPOSITORY_VER))
918         @$(call echo,CPPFLAGS=$(CPPFLAGS))