]>
Commit | Line | Data |
---|---|---|
eb02fd64 RP |
1 | # |
2 | # Makefile for ld version 2 | |
3 | # | |
4 | # $Id$ | |
5 | # | |
6 | ||
7 | srcdir = . | |
8 | ||
8c32cf6e RP |
9 | destdir = /usr/local |
10 | ||
cc964c6f | 11 | version=`$(srcdir)/../gcc$(subdir)/gcc -dumpversion` |
8c32cf6e RP |
12 | prefix = $(destdir) |
13 | bindir = $(prefix)/bin | |
14 | libdir = $(prefix)/lib | |
15 | libsubdir = $(libdir)/gcc/$(target)/$(version) | |
16 | ||
17 | INSTALL = install -c | |
18 | INSTALL_PROGRAM = $(INSTALL) | |
19 | INSTALL_FILE = $(INSTALL) | |
20 | ||
2ee11735 | 21 | BASEDIR = ../.. |
d6e467b4 | 22 | INCLUDE = $(srcdir)/../include |
2ee11735 | 23 | INCLUDES = -I. -I$(srcdir) -I$(INCLUDE) |
eb02fd64 | 24 | DEBUG = -g |
2ee11735 | 25 | |
e46cdcdd RP |
26 | BISON = bison |
27 | BISONFLAGS = -v | |
28 | ||
239d28f3 SC |
29 | SCRIPTS = ldgld68k.script ldgld68kUr.script ldgld68kr.script \ |
30 | ldgld.script ldgldUr.script ldgldr.script ldlnk960.script \ | |
31 | ldlnk960r.script ldgld960.script \ | |
5209444a SC |
32 | ldgldm88kbcs.script ldgldm88kbcsUr.script ldgldm88kbcsr.script \ |
33 | ldglda29k.script ldglda29kUr.script ldglda29kr.script | |
2ee11735 | 34 | |
239d28f3 SC |
35 | PROCESSED_SCRIPTS = ldgld68k.x ldgld68kUr.x ldgld68kr.x ldgld.x \ |
36 | ldgldUr.x ldgldr.x ldlnk960.x ldlnk960r.x ldgld960.x \ | |
5209444a SC |
37 | ldgldm88kbcs.x ldgldm88kbcsUr.x ldgldm88kbcsr.x \ |
38 | ldglda29k.x ldglda29kUr.x ldglda29kr.x | |
2ee11735 RP |
39 | |
40 | #### target and host dependent Makefile fragments come in here. | |
41 | ### | |
42 | ||
a37cc0c0 | 43 | CFLAGS = $(INCLUDES) $(DEBUG) $(HDEFINES) $(TDEFINES) $(CDEFINES) |
2ee11735 RP |
44 | LINTFLAGS = $(INCLUDES) $(EXTRA_DEF) |
45 | ||
f78e2569 | 46 | .SUFFIXES: .y .x .script $(SUFFIXES) |
2ee11735 | 47 | |
2ee11735 | 48 | |
eb02fd64 RP |
49 | # go directly to ld.new in case this ld isn't capable of |
50 | # linking native object on this host. It can be renamed on | |
51 | # install. | |
e7921bd4 | 52 | LD_PROG = ld.new |
f78e2569 SC |
53 | |
54 | .script.x: | |
c252bac8 | 55 | ./mkscript < $< >$*.x |
eb02fd64 RP |
56 | |
57 | # for self hosting | |
3795e576 | 58 | GNUTARGET=a.out-sunos-big |
eb02fd64 | 59 | LDEMULATION=gld |
f2e91404 | 60 | BFDLIB=$(srcdir)/../bfd$(subdir)/libbfd.a |
e77463a1 | 61 | LIBIBERTY=$(srcdir)/../libiberty$(subdir)/libiberty.a |
eb02fd64 | 62 | |
c252bac8 | 63 | OFILES= ldgram.o ldlex.o ldlang.o ldmain.o ldwarn.o ldwrite.o ldexp.o ldlnk960.o ldgld68k.o ldindr.o \ |
5209444a | 64 | ldgldm88kbcs.o ldglda29k.o \ |
239d28f3 | 65 | ldgld.o ldgld960.o ldemul.o ldver.o ldmisc.o ldsym.o ldvanilla.o ldfile.o |
eb02fd64 | 66 | |
c252bac8 | 67 | HEADERS=config.h ldmain.h ldmain.h ldwarn.h ldmisc.h ldindr.h ldsym.h ldlang.h ldexp.h \ |
239d28f3 | 68 | ldlex.h ldwrite.h ldver.h ldemul.h ldfile.h ldgram.h ld.h |
eb02fd64 RP |
69 | |
70 | MANSOURCES=ld.tex | |
71 | ||
c252bac8 | 72 | LDCSOURCES=ldlang.c ldindr.c ldmain.c ldwrite.c ldwarn.c ldlnk960.c ldgld.c ldgld68k.c \ |
5209444a | 73 | ldgldm88kbcs.c ldgld29k.c \ |
239d28f3 | 74 | ldgld960.c ldemul.c ldver.c ldmisc.c ldexp.c ldsym.c ldfile.c ldvanilla.c |
eb02fd64 | 75 | |
cc964c6f SC |
76 | GENERATED_SOURCES=ldgram.c ldlex.c ldgram.h |
77 | GENERATED_HEADERS=ldgram.h | |
eb02fd64 | 78 | |
cc964c6f | 79 | LDSOURCES=$(LDCSOURCES) ldgram.y ldlex.l ldgram.h |
eb02fd64 | 80 | |
2ee11735 | 81 | BFDSOURCES=../../bfd/common/*.c |
eb02fd64 RP |
82 | |
83 | SOURCES= $(LDSOURCES) $(BFDSOURCES) | |
84 | LINTSOURCES= $(LDCSOURCES) $(BFDSOURCES) $(GENERATED_SOURCES) | |
85 | ||
e7921bd4 | 86 | STAGESTUFF = $(GENERATED_SOURCES) $(GENERATED_HEADERS) $(PROCESSED_SCRIPTS) $(OFILES) $(LD_PROG) mkscript |
f78e2569 | 87 | |
e7921bd4 | 88 | all: Makefile $(PROCESSED_SCRIPTS) $(LD_PROG) |
2ee11735 | 89 | |
e7921bd4 | 90 | $(PROCESSED_SCRIPTS): mkscript $(SCRIPTS) |
2ee11735 | 91 | |
cc964c6f | 92 | ldgram.c:ldgram.y |
e46cdcdd | 93 | $(BISON) $(BISONFLAGS) -d $(VPATH)/ldgram.y -o ldgram.c |
cc964c6f SC |
94 | |
95 | ldlex.c:ldlex.l | |
96 | lex -t $(VPATH)/ldlex.l >ldlex.c | |
97 | ||
19b03b7a | 98 | |
2ee11735 RP |
99 | |
100 | #$(BFDLIB): $(BFDSOURCES) | |
101 | # (cd ../bfd; make) | |
eb02fd64 | 102 | |
e77463a1 | 103 | $(LD_PROG): $(OFILES) $(BFDLIB) $(LIBIBERTY) |
fe9c20e2 | 104 | $(CC) $(CFLAGS) $(LDFLAGS) -o $(LD_PROG) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(LOADLIBES) |
e7921bd4 | 105 | |
eb02fd64 | 106 | # (cd ../bfd; make) |
239d28f3 | 107 | # LDEMULATION=gld; export LDEMULATION; GNUTARGET=a.out-sunos-big;./ldok -format a.out-sunos-big -o ld /lib/crt0.o $(OFILES) $(BFDLIB) $(LIBIBERTY) -lc /usr/local/lib/gcc/sparc/1.91/gnulib |
e77463a1 JG |
108 | # gld -o ld /lib/crt0.o $(OFILES) $(BFDLIB) $(LIBIBERTY) -lc /usr/local/lib/gcc/sparc/1.91/gnulib |
109 | # $(CC) -Bstatic -o ld.new $(OFILES) $(BFDLIB) $(LIBIBERTY) | |
eb02fd64 RP |
110 | |
111 | ||
f78e2569 | 112 | ld1: ld.new |
e77463a1 | 113 | $(HOSTING_EMU); ./ld.new -o ld1 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) |
eb02fd64 RP |
114 | |
115 | ld2: ld1 | |
e77463a1 | 116 | $(HOSTING_EMU); ./ld1 -o ld2 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) |
eb02fd64 RP |
117 | |
118 | ld3: ld2 | |
e77463a1 | 119 | $(HOSTING_EMU); ./ld2 -o ld3 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) |
eb02fd64 RP |
120 | |
121 | ld.dvi:ld.tex | |
122 | tex ld.tex | |
123 | ||
e7921bd4 | 124 | mkscript: mkscript.c |
f78e2569 | 125 | |
239d28f3 | 126 | ldgld.o: $(PROCESSED_SCRIPTS) ldgld.c |
e7921bd4 | 127 | |
cc964c6f SC |
128 | ldlex.c: ldlex.l ldgram.h |
129 | ldlex.o: ldlex.c ldgram.h | |
130 | ldgram.o: ldgram.c | |
131 | ldgram.c:ldgram.y | |
eb02fd64 | 132 | |
239d28f3 SC |
133 | ldgld68k.x :ldgld68k.script |
134 | ldgld68kUr.x :ldgld68kUr.script | |
135 | ldgld68kr.x :ldgld68kr.script | |
136 | ldgld.x :ldgld.script | |
137 | ldgldUr.x :ldgldUr.script | |
138 | ldgldr.x :ldgldr.script | |
139 | ldlnk960.x :ldlnk960.script | |
140 | ldlnk960r.x :ldlnk960r.script | |
141 | ldgld960.x :ldgld960.script | |
142 | ldgldm88kbcs.x :ldgldm88kbcs.script | |
143 | ldgldm88kbcsUr.x :ldgldm88kbcsUr.script | |
144 | ldgldm88kbcsr.x:ldgldm88kbcsr.script | |
145 | ldgld68k.x:ldgld68k.script | |
5209444a SC |
146 | ldglda29k.x :ldglda29k.script |
147 | ldglda29kr.x :ldglda29kr.script | |
148 | ldglda29kUr.x :ldglda29kUr.script | |
eb02fd64 | 149 | |
e7921bd4 RP |
150 | stage1: force |
151 | - mkdir stage1 | |
152 | - mv -f $(STAGESTUFF) stage1 | |
153 | - (cd stage1 ; ln -s $(LD_PROG) ld) | |
f78e2569 | 154 | |
e7921bd4 RP |
155 | stage2: force |
156 | - mkdir stage2 | |
157 | - mv -f $(STAGESTUFF) stage2 | |
158 | - (cd stage2 ; ln -s $(LD_PROG) ld) | |
f78e2569 | 159 | |
e7921bd4 RP |
160 | stage3: force |
161 | - mkdir stage3 | |
162 | - mv -f $(STAGESTUFF) stage3 | |
163 | - (cd stage3 ; ln -s $(LD_PROG) ld) | |
eb02fd64 | 164 | |
e46cdcdd RP |
165 | against=stage2 |
166 | ||
167 | comparison: force | |
168 | for i in $(STAGESTUFF) ; do cmp $$i $(against)/$$i ; done | |
169 | ||
e7921bd4 RP |
170 | de-stage1: force |
171 | - (cd stage1 ; mv -f * ..) | |
172 | - rm ld | |
173 | - rmdir stage1 | |
174 | ||
175 | de-stage2: force | |
176 | - (cd stage2 ; mv -f * ..) | |
177 | - rm ld | |
178 | - rmdir stage2 | |
179 | ||
180 | de-stage3: force | |
181 | - (cd stage3 ; mv -f * ..) | |
182 | - rm ld | |
183 | - rmdir stage3 | |
184 | ||
185 | clean: | |
186 | - rm -f TAGS $(OFILES) $(GENERATED_SOURCES) $(GENERATED_HEADERS) | |
38f7d29d | 187 | - rm -f $(PROCESSED_SCRIPTS) |
e7921bd4 | 188 | - rm -f ld ld1 ld2 ld3 ld.new mkscript *.o y.output |
eb02fd64 RP |
189 | |
190 | lintlog:$(SOURCES) Makefile | |
2ee11735 | 191 | $(LINT) -abhxzn $(LINTFLAGS) $(LINTSOURCES) \ |
eb02fd64 RP |
192 | | grep -v "pointer casts may be troublesome" \ |
193 | | grep -v "possible pointer alignment problem" \ | |
194 | | grep -v "ignore" \ | |
195 | | grep -v "conversion from long may lose accuracy" \ | |
196 | | grep -v "warning: constant argument to NOT" \ | |
197 | | grep -v "enumeration type clash, operator CAST" \ | |
198 | | grep -v "warning: constant in conditional context"\ | |
199 | | grep -v "archive\.c" | |
200 | ||
201 | ||
202 | tags TAGS:$(SOURCES) $(HEADERS) | |
19b03b7a | 203 | etags -t $? |
eb02fd64 RP |
204 | |
205 | release: | |
206 | (cd /4/steve/ld; tar cf - $(LDSOURCES) $(HEADERS) $(MANSOURCES)) | tar xf - | |
207 | ||
208 | objdump:objdump.c | |
209 | ||
e7921bd4 | 210 | install: $(LD_PROG) |
8c32cf6e | 211 | $(INSTALL_PROGRAM) ld.new $(libsubdir)/ld |
eb02fd64 RP |
212 | |
213 | #----------------------------------------------------------------------------- | |
214 | # 'STANDARD' GNU/960 TARGETS BELOW THIS POINT | |
215 | # | |
216 | # 'VERSION' file must be present and contain a string of the form "x.y" | |
217 | #----------------------------------------------------------------------------- | |
218 | ||
219 | ver960.c: FORCE | |
220 | rm -f ver960.c | |
221 | echo "char ${TARG}_ver[]= \"${TARG} `cat VERSION`, `date`\";" > ver960.c | |
222 | ||
223 | ||
224 | # This target should be invoked before building a new release. | |
225 | # 'VERSION' file must be present and contain a string of the form "x.y" | |
226 | # | |
227 | roll: | |
228 | @V=`cat VERSION` ; \ | |
229 | MAJ=`sed 's/\..*//' VERSION` ; \ | |
230 | MIN=`sed 's/.*\.//' VERSION` ; \ | |
231 | V=$$MAJ.`expr $$MIN + 1` ; \ | |
232 | rm -f VERSION ; \ | |
233 | echo $$V >VERSION ; \ | |
234 | echo Version $$V | |
235 | ||
239d28f3 | 236 | |
19b03b7a | 237 | dep: $(LDSOURCES) $(PROCESSED_SCRIPTS) |
239d28f3 SC |
238 | mkdep $(CFLAGS) $? |
239 | ||
eb02fd64 RP |
240 | # Dummy target to force execution of dependent targets. |
241 | # | |
e7921bd4 | 242 | force: |
eb02fd64 RP |
243 | |
244 | # Target to uncomment host-specific lines in this makefile. Such lines must | |
245 | # have the following string beginning in column 1: #__<hostname>__# | |
246 | # Original Makefile is backed up as 'Makefile.old'. | |
247 | # | |
248 | # Invoke with: make make HOST=xxx | |
249 | # | |
250 | make: | |
251 | -@if test $(HOST)x = x ; then \ | |
252 | echo '\aSpecify "make make HOST=???"'; \ | |
253 | exit 1; \ | |
254 | fi ; \ | |
255 | grep -s "^#The next line was generated by 'make make'" Makefile; \ | |
256 | if test $$? = 0 ; then \ | |
257 | echo "\aMakefile has already been processed with 'make make'";\ | |
258 | exit 1; \ | |
259 | fi ; \ | |
260 | mv -f Makefile Makefile.old; \ | |
261 | echo "#The next line was generated by 'make make'" >Makefile ; \ | |
262 | echo "HOST=$(HOST)" >>Makefile ; \ | |
263 | echo >>Makefile ; \ | |
264 | sed "s/^#__$(HOST)__#//" < Makefile.old >>Makefile | |
265 | ||
266 | #\f | |
267 | ||
268 | Makefile: $(srcdir)/Makefile.in $(srcdir)/configure | |
f2e91404 | 269 | (cd $(srcdir) ; \ |
8c32cf6e RP |
270 | ./configure +destdir=$(destdir) \ |
271 | +norecurse \ | |
c252bac8 | 272 | `if [ "$(srcdir)" != "." ] ; then echo +subdirs; fi` \ |
7dc139f1 | 273 | $(host) +target=$(target)) |
eb02fd64 RP |
274 | |
275 | ### Local Variables: *** | |
276 | ### mode:fundamental *** | |
277 | ### page-delimiter: "^#\f" *** | |
278 | ### End: *** | |
279 | ### end of file | |
239d28f3 SC |
280 | |
281 | ||
282 | # IF YOU PUT ANYTHING HERE IT WILL GO AWAY |