Makefile: Another EcereAudio fix
[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 ifdef ECERE_AUDIO
304         @$(call echo,Building EcereAudio...)
305         cd extras/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 ifdef ECERE_AUDIO
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 ifdef ECERE_AUDIO
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 ifdef ECERE_AUDIO
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
407 pots: cleantarget
408         $(MAKE) OUTPUT_POT=1
409         cd installer && $(MAKE) OUTPUT_POT=1 pots
410
411 ifdef WINDOWS_TARGET
412 installer:
413         $(MAKE) prepinstall ARCH=
414         $(MAKE) prepinstall ARCH=x32
415         @$(call echo,Building Ecere runtime for installer...)
416         cd ecere && @$(MAKE) -f Makefile.installer ARCH=x32
417         @$(call echo,Building Installer for Windows...)
418         cd installer && @$(MAKE) ARCH=x32
419         @$(call echo,The Ecere SDK Windows Installer is fully built.)
420 endif
421
422 clean: emptyoutput
423 ifndef LINUX_TARGET
424         cd deps && $(MAKE) clean
425 endif
426         cd ecere && $(MAKE) clean
427         cd compiler && $(MAKE) clean
428         cd ear && $(MAKE) clean
429         cd epj2make && $(MAKE) clean
430         cd ide && $(MAKE) clean
431         cd documentor && $(MAKE) clean
432 ifdef CodeGuard
433         cd codeGuard && $(MAKE) clean
434 endif
435         cd eda && $(MAKE) clean
436         @$(call echo,Done.)
437
438 realclean: outputdirs
439 ifndef LINUX_TARGET
440         cd deps && $(MAKE) realclean
441 endif
442         cd ecere && $(MAKE) realclean
443         cd compiler && $(MAKE) realclean
444         cd ear && $(MAKE) realclean
445         cd epj2make && $(MAKE) realclean
446         cd ide && $(MAKE) realclean
447         cd documentor && $(MAKE) realclean
448 ifdef CodeGuard
449         cd codeGuard && $(MAKE) realclean
450 endif
451         cd eda && $(MAKE) realclean
452         $(call rmrq,obj/$(PLATFORM)/)
453         @$(call echo,Done.)
454
455 distclean: outputdirs
456 ifndef LINUX_TARGET
457         cd deps && $(MAKE) distclean
458 endif
459         cd ecere && $(MAKE) distclean
460         cd compiler && $(MAKE) distclean
461         cd ear && $(MAKE) distclean
462         cd epj2make && $(MAKE) distclean
463         cd ide && $(MAKE) distclean
464         cd documentor && $(MAKE) distclean
465 ifdef CodeGuard
466         cd codeGuard && $(MAKE) distclean
467 endif
468         cd eda && $(MAKE) distclean
469         $(call rmrq,obj/)
470         @$(call echo,Done.)
471
472 DOC = doc/ecere.eCdoc doc/ecereCOM.eCdoc doc/EDA.eCdoc
473
474 BINARIES = \
475         ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV) \
476         ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV) \
477         ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A) \
478         compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV) \
479         compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E) \
480         compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E) \
481         compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E) \
482         ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E) \
483         epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E) \
484         documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E) \
485         ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E) \
486         eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV) \
487         eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV)
488
489 ifdef ECERE_AUDIO
490 BINARIES += extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV)
491 endif
492
493 ifdef CodeGuard
494 BINARIES += codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E)
495 endif
496
497 ifdef EDASQLiteCipher
498 BINARIES += eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV)
499 endif
500
501 # Making sure everything is in $(OBJBINDIR) and $(OBJLIBDIR)
502 # Shared Libraries (in $(OBJBINDIR) on Windows and $(OBJLIBDIR) otherwise)
503 # Symlinks for libs on Linux
504 # Binaries (always in $(OBJBINDIR)) and Static Libraries (always in $(OBJLIBDIR))
505 prepinstall: $(DOC) $(BINARIES) outputdirs
506
507 ifdef WINDOWS_TARGET
508         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJBINDIR))
509         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
510         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
511         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
512         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
513 ifdef ECERE_AUDIO
514         $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
515 endif
516 ifdef EDASQLiteCipher
517         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
518 endif
519 endif
520
521 ifdef LINUX_TARGET
522         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJLIBDIR))
523         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
524         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
525         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
526         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
527 ifdef ECERE_AUDIO
528         $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
529 endif
530 ifdef EDASQLiteCipher
531         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
532 endif
533         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
534         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
535         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
536         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
537         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO).0
538 ifdef EDASQLiteCipher
539         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
540 endif
541 ifdef ECERE_AUDIO
542         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO).0
543 endif
544
545         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
546         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
547         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
548         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
549         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO)
550 ifdef EDASQLiteCipher
551         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO)
552 endif
553         ln -sf $(LP)EcereAudio$(SOV) $(OBJLIBDIR)$(LP)EcereAudio$(SO)
554 endif
555
556 ifndef WINDOWS_TARGET
557 ifndef LINUX_TARGET
558         $(call cpq,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SO),$(OBJLIBDIR))
559         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
560         $(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
561         $(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
562         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
563 ifdef ECERE_AUDIO
564         $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
565 endif
566 ifdef EDASQLiteCipher
567         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
568 endif
569 endif
570 endif
571
572         $(call cpq,ide/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ide$(E),$(OBJBINDIR))
573         $(call cpq,ear/cmd/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ear$(E),$(OBJBINDIR))
574         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecc$(E),$(OBJBINDIR))
575         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecp$(E),$(OBJBINDIR))
576         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E),$(OBJBINDIR))
577         $(call cpq,epj2make/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/epj2make$(E),$(OBJBINDIR))
578         $(call cpq,documentor/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/documentor$(E),$(OBJBINDIR))
579 ifdef CodeGuard
580         $(call cpq,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
581 endif
582         $(call cpq,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
583
584 #TODO: Samples?
585 install: prepinstall actualinstall
586         @$(call echo,The Ecere SDK has been installed.)
587
588 copyonlyinstall: actualinstall
589         @$(call echo,The Ecere SDK has been installed. copyonlyinstall.)
590
591 actualinstall:
592 ifdef WINDOWS_TARGET
593         $(call mkdirq,"$(BINDIR)/")
594         $(call mkdirq,"$(DESTSLIBDIR)/")
595         $(call mkdirq,"$(DOCDIR)/")
596         $(call cpq,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
597         $(call cpq,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
598         $(call cpq,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
599         $(call cpq,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
600         $(call cpq,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
601 ifdef EDASQLiteCipher
602         $(call cpq,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
603 endif
604 ifdef ECERE_AUDIO
605         $(call cpq,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
606 endif
607         $(call cpq,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
608         $(call cpq,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
609         $(call cpq,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
610         $(call cpq,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
611         $(call cpq,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
612         $(call cpq,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
613         $(call cpq,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
614 ifdef CodeGuard
615         $(call cpq,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
616 endif
617         $(call cpq,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
618         $(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"
619         $(call cpq,doc/ecere.eCdoc,"$(DOCDIR)/")
620         $(call cpq,doc/ecereCOM.eCdoc,"$(DOCDIR)/")
621         $(call cpq,doc/EDA.eCdoc,"$(DOCDIR)/")
622 endif
623
624 ifdef OSX_TARGET
625         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
626         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
627         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
628         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
629         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
630 ifdef EDASQLiteCipher
631         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
632 endif
633 ifdef ECERE_AUDIO
634         install $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
635 endif
636         install $(OBJBINDIR)ide$(E) $(BINDIR)/
637         install $(OBJBINDIR)ear$(E) $(BINDIR)/
638         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
639         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
640         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
641         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
642         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
643 ifdef CodeGuard
644         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
645 endif
646         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
647         install -d $(DOCDIR)/
648         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"
649         install doc/ecere.eCdoc $(DOCDIR)/
650         install doc/ecereCOM.eCdoc $(DOCDIR)/
651         install doc/EDA.eCdoc $(DOCDIR)/
652         mkdir -p $(MANDIR)/man1
653         cp -pRf share/man/man1/* $(MANDIR)/man1
654         mkdir -p $(SAMPLESDIR)
655         cp -pRf samples/* $(SAMPLESDIR)
656         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
657         mkdir -p $(EXTRASDIR)
658         cp -pRf extras/* $(EXTRASDIR)
659         chmod 777 $(EXTRASDIR)/audio
660 endif
661
662 ifndef OSX_TARGET
663 ifndef WINDOWS_TARGET
664 ifdef LINUX_TARGET
665         mkdir -p $(DESTLIBDIR)/ec
666         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
667         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
668         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SOV)
669         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SOV)
670         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)
671 ifdef EDASQLiteCipher
672         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
673 endif
674 ifdef ECERE_AUDIO
675         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)
676 endif
677         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
678         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
679         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO).0
680         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO).0
681         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO).0
682 ifdef EDASQLiteCipher
683         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0
684 endif
685 ifdef ECERE_AUDIO
686         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO).0
687 endif
688         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
689         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
690         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
691         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
692         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
693         ln -sf ../$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
694         ln -sf ../$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
695 ifdef EDASQLiteCipher
696         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO)
697 endif
698 ifdef ECERE_AUDIO
699         ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO)
700 endif
701 ifndef BSD_HOST
702         install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
703         install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
704 endif
705 else
706         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
707         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
708         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/$(LP)ec$(SO)
709         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/$(LP)EDA$(SO)
710         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
711 ifdef EDASQLiteCipher
712         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
713 endif
714 endif
715 ifdef ECERE_AUDIO
716         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/$(LP)EcereAudio$(SO)
717 endif
718         install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
719         install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
720         install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
721         install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
722         install $(INSTALL_FLAGS) $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
723         install $(INSTALL_FLAGS) $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
724         install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
725 ifdef CodeGuard
726         install $(INSTALL_FLAGS) $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
727 endif
728         install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
729 ifdef BSD_HOST
730         install $(INSTALL_FLAGS) -d $(DOCDIR)
731 endif
732         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
733         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"
734         install $(INSTALL_FLAGS) -m 644 doc/ecere.eCdoc $(DOCDIR)/ecere.eCdoc
735         install $(INSTALL_FLAGS) -m 644 doc/ecereCOM.eCdoc $(DOCDIR)/ecereCOM.eCdoc
736         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
737         mkdir -p $(MANDIR)/man1
738         cp -pRf share/man/man1/* $(MANDIR)/man1
739         mkdir -p $(SAMPLESDIR)
740         cp -pRf samples/* $(SAMPLESDIR)
741         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
742         mkdir -p $(EXTRASDIR)
743         cp $(CPFLAGS) extras/* $(EXTRASDIR)
744         chmod 777 $(EXTRASDIR)/audio
745 ifdef DEBIAN_PACKAGE
746         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
747         install $(INSTALL_FLAG) -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
748         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
749         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
750         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
751         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
752         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
753         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
754         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
755         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
756         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
757         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecc0
758         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecc0/
759         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
760         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
761         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
762         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
763         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
764         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
765         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecereaudio0
766         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecereaudio0/
767 endif
768 endif
769 endif
770
771 uninstall:
772         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
773         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
774         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO)")
775         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
776         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
777 ifdef EDASQLiteCipher
778         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
779 endif
780 ifdef ECERE_AUDIO
781         $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
782 endif
783         $(call rmq,"$(BINDIR)/ide$(E)")
784         $(call rmq,"$(BINDIR)/ear$(E)")
785         $(call rmq,"$(BINDIR)/ecc$(E)")
786         $(call rmq,"$(BINDIR)/ecp$(E)")
787         $(call rmq,"$(BINDIR)/ecs$(E)")
788         $(call rmq,"$(BINDIR)/epj2make$(E)")
789         $(call rmq,"$(BINDIR)/documentor$(E)")
790 ifdef CodeGuard
791         $(call rmq,"$(BINDIR)/CodeGuard$(E)")
792 endif
793         $(call rmq,"$(DESTSLIBDIR)/libecereVanilla$(A)")
794         $(call rmq,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
795         $(call rmq,"$(DOCDIR)/ecere.eCdoc")
796         $(call rmq,"$(DOCDIR)/ecereCOM.eCdoc")
797         $(call rmq,"$(DOCDIR)/EDA.eCdoc")
798 ifdef LINUX_TARGET
799         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
800         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
801         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO).0")
802         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO).0")
803         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO).0")
804 ifdef EDASQLiteCipher
805         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0")
806 endif
807         $(call rmq,"$(DESTLIBDIR)/$(LP)EcereaAudio$(SO).0")
808         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
809         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
810         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SOV)")
811         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SOV)")
812         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SOV)")
813 ifdef EDASQLiteCipher
814         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)")
815 endif
816 ifdef ECERE_AUDIO
817         $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SOV)")
818 endif
819         $(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
820         $(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
821 endif
822         $(call rmdirq,"$(BINDIR)/")
823         $(call rmdirq,"$(DESTLIBDIR)/")
824         $(call rmdirq,"$(DESTSLIBDIR)/")
825         $(call rmdirq,"$(DOCDIR)/")
826 ifdef WINDOWS_TARGET
827         $(call rmdirq,"$(DESTDIR)/")
828 endif
829         @$(call echo,The Ecere SDK has been uninstalled.)
830
831 regenbootstrap: update_ecere update_libec update_ecp update_ecc update_ecs
832         @echo Bootstrap regenerated.
833
834 updatebootstrap: regenbootstrap
835         @echo Copying files...
836         $(call cpq,ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecere/bootstrap)
837         $(call cpq,compiler/libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/libec/bootstrap)
838         $(call cpq,compiler/ecp/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecp/bootstrap)
839         $(call cpq,compiler/ecc/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecc/bootstrap)
840         $(call cpq,compiler/ecs/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/*.c,compiler/bootstrap/ecs/bootstrap)
841         @echo Bootstrap updated.
842
843 update_ecere:
844         @echo Regenerating ecere bootstrapper...
845         cd ecere && $(MAKE) -f Makefile.bootstrap clean
846         cd ecere && $(MAKE) -f Makefile.bootstrap
847
848 update_libec:
849         @echo Regenerating ec bootstrapper...
850         cd compiler/libec && $(MAKE) -f Makefile.bootstrap clean
851         cd compiler/libec && $(MAKE) -f Makefile.bootstrap
852
853 update_ecp:
854         @echo Regenerating ecp bootstrapper...
855         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap clean
856         cd compiler/ecp && $(MAKE) -f Makefile.bootstrap
857
858 update_ecc:
859         @echo Regenerating ecc bootstrapper...
860         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap clean
861         cd compiler/ecc && $(MAKE) -f Makefile.bootstrap
862
863 update_ecs:
864         @echo Regenerating ecs bootstrapper...
865         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap clean
866         cd compiler/ecs && $(MAKE) -f Makefile.bootstrap
867
868 troubleshoot:
869         @$(call echo,Printing values of some variables.)
870         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
871         @$(call echo,TARGET_PLATFORM=$(TARGET_PLATFORM))
872         @$(call echo,PLATFORM=$(PLATFORM))
873         @$(call echo,LINUX_HOST=$(LINUX_HOST))
874         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
875         @$(call echo,OSX_HOST=$(OSX_HOST))
876         @$(call echo,OSX_TARGET=$(OSX_TARGET))
877         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
878         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
879         @$(call echo,BSD_HOST=$(BSD_HOST))
880         @$(call echo,BSD_TARGET=$(BSD_TARGET))
881         @$(call echo,CCACHE=$(CCACHE))
882         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
883         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
884         @$(call echo,DISTCC=$(DISTCC))
885         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
886         @$(call echo,CC=$(CC))
887         @$(call echo,CPP=$(CPP))
888         @$(call echo,ECP=$(ECP))
889         @$(call echo,ECC=$(ECC))
890         @$(call echo,ECS=$(ECS))
891         @$(call echo,EAR=$(EAR))
892         @$(call echo,AS=$(AS))
893         @$(call echo,LD=$(LD))
894         @$(call echo,AR=$(AR))
895         @$(call echo,STRIP=$(STRIP))
896         @$(call echo,UPX=$(UPX))
897         @$(call echo,TARGET_ARCH=$(TARGET_ARCH))
898         @$(call echo,DESTDIR=$(DESTDIR))
899         @$(call echo,PREFIXLIBDIR=$(PREFIXLIBDIR))
900         @$(call echo,ARCH=$(ARCH))
901         @$(call echo,ARCH_FLAGS=$(ARCH_FLAGS))
902         @$(call echo,GIT_REPOSITORY=$(GIT_REPOSITORY))
903         @$(call echo,DIR_VER=$(DIR_VER))
904         @$(call echo,REPOSITORY_VER=$(REPOSITORY_VER))
905         @$(call echo,CPPFLAGS=$(CPPFLAGS))