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
20 SDCC_LIBRARIAN = support/librarian
22 TARGETS = sdcc-libs sdcc-cc sdcc-aslink sdcc-doc
24 PKGS = $(SDCC_LIBS) src $(SDCC_ASLINK) $(SDCC_DOC)
26 ifneq ($(OPT_ENABLE_UCSIM), no)
31 ifneq ($(OPT_ENABLE_DEVICE_LIB_BUILD), no)
32 TARGETS += sdcc-device
33 PKGS += device/include device/lib
36 ifneq ($(OPT_ENABLE_PACKIHX), no)
37 TARGETS += sdcc-packihx
38 PKGS += $(SDCC_PACKIHX)
41 ifneq ($(OPT_ENABLE_LIBRARIAN), no)
42 TARGETS += sdcc-librarian
43 PKGS += $(SDCC_LIBRARIAN)
46 PKGS_TINI = $(SDCC_LIBS) $(SDCC_ASLINK) \
47 src device/include $(SDCC_PACKIHX) $(SDCC_LIBRARIAN)
48 PORTS = $(shell cat ports.build)
49 ALLPORTS = $(shell cat ports.all)
51 # Compiling entire program or any subproject
52 # ------------------------------------------
55 tini: checkconf sdcc-tini
58 for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
64 for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done
67 for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done
70 $(MAKE) -C $(SDCC_PACKIHX)
73 $(MAKE) -C $(SDCC_LIBRARIAN)
75 sdcc-device: sdcc-cc sdcc-aslink
76 $(MAKE) -C device/include
80 $(MAKE) -C device/include
81 $(MAKE) -C device/lib modelDS390
83 # Empty for now, as doc depends on latex and latex2html
88 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx sdcc-librarian
89 $(MAKE) -f main.mk all
91 # Some interesting sub rules
92 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
94 sdcc-base: sdcc-cc sdcc-aslink
96 # Compiling and installing everything and runing test
97 # ---------------------------------------------------
99 $(MAKE) -f main.mk install
100 @for pkg in $(PKGS); do\
101 $(MAKE) -C $$pkg install ;\
105 $(MAKE) -f main.mk install
106 @for pkg in $(PKGS_TINI); do\
107 $(MAKE) -C $$pkg install ;\
109 $(MAKE) -C device/lib installDS390
113 # Deleting all the installed files
114 # --------------------------------
116 $(MAKE) -f main.mk uninstall
117 @for pkg in $(PKGS); do\
118 $(MAKE) -C $$pkg uninstall ;\
122 # Deleting all files created by building the program
123 # --------------------------------------------------
125 @echo "+ Cleaning root of the project..."
126 $(MAKE) -f clean.mk clean
127 @echo "+ Cleaning packages in their directories..."
128 for pkg in $(PKGS); do\
129 $(MAKE) PORTS="$(PORTS)" EXEEXT=$(EXEEXT) -C $$pkg -f clean.mk clean ;\
132 # Deleting all files created by configuring or building the program
133 # -----------------------------------------------------------------
135 @echo "+ DistCleaning root of the project..."
136 $(MAKE) -f clean.mk distclean
137 @echo "+ DistCleaning packages using clean.mk..."
138 for pkg in $(PKGS); do\
139 $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) -f clean.mk distclean ;\
141 for pkg in $(SDCC_EXTRA); do \
142 $(MAKE) -C $$pkg clean; \
145 # Like clean but some files may still exist
146 # -----------------------------------------
148 $(MAKE) -f clean.mk mostlyclean
149 for pkg in $(PKGS); do\
150 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" EXEEXT=$(EXEEXT) mostlyclean ;\
154 # Deleting everything that can reconstructed by this Makefile. It deletes
155 # everything deleted by distclean plus files created by bison, stc.
156 # -----------------------------------------------------------------------
158 $(MAKE) -f clean.mk realclean
159 for pkg in $(PKGS); do\
160 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" EXEEXT=$(EXEEXT) realclean ;\
164 # Creating distribution
165 # ---------------------
167 @if [ -f devel ]; then\
168 rm -f devel; mkdist sdcc; touch devel;\
174 # Performing self-test
175 # --------------------
179 # Performing installation test
180 # ----------------------------
184 # Creating dependencies
185 # ---------------------
187 $(MAKE) -f main.mk dep
188 @for pkg in $(PKGS); do\
189 $(MAKE) -C $$pkg dep ;\
196 @if [ -f start ]; then \
198 `find . -newer start -type f -print` |\
199 gzip -9c >`date '+%m%d%H%M'`.tgz; \
201 echo "start file not found.\n"; \
206 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
209 # Remaking configuration
210 # ----------------------
211 configure: configure.in
214 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
215 $(SHELL) ./config.status
219 makefiles: config.status
221 config.status: configure
222 $(SHELL) ./config.status --recheck
225 $(SHELL) ./config.status
230 @if [ -f devel ]; then\