12 include $(srcdir)/Makefile.common
14 SDCC_MISC = debugger/mcs51 sim/ucsim
16 SDCC_LIBS = support/cpp support/cpp2
18 SDCC_ASLINK = as/mcs51 as link
19 SDCC_PACKIHX = packihx
21 TARGETS = sdcc-libs sdcc-cc sdcc-aslink sdcc-packihx
23 PKGS = $(SDCC_LIBS) src $(SDCC_ASLINK) $(SDCC_PACKIHX)
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 PKGS_TINI = $(SDCC_LIBS) $(SDCC_ASLINK) \
36 src device/include $(SDCC_PACKIHX)
37 PORTS = $(shell cat ports.build)
38 ALLPORTS = $(shell cat ports.all)
40 # Compiling entire program or any subproject
41 # ------------------------------------------
44 tini: checkconf sdcc-tini
47 for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
53 for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done
56 for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done
59 $(MAKE) -C $(SDCC_PACKIHX)
62 $(MAKE) -C device/include
66 $(MAKE) -C device/include
67 $(MAKE) -C device/lib modelDS390
72 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx
73 $(MAKE) -f main.mk all
75 # Some interesting sub rules
76 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
78 sdcc-base: sdcc-cc sdcc-aslink
80 # Compiling and installing everything and runing test
81 # ---------------------------------------------------
83 $(MAKE) -f main.mk install
84 @for pkg in $(PKGS); do\
85 $(MAKE) -C $$pkg install ;\
89 $(MAKE) -f main.mk install
90 @for pkg in $(PKGS_TINI); do\
91 $(MAKE) -C $$pkg install ;\
93 $(MAKE) -C device/lib installDS390
97 # Deleting all the installed files
98 # --------------------------------
100 $(MAKE) -f main.mk uninstall
101 @for pkg in $(PKGS); do\
102 $(MAKE) -C $$pkg uninstall ;\
106 # Deleting all files created by building the program
107 # --------------------------------------------------
109 @echo "+ Cleaning root of the project..."
110 $(MAKE) -f clean.mk clean
111 @echo "+ Cleaning packages in their directories..."
112 for pkg in $(PKGS); do\
113 $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
117 # Deleting all files created by configuring or building the program
118 # -----------------------------------------------------------------
120 @echo "+ DistCleaning root of the project..."
121 $(MAKE) -f clean.mk distclean
122 @echo "+ DistCleaning packages using clean.mk..."
123 for pkg in $(PKGS); do\
124 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\
128 # Like clean but some files may still exist
129 # -----------------------------------------
131 $(MAKE) -f clean.mk mostlyclean
132 for pkg in $(PKGS); do\
133 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
137 # Deleting everything that can reconstructed by this Makefile. It deletes
138 # everything deleted by distclean plus files created by bison, stc.
139 # -----------------------------------------------------------------------
141 $(MAKE) -f clean.mk realclean
142 for pkg in $(PKGS); do\
143 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
147 # Creating distribution
148 # ---------------------
150 @if [ -f devel ]; then\
151 rm -f devel; mkdist sdcc; touch devel;\
157 # Performing self-test
158 # --------------------
162 # Performing installation test
163 # ----------------------------
167 # Creating dependencies
168 # ---------------------
170 $(MAKE) -f main.mk dep
171 @for pkg in $(PKGS); do\
172 $(MAKE) -C $$pkg dep ;\
179 @if [ -f start ]; then \
181 `find . -newer start -type f -print` |\
182 gzip -9c >`date '+%m%d%H%M'`.tgz; \
184 echo "start file not found.\n"; \
189 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
192 # Remaking configuration
193 # ----------------------
194 configure: configure.in
197 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
198 $(SHELL) ./config.status
202 makefiles: config.status
204 config.status: configure
205 $(SHELL) ./config.status --recheck
208 $(SHELL) ./config.status
213 @if [ -f devel ]; then\