9 include $(PRJDIR)/Makefile.common
11 SDCC_MISC = debugger/mcs51 sim/ucsim
12 SDCC_LIBS = support/cpp2 support/makebin
15 # Parts that are not normally compiled but need to be cleaned
16 SDCC_EXTRA = support/regression
18 SDCC_ASLINK = as/mcs51 as link
19 SDCC_PACKIHX = packihx
21 TARGETS = sdcc-libs sdcc-cc sdcc-aslink sdcc-doc
23 PKGS = $(SDCC_LIBS) src $(SDCC_ASLINK) $(SDCC_DOC)
25 ifneq ($(OPT_ENABLE_UCSIM), no)
30 ifneq ($(OPT_ENABLE_DEVICE_LIB_BUILD), no)
31 TARGETS += sdcc-device
32 PKGS += device/include device/lib
35 ifneq ($(OPT_ENABLE_PACKIHX), no)
36 TARGETS += sdcc-packihx
37 PKGS += $(SDCC_PACKIHX)
40 PKGS_TINI = $(SDCC_LIBS) $(SDCC_ASLINK) \
41 src device/include $(SDCC_PACKIHX)
42 PORTS = $(shell cat ports.build)
43 ALLPORTS = $(shell cat ports.all)
45 # Compiling entire program or any subproject
46 # ------------------------------------------
49 tini: checkconf sdcc-tini
52 for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
58 for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done
61 for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done
64 $(MAKE) -C $(SDCC_PACKIHX)
67 $(MAKE) -C device/include
71 $(MAKE) -C device/include
72 $(MAKE) -C device/lib modelDS390
74 # Empty for now, as doc depends on latex and latex2html
79 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx
80 $(MAKE) -f main.mk all
82 # Some interesting sub rules
83 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
85 sdcc-base: sdcc-cc sdcc-aslink
87 # Compiling and installing everything and runing test
88 # ---------------------------------------------------
90 $(MAKE) -f main.mk install
91 @for pkg in $(PKGS); do\
92 $(MAKE) -C $$pkg install ;\
96 $(MAKE) -f main.mk install
97 @for pkg in $(PKGS_TINI); do\
98 $(MAKE) -C $$pkg install ;\
100 $(MAKE) -C device/lib installDS390
104 # Deleting all the installed files
105 # --------------------------------
107 $(MAKE) -f main.mk uninstall
108 @for pkg in $(PKGS); do\
109 $(MAKE) -C $$pkg uninstall ;\
113 # Deleting all files created by building the program
114 # --------------------------------------------------
116 @echo "+ Cleaning root of the project..."
117 $(MAKE) -f clean.mk clean
118 @echo "+ Cleaning packages in their directories..."
119 for pkg in $(PKGS); do\
120 $(MAKE) PORTS="$(PORTS)" -C $$pkg -f clean.mk clean ;\
123 # Deleting all files created by configuring or building the program
124 # -----------------------------------------------------------------
126 @echo "+ DistCleaning root of the project..."
127 $(MAKE) -f clean.mk distclean
128 @echo "+ DistCleaning packages using clean.mk..."
129 for pkg in $(PKGS); do\
130 $(MAKE) -C $$pkg PORTS="$(PORTS)" -f clean.mk distclean ;\
132 for pkg in $(SDCC_EXTRA); do \
133 $(MAKE) -C $$pkg clean; \
136 # Like clean but some files may still exist
137 # -----------------------------------------
139 $(MAKE) -f clean.mk mostlyclean
140 for pkg in $(PKGS); do\
141 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
145 # Deleting everything that can reconstructed by this Makefile. It deletes
146 # everything deleted by distclean plus files created by bison, stc.
147 # -----------------------------------------------------------------------
149 $(MAKE) -f clean.mk realclean
150 for pkg in $(PKGS); do\
151 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
155 # Creating distribution
156 # ---------------------
158 @if [ -f devel ]; then\
159 rm -f devel; mkdist sdcc; touch devel;\
165 # Performing self-test
166 # --------------------
170 # Performing installation test
171 # ----------------------------
175 # Creating dependencies
176 # ---------------------
178 $(MAKE) -f main.mk dep
179 @for pkg in $(PKGS); do\
180 $(MAKE) -C $$pkg dep ;\
187 @if [ -f start ]; then \
189 `find . -newer start -type f -print` |\
190 gzip -9c >`date '+%m%d%H%M'`.tgz; \
192 echo "start file not found.\n"; \
197 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
200 # Remaking configuration
201 # ----------------------
202 configure: configure.in
205 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
206 $(SHELL) ./config.status
210 makefiles: config.status
212 config.status: configure
213 $(SHELL) ./config.status --recheck
216 $(SHELL) ./config.status
221 @if [ -f devel ]; then\