Enabled VPATH feature: changed nearly all Makefiles (149 files).
[fw/sdcc] / Makefile.in
1 #
2 #
3 #
4
5 SHELL           = /bin/sh
6
7 VPATH           = @srcdir@
8 srcdir          = @srcdir@
9 top_builddir    = @top_builddir@
10 top_srcdir      = @top_srcdir@
11
12 include Makefile.common
13
14 SDCC_LIBS       = support/makebin
15 SDCC_DOC        = doc
16
17 # Parts that are not normally compiled but need to be cleaned
18 SDCC_EXTRA      = support/regression
19
20 SDCC_PACKIHX    = packihx
21 SDCC_LIBRARIAN  = support/librarian
22
23 ifeq ($(OPT_DISABLE_HC08), 0)
24 SDCC_ASLINK     += as/hc08
25 endif
26
27 ifeq ($(OPT_DISABLE_MCS51), 0)
28 SDCC_ASLINK     += as/mcs51
29 SDCC_MISC       += debugger/mcs51
30 endif
31
32 ifeq ($(OPT_DISABLE_Z80), 0)
33 SDCC_ASLINK     += as link
34 endif
35
36 ifeq ($(OPT_DISABLE_UCSIM), 0)
37 TARGETS         += sdcc-misc
38 SDCC_MISC       += sim/ucsim
39 PKGS            += $(SDCC_MISC)
40 endif
41
42 ifeq ($(OPT_DISABLE_DEVICE_LIB), 0)
43 TARGETS         += sdcc-device-lib
44 PKGS            += device/lib
45 endif
46
47 ifeq ($(OPT_DISABLE_PACKIHX), 0)
48 TARGETS         += sdcc-packihx
49 PKGS            += $(SDCC_PACKIHX)
50 endif
51
52 ifeq ($(OPT_ENABLE_DOC), 1)
53 TARGETS         += sdcc-doc
54 PKGS            += $(SDCC_DOC)
55 endif
56
57 ifeq ($(OPT_DISABLE_SDCPP), 0)
58 SDCC_LIBS       += support/cpp2
59 endif
60
61 TARGETS         += sdcc-libs sdcc-cc sdcc-device-inc sdcc-aslink sdcc-librarian
62
63 PKGS            += $(SDCC_LIBS) src device/include $(SDCC_ASLINK) $(SDCC_LIBRARIAN)
64
65 PKGS_TINI       = $(SDCC_LIBS) $(SDCC_ASLINK) \
66                   src device/include $(SDCC_PACKIHX) $(SDCC_LIBRARIAN)
67 PORTS           = $(shell cat ports.build)
68 ALLPORTS        = $(shell cat ports.all)
69
70 # Compiling entire program or any subproject
71 # ------------------------------------------
72 all: checkconf sdcc
73
74 tini: checkconf sdcc-tini
75
76 sdcc-libs:
77         for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
78
79 sdcc-cc: sdcc-libs
80         $(MAKE) -C src
81
82 sdcc-aslink:
83         for as in $(SDCC_ASLINK); do $(MAKE) -C $$as ; done
84
85 sdcc-misc:
86         for misc in $(SDCC_MISC); do $(MAKE) -C $$misc ; done
87
88 sdcc-packihx:
89         $(MAKE) -C $(SDCC_PACKIHX)
90
91 sdcc-librarian:
92         $(MAKE) -C $(SDCC_LIBRARIAN)
93
94 sdcc-device-inc:
95         $(MAKE) -C device/include
96
97 sdcc-device-lib: sdcc-cc sdcc-aslink
98         $(MAKE) -C device/lib
99
100 sdcc-device-tini:
101         $(MAKE) -C device/include
102         $(MAKE) -C device/lib modelDS390
103
104 # doc depends on latex and latex2html
105 sdcc-doc:
106         $(MAKE) -C doc
107
108 sdcc: $(TARGETS)
109
110 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx sdcc-librarian
111         $(MAKE) -f main.mk all
112
113 # Some interesting sub rules
114 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
115
116 sdcc-base: sdcc-cc sdcc-aslink
117
118 # Compiling and installing everything and runing test
119 # ---------------------------------------------------
120 install:
121         $(MAKE) -f main.mk install
122         @for pkg in $(PKGS); do\
123           $(MAKE) -C $$pkg install ;\
124         done
125
126 install-tini:
127         $(MAKE) -f main.mk install
128         @for pkg in $(PKGS_TINI); do\
129           $(MAKE) -C $$pkg install ;\
130         done
131         $(MAKE) -C device/lib installDS390
132
133
134
135 # Deleting all the installed files
136 # --------------------------------
137 uninstall:
138         $(MAKE) -f main.mk uninstall
139         @for pkg in $(PKGS); do\
140           $(MAKE) -C $$pkg uninstall ;\
141         done
142
143
144 # Deleting all files created by building the program
145 # --------------------------------------------------
146 clean:
147         @echo "+ Cleaning root of the project..."
148         $(MAKE) -f $(srcdir)/clean.mk clean
149         @echo "+ Cleaning packages in their directories..."
150         for pkg in $(PKGS); do\
151           $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) clean ;\
152         done
153
154 # Deleting all files created by configuring or building the program
155 # -----------------------------------------------------------------
156 distclean:
157         @echo "+ DistCleaning packages using clean.mk..."
158         for pkg in $(PKGS); do\
159           $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) distclean ;\
160         done
161         for pkg in $(SDCC_EXTRA); do \
162           $(MAKE) -C $$pkg distclean; \
163         done
164         @echo "+ DistCleaning root of the project..."
165         $(MAKE) -f $(srcdir)/clean.mk distclean
166
167 # Like clean but some files may still exist
168 # -----------------------------------------
169 mostlyclean: clean
170         $(MAKE) -f $(srcdir)/clean.mk mostlyclean
171         for pkg in $(PKGS); do\
172           $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) mostlyclean ;\
173         done
174
175
176 # Deleting everything that can reconstructed by this Makefile. It deletes
177 # everything deleted by distclean plus files created by bison, stc.
178 # -----------------------------------------------------------------------
179 realclean: distclean
180         $(MAKE) -f $(srcdir)/clean.mk realclean
181         for pkg in $(PKGS); do\
182           $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) realclean ;\
183         done
184
185
186 # Creating distribution
187 # ---------------------
188 dist: distclean
189         @if [ -f devel ]; then\
190           rm -f devel; mkdist sdcc; touch devel;\
191         else\
192           mkdist sdcc;\
193         fi
194
195
196 # Performing self-test
197 # --------------------
198 check:
199
200
201 # Performing installation test
202 # ----------------------------
203 installcheck:
204
205
206 # Creating dependencies
207 # ---------------------
208 dep:
209         $(MAKE) -f main.mk dep
210         @for pkg in $(PKGS); do\
211           $(MAKE) -C $$pkg dep ;\
212         done
213
214
215 # My rules
216 # --------
217 newer: distclean
218         @if [ -f start ]; then \
219           tar cvf - \
220             `find . -newer start -type f -print` |\
221           gzip -9c >`date '+%m%d%H%M'`.tgz; \
222         else \
223           echo "start file not found.\n"; \
224           exit 1; \
225         fi
226
227 putcopyright:
228         'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
229
230
231 # Remaking configuration
232 # ----------------------
233 configure: configure.in
234         $(SHELL) $(AUTOCONF)
235
236 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
237         $(SHELL) ./config.status
238
239 Makefiles: makefiles
240
241 makefiles: config.status
242
243 config.status: configure
244         $(SHELL) ./config.status --recheck
245
246 makefiles:
247         $(SHELL) ./config.status
248
249 freshconf: main.mk
250
251 checkconf:
252         @if [ -f devel ]; then\
253           $(MAKE) freshconf;\
254         fi
255
256 # End of Makefile