9 top_builddir = @top_builddir@
10 top_srcdir = @top_srcdir@
12 include Makefile.common
14 SDCC_LIBS = support/makebin
17 # Parts that are not normally compiled but need to be cleaned
18 SDCC_EXTRA = support/regression
20 SDCC_PACKIHX = packihx
21 SDCC_LIBRARIAN = support/librarian
23 ifeq ($(OPT_DISABLE_HC08), 0)
24 SDCC_ASLINK += as/hc08
27 ifeq ($(OPT_DISABLE_MCS51), 0)
28 SDCC_ASLINK += as/mcs51
29 SDCC_MISC += debugger/mcs51
32 ifeq ($(OPT_DISABLE_Z80), 0)
33 SDCC_ASLINK += as link
36 ifeq ($(OPT_DISABLE_UCSIM), 0)
38 SDCC_MISC += sim/ucsim
42 ifeq ($(OPT_DISABLE_DEVICE_LIB), 0)
43 TARGETS += sdcc-device-lib
47 ifeq ($(OPT_DISABLE_PACKIHX), 0)
48 TARGETS += sdcc-packihx
49 PKGS += $(SDCC_PACKIHX)
52 ifeq ($(OPT_ENABLE_DOC), 1)
57 ifeq ($(OPT_DISABLE_SDCPP), 0)
58 SDCC_LIBS += support/cpp2
61 TARGETS += sdcc-libs sdcc-cc sdcc-device-inc sdcc-aslink sdcc-librarian
63 PKGS += $(SDCC_LIBS) src device/include $(SDCC_ASLINK) $(SDCC_LIBRARIAN)
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)
70 # Compiling entire program or any subproject
71 # ------------------------------------------
74 tini: checkconf sdcc-tini
77 for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
83 for as in $(SDCC_ASLINK); do $(MAKE) -C $$as ; done
86 for misc in $(SDCC_MISC); do $(MAKE) -C $$misc ; done
89 $(MAKE) -C $(SDCC_PACKIHX)
92 $(MAKE) -C $(SDCC_LIBRARIAN)
95 $(MAKE) -C device/include
97 sdcc-device-lib: sdcc-cc sdcc-aslink
101 $(MAKE) -C device/include
102 $(MAKE) -C device/lib modelDS390
104 # doc depends on latex and latex2html
110 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx sdcc-librarian
111 $(MAKE) -f main.mk all
113 # Some interesting sub rules
114 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
116 sdcc-base: sdcc-cc sdcc-aslink
118 # Compiling and installing everything and runing test
119 # ---------------------------------------------------
121 $(MAKE) -f main.mk install
122 @for pkg in $(PKGS); do\
123 $(MAKE) -C $$pkg install ;\
127 $(MAKE) -f main.mk install
128 @for pkg in $(PKGS_TINI); do\
129 $(MAKE) -C $$pkg install ;\
131 $(MAKE) -C device/lib installDS390
135 # Deleting all the installed files
136 # --------------------------------
138 $(MAKE) -f main.mk uninstall
139 @for pkg in $(PKGS); do\
140 $(MAKE) -C $$pkg uninstall ;\
144 # Deleting all files created by building the program
145 # --------------------------------------------------
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 ;\
154 # Deleting all files created by configuring or building the program
155 # -----------------------------------------------------------------
157 @echo "+ DistCleaning packages using clean.mk..."
158 for pkg in $(PKGS); do\
159 $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) distclean ;\
161 for pkg in $(SDCC_EXTRA); do \
162 $(MAKE) -C $$pkg distclean; \
164 @echo "+ DistCleaning root of the project..."
165 $(MAKE) -f $(srcdir)/clean.mk distclean
167 # Like clean but some files may still exist
168 # -----------------------------------------
170 $(MAKE) -f $(srcdir)/clean.mk mostlyclean
171 for pkg in $(PKGS); do\
172 $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) mostlyclean ;\
176 # Deleting everything that can reconstructed by this Makefile. It deletes
177 # everything deleted by distclean plus files created by bison, stc.
178 # -----------------------------------------------------------------------
180 $(MAKE) -f $(srcdir)/clean.mk realclean
181 for pkg in $(PKGS); do\
182 $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) realclean ;\
186 # Creating distribution
187 # ---------------------
189 @if [ -f devel ]; then\
190 rm -f devel; mkdist sdcc; touch devel;\
196 # Performing self-test
197 # --------------------
201 # Performing installation test
202 # ----------------------------
206 # Creating dependencies
207 # ---------------------
209 $(MAKE) -f main.mk dep
210 @for pkg in $(PKGS); do\
211 $(MAKE) -C $$pkg dep ;\
218 @if [ -f start ]; then \
220 `find . -newer start -type f -print` |\
221 gzip -9c >`date '+%m%d%H%M'`.tgz; \
223 echo "start file not found.\n"; \
228 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
231 # Remaking configuration
232 # ----------------------
233 configure: configure.in
236 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
237 $(SHELL) ./config.status
241 makefiles: config.status
243 config.status: configure
244 $(SHELL) ./config.status --recheck
247 $(SHELL) ./config.status
252 @if [ -f devel ]; then\