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