buildsystem,epj2make,ide,tarball; added cleantarget and adjusted realclean and distcl...
[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 $(SAMPLESDIR)
550         cp -pRf samples/* $(SAMPLESDIR)
551         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
552         mkdir -p $(EXTRASDIR)
553         cp -pRf extras/* $(EXTRASDIR)
554         chmod 777 $(EXTRASDIR)/audio
555 endif
556
557 ifndef OSX_TARGET
558 ifndef WINDOWS_TARGET
559 ifdef LINUX_TARGET
560         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SOV)
561         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SOV)
562         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/$(LP)ec$(SOV)
563         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SOV)
564         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SOV)
565 ifdef EDASQLiteCipher
566         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)
567 endif
568         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
569         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
570         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/$(LP)ec$(SO).0
571         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SO).0
572         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SO).0
573 ifdef EDASQLiteCipher
574         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0
575 endif
576         ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
577         ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
578         ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/$(LP)ec$(SO)
579         ln -sf $(LP)EDA$(SOV) $(DESTLIBDIR)/$(LP)EDA$(SO)
580         ln -sf $(LP)EDASQLite$(SOV) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
581         mkdir -p $(DESTLIBDIR)/ec
582         ln -sf $(PREFIXLIBDIR)/$(LP)ecere$(SOV) $(DESTLIBDIR)/ec/$(LP)ecere$(SO)
583         ln -sf $(PREFIXLIBDIR)/$(LP)ecereCOM$(SOV) $(DESTLIBDIR)/ec/$(LP)ecereCOM$(SO)
584         ln -sf $(PREFIXLIBDIR)/$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
585         ln -sf $(PREFIXLIBDIR)/$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SO)
586         ln -sf $(PREFIXLIBDIR)/$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SO)
587 ifdef EDASQLiteCipher
588         ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
589 endif
590 ifndef BSD_HOST
591         install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
592         install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
593 endif
594 else
595         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecere$(SO) $(DESTLIBDIR)/$(LP)ecere$(SO)
596         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ecereCOM$(SO) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
597         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/$(LP)ec$(SO)
598         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/$(LP)EDA$(SO)
599         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/$(LP)EDASQLite$(SO)
600 ifdef EDASQLiteCipher
601         install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
602 endif
603 endif
604         install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
605         install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
606         install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
607         install $(INSTALL_FLAGS) $(OBJBINDIR)ecp$(E) $(BINDIR)/ecp$(E)
608         install $(INSTALL_FLAGS) $(OBJBINDIR)ecs$(E) $(BINDIR)/ecs$(E)
609         install $(INSTALL_FLAGS) $(OBJBINDIR)epj2make$(E) $(BINDIR)/epj2make$(E)
610         install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(E) $(BINDIR)/documentor$(E)
611 ifdef CodeGuard
612         install $(INSTALL_FLAGS) $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/CodeGuard$(E)
613 endif
614         install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
615         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
616         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"
617         install $(INSTALL_FLAGS) -m 644 doc/ecere.eCdoc $(DOCDIR)/ecere.eCdoc
618         install $(INSTALL_FLAGS) -m 644 doc/ecereCOM.eCdoc $(DOCDIR)/ecereCOM.eCdoc
619         install $(INSTALL_FLAGS) -m 644 doc/EDA.eCdoc $(DOCDIR)/EDA.eCdoc
620         mkdir -p $(MANDIR)/man1
621         cp -pRf share/man/man1/* $(MANDIR)/man1
622         mkdir -p $(SAMPLESDIR)
623         cp -pRf samples/* $(SAMPLESDIR)
624         find $(SAMPLESDIR) -type d -exec chmod 777 {} \;
625         mkdir -p $(EXTRASDIR)
626         cp $(CPFLAGS) extras/* $(EXTRASDIR)
627         chmod 777 $(EXTRASDIR)/audio
628 ifdef DEBIAN_PACKAGE
629         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecere0
630         install $(INSTALL_FLAG) -m644 NEWS $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
631         gzip -n -f -9 $(DESTDIR)$(prefix)/share/doc/libecere0/changelog
632         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-dev
633         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-dev/
634         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-extras
635         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-extras/
636         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-samples
637         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-samples/
638         mkdir -p $(DESTDIR)$(prefix)/share/doc/ecere-sdk
639         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/ecere-sdk/
640         mkdir -p $(DESTDIR)$(prefix)/share/doc/libec0
641         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libec0/
642         mkdir -p $(DESTDIR)$(prefix)/share/doc/libecerecom0
643         cp $(DESTDIR)$(prefix)/share/doc/libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecerecom0/
644         mkdir -p $(DESTDIR)$(prefix)/share/doc/libeda0
645         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
646         mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
647         ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
648 endif
649 endif
650 endif
651
652 uninstall:
653         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO)")
654         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO)")
655         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO)")
656         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO)")
657         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
658 ifdef EDASQLiteCipher
659         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
660 endif
661         $(call rmq,"$(BINDIR)/ide$(E)")
662         $(call rmq,"$(BINDIR)/ear$(E)")
663         $(call rmq,"$(BINDIR)/ecc$(E)")
664         $(call rmq,"$(BINDIR)/ecp$(E)")
665         $(call rmq,"$(BINDIR)/ecs$(E)")
666         $(call rmq,"$(BINDIR)/epj2make$(E)")
667         $(call rmq,"$(BINDIR)/documentor$(E)")
668 ifdef CodeGuard
669         $(call rmq,"$(BINDIR)/CodeGuard$(E)")
670 endif
671         $(call rmq,"$(DESTSLIBDIR)/libecereVanilla$(A)")
672         $(call rmq,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
673         $(call rmq,"$(DOCDIR)/ecere.eCdoc")
674         $(call rmq,"$(DOCDIR)/ecereCOM.eCdoc")
675         $(call rmq,"$(DOCDIR)/EDA.eCdoc")
676 ifdef LINUX_TARGET
677         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SO).0")
678         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SO).0")
679         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SO).0")
680         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SO).0")
681         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO).0")
682 ifdef EDASQLiteCipher
683         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0")
684 endif
685         $(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
686         $(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
687         $(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SOV)")
688         $(call rmq,"$(DESTLIBDIR)/$(LP)EDA$(SOV)")
689         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLite$(SOV)")
690 ifdef EDASQLiteCipher
691         $(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)")
692 endif
693         $(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
694         $(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
695 endif
696         $(call rmdirq,"$(BINDIR)/")
697         $(call rmdirq,"$(DESTLIBDIR)/")
698         $(call rmdirq,"$(DESTSLIBDIR)/")
699         $(call rmdirq,"$(DOCDIR)/")
700 ifdef WINDOWS_TARGET
701         $(call rmdirq,"$(DESTDIR)/")
702 endif
703         @$(call echo,The Ecere SDK has been uninstalled.)
704
705 troubleshoot:
706         @$(call echo,Printing values of some variables.)
707         @$(call echo,HOST_PLATFORM=$(HOST_PLATFORM))
708         @$(call echo,TARGET_PLATFORM=$(HOST_PLATFORM))
709         @$(call echo,PLATFORM=$(PLATFORM))
710         @$(call echo,LINUX_HOST=$(LINUX_HOST))
711         @$(call echo,LINUX_TARGET=$(LINUX_TARGET))
712         @$(call echo,OSX_HOST=$(OSX_HOST))
713         @$(call echo,OSX_TARGET=$(OSX_TARGET))
714         @$(call echo,WINDOWS_HOST=$(WINDOWS_HOST))
715         @$(call echo,WINDOWS_TARGET=$(WINDOWS_TARGET))
716         @$(call echo,BSD_HOST=$(BSD_HOST))
717         @$(call echo,BSD_TARGET=$(BSD_TARGET))
718         @$(call echo,CCACHE=$(CCACHE))
719         @$(call echo,CCACHE_COMPILE=$(CCACHE_COMPILE))
720         @$(call echo,CCACHE_PREFIX=$(CCACHE_PREFIX))
721         @$(call echo,DISTCC=$(DISTCC))
722         @$(call echo,GCC_PREFIX=$(GCC_PREFIX))
723         @$(call echo,CC=$(CC))
724         @$(call echo,CPP=$(CPP))
725         @$(call echo,ECP=$(ECP))
726         @$(call echo,ECC=$(ECC))
727         @$(call echo,ECS=$(ECS))
728         @$(call echo,EAR=$(EAR))
729         @$(call echo,AS=$(AS))
730         @$(call echo,LD=$(LD))
731         @$(call echo,AR=$(AR))
732         @$(call echo,STRIP=$(STRIP))
733         @$(call echo,UPX=$(UPX))