ecere/sys/ECON: Fixed ECON Hexadecimal Support; Using it for bit classes
[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         +cd compiler && $(_MAKE) $(XBOOT) bootstrap
187
188 deps:
189 ifdef CROSS_TARGET
190 ifndef LINUX_HOST
191         @$(call echo,Building dependencies (host)...)
192         +cd deps && $(_MAKE) $(XBOOT)
193 endif
194 endif
195 ifndef LINUX_TARGET
196         @$(call echo,Building dependencies...)
197         +cd deps && $(_MAKE)
198 endif
199
200 ecere: bootstrap deps
201 ifdef CROSS_TARGET
202         @$(call echo,Building 2nd stage ecere (host)...)
203 else
204         @$(call echo,Building 2nd stage ecere...)
205 endif
206         +cd ecere && $(_MAKE) nores $(XBOOT)
207         +cd ear && $(_MAKE) nores $(XBOOT)
208         +cd ecere && $(_MAKE) cleaneceretarget
209 ifdef CROSS_TARGET
210         @$(call echo,Building 2nd stage ecere...)
211 endif
212         +cd ecere && $(_MAKE)
213
214 ecerecom: bootstrap
215 ifdef CROSS_TARGET
216         @$(call echo,Building eC Core Runtime (host)...)
217         +cd ecere && $(_MAKE) -f Makefile.ecereCOM $(XBOOT)
218 endif
219         @$(call echo,Building eC Core Runtime...)
220         +cd ecere && $(_MAKE) -f Makefile.ecereCOM
221
222 ecerevanilla: bootstrap
223         @$(call echo,Building Vanilla Ecere...)
224         +cd ecere && $(_MAKE) -f Makefile.vanilla
225
226 ear: ecere ecerevanilla
227         @$(call echo,Building ear...)
228         +cd ear && cd cmd && $(_MAKE) cleantarget
229         +cd ear && $(_MAKE)
230
231 fixprecompile:
232         +cd compiler && $(_MAKE) fixprecompile
233
234 compiler: ecere ear
235 ifdef CROSS_TARGET
236         @$(call echo,Building 2nd stage compiler (host))
237         +cd compiler && $(_MAKE) $(XBOOT)
238 endif
239         @$(call echo,Building 2nd stage compiler)
240         +cd compiler && $(_MAKE)
241
242 prepbinaries: compiler ecerecom
243         @$(call echo,Enabling 2nd stage binaries...)
244 ifdef WINDOWS_TARGET
245         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJBINDIR))
246         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJBINDIR))
247         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJBINDIR))
248 endif
249 ifdef LINUX_TARGET
250         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
251         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
252         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
253         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
254         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
255         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
256         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
257         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
258         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
259 endif
260 ifndef WINDOWS_TARGET
261 ifndef LINUX_TARGET
262         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
263         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
264         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
265 endif
266 endif
267         $(call cp,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
268         $(call cp,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
269         $(call cp,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
270         $(call cp,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
271
272 ifdef CROSS_TARGET
273
274 ifdef WINDOWS_HOST
275         $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJBINDIR))
276         $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJBINDIR))
277         $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJBINDIR))
278 endif
279 ifdef WINDOWS_HOST
280         $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJLIBDIR))
281         $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJLIBDIR))
282         $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SOV),$(XOBJLIBDIR))
283         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO).0
284         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO).0
285         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO).0
286         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO)
287         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO)
288         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO)
289 endif
290 ifndef WINDOWS_HOST
291 ifndef LINUX_HOST
292         $(call cp,ecere/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecere$(HOST_SO),$(XOBJLIBDIR))
293         $(call cp,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ecereCOM$(HOST_SO),$(XOBJLIBDIR))
294         $(call cp,compiler/libec/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(HOST_LP)ec$(HOST_SO),$(XOBJLIBDIR))
295 endif
296 endif
297         $(call cp,ear/cmd/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(HOST_E),$(XOBJBINDIR))
298         $(call cp,compiler/ecc/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(HOST_E),$(XOBJBINDIR))
299         $(call cp,compiler/ecp/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(HOST_E),$(XOBJBINDIR))
300         $(call cp,compiler/ecs/obj/release.$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(HOST_E),$(XOBJBINDIR))
301
302 endif
303
304 epj2make: prepbinaries
305         @$(call echo,Building epj2make...)
306         +cd epj2make && $(_MAKE)
307
308 ecereaudio: prepbinaries
309 ifneq ($(ECERE_AUDIO),n)
310         @$(call echo,Building EcereAudio...)
311         +cd audio && $(_MAKE)
312 endif
313
314 ide: prepbinaries
315         @$(call echo,Building IDE...)
316         +cd ide && $(_MAKE)
317
318 documentor: prepbinaries
319         @$(call echo,Building Documentor...)
320         +cd documentor && $(_MAKE)
321
322 codeguard: prepcodeguard
323 ifdef CodeGuard
324         @$(call echo,Building CodeGuard client...)
325         +cd codeGuard && $(_MAKE)
326 endif
327
328 prepcodeguard: eda
329 ifdef CodeGuard
330 ifdef WINDOWS_TARGET
331         $(call cp,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
332 endif
333
334 ifdef LINUX_TARGET
335         $(call cp,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
336         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
337         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
338 endif
339
340 ifndef WINDOWS_TARGET
341 ifndef LINUX_TARGET
342         $(call cp,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
343 endif
344 endif
345 endif
346
347 eda: prepbinaries
348 ifdef CROSS_TARGET
349         @$(call echo,Building EDA (host))
350         +cd eda && $(_MAKE) $(XBOOT)
351 endif
352         @$(call echo,Building EDA...)
353         +cd eda && $(_MAKE)
354
355 emptyoutput: outputdirs
356         $(call rm,$(OBJLIBDIR)libecereVanilla$(A))
357         $(call rm,$(SODESTDIR)$(LP)ecere$(SO))
358         $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SO))
359         $(call rm,$(SODESTDIR)$(LP)ec$(SO))
360         $(call rm,$(SODESTDIR)$(LP)EDA$(SO))
361         $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SO))
362 ifdef EDASQLiteCipher
363         $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
364 endif
365 ifneq ($(ECERE_AUDIO),n)
366         $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SO))
367 endif
368 ifdef LINUX_TARGET
369         $(call rm,$(SODESTDIR)$(LP)ecere$(SO).0)
370         $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
371         $(call rm,$(SODESTDIR)$(LP)ec$(SO).0)
372         $(call rm,$(SODESTDIR)$(LP)EDA$(SO).0)
373         $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SO).0)
374 ifdef EDASQLiteCipher
375         $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
376 endif
377 ifneq ($(ECERE_AUDIO),n)
378         $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SO).0)
379 endif
380         $(call rm,$(SODESTDIR)$(LP)ecere$(SOV))
381         $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SOV))
382         $(call rm,$(SODESTDIR)$(LP)ec$(SOV))
383         $(call rm,$(SODESTDIR)$(LP)EDA$(SOV))
384         $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SOV))
385 ifdef EDASQLiteCipher
386         $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
387 endif
388 ifneq ($(ECERE_AUDIO),n)
389         $(call rm,$(SODESTDIR)$(LP)EcereAudio$(SOV))
390 endif
391 endif   
392         $(call rm,$(OBJBINDIR)ear$(E))
393         $(call rm,$(OBJBINDIR)ecc$(E))
394         $(call rm,$(OBJBINDIR)ecp$(E))
395         $(call rm,$(OBJBINDIR)ecs$(E))
396         $(call rm,$(OBJBINDIR)epj2make$(E))
397         $(call rm,$(OBJBINDIR)ecere-ide$(E))
398         $(call rm,$(OBJBINDIR)documentor$(E))
399 ifdef CodeGuard
400         $(call rm,$(OBJBINDIR)CodeGuard$(E))
401 endif
402
403 cleantarget:
404         +cd compiler && $(_MAKE) cleantarget
405         +cd documentor && $(_MAKE) cleantarget
406         +cd ear && $(_MAKE) cleantarget
407         +cd ecere && $(_MAKE) cleantarget
408         +cd eda && $(_MAKE) cleantarget
409         +cd epj2make && $(_MAKE) cleantarget
410         +cd ide && $(_MAKE) cleantarget
411         +cd installer && $(_MAKE) cleantarget
412 ifneq ($(ECERE_AUDIO),n)
413         +cd audio && $(_MAKE) cleantarget
414 endif
415
416 pots: cleantarget
417         $(_MAKE) OUTPUT_POT=1
418         +cd installer && $(_MAKE) OUTPUT_POT=1 pots
419
420 ifdef WINDOWS_TARGET
421 installer:
422         $(_MAKE) prepinstall ARCH=
423         $(_MAKE) prepinstall ARCH=x32
424         @$(call echo,Building Ecere runtime for installer...)
425         +cd ecere && @$(_MAKE) -f Makefile.installer ARCH=x32
426         @$(call echo,Building Installer for Windows...)
427         +cd installer && @$(_MAKE) ARCH=x32
428         @$(call echo,The Ecere SDK Windows Installer is fully built.)
429 endif
430
431 clean: emptyoutput
432 ifndef LINUX_TARGET
433         +cd deps && $(_MAKE) clean
434 endif
435         +cd ecere && $(_MAKE) clean
436         +cd compiler && $(_MAKE) clean
437         +cd ear && $(_MAKE) clean
438         +cd epj2make && $(_MAKE) clean
439         +cd ide && $(_MAKE) clean
440         +cd documentor && $(_MAKE) clean
441 ifneq ($(ECERE_AUDIO),n)
442         +cd audio && $(_MAKE) clean
443 endif
444 ifdef CodeGuard
445         +cd codeGuard && $(_MAKE) clean
446 endif
447         +cd eda && $(_MAKE) clean
448         @$(call echo,Done.)
449
450 realclean: outputdirs
451 ifndef LINUX_TARGET
452         +cd deps && $(_MAKE) realclean
453 endif
454         +cd ecere && $(_MAKE) realclean
455         +cd compiler && $(_MAKE) realclean
456         +cd ear && $(_MAKE) realclean
457         +cd epj2make && $(_MAKE) realclean
458         +cd ide && $(_MAKE) realclean
459         +cd documentor && $(_MAKE) realclean
460 ifneq ($(ECERE_AUDIO),n)
461         +cd audio && $(_MAKE) realclean
462 endif
463 ifdef CodeGuard
464         +cd codeGuard && $(_MAKE) realclean
465 endif
466         +cd eda && $(_MAKE) realclean
467         $(call rmr,obj/$(PLATFORM)/)
468         @$(call echo,Done.)
469
470 distclean:
471         $(MAKE) -f Cleanfile distclean distclean_all_subdirs
472         @$(call echo,Done.)
473
474 DOC = doc
475
476 Makefile: ;
477 crossplatform.mk: ;
478 default.cf: ;
479
480 BINARIES = \
481         ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV) \
482         ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV) \
483         ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A) \
484         compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV) \
485         compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E) \
486         compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E) \
487         compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E) \
488         ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E) \
489         epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E) \
490         documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E) \
491         ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecere-ide$(E) \
492         eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV) \
493         eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV)
494
495 ifneq ($(ECERE_AUDIO),n)
496 BINARIES += audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV)
497 endif
498
499 ifdef CodeGuard
500 BINARIES += codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E)
501 endif
502
503 ifdef EDASQLiteCipher
504 BINARIES += eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV)
505 endif
506
507 # Making sure everything is in $(OBJBINDIR) and $(OBJLIBDIR)
508 # Shared Libraries (in $(OBJBINDIR) on Windows and $(OBJLIBDIR) otherwise)
509 # Symlinks for libs on Linux
510 # Binaries (always in $(OBJBINDIR)) and Static Libraries (always in $(OBJLIBDIR))
511 prepinstall: $(DOC) $(BINARIES) outputdirs
512
513 ifdef WINDOWS_TARGET
514         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
515         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
516         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
517         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
518         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
519 ifneq ($(ECERE_AUDIO),n)
520         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
521 endif
522 ifdef EDASQLiteCipher
523         $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
524 endif
525 endif
526
527 ifdef LINUX_TARGET
528         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
529         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
530         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
531         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
532         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
533 ifneq ($(ECERE_AUDIO),n)
534         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
535 endif
536 ifdef EDASQLiteCipher
537         $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
538 endif
539         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
540         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
541         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
542         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
543         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO).0
544 ifdef EDASQLiteCipher
545         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
546 endif
547 ifneq ($(ECERE_AUDIO),n)
548         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO).0
549 endif
550
551         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
552         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
553         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
554         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
555         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO)
556 ifdef EDASQLiteCipher
557         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO)
558 endif
559         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO)
560 endif
561
562 ifndef WINDOWS_TARGET
563 ifndef LINUX_TARGET
564         $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
565         $(call cp,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
566         $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
567         $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
568         $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
569 ifneq ($(ECERE_AUDIO),n)
570         $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
571 endif
572 ifdef EDASQLiteCipher
573         $(call cp,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
574 endif
575 endif
576 endif
577
578         $(call cp,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecere-ide$(E),$(OBJBINDIR))
579         $(call cp,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
580         $(call cp,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
581         $(call cp,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
582         $(call cp,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
583         $(call cp,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
584         $(call cp,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
585 ifdef CodeGuard
586         $(call cp,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
587 endif
588         $(call cp,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
589
590 #TODO: Samples?
591 install: prepinstall actualinstall
592         @$(call echo,The Ecere SDK has been installed.)
593
594 copyonlyinstall: actualinstall
595         @$(call echo,The Ecere SDK has been installed. copyonlyinstall.)
596
597 actualinstall:
598 ifdef WINDOWS_TARGET
599         $(call mkdir,"$(BINDIR)/")
600         $(call mkdir,"$(DESTSLIBDIR)/")
601         $(call mkdir,"$(DOCDIR)/")
602         $(call cp,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
603         $(call cp,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
604         $(call cp,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
605         $(call cp,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
606         $(call cp,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
607 ifdef EDASQLiteCipher
608         $(call cp,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
609 endif
610 ifneq ($(ECERE_AUDIO),n)
611         $(call cp,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
612 endif
613         $(call cp,$(OBJBINDIR)ecere-ide$(E),"$(BINDIR)/")
614         $(call cp,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
615         $(call cp,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
616         $(call cp,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
617         $(call cp,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
618         $(call cp,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
619         $(call cp,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
620 ifdef CodeGuard
621         $(call cp,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
622 endif
623         $(call cp,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
624         $(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"
625         $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
626         $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
627         $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
628 endif
629
630 ifdef OSX_TARGET
631         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
632         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
633         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
634         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
635         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
636 ifdef EDASQLiteCipher
637         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
638 endif
639 ifneq ($(ECERE_AUDIO),n)
640         install $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
641 endif
642         install $(OBJBINDIR)ecere-ide$(E) $(BINDIR)/
643         install $(OBJBINDIR)ear$(E) $(BINDIR)/
644         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
645         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
646         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
647         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
648         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
649 ifdef CodeGuard
650         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
651 endif
652         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
653         install -d $(DOCDIR)/
654         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"
655         $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
656         $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
657         $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
658         mkdir -p $(MANDIR)/man1
659         $(call cpr,share/man/man1,$(MANDIR)/man1)
660         mkdir -p $(SAMPLESDIR)
661         $(call cpr,samples,$(SAMPLESDIR))
662         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
663         find $(DOCDIR) -type d -exec chmod 755 {} \;
664         find $(DOCDIR) -type f -exec chmod 644 {} \;
665         mkdir -p $(EXTRASDIR)
666         $(call cpr,extras,$(EXTRASDIR))
667 endif
668
669 ifndef OSX_TARGET
670 ifndef WINDOWS_TARGET
671 ifdef LINUX_TARGET
672         mkdir -p $(DESTLIBDIR)/ec
673         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
674         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
675         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SOV)
676         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SOV)
677         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)
678 ifdef EDASQLiteCipher
679         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
680 endif
681 ifneq ($(ECERE_AUDIO),n)
682         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)
683 endif
684         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
685         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
686         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO).0
687         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO).0
688         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0
689 ifdef EDASQLiteCipher
690         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0
691 endif
692 ifneq ($(ECERE_AUDIO),n)
693         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO).0
694 endif
695         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
696         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
697         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
698         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
699         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
700         ln -sf ../$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
701         ln -sf ../$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
702 ifdef EDASQLiteCipher
703         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)
704 endif
705 ifneq ($(ECERE_AUDIO),n)
706         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)
707 endif
708 ifndef BSD_HOST
709         install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
710         install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
711 endif
712 else
713         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
714         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
715 endif
716         install $(INSTALL_FLAGS) $(OBJBINDIR)ecere-ide$(E) $(BINDIR)/ecere-ide$(E)
717         install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
718         install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
719         install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
720         install $(INSTALL_FLAGS) $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
721         install $(INSTALL_FLAGS) $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
722         install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
723 ifdef CodeGuard
724         install $(INSTALL_FLAGS) $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
725 endif
726         install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
727 ifdef BSD_HOST
728         install $(INSTALL_FLAGS) -d $(DOCDIR)
729 endif
730         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"
731         $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
732         $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
733         $(call cpr,$(DOC)/EDA,"$(DOCDIR)/EDA")
734         mkdir -p $(MANDIR)/man1
735         cp -pRf share/man/man1/* $(MANDIR)/man1
736         mkdir -p $(SAMPLESDIR)
737         cp -pRf samples/* $(SAMPLESDIR)
738         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
739         find $(DOCDIR) -type d -exec chmod 755 {} \;
740         find $(DOCDIR) -type f -exec chmod 644 {} \;
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)/ecere-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,_CF_DIR=$(_CF_DIR))
882         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
883         @$(call echo,TARGET_PLATFORM=$(TARGET_PLATFORM))
884         @$(call echo,PLATFORM=$(PLATFORM))
885         @$(call echo,LINUX_HOST=$(LINUX_HOST))
886         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
887         @$(call echo,OSX_HOST=$(OSX_HOST))
888         @$(call echo,OSX_TARGET=$(OSX_TARGET))
889         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
890         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
891         @$(call echo,BSD_HOST=$(BSD_HOST))
892         @$(call echo,BSD_TARGET=$(BSD_TARGET))
893         @$(call echo,OS=$(OS))
894         @$(call echo,OSTYPE=$(OSTYPE))
895         @$(call echo,BASH=$(BASH))
896         @$(call echo,TERM=$(TERM))
897         @$(call echo,SHELL=$(SHELL))
898         @$(call echo,WIN_SHELL_COMMANDS=$(WIN_SHELL_COMMANDS))
899         @$(call echo,WIN_PS_TOOLS=$(WIN_PS_TOOLS))
900         @$(call echo,CCACHE=$(CCACHE))
901         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
902         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
903         @$(call echo,DISTCC=$(DISTCC))
904         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
905         @$(call echo,CC=$(CC))
906         @$(call echo,CPP=$(CPP))
907         @$(call echo,ECP=$(ECP))
908         @$(call echo,ECC=$(ECC))
909         @$(call echo,ECS=$(ECS))
910         @$(call echo,EAR=$(EAR))
911         @$(call echo,AS=$(AS))
912         @$(call echo,LD=$(LD))
913         @$(call echo,AR=$(AR))
914         @$(call echo,STRIP=$(STRIP))
915         @$(call echo,UPX=$(UPX))
916         @$(call echo,TARGET_ARCH=$(TARGET_ARCH))
917         @$(call echo,DESTDIR=$(DESTDIR))
918         @$(call echo,PREFIXLIBDIR=$(PREFIXLIBDIR))
919         @$(call echo,ARCH=$(ARCH))
920         @$(call echo,ARCH_FLAGS=$(ARCH_FLAGS))
921         @$(call echo,GIT_REPOSITORY=$(GIT_REPOSITORY))
922         @$(call echo,DIR_VER=$(DIR_VER))
923         @$(call echo,REPOSITORY_VER=$(REPOSITORY_VER))
924         @$(call echo,CPPFLAGS=$(CPPFLAGS))
925         @$(call echo,OPENSSL_CONF=$(OPENSSL_CONF))
926         @$(call echo,OPENSSL_INCLUDE_DIR=$(OPENSSL_INCLUDE_DIR))
927         @$(call echo,OPENSSL_LIB_DIR=$(OPENSSL_LIB_DIR))
928         @$(call echo,OPENSSL_BIN_DIR=$(OPENSSL_BIN_DIR))