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