12 include $(srcdir)/Makefile.common
14 SDCC_MISC = debugger/mcs51 sim/ucsim
15 SDCC_LIBS = support/cpp
16 SDCC_ASLINK = as/mcs51 as link
17 SDCC_PACKIHX = packihx
19 PKGS = $(SDCC_MISC) $(SDCC_LIBS) $(SDCC_ASLINK) \
20 src device/include device/lib $(SDCC_PACKIHX)
21 PKGS_TINI = $(SDCC_LIBS) $(SDCC_ASLINK) \
22 src device/include $(SDCC_PACKIHX)
23 PORTS = $(shell cat ports.build)
24 ALLPORTS = $(shell cat ports.all)
26 # Compiling entire program or any subproject
27 # ------------------------------------------
30 tini: checkconf sdcc-tini
33 for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
39 for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done
42 for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done
45 $(MAKE) -C $(SDCC_PACKIHX)
48 $(MAKE) -C device/include
52 $(MAKE) -C device/include
53 $(MAKE) -C device/lib modelDS390
55 sdcc: sdcc-cc sdcc-aslink sdcc-misc sdcc-device sdcc-packihx
56 $(MAKE) -f main.mk all
58 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx
59 $(MAKE) -f main.mk all
61 # Some interesting sub rules
62 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
64 sdcc-base: sdcc-cc sdcc-aslink
66 # Compiling and installing everything and runing test
67 # ---------------------------------------------------
69 $(MAKE) -f main.mk install
70 @for pkg in $(PKGS); do\
71 $(MAKE) -C $$pkg install ;\
75 $(MAKE) -f main.mk install
76 @for pkg in $(PKGS_TINI); do\
77 $(MAKE) -C $$pkg install ;\
79 $(MAKE) -C device/lib installDS390
83 # Deleting all the installed files
84 # --------------------------------
86 $(MAKE) -f main.mk uninstall
87 @for pkg in $(PKGS); do\
88 $(MAKE) -C $$pkg uninstall ;\
92 # Deleting all files created by building the program
93 # --------------------------------------------------
95 @echo "+ Cleaning root of the project..."
96 $(MAKE) -f clean.mk clean
97 @echo "+ Cleaning packages in their directories..."
98 for pkg in $(PKGS); do\
99 $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
103 # Deleting all files created by configuring or building the program
104 # -----------------------------------------------------------------
106 @echo "+ DistCleaning root of the project..."
107 $(MAKE) -f clean.mk distclean
108 @echo "+ DistCleaning packages using clean.mk..."
109 for pkg in $(PKGS); do\
110 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\
114 # Like clean but some files may still exist
115 # -----------------------------------------
117 $(MAKE) -f clean.mk mostlyclean
118 for pkg in $(PKGS); do\
119 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
123 # Deleting everything that can reconstructed by this Makefile. It deletes
124 # everything deleted by distclean plus files created by bison, stc.
125 # -----------------------------------------------------------------------
127 $(MAKE) -f clean.mk realclean
128 for pkg in $(PKGS); do\
129 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
133 # Creating distribution
134 # ---------------------
136 @if [ -f devel ]; then\
137 rm -f devel; mkdist sdcc; touch devel;\
143 # Performing self-test
144 # --------------------
148 # Performing installation test
149 # ----------------------------
153 # Creating dependencies
154 # ---------------------
156 $(MAKE) -f main.mk dep
157 @for pkg in $(PKGS); do\
158 $(MAKE) -C $$pkg dep ;\
165 @if [ -f start ]; then \
167 `find . -newer start -type f -print` |\
168 gzip -9c >`date '+%m%d%H%M'`.tgz; \
170 echo "start file not found.\n"; \
175 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
178 # Remaking configuration
179 # ----------------------
180 configure: configure.in
183 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
184 $(SHELL) ./config.status
188 makefiles: config.status
190 config.status: configure
191 $(SHELL) ./config.status --recheck
194 $(SHELL) ./config.status
199 @if [ -f devel ]; then\