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