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