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