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