Taking out binutils
[fw/sdcc] / Makefile
1 #
2 #
3 #
4
5 SHELL           = /bin/sh
6 AUTOCONF        = autoconf
7
8 PRJDIR          = .
9 SDCC_MISC       = debugger/mcs51 sim/ucsim
10 SDCC_LIBS       = support/cpp
11 SDCC_ASLINK     = as/mcs51 as link
12
13 PKGS            = $(SDCC_MISC) $(SDCC_LIBS) $(SDCC_ASLINK) \
14                   src device/include device/lib
15 PKGS_TINI       = $(SDCC_LIBS) $(SDCC_ASLINK) \
16                   src device/include
17 PORTS           = mcs51 z80
18
19 srcdir          = .
20
21 # Compiling entire program or any subproject
22 # ------------------------------------------
23 all: checkconf sdcc
24
25 tini: checkconf sdcc-tini
26
27 sdcc-libs:
28 ifeq ($(CROSS_LIBGC),1)
29         $(MAKE) -C support/gc -f Makefile.cross
30 else
31         $(MAKE) -C support/gc
32 endif
33         for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
34
35 sdcc-cc: sdcc-libs
36         $(MAKE) -C src
37
38 sdcc-aslink:
39         for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done
40
41 sdcc-misc:
42         for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done
43
44 sdcc-device:
45         $(MAKE) -C device/include
46         $(MAKE) -C device/lib
47
48 sdcc-device-tini:
49         $(MAKE) -C device/include
50         $(MAKE) -C device/lib modelDS390
51
52 sdcc: sdcc-cc sdcc-aslink sdcc-misc sdcc-device
53         $(MAKE) -f main.mk all
54
55 sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini
56         $(MAKE) -f main.mk all
57
58 # Some interesting sub rules
59 sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
60
61 sdcc-base: sdcc-cc sdcc-aslink
62
63 # Compiling and installing everything and runing test
64 # ---------------------------------------------------
65 install:
66         $(MAKE) -f main.mk install
67         @for pkg in $(PKGS); do\
68           $(MAKE) -C $$pkg install ;\
69         done
70
71 install-tini:
72         $(MAKE) -f main.mk install
73         @for pkg in $(PKGS_TINI); do\
74           $(MAKE) -C $$pkg install ;\
75         done
76         $(MAKE) -C device/lib installDS390
77
78
79
80 # Deleting all the installed files
81 # --------------------------------
82 uninstall:
83         $(MAKE) -f main.mk uninstall
84         @for pkg in $(PKGS); do\
85           $(MAKE) -C $$pkg uninstall ;\
86         done
87
88
89 # Deleting all files created by building the program
90 # --------------------------------------------------
91 clean:
92         @echo "+ Cleaning root of the project..."
93         $(MAKE) -f clean.mk clean
94         @echo "+ Cleaning packages in their directories..."
95         for pkg in $(PKGS); do\
96           $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
97         done
98
99
100 # Deleting all files created by configuring or building the program
101 # -----------------------------------------------------------------
102 distclean:
103         @echo "+ DistCleaning root of the project..."
104         $(MAKE) -f clean.mk distclean
105         @echo "+ DistCleaning packages using clean.mk..."
106         for pkg in $(PKGS); do\
107           $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\
108         done
109
110
111 # Like clean but some files may still exist
112 # -----------------------------------------
113 mostlyclean: clean
114         $(MAKE) -f clean.mk mostlyclean
115         for pkg in $(PKGS); do\
116           $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
117         done
118
119
120 # Deleting everything that can reconstructed by this Makefile. It deletes
121 # everything deleted by distclean plus files created by bison, stc.
122 # -----------------------------------------------------------------------
123 realclean: distclean
124         $(MAKE) -f clean.mk realclean
125         for pkg in $(PKGS); do\
126           $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
127         done
128
129
130 # Creating distribution
131 # ---------------------
132 dist: distclean
133         @if [ -f devel ]; then\
134           rm -f devel; mkdist sdcc; touch devel;\
135         else\
136           mkdist sdcc;\
137         fi
138
139
140 # Performing self-test
141 # --------------------
142 check:
143
144
145 # Performing installation test
146 # ----------------------------
147 installcheck:
148
149
150 # Creating dependencies
151 # ---------------------
152 dep:
153         $(MAKE) -f main.mk dep
154         @for pkg in $(PKGS); do\
155           $(MAKE) -C $$pkg dep ;\
156         done
157
158
159 # My rules
160 # --------
161 newer: distclean
162         @if [ -f start ]; then \
163           tar cvf - \
164             `find . -newer start -type f -print` |\
165           gzip -9c >`date '+%m%d%H%M'`.tgz; \
166         else \
167           echo "start file not found.\n"; \
168           exit 1; \
169         fi
170
171 putcopyright:
172         'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
173
174
175 # Remaking configuration
176 # ----------------------
177 configure: configure.in
178         $(SHELL) $(AUTOCONF)
179
180 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
181         $(SHELL) ./config.status
182
183 Makefiles: makefiles
184
185 makefiles: config.status
186
187 config.status: configure
188         $(SHELL) ./config.status --recheck
189
190 makefiles:
191         $(SHELL) ./config.status
192
193 freshconf: main.mk
194
195 checkconf:
196         @if [ -f devel ]; then\
197           $(MAKE) freshconf;\
198         fi
199
200 # End of Makefile