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