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