srcdir = .
-BASEDIR = $(srcdir)/..
-BFDDIR = $(BASEDIR)/bfd
-INCLUDE = $(BASEDIR)/include-cygnus
-INCLUDES = -I. -I$(srcdir) -I$(INCLUDE) -I$(BFDDIR)
+destdir = /usr/local
+
+version=`$(srcdir)/../gcc$(subdir)/gcc -dumpversion`
+prefix = $(destdir)
+bindir = $(prefix)/bin
+libdir = $(prefix)/lib
+libsubdir = $(libdir)/gcc/$(target)/$(version)
+
+INSTALL = install -c
+INSTALL_PROGRAM = $(INSTALL)
+INSTALL_FILE = $(INSTALL)
+
+BASEDIR = ../..
+INCLUDE = $(srcdir)/../include
+INCLUDES = -I. -I$(srcdir) -I$(INCLUDE)
DEBUG = -g
-CFLAGS = $(INCLUDES) $(DEBUG)
+
+SCRIPTS = ld-gld68k.script ld-gld68k-Ur.script ld-gld68k-r.script \
+ ld-gld.script ld-gld-Ur.script ld-gld-r.script ld-lnk960.script \
+ ld-lnk960-r.script ld-gld960.script \
+ ld-gldm88kbcs.script ld-gldm88kbcs-Ur.script ld-gldm88kbcs-r.script
+
+PROCESSED_SCRIPTS = ld-gld68k.x ld-gld68k-Ur.x ld-gld68k-r.x ld-gld.x \
+ ld-gld-Ur.x ld-gld-r.x ld-lnk960.x ld-lnk960-r.x ld-gld960.x \
+ ld-gldm88kbcs.x ld-gldm88kbcs-Ur.x ld-gldm88kbcs-r.x
+
+#### target and host dependent Makefile fragments come in here.
+###
+
+CFLAGS = $(INCLUDES) $(DEBUG) $(HDEFINES) $(TDEFINES) $(CDEFINES)
+LINTFLAGS = $(INCLUDES) $(EXTRA_DEF)
+
+.SUFFIXES: .y .x .script $(SUFFIXES)
+
+.y.o:
+ $(YACC) $<
+ mv y.tab.c ldgram.tab.c
+ $(CC) -c $(CFLAGS) ldgram.tab.c
+ mv ldgram.tab.o ldgram.o
# go directly to ld.new in case this ld isn't capable of
# linking native object on this host. It can be renamed on
# install.
-PROGS = ld.new
+LD_PROG = ld.new
+
+.script.x:
+ mkscript < $< >$*.x
# for self hosting
GNUTARGET=a.out-generic-big
LDEMULATION=gld
-bfdlib=$(BASEDIR)/bfd/Host-$(host)/libbfd.a
+BFDLIB=$(srcdir)/../bfd$(subdir)/libbfd.a
-OBJS= ldgram.o ldlex.o ldlang.o ldmain.o ldwrite.o ldexp.o ld-lnk960.o \
- ld-gld.o ld-gld960.o ld-emul.o ldversion.o ldmisc.o ldsym.o ldfile.o
+OFILES= ldgram.o ldlex.o ldlang.o ldmain.o ldwrite.o ldexp.o ld-lnk960.o ld-gld68k.o \
+ ld-gldm88kbcs.o \
+ ld-gld.o ld-gld960.o ld-emul.o ldversion.o ldmisc.o ldsym.o ld-vanilla.o ldfile.o
HEADERS=config.h ldmain.h ldmain.h ldmisc.h ldsym.h ldlang.h ldexp.h \
ldlex.h ldwrite.h ldversion.h ld-emul.h ldfile.h ldgram.h ld.h
MANSOURCES=ld.tex
-LDCSOURCES=ldlang.c ldmain.c ldwrite.c ld-lnk960.c ld-gld.c \
- ld-gld960.c ld-emul.c ldversion.c ldmisc.c ldexp.c ldsym.c ldfile.c
+LDCSOURCES=ldlang.c ldmain.c ldwrite.c ld-lnk960.c ld-gld.c ld-gld68k.c \
+ ld-gldm88kbcs.c \
+ ld-gld960.c ld-emul.c ldversion.c ldmisc.c ldexp.c ldsym.c ldfile.c ld-vanilla.c
GENERATED_SOURCES=ldgram.tab.c ldlex.c ldgram.tab.h y.tab.h
GENERATED_HEADERS=ldgram.tab.h
LDSOURCES=$(LDCSOURCES) ldgram.y ldlex.l
-#BFDSOURCES=../bfd/libbfd.c ../bfd/bfd.c ../bfd/sunos.c ../bfd/icoff.c ../bfd/b.out.c ../bfd/archive.c ../bfd/srec.c
+BFDSOURCES=../../bfd/common/*.c
SOURCES= $(LDSOURCES) $(BFDSOURCES)
LINTSOURCES= $(LDCSOURCES) $(BFDSOURCES) $(GENERATED_SOURCES)
-all: $(PROGS)
+STAGESTUFF = $(GENERATED_SOURCES) $(GENERATED_HEADERS) $(PROCESSED_SCRIPTS) $(OFILES) $(LD_PROG) mkscript
-$(PROGS): $(OBJS)
+all: Makefile $(PROCESSED_SCRIPTS) $(LD_PROG)
+
+$(PROCESSED_SCRIPTS): mkscript $(SCRIPTS)
+
+
+#$(BFDLIB): $(BFDSOURCES)
# (cd ../bfd; make)
-# LDEMULATION=gld; export LDEMULATION; GNUTARGET=a.out-generic-big;./ldok -format a.out-generic-big -o ld /lib/crt0.o $(OBJS) $(bfdlib) -lc /usr/local/lib/gcc/sparc/1.91/gnulib
-# gld -o ld /lib/crt0.o $(OBJS) $(bfdlib) -lc /usr/local/lib/gcc/sparc/1.91/gnulib
- $(CC) -Bstatic -o ld.new $(OBJS) $(bfdlib)
+$(LD_PROG): $(OFILES) $(BFDLIB)
+ $(CC) $(CFLAGS) -o $(LD_PROG) $(OFILES) $(BFDLIB)
-ld1: ld
- gcc -v -B./ -o ld1 $(OBJS) $(bfdlib)
+# (cd ../bfd; make)
+# 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
+# gld -o ld /lib/crt0.o $(OFILES) $(BFDLIB) -lc /usr/local/lib/gcc/sparc/1.91/gnulib
+# $(CC) -Bstatic -o ld.new $(OFILES) $(BFDLIB)
+
+
+ld1: ld.new
+ $(HOSTING_EMU); ./ld.new -o ld1 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(HOSTING_LIBS)
ld2: ld1
- mv ld1 ld
- gcc -v -B./ -o ld2 $(OBJS) $(bfdlib)
+ $(HOSTING_EMU); ./ld1 -o ld2 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(HOSTING_LIBS)
ld3: ld2
- mv ld2 ld
- gcc -v -B./ -o ld3 $(OBJS) $(bfdlib)
+ $(HOSTING_EMU); ./ld2 -o ld3 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(HOSTING_LIBS)
ld.dvi:ld.tex
tex ld.tex
-ldgram.o:ldgram.y
- yacc -d $(srcdir)/ldgram.y
- mv y.tab.c ldgram.tab.c
- $(CC) -c $(CFLAGS) ldgram.tab.c
- mv ldgram.tab.o ldgram.o
+mkscript: mkscript.c
-ldgram.tab.h:ldgram.o
+ldgram.o: ldgram.y
+ldgram.tab.h:ldgram.y
cp y.tab.h ldgram.tab.h
-
+
+ld-gld.o: $(PROCESSED_SCRIPTS) ld-gld.c
+
ldlex.c: ldlex.l ldgram.tab.h
ldlex.o: ldlex.c ldgram.tab.h
ldfile.o: ldfile.c
ldwrite.o: ldwrite.c
ldlang.o: ldlang.c ldgram.tab.h
-ld-gld.o: ld-gld.c
-ld-gld960.o: ld-gld960.c
-ld-emul.o:ld-emul.c
-ld-lnk960.o:ld-lnk960.c
-ldexp.o:ldexp.c ldgram.tab.h
-ldmisc.o:ldmisc.c
-ldsym.o:ldsym.c
-clean:
- - rm -f $(OBJS) $(GENERATED_SOURCES) $(GENERATED_HEADERS)
- - rm -f ld ld1 ld2
+ld-gld68k.o: $(PROCESSED_SCRIPTS) ld-gld68k.c
+ld-gld960.o: $(PROCESSED_SCRIPTS) ld-gld960.c
+ld-gldm88kbcs.o: $(PROCESSED_SCRIPTS) ld-gldm88kbcs.c
+ld-emul.o: ld-emul.c
+ld-vanilla.o: ld-vanilla.c
+ld-lnk960.o: $(PROCESSED_SCRIPTS) ld-lnk960.c
+ldexp.o: ldexp.c ldgram.tab.h
+ldmisc.o: ldmisc.c
+ldsym.o: ldsym.c
+
+stage1: force
+ - mkdir stage1
+ - mv -f $(STAGESTUFF) stage1
+ - (cd stage1 ; ln -s $(LD_PROG) ld)
+
+stage2: force
+ - mkdir stage2
+ - mv -f $(STAGESTUFF) stage2
+ - (cd stage2 ; ln -s $(LD_PROG) ld)
+
+stage3: force
+ - mkdir stage3
+ - mv -f $(STAGESTUFF) stage3
+ - (cd stage3 ; ln -s $(LD_PROG) ld)
+
+de-stage1: force
+ - (cd stage1 ; mv -f * ..)
+ - rm ld
+ - rmdir stage1
+
+de-stage2: force
+ - (cd stage2 ; mv -f * ..)
+ - rm ld
+ - rmdir stage2
+
+de-stage3: force
+ - (cd stage3 ; mv -f * ..)
+ - rm ld
+ - rmdir stage3
+clean:
+ - rm -f TAGS $(OFILES) $(GENERATED_SOURCES) $(GENERATED_HEADERS)
+ - rm -f ld ld1 ld2 ld3 ld.new mkscript *.o y.output
lintlog:$(SOURCES) Makefile
- $(LINT) -abhxzn $(CFLAGS) $(LINTSOURCES) \
+ $(LINT) -abhxzn $(LINTFLAGS) $(LINTSOURCES) \
| grep -v "pointer casts may be troublesome" \
| grep -v "possible pointer alignment problem" \
| grep -v "ignore" \
objdump:objdump.c
-install: $(PROGS)
- rm -f $G960BASE/bin/$(PROGS)
- cp $(PROGS) $$G960BASE/bin/gld960c
+install: $(LD_PROG)
+ $(INSTALL_PROGRAM) ld.new $(libsubdir)/ld
#-----------------------------------------------------------------------------
# 'STANDARD' GNU/960 TARGETS BELOW THIS POINT
# Dummy target to force execution of dependent targets.
#
-.force:
-FORCE:
+force:
# Target to uncomment host-specific lines in this makefile. Such lines must
# have the following string beginning in column 1: #__<hostname>__#
#\f
Makefile: $(srcdir)/Makefile.in $(srcdir)/configure
- (cd $(srcdir) ; configure -host=$(host) $(target))
+ (cd $(srcdir) ; \
+ ./configure +destdir=$(destdir) \
+ +norecurse \
+ `if [ "$(srcdir)" != "." ] ; then echo +f; fi` \
+ $(host) +target=$(target))
### Local Variables: ***
### mode:fundamental ***