636fe1c1a412e10717d831faab192d89628fec0b
[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
2 .SILENT:
3
4 include crossplatform.mk
5 include default.cf
6
7 ifdef BSD_HOST
8 INSTALL_FLAGS :=
9 CPFLAGS := -pRf
10 else
11 INSTALL_FLAGS := -D
12 CPFLAGS := -dpRf
13 endif
14
15 XBOOT := $(if $(CROSS_TARGET),GCC_PREFIX= TARGET_PLATFORM=$(HOST_PLATFORM) PLATFORM=$(HOST_PLATFORM),)
16
17 LIBVER := .0.44
18
19 ifdef WINDOWS_HOST
20 HOST_SOV := $(HOST_SO)
21 else
22 HOST_SOV := $(HOST_SO)$(LIBVER)
23 endif
24
25 ifdef WINDOWS_TARGET
26
27 SOV := $(SO)
28
29 ifndef DESTDIR
30
31 ifeq "$(HOST_ARCH)" "X64"
32    ifeq "$(wildcard $(SystemDrive)/Program Files )" ""
33       export DESTDIR=$(SystemDrive)/Program Files/Ecere SDK
34    else
35       export DESTDIR=$(SystemDrive)/Ecere SDK
36    endif
37 else
38    ifdef ProgramFiles(x86)
39       export DESTDIR=${ProgramFiles(x86)}/Ecere SDK
40    else
41       ifdef ProgramFiles
42          export DESTDIR=$(ProgramFiles)/Ecere SDK
43       else
44          export DESTDIR=$(SystemDrive)/Ecere SDK
45       endif
46    endif
47 endif
48
49 endif # DESTDIR
50
51 export prefix=
52
53 ifndef DOCDIR
54 export DOCDIR=$(DESTDIR)$(prefix)/doc
55 endif
56
57 ifndef BINDIR
58 export BINDIR=$(DESTDIR)$(prefix)/bin
59 endif
60
61 ifndef LIBDIR
62 export LIBDIR=$(BINDIR)
63 endif
64 export DESTLIBDIR=$(LIBDIR)
65
66 ifndef SLIBDIR
67 export SLIBDIR=$(DESTDIR)$(prefix)/lib
68 endif
69 export DESTSLIBDIR=$(SLIBDIR)
70
71 ifndef SAMPLESDIR
72 export SAMPLESDIR=$(DESTDIR)$(prefix)/samples
73 endif
74
75 ifndef EXTRASDIR
76 export EXTRASDIR=$(DESTDIR)$(prefix)/extras
77 endif
78
79
80 else # WINDOWS_TARGET
81
82 ifdef OSX_TARGET
83 # TODO: OSX soname
84 SOV := $(SO)
85 else
86 SOV := $(SO)$(LIBVER)
87 endif
88
89 ifndef DESTDIR
90 export DESTDIR=
91 endif
92
93 ifndef prefix
94 export prefix=/usr
95 endif
96
97 ifndef DOCDIR
98 export DOCDIR=$(DESTDIR)$(prefix)/share/ecere/doc
99 endif
100
101 ifndef MANDIR
102 export MANDIR=$(DESTDIR)$(prefix)/share/man/
103 endif
104
105 ifndef BINDIR
106 export BINDIR=$(DESTDIR)$(prefix)/bin
107 endif
108
109 HOSTTYPE := $(shell uname -m)
110
111 ifdef LIBDIR
112 export PREFIXLIBDIR=$(LIBDIR)
113 else
114
115 ifeq "$(HOSTTYPE)" "x86_64"
116 ifdef OSX_HOST
117 export PREFIXLIBDIR=$(prefix)/lib
118 else
119 export PREFIXLIBDIR=$(prefix)/lib32
120 endif
121 else
122 export PREFIXLIBDIR=$(prefix)/lib
123 endif
124
125 endif
126
127 DESTLIBDIR := $(DESTDIR)$(PREFIXLIBDIR)
128 ifdef SLIBDIR
129 DESTSLIBDIR := $(DESTDIR)$(SLIBDIR)
130 else
131 DESTSLIBDIR := $(DESTLIBDIR)
132 endif
133
134 ifndef SAMPLESDIR
135 export SAMPLESDIR=$(DESTDIR)$(prefix)/share/ecere/samples
136 endif
137
138 ifndef EXTRASDIR
139 export EXTRASDIR=$(DESTDIR)$(prefix)/share/ecere/extras
140 endif
141
142
143 endif
144
145 OBJDIR := obj$(OBJALT)/
146 OBJBINDIR := $(OBJDIR)$(PLATFORM)/bin/
147 OBJLIBDIR := $(OBJDIR)$(PLATFORM)/lib/
148 XOBJDIR := obj$(OBJALT)/
149 XOBJBINDIR := $(OBJDIR)$(HOST_PLATFORM)/bin/
150 XOBJLIBDIR := $(OBJDIR)$(HOST_PLATFORM)/lib/
151
152 all: prepbinaries ide epj2make documentor eda codeguard
153         @$(call echo,The Ecere SDK is fully built.)
154
155 outputdirs:
156         $(if $(wildcard $(OBJDIR)),,$(call mkdirq,$(OBJDIR)))
157         $(if $(wildcard $(OBJBINDIR)),,$(call mkdirq,$(OBJBINDIR)))
158         $(if $(wildcard $(OBJLIBDIR)),,$(call mkdirq,$(OBJLIBDIR)))
159 ifdef CROSS_TARGET
160         $(if $(wildcard $(XOBJDIR)),,$(call mkdirq,$(XOBJDIR)))
161         $(if $(wildcard $(XOBJBINDIR)),,$(call mkdirq,$(XOBJBINDIR)))
162         $(if $(wildcard $(XOBJLIBDIR)),,$(call mkdirq,$(XOBJLIBDIR)))
163 endif
164
165 bootstrap: outputdirs
166         cd compiler && $(MAKE) $(XBOOT) bootstrap
167
168 deps:
169 ifdef CROSS_TARGET
170         @$(call echo,Building dependencies (host)...)
171         cd deps && $(MAKE) $(XBOOT)
172 endif
173         @$(call echo,Building dependencies...)
174         cd deps && $(MAKE)
175
176 ecere: bootstrap deps
177 ifdef CROSS_TARGET
178         @$(call echo,Building 2nd stage ecere (host)...)
179 else
180         @$(call echo,Building 2nd stage ecere...)
181 endif
182         cd ecere && $(MAKE) nores $(XBOOT)
183         cd ear && $(MAKE) nores $(XBOOT)
184         cd ecere && $(MAKE) cleaneceretarget
185 ifdef CROSS_TARGET
186         @$(call echo,Building 2nd stage ecere...)
187 endif
188         cd ecere && $(MAKE)
189
190 ecerecom: bootstrap
191 ifdef CROSS_TARGET
192         @$(call echo,Building eC Core Runtime (host)...)
193         cd ecere && $(MAKE) -f Makefile.ecereCOM $(XBOOT)
194 endif
195         @$(call echo,Building eC Core Runtime...)
196         cd ecere && $(MAKE) -f Makefile.ecereCOM
197
198 ecerevanilla: bootstrap
199         @$(call echo,Building Vanilla Ecere...)
200         cd ecere && $(MAKE) -f Makefile.vanilla
201
202 ear: ecere ecerevanilla
203         @$(call echo,Building ear...)
204         cd ear && cd cmd && $(MAKE) cleantarget
205         cd ear && $(MAKE)
206
207 compiler: ecere ear
208 ifdef CROSS_TARGET
209         @$(call echo,Building 2nd stage compiler (host))
210         cd compiler && $(MAKE) $(XBOOT)
211 endif
212         @$(call echo,Building 2nd stage compiler)
213         cd compiler && $(MAKE)
214
215 prepbinaries: compiler ecerecom
216         @$(call echo,Enabling 2nd stage binaries...)
217 ifdef WINDOWS_TARGET
218         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV),$(OBJBINDIR))
219         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV),$(OBJBINDIR))
220         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV),$(OBJBINDIR))
221 endif
222 ifdef LINUX_TARGET
223         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV),$(OBJLIBDIR))
224         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
225         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV),$(OBJLIBDIR))
226         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
227         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
228         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
229         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
230         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
231         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
232 endif
233 ifndef WINDOWS_TARGET
234 ifndef LINUX_TARGET
235         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SO),$(OBJLIBDIR))
236         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
237         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SO),$(OBJLIBDIR))
238 endif
239 endif
240         $(call cpq,ear/cmd/obj/release.$(PLATFORM)/ear$(E),$(OBJBINDIR))
241         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)/ecc$(E),$(OBJBINDIR))
242         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)/ecp$(E),$(OBJBINDIR))
243         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)/ecs$(E),$(OBJBINDIR))
244
245 ifdef CROSS_TARGET
246
247 ifdef WINDOWS_HOST
248         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJBINDIR))
249         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJBINDIR))
250         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ec$(HOST_SOV),$(XOBJBINDIR))
251 endif
252 ifdef WINDOWS_HOST
253         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ecere$(HOST_SOV),$(XOBJLIBDIR))
254         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)/$(HOST_LP)ecereCOM$(HOST_SOV),$(XOBJLIBDIR))
255         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ec$(HOST_SOV),$(XOBJLIBDIR))
256         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO).0
257         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO).0
258         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO).0
259         ln -sf $(HOST_LP)ecere$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecere$(HOST_SO)
260         ln -sf $(HOST_LP)ecereCOM$(HOST_SOV) $(XOBJLIBDIR)$(LP)ecereCOM$(HOST_SO)
261         ln -sf $(HOST_LP)ec$(HOST_SOV) $(XOBJLIBDIR)$(LP)ec$(HOST_SO)
262 endif
263 ifndef WINDOWS_HOST
264 ifndef LINUX_HOST
265         $(call cpq,ecere/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ecere$(HOST_SO),$(XOBJLIBDIR))
266         $(call cpq,ecere/obj/ecereCOM.release.$(HOST_PLATFORM)/$(HOST_LP)ecereCOM$(HOST_SO),$(XOBJLIBDIR))
267         $(call cpq,compiler/libec/obj/release.$(HOST_PLATFORM)/$(HOST_LP)ec$(HOST_SO),$(XOBJLIBDIR))
268 endif
269 endif
270         $(call cpq,ear/cmd/obj/release.$(HOST_PLATFORM)/ear$(HOST_E),$(XOBJBINDIR))
271         $(call cpq,compiler/ecc/obj/release.$(HOST_PLATFORM)/ecc$(HOST_E),$(XOBJBINDIR))
272         $(call cpq,compiler/ecp/obj/release.$(HOST_PLATFORM)/ecp$(HOST_E),$(XOBJBINDIR))
273         $(call cpq,compiler/ecs/obj/release.$(HOST_PLATFORM)/ecs$(HOST_E),$(XOBJBINDIR))
274
275 endif
276
277 epj2make: prepbinaries
278         @$(call echo,Building epj2make...)
279         cd epj2make && $(MAKE)
280
281 ide: prepbinaries
282         @$(call echo,Building IDE...)
283         cd ide && $(MAKE)
284
285 documentor: prepbinaries
286         @$(call echo,Building Documentor...)
287         cd documentor && $(MAKE)
288
289 codeguard: prepcodeguard
290 ifdef CodeGuard
291         @$(call echo,Building CodeGuard client...)
292         cd codeGuard && $(MAKE)
293 endif
294
295 prepcodeguard: eda
296 ifdef CodeGuard
297 ifdef WINDOWS_TARGET
298         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
299 endif
300
301 ifdef LINUX_TARGET
302         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
303         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
304         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
305 endif
306
307 ifndef WINDOWS_TARGET
308 ifndef LINUX_TARGET
309         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
310 endif
311 endif
312 endif
313
314 eda: prepbinaries
315         @$(call echo,Building EDA...)
316         cd eda && $(MAKE)
317
318 emptyoutput: outputdirs
319         $(call rmq,$(OBJLIBDIR)libecereVanilla$(A))
320         $(call rmq,$(SODESTDIR)$(LP)ecere$(SO))
321         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO))
322         $(call rmq,$(SODESTDIR)$(LP)ec$(SO))
323         $(call rmq,$(SODESTDIR)$(LP)EDA$(SO))
324         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO))
325 ifdef EDASQLiteCipher
326         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
327 endif
328 ifdef LINUX_TARGET
329         $(call rmq,$(SODESTDIR)$(LP)ecere$(SO).0)
330         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
331         $(call rmq,$(SODESTDIR)$(LP)ec$(SO).0)
332         $(call rmq,$(SODESTDIR)$(LP)EDA$(SO).0)
333         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SO).0)
334 ifdef EDASQLiteCipher
335         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
336 endif
337         $(call rmq,$(SODESTDIR)$(LP)ecere$(SOV))
338         $(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SOV))
339         $(call rmq,$(SODESTDIR)$(LP)ec$(SOV))
340         $(call rmq,$(SODESTDIR)$(LP)EDA$(SOV))
341         $(call rmq,$(SODESTDIR)$(LP)EDASQLite$(SOV))
342 ifdef EDASQLiteCipher
343         $(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
344 endif
345 endif   
346         $(call rmq,$(OBJBINDIR)ear$(E))
347         $(call rmq,$(OBJBINDIR)ecc$(E))
348         $(call rmq,$(OBJBINDIR)ecp$(E))
349         $(call rmq,$(OBJBINDIR)ecs$(E))
350         $(call rmq,$(OBJBINDIR)epj2make$(E))
351         $(call rmq,$(OBJBINDIR)ide$(E))
352         $(call rmq,$(OBJBINDIR)documentor$(E))
353 ifdef EDASQLiteCipher
354         $(call rmq,$(OBJBINDIR)CodeGuard$(E))
355 endif
356
357 clean: emptyoutput
358         cd deps && $(MAKE) clean
359         cd ecere && $(MAKE) clean
360         cd compiler && $(MAKE) clean
361         cd ear && $(MAKE) clean
362         cd epj2make && $(MAKE) clean
363         cd ide && $(MAKE) clean
364         cd documentor && $(MAKE) clean
365 ifdef CodeGuard
366         cd codeGuard && $(MAKE) clean
367 endif
368         cd eda && $(MAKE) clean
369         @$(call echo,Done.)
370
371 realclean: outputdirs
372         cd deps && $(MAKE) realclean
373         cd ecere && $(MAKE) realclean
374         cd compiler && $(MAKE) realclean
375         cd ear && $(MAKE) realclean
376         cd epj2make && $(MAKE) realclean
377         cd ide && $(MAKE) realclean
378         cd documentor && $(MAKE) realclean
379 ifdef CodeGuard
380         cd codeGuard && $(MAKE) realclean
381 endif
382         cd eda && $(MAKE) realclean
383         $(call rmrq,obj/$(PLATFORM)/)
384         @$(call echo,Done.)
385
386 distclean: outputdirs
387         cd deps && $(MAKE) distclean
388         cd ecere && $(MAKE) distclean
389         cd compiler && $(MAKE) distclean
390         cd ear && $(MAKE) distclean
391         cd epj2make && $(MAKE) distclean
392         cd ide && $(MAKE) distclean
393         cd documentor && $(MAKE) distclean
394 ifdef CodeGuard
395         cd codeGuard && $(MAKE) distclean
396 endif
397         cd eda && $(MAKE) distclean
398         $(call rmrq,obj/)
399         @$(call echo,Done.)
400
401 DOC = doc/ecere.eCdoc doc/ecereCOM.eCdoc doc/EDA.eCdoc
402
403 BINARIES = \
404         ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV) \
405         ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV) \
406         ecere/obj/vanilla.$(PLATFORM)/libecereVanilla$(A) \
407         compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV) \
408         compiler/ecp/obj/release.$(PLATFORM)/ecp$(E) \
409         compiler/ecc/obj/release.$(PLATFORM)/ecc$(E) \
410         compiler/ecs/obj/release.$(PLATFORM)/ecs$(E) \
411         ear/cmd/obj/release.$(PLATFORM)/ear$(E) \
412         epj2make/obj/release.$(PLATFORM)/epj2make$(E) \
413         documentor/obj/release.$(PLATFORM)/documentor$(E) \
414         ide/obj/release.$(PLATFORM)/ide$(E) \
415         eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV) \
416         eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SOV)
417
418 ifdef CodeGuard
419 BINARIES += codeGuard/obj/release.$(PLATFORM)/CodeGuard$(E)
420 endif
421
422 ifdef EDASQLiteCipher
423 BINARIES += eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SOV)
424 endif
425
426 # Making sure everything is in $(OBJBINDIR) and $(OBJLIBDIR)
427 # Shared Libraries (in $(OBJBINDIR) on Windows and $(OBJLIBDIR) otherwise)
428 # Symlinks for libs on Linux
429 # Binaries (always in $(OBJBINDIR)) and Static Libraries (always in $(OBJLIBDIR))
430 prepinstall: $(DOC) $(BINARIES) outputdirs
431
432 ifdef WINDOWS_TARGET
433         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SO),$(OBJBINDIR))
434         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SO),$(OBJBINDIR))
435         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SO),$(OBJBINDIR))
436         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJBINDIR))
437         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
438 ifdef EDASQLiteCipher
439         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
440 endif
441 endif
442
443 ifdef LINUX_TARGET
444         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SOV),$(OBJLIBDIR))
445         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SOV),$(OBJLIBDIR))
446         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SOV),$(OBJLIBDIR))
447         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SOV),$(OBJLIBDIR))
448         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
449 ifdef EDASQLiteCipher
450         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
451 endif
452         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO).0
453         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO).0
454         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO).0
455         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO).0
456         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO).0
457 ifdef EDASQLiteCipher
458         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO).0
459 endif
460         ln -sf $(LP)ecere$(SOV) $(OBJLIBDIR)$(LP)ecere$(SO)
461         ln -sf $(LP)ecereCOM$(SOV) $(OBJLIBDIR)$(LP)ecereCOM$(SO)
462         ln -sf $(LP)ec$(SOV) $(OBJLIBDIR)$(LP)ec$(SO)
463         ln -sf $(LP)EDA$(SOV) $(OBJLIBDIR)$(LP)EDA$(SO)
464         ln -sf $(LP)EDASQLite$(SOV) $(OBJLIBDIR)$(LP)EDASQLite$(SO)
465 ifdef EDASQLiteCipher
466         ln -sf $(LP)EDASQLiteCipher$(SOV) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO)
467 endif
468 endif
469
470 ifndef WINDOWS_TARGET
471 ifndef LINUX_TARGET
472         $(call cpq,ecere/obj/release.$(PLATFORM)/$(LP)ecere$(SO),$(OBJLIBDIR))
473         $(call cpq,ecere/obj/ecereCOM.release.$(PLATFORM)/$(LP)ecereCOM$(SO),$(OBJLIBDIR))
474         $(call cpq,compiler/libec/obj/release.$(PLATFORM)/$(LP)ec$(SO),$(OBJLIBDIR))
475         $(call cpq,eda/libeda/obj/release.$(PLATFORM)/$(LP)EDA$(SO),$(OBJLIBDIR))
476         $(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
477 ifdef EDASQLiteCipher
478         $(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
479 endif
480 endif
481 endif
482
483         $(call cpq,ide/obj/release.$(PLATFORM)/ide$(E),$(OBJBINDIR))
484         $(call cpq,ear/cmd/obj/release.$(PLATFORM)/ear$(E),$(OBJBINDIR))
485         $(call cpq,compiler/ecc/obj/release.$(PLATFORM)/ecc$(E),$(OBJBINDIR))
486         $(call cpq,compiler/ecp/obj/release.$(PLATFORM)/ecp$(E),$(OBJBINDIR))
487         $(call cpq,compiler/ecs/obj/release.$(PLATFORM)/ecs$(E),$(OBJBINDIR))
488         $(call cpq,epj2make/obj/release.$(PLATFORM)/epj2make$(E),$(OBJBINDIR))
489         $(call cpq,documentor/obj/release.$(PLATFORM)/documentor$(E),$(OBJBINDIR))
490 ifdef CodeGuard
491         $(call cpq,codeGuard/obj/release.$(PLATFORM)/CodeGuard$(E),$(OBJBINDIR))
492 endif
493         $(call cpq,ecere/obj/vanilla.$(PLATFORM)/libecereVanilla$(A),$(OBJLIBDIR))
494
495 #TODO: Samples?
496 install: prepinstall actualinstall
497         @$(call echo,The Ecere SDK has been installed.)
498
499 copyonlyinstall: actualinstall
500         @$(call echo,The Ecere SDK has been installed. copyonlyinstall.)
501
502 actualinstall:
503 ifdef WINDOWS_TARGET
504         $(call mkdirq,"$(BINDIR)/")
505         $(call mkdirq,"$(DESTSLIBDIR)/")
506         $(call mkdirq,"$(DOCDIR)/")
507         $(call cpq,$(OBJBINDIR)$(LP)ecere$(SO),"$(DESTLIBDIR)/")
508         $(call cpq,$(OBJBINDIR)$(LP)ecereCOM$(SO),"$(DESTLIBDIR)/")
509         $(call cpq,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
510         $(call cpq,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
511         $(call cpq,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
512 ifdef EDASQLiteCipher
513         $(call cpq,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
514 endif
515         $(call cpq,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
516         $(call cpq,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
517         $(call cpq,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
518         $(call cpq,$(OBJBINDIR)ecp$(E),"$(BINDIR)/")
519         $(call cpq,$(OBJBINDIR)ecs$(E),"$(BINDIR)/")
520         $(call cpq,$(OBJBINDIR)epj2make$(E),"$(BINDIR)/")
521         $(call cpq,$(OBJBINDIR)documentor$(E),"$(BINDIR)/")
522 ifdef CodeGuard
523         $(call cpq,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
524 endif
525         $(call cpq,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
526         $(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"
527         $(call cpq,doc/ecere.eCdoc,"$(DOCDIR)/")
528         $(call cpq,doc/ecereCOM.eCdoc,"$(DOCDIR)/")
529         $(call cpq,doc/EDA.eCdoc,"$(DOCDIR)/")
530 endif
531
532 ifdef OSX_TARGET
533         install $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/
534         install $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/
535         install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
536         install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
537         install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
538 ifdef EDASQLiteCipher
539         install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
540 endif
541         install $(OBJBINDIR)ide$(E) $(BINDIR)/
542         install $(OBJBINDIR)ear$(E) $(BINDIR)/
543         install $(OBJBINDIR)ecc$(E) $(BINDIR)/
544         install $(OBJBINDIR)ecp$(E) $(BINDIR)/
545         install $(OBJBINDIR)ecs$(E) $(BINDIR)/
546         install $(OBJBINDIR)epj2make$(E) $(BINDIR)/
547         install $(OBJBINDIR)documentor$(E) $(BINDIR)/
548 ifdef CodeGuard
549         install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
550 endif
551         install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
552         install -d $(DOCDIR)/
553         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"
554         install doc/ecere.eCdoc $(DOCDIR)/
555         install doc/ecereCOM.eCdoc $(DOCDIR)/
556         install doc/EDA.eCdoc $(DOCDIR)/
557         mkdir -p $(MANDIR)/man1
558         cp -pRf share/man/man1/* $(MANDIR)/man1
559         mkdir -p $(SAMPLESDIR)
560         cp -pRf samples/* $(SAMPLESDIR)
561         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
562         mkdir -p $(EXTRASDIR)
563         cp -pRf extras/* $(EXTRASDIR)
564         chmod 777 $(EXTRASDIR)/audio
565 endif
566
567 ifndef OSX_TARGET
568 ifndef WINDOWS_TARGET
569 ifdef LINUX_TARGET
570         mkdir -p $(DESTLIBDIR)/ec
571         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
572         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
573         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SOV)
574         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SOV)
575         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SOV)
576 ifdef EDASQLiteCipher
577         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)
578 endif
579         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
580         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
581         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO).0
582         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SO).0
583         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SO).0
584 ifdef EDASQLiteCipher
585         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0
586 endif
587         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
588         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
589         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
590         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SO)
591         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
592         ln -sf $(PREFIXLIBDIR)/$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
593         ln -sf $(PREFIXLIBDIR)/$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
594 #       ln -sf $(PREFIXLIBDIR)/ec/$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
595         ln -sf $(PREFIXLIBDIR)/$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
596         ln -sf $(PREFIXLIBDIR)/$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
597 ifdef EDASQLiteCipher
598         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
599 endif
600 ifndef BSD_HOST
601         install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
602         install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
603 endif
604 else
605         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
606         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
607         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/$(LP)ec$(SO)
608         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/$(LP)EDA$(SO)
609         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
610 ifdef EDASQLiteCipher
611         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
612 endif
613 endif
614         install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
615         install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
616         install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
617         install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
618         install $(INSTALL_FLAGS) $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
619         install $(INSTALL_FLAGS) $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
620         install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
621 ifdef CodeGuard
622         install $(INSTALL_FLAGS) $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
623 endif
624         install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
625         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
626         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"
627         install $(INSTALL_FLAGS) -m 644 doc/ecere.eCdoc $(DOCDIR)/ecere.eCdoc
628         install $(INSTALL_FLAGS) -m 644 doc/ecereCOM.eCdoc $(DOCDIR)/ecereCOM.eCdoc
629         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
630         mkdir -p $(MANDIR)/man1
631         cp -pRf share/man/man1/* $(MANDIR)/man1
632         mkdir -p $(SAMPLESDIR)
633         cp -pRf samples/* $(SAMPLESDIR)
634         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
635         mkdir -p $(EXTRASDIR)
636         cp $(CPFLAGS) extras/* $(EXTRASDIR)
637         chmod 777 $(EXTRASDIR)/audio
638 ifdef DEBIAN_PACKAGE
639         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
640         install $(INSTALL_FLAG) -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
641         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
642         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
643         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
644         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
645         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
646         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
647         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
648         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
649         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
650         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecc0
651         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecc0/
652         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
653         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
654         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
655         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
656         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
657         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
658 endif
659 endif
660 endif
661
662 uninstall:
663         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
664         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
665         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO)")
666         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
667         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
668 ifdef EDASQLiteCipher
669         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
670 endif
671         $(call rmq,"$(BINDIR)/ide$(E)")
672         $(call rmq,"$(BINDIR)/ear$(E)")
673         $(call rmq,"$(BINDIR)/ecc$(E)")
674         $(call rmq,"$(BINDIR)/ecp$(E)")
675         $(call rmq,"$(BINDIR)/ecs$(E)")
676         $(call rmq,"$(BINDIR)/epj2make$(E)")
677         $(call rmq,"$(BINDIR)/documentor$(E)")
678 ifdef CodeGuard
679         $(call rmq,"$(BINDIR)/CodeGuard$(E)")
680 endif
681         $(call rmq,"$(DESTSLIBDIR)/libecereVanilla$(A)")
682         $(call rmq,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
683         $(call rmq,"$(DOCDIR)/ecere.eCdoc")
684         $(call rmq,"$(DOCDIR)/ecereCOM.eCdoc")
685         $(call rmq,"$(DOCDIR)/EDA.eCdoc")
686 ifdef LINUX_TARGET
687         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
688         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
689         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO).0")
690         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO).0")
691         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO).0")
692 ifdef EDASQLiteCipher
693         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0")
694 endif
695         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
696         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
697         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SOV)")
698         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SOV)")
699         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SOV)")
700 ifdef EDASQLiteCipher
701         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)")
702 endif
703         $(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
704         $(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
705 endif
706         $(call rmdirq,"$(BINDIR)/")
707         $(call rmdirq,"$(DESTLIBDIR)/")
708         $(call rmdirq,"$(DESTSLIBDIR)/")
709         $(call rmdirq,"$(DOCDIR)/")
710 ifdef WINDOWS_TARGET
711         $(call rmdirq,"$(DESTDIR)/")
712 endif
713         @$(call echo,The Ecere SDK has been uninstalled.)
714
715 troubleshoot:
716         @$(call echo,Printing values of some variables.)
717         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
718         @$(call echo,TARGET_PLATFORM=$(HOST_PLATFORM))
719         @$(call echo,PLATFORM=$(PLATFORM))
720         @$(call echo,LINUX_HOST=$(LINUX_HOST))
721         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
722         @$(call echo,OSX_HOST=$(OSX_HOST))
723         @$(call echo,OSX_TARGET=$(OSX_TARGET))
724         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
725         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
726         @$(call echo,BSD_HOST=$(BSD_HOST))
727         @$(call echo,BSD_TARGET=$(BSD_TARGET))
728         @$(call echo,CCACHE=$(CCACHE))
729         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
730         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
731         @$(call echo,DISTCC=$(DISTCC))
732         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
733         @$(call echo,CC=$(CC))
734         @$(call echo,CPP=$(CPP))
735         @$(call echo,ECP=$(ECP))
736         @$(call echo,ECC=$(ECC))
737         @$(call echo,ECS=$(ECS))
738         @$(call echo,EAR=$(EAR))
739         @$(call echo,AS=$(AS))
740         @$(call echo,LD=$(LD))
741         @$(call echo,AR=$(AR))
742         @$(call echo,STRIP=$(STRIP))
743         @$(call echo,UPX=$(UPX))
744         @$(call echo,HOST_ARCH=$(HOST_ARCH))
745         @$(call echo,DESTDIR=$(DESTDIR))