-y support
[platform/upstream/binutils.git] / sol-GNUmakefile
1 #!/usr/latest/bin/make -f
2 #
3 # Makefile used to three-stage build a tree of source code, usually devo.  
4 #
5
6 # Every invocation of this Makefile needs to have a variable set (host), 
7 # which is the named used for ./configure, and also the prefix for the
8 # various files and directories used in a three stage.
9 #
10
11 ifndef host
12 error: 
13         @echo
14         @echo
15         @echo You must set the variable \"host\" to use this Makefile
16         @echo
17         @echo
18         @exit 1
19 else
20
21
22 # from here to very near the end of the file is the real guts of this 
23 # Makefile, and it is not seen if the variable 'host' is not set 
24
25
26 TREE            := progressive
27 ROOTING         := /opt/cygnus-sol2-1.0
28 CVS_MODULE      := progressive-solaris
29 TAG_DATE        := 920615
30 RELEASE_TAG     := $(CVS_MODULE)-$(TAG_DATE)
31 release_root    := $(ROOTING)
32
33 TIME    := time
34 NICE    := nice -17
35 MF      := -w
36 GNUC    := gcc -g
37
38 SHELL   := /bin/sh
39
40 INSTDIR  := $(shell pwd)/$(host)
41 PREFIXES := prefix=$(ROOTING)
42
43 ifdef target
44 arch=$(host)=$(target)
45 endif
46
47 .PHONY: all
48 all:    do1 do2 do3
49
50 .PHONY: configuration
51 configuration: $(TREE) $(host)-stamp-stage1-configured
52
53 .PHONY: comparison
54 comparison:
55         for i in `cd $(host)-objdir.3 ; find . -name \*.o -print` ; do \
56                 cmp $(host)-objdir.2/$$i $(host)-objdir.3/$$i ; \
57         done
58
59 .PHONY: clean
60 clean:
61         rm -rf $(host)-$(TREE)-holes $(host)-objdir $(host)-objdir.[123] $(host)-stamp-stage[123]* $(host)-stamp-holes *~
62
63 .PHONY: very
64 very:
65         rm -rf $(TREE)
66
67 $(TREE):
68         $(TIME) cvs co $(CVS_TAG) $(CVS_MODULE)
69
70 .PHONY: do1
71 do1:    $(host)-$(TREE)-holes $(host)-stamp-stage1
72
73 $(host)-stamp-stage1: $(host)-objdir.1
74         touch $(host)-stamp-stage1
75
76 $(host)-objdir.1: $(TREE) $(host)-stamp-stage1-configured
77         (cd $(host)-objdir ; $(TIME) make $(MF) all info host=$(host))
78         @echo CONFIGURE: make all completed for $(host)
79         (cd $(host)-objdir ; $(TIME) make $(MF) install install-info host=$(host))
80         @echo CONFIGURE: make install-all completed for $(host)
81         mv $(host)-objdir $(host)-objdir.1
82
83 $(host)-stamp-stage1-configured:
84         [ -d $(host)-objdir ] || mkdir $(host)-objdir
85         (cd $(host)-objdir ; \
86                 $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \
87                         -prefix=$(ROOTING))
88         touch $@
89
90 .PHONY: do2
91 do2:    $(host)-$(TREE)-holes $(host)-stamp-stage2
92
93 $(host)-stamp-stage2: $(host)-objdir.2
94         PATH=$(release_root)/bin:`pwd`/$(host)-$(TREE)-holes ; \
95                 export PATH ; \
96                 echo $$PATH ; \
97                 SHELL=sh ; export SHELL ; \
98                 $(TIME) make $(host)-objdir.2 host=$(host)
99         touch $(host)-stamp-stage2
100
101 $(host)-objdir.2: $(TREE) $(host)-stamp-stage2-configured
102         [ -d $(host)-objdir ] || mkdir $(host)-objdir
103         (cd $(host)-objdir ; $(TIME) make $(MF) all info  "CC=$(GNUC)" host=$(host))
104         (cd $(host)-objdir ; $(TIME) make $(MF) $(PREFIXES) install install-info "CC=$(GNUC)" host=$(host))
105         mv $(host)-objdir $(host)-objdir.2
106
107 $(host)-stamp-stage2-configured:
108         [ -d $(host)-objdir ] || mkdir $(host)-objdir
109         (cd $(host)-objdir ; \
110                 $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \
111                         -prefix=$(ROOTING))
112         touch $@
113
114 .PHONY: do3
115 do3:    $(host)-$(TREE)-holes $(host)-stamp-stage3
116
117 $(host)-stamp-stage3: $(host)-objdir.3
118         PATH=$(release_root)/bin:`pwd`/$(host)-$(TREE)-holes ; \
119                 export PATH ; \
120                 SHELL=sh ; export SHELL ; \
121                 $(TIME) make $(host)-objdir.3 host=$(host)
122         touch $(host)-stamp-stage3
123
124 $(host)-objdir.3: $(TREE) $(host)-stamp-stage3-configured
125         [ -d $(host)-objdir ] || mkdir $(host)-objdir
126         (cd $(host)-objdir ; $(TIME) make $(MF) all info "CC=$(GNUC)" host=$(host))
127         (cd $(host)-objdir ; $(TIME) make $(MF) install-no-fixedincludes install-info "CC=$(GNUC)"  host=$(host))
128         mv $(host)-objdir $(host)-objdir.3
129
130 $(host)-stamp-stage3-configured:
131         [ -d $(host)-objdir ] || mkdir $(host)-objdir
132         (cd $(host)-objdir ; \
133                 $(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \
134                         -prefix=$(ROOTING))
135         touch $@
136
137 HOLES := [ \
138         ar \
139         as \
140         awk \
141         basename \
142         cat \
143         cc \
144         chmod \
145         cmp \
146         cp \
147         date \
148         echo \
149         egrep \
150         ex \
151         expr \
152         find \
153         grep \
154         hostname \
155         install \
156         ld \
157         lex \
158         ln \
159         ls \
160         mkdir \
161         mv \
162         pwd \
163         ranlib \
164         rm \
165         rmdir \
166         sed \
167         sh \
168         sort \
169         time \
170         touch \
171         tr \
172         true \
173         whoami
174
175 PARTIAL_HOLES := \
176         gcc \
177         make
178
179
180 $(host)-$(TREE)-holes: $(host)-stamp-holes
181
182 $(host)-stamp-holes:
183         -rm -rf $(host)-$(TREE)-holes
184         -mkdir $(host)-$(TREE)-holes
185         for i in $(HOLES) ; do \
186                 if [ -x $(host)-$(TREE)-holes/$$i ] ; then \
187                         echo "$$i already present" ; \
188                 else if [ -x /bin/$$i ] ; then \
189                         cp /bin/$$i $(host)-$(TREE)-holes ; \
190                         echo $$i from /bin ; \
191                 else if [ -x /usr/bin/$$i ] ; then \
192                         cp /usr/bin/$$i $(host)-$(TREE)-holes ; \
193                         echo $$i from /usr/bin ; \
194                 else if [ -x /usr/ccs/bin/$$i ] ; then \
195                         cp /usr/ccs/bin/$$i $(host)-$(TREE)-holes ; \
196                         echo $$i from /usr/ccs/bin ; \
197                 else if [ -x /usr/unsupported/bin/$$i ] ; then \
198                         cp /usr/unsupported/bin/$$i $(host)-$(TREE)-holes ; \
199                         echo $$i from /usr/unsupported/bin ; \
200                 else \
201                         echo $$i is NOT found ; \
202                 fi; fi ; fi ; fi ; fi ; true ; \
203         done
204         for i in $(PARTIAL_HOLES) ; do \
205                 if [ -x /usr/latest/bin/$$i ] ; then \
206                       cp /usr/latest/bin/$$i $(host)-$(TREE)-holes ; \
207                         echo $$i from /usr/latest/bin ; \
208                  else if [ -x /usr/unsupported/bin/$$i ] ; then \
209                       cp /usr/unsupported/bin/$$i $(host)-$(TREE)-holes ; \
210                         echo $$i from /usr/unsupported/bin ; \
211                 fi; fi; \
212         done
213         touch $(host)-stamp-holes
214
215 force:
216
217 endif # host
218
219 ### Local Variables:
220 ### fill-column: 131
221 ### End:
222