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