Pre 2.95-2
[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 sdcc-base: sdcc-cc sdcc-aslink
52
53 # Compiling and installing everything and runing test
54 # ---------------------------------------------------
55 install:
56         $(MAKE) -f main.mk install
57         @for pkg in $(PKGS); do\
58           $(MAKE) -C $$pkg install ;\
59         done
60
61
62 # Deleting all the installed files
63 # --------------------------------
64 uninstall:
65         $(MAKE) -f main.mk uninstall
66         @for pkg in $(PKGS); do\
67           $(MAKE) -C $$pkg uninstall ;\
68         done
69
70
71 # Deleting all files created by building the program
72 # --------------------------------------------------
73 clean:
74         @echo "+ Cleaning root of the project..."
75         $(MAKE) -f clean.mk clean
76         @echo "+ Cleaning packages in their directories..."
77         for pkg in $(PKGS); do\
78           $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
79         done
80
81
82 # Deleting all files created by configuring or building the program
83 # -----------------------------------------------------------------
84 distclean:
85         @echo "+ DistCleaning root of the project..."
86         $(MAKE) -f clean.mk distclean
87         @echo "+ DistCleaning packages using clean.mk..."
88         for pkg in $(PKGS); do\
89           $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" 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
101
102 # Deleting everything that can reconstructed by this Makefile. It deletes
103 # everything deleted by distclean plus files created by bison, stc.
104 # -----------------------------------------------------------------------
105 realclean: distclean
106         $(MAKE) -f clean.mk realclean
107         for pkg in $(PKGS); do\
108           $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
109         done
110
111
112 # Creating distribution
113 # ---------------------
114 dist: distclean
115         @if [ -f devel ]; then\
116           rm -f devel; mkdist sdcc; touch devel;\
117         else\
118           mkdist sdcc;\
119         fi
120
121
122 # Performing self-test
123 # --------------------
124 check:
125
126
127 # Performing installation test
128 # ----------------------------
129 installcheck:
130
131
132 # Creating dependencies
133 # ---------------------
134 dep:
135         $(MAKE) -f main.mk dep
136         @for pkg in $(PKGS); do\
137           $(MAKE) -C $$pkg dep ;\
138         done
139
140
141 # My rules
142 # --------
143 newer: distclean
144         @if [ -f start ]; then \
145           tar cvf - \
146             `find . -newer start -type f -print` |\
147           gzip -9c >`date '+%m%d%H%M'`.tgz; \
148         else \
149           echo "start file not found.\n"; \
150           exit 1; \
151         fi
152
153 putcopyright:
154         'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l
155
156
157 # Remaking configuration
158 # ----------------------
159 configure: configure.in
160         $(SHELL) $(AUTOCONF)
161
162 main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status
163         $(SHELL) ./config.status
164
165 Makefiles: makefiles
166
167 makefiles: config.status
168
169 config.status: configure
170         $(SHELL) ./config.status --recheck
171
172 makefiles:
173         $(SHELL) ./config.status
174
175 freshconf: main.mk
176
177 checkconf:
178         @if [ -f devel ]; then\
179           $(MAKE) freshconf;\
180         fi
181
182 # End of Makefile