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