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