11 include $(srcdir)/Makefile.common
13 SDCC_MISC = debugger/mcs51 sim/ucsim
14 SDCC_LIBS = support/cpp
15 SDCC_ASLINK = as/mcs51 as link
16 SDCC_PACKIHX = packihx
18 PKGS = $(SDCC_MISC) $(SDCC_LIBS) $(SDCC_ASLINK) \
19 src device/include device/lib $(SDCC_PACKIHX)
20 PKGS_TINI = $(SDCC_LIBS) $(SDCC_ASLINK) \
21 src device/include $(SDCC_PACKIHX)
25 # Compiling entire program or any subproject
26 # ------------------------------------------
29 tini: checkconf sdcc-tini
32 ifeq ($(DISABLE_GC),1)
33 : skip boehm library when disabled by hand.
35 ifeq ($(CROSS_LIBGC),1)
36 $(MAKE) -C support/gc -f Makefile.cross
41 for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
47 for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done
50 for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done
53 $(MAKE) -C $(SDCC_PACKIHX)
56 $(MAKE) -C device/include
60 $(MAKE) -C device/include
61 $(MAKE) -C device/lib modelDS390
63 sdcc: sdcc-cc sdcc-aslink sdcc-misc sdcc-device sdcc-packihx
64 $(MAKE) -f main.mk all
66 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx
67 $(MAKE) -f main.mk all
69 # Some interesting sub rules
70 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
72 sdcc-base: sdcc-cc sdcc-aslink
74 # Compiling and installing everything and runing test
75 # ---------------------------------------------------
77 $(MAKE) -f main.mk install
78 @for pkg in $(PKGS); do\
79 $(MAKE) -C $$pkg install ;\
83 $(MAKE) -f main.mk install
84 @for pkg in $(PKGS_TINI); do\
85 $(MAKE) -C $$pkg install ;\
87 $(MAKE) -C device/lib installDS390
91 # Deleting all the installed files
92 # --------------------------------
94 $(MAKE) -f main.mk uninstall
95 @for pkg in $(PKGS); do\
96 $(MAKE) -C $$pkg uninstall ;\
100 # Deleting all files created by building the program
101 # --------------------------------------------------
103 @echo "+ Cleaning root of the project..."
104 $(MAKE) -f clean.mk clean
105 @echo "+ Cleaning packages in their directories..."
106 for pkg in $(PKGS); do\
107 $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
111 # Deleting all files created by configuring or building the program
112 # -----------------------------------------------------------------
114 @echo "+ DistCleaning root of the project..."
115 $(MAKE) -f clean.mk distclean
116 @echo "+ DistCleaning packages using clean.mk..."
117 for pkg in $(PKGS); do\
118 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\
122 # Like clean but some files may still exist
123 # -----------------------------------------
125 $(MAKE) -f clean.mk mostlyclean
126 for pkg in $(PKGS); do\
127 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
131 # Deleting everything that can reconstructed by this Makefile. It deletes
132 # everything deleted by distclean plus files created by bison, stc.
133 # -----------------------------------------------------------------------
135 $(MAKE) -f clean.mk realclean
136 for pkg in $(PKGS); do\
137 $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
141 # Creating distribution
142 # ---------------------
144 @if [ -f devel ]; then\
145 rm -f devel; mkdist sdcc; touch devel;\
151 # Performing self-test
152 # --------------------
156 # Performing installation test
157 # ----------------------------
161 # Creating dependencies
162 # ---------------------
164 $(MAKE) -f main.mk dep
165 @for pkg in $(PKGS); do\
166 $(MAKE) -C $$pkg dep ;\
173 @if [ -f start ]; then \
175 `find . -newer start -type f -print` |\
176 gzip -9c >`date '+%m%d%H%M'`.tgz; \
178 echo "start file not found.\n"; \
183 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
186 # Remaking configuration
187 # ----------------------
188 configure: configure.in
191 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
192 $(SHELL) ./config.status
196 makefiles: config.status
198 config.status: configure
199 $(SHELL) ./config.status --recheck
202 $(SHELL) ./config.status
207 @if [ -f devel ]; then\