#
# Makefile for directory with subdirs to build.
#
-# Last Mod Tue Apr 16 12:57:52 PDT 1991, by rich@sendai
+# Last Mod Thu Apr 18 17:41:48 PDT 1991, by rich@cygint.cygnus.com
#
# $Id$
#CC = gcc -b$(target) # -B$(srcdir)/../gas/Host-$(host)/Target-$(target)/
#CFLAGS = -g -nostdinc -nostdlib -I- -I/usr/local/lib/gcc/$(target)/1.92/include -I$(srcdir) -I$(srcdir)/../include -I$(OSINCLUDE)
-# These are roughly topologically sorted in order to make porting more
-# streamlined.
-
-SUBDIRS =
-NONSUBDIRS =
-SUBDIRS_INCLUDE = machine-dep
-
RANLIB = ranlib
AR = ar
AR_FLAGS = cqv
+BOOTSTRAPPABLE = getopt bfd binutils ld gas gcc gnulib
+OTHERS =
+
#### host and target specific makefile fragments come in here.
###
-subdir_do: $(SUBDIRS) $(TARGETDIRS)
- for i in $(SUBDIRS); \
+all:
+ $(MAKE) subdir_do DO=all "DODIRS=$(BOOTSTRAPPABLE) $(OTHERS)"
+
+subdir_do: $(DODIRS)
+ for i in $(DODIRS); \
do \
if (cd $(srcdir)/$$i`if [ -d $(srcdir)/$$i.$(target) ] ; \
then echo .$(target) ; fi`$(subdir); \
fi ;\
done
-all:
- $(MAKE) subdir_do DO=all
-
-stage1:
- $(MAKE) subdir_do DO=stage1
-
bootstrap:
$(MAKE) all
$(MAKE) stage1
+ $(MAKE) pass "stagepass=stage1"
+ $(MAKE) stage2
+ $(MAKE) pass "stagepass=stage2"
+
+bootstrap2:
+ $(MAKE) pass "stagepass=stage1"
+ $(MAKE) stage2
+ $(MAKE) pass "stagepass=stage2"
+
+bootstrap3:
+ $(MAKE) pass "stagepass=stage2"
+
+pass:
+ $(MAKE) subdir_do DO=all "DODIRS=$(BOOTSTRAPPABLE)" \
+ "CC=$(srcdir)/../gcc`if [ -d $(srcdir)/gcc.$(target) ] ; \
+ then echo .$(target) ; fi`$(subdir)/$(stagepass)/gcc -O \
+ -B$(srcdir)/../gcc`if [ -d $(srcdir)/gcc.$(target) ] ; \
+ then echo .$(target) ; fi`$(subdir)/$(stagepass)/ \
+ -B$(srcdir)/../gas`if [ -d $(srcdir)/gas.$(target) ] ; \
+ then echo .$(target) ; fi`$(subdir)/$(stagepass)/" \
+ "AR=$(srcdir)/../binutils`if [ -d $(srcdir)/binutils.$(target) ] ; \
+ then echo .$(target) ; fi`$(subdir)/$(stagepass)/ar" \
+ "RANLIB=$(srcdir)/../binutils`if [ -d $(srcdir)/binutils.$(target) ] ; \
+ then echo .$(target) ; fi`$(subdir)/$(stagepass)/ranlib" \
+ "LOADLIBES=$(srcdir)/../gnulib`if [ -d $(srcdir)/binutils.$(target) ] ; \
+ then echo .$(target) ; fi`$(subdir)/$(stagepass)/gnulib.a /lib/libc.a" \
+ "LDFLAGS=-nostdlib /lib/crt0.o \
+ -B$(srcdir)/../ld`if [ -d $(srcdir)/ld.$(target) ] ; \
+ then echo .$(target) ; fi`$(subdir)/$(stagepass)/"
-clean:
- rm -rf *.a TEMP errs core *.o *~ \#* TAGS *.E
- $(MAKE) subdir_do DO=clean
-install:
- $(MAKE) subdir_do DO=install
+stage1:
+ $(MAKE) subdir_do DO=stage1 "DODIRS=$(BOOTSTRAPPABLE)"
-# When installing include files, be sure that machine-dependent
-# files override machine-independent files.
-# Might be better to check for collisions? FIXME
-install_crt:
- $(MAKE) SUBDIRS=machine-dep DO=install_crt
+stage2:
+ $(MAKE) subdir_do DO=stage2 "DODIRS=$(BOOTSTRAPPABLE)"
-install_gnulib:
- $(MAKE) SUBDIRS=gnulib DO=install_gnulib
+stage3:
+ $(MAKE) subdir_do DO=stage3 "DODIRS=$(BOOTSTRAPPABLE)"
-install_include:
- $(MAKE) SUBDIRS=$(SUBDIRS_INCLUDE) DO=install_include
+stage4:
+ $(MAKE) subdir_do DO=stage4 "DODIRS=$(BOOTSTRAPPABLE)"
-install_lib: libc.a
- cp libc.a $(DESTDIR)/lib/libc.a
+de-stage1:; $(MAKE) subdir_do DO=de-stage1 "DODIRS=$(BOOTSTRAPPABLE)"
+de-stage2:; $(MAKE) subdir_do DO=de-stage2 "DODIRS=$(BOOTSTRAPPABLE)"
+de-stage3:; $(MAKE) subdir_do DO=de-stage3 "DODIRS=$(BOOTSTRAPPABLE)"
+de-stage4:; $(MAKE) subdir_do DO=de-stage4 "DODIRS=$(BOOTSTRAPPABLE)"
+
+clean:
+ rm -rf *.a TEMP errs core *.o *~ \#* TAGS *.E
+ $(MAKE) subdir_do DO=clean "DODIRS=$(BOOTSTRAPPABLE) $(OTHERS)"
+
+install:
+ $(MAKE) subdir_do DO=install "DODIRS=$(BOOTSTRAPPABLE) $(OTHERS)"
etags tags: TAGS
#
# $Log$
-# Revision 1.9 1991/04/17 01:34:36 rich
+# Revision 1.10 1991/04/24 16:50:53 rich
+# Three staging checkpoint.
+#
+# Revision 1.9 1991/04/17 01:34:36 rich
# Added getopt for binutils, fixed problem with host dependancies in
# configure.template.
#
PROGS = $(SIZE_PROG) $(COPY_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRIP_PROG) $(RANLIB_PROG)
-#CC = gcc -Wall
-#CC=gcc
BASEDIR = $(srcdir)/..
-# Let rich do this for now:
LIBDIR = $(srcdir)/../bfd$(subdir)
-#__dgux__#DEFINES=-DHOST_SYS=DGUX_SYS
-
-#__sun3__#DEFINES=-DHOST_SYS=SUN3_SYS
-#__sun3__#LDFLAGS= -Bstatic
-
-#__sun4__#DEFINES=-DHOST_SYS=SUN4_SYS
-#__sun4__#LDFLAGS= -Bstatic
-
-#__sun386i__#LDFLAGS = -Bstatic
-
-#__rs6000__#DEFINES=-Daix
-#__rs6000__#ALLOCA = alloca.o
-
-#__i386v__#ALLOCA = alloca.o
-#__i386v__#DEFINES=-DUSG
-
-
#### host and target dependant Makefile fragments come in here.
###
INCDIR = $(BASEDIR)/include
-CFLAGS = -g -I$(srcdir)/../include-cygnus -I$(INCDIR) $(DEFINES) $(CDEFINES)
-
-
-bindir=$(BASEDIR)/bin
+CFLAGS = -g -I$(srcdir)/../include-cygnus -I$(INCDIR) $(HDEFINES) $(TDEFINES)
DISASMS = m68k-pinsn.o i960-pinsn.o sparc-pinsn.o
+
#\f
## Random definitions
# Hopefully all these may be flushed once we get configuration down pat.
# Code shared by all the binutils.
BULIBS = bucomm.o version.o filemode.o
-ADDL_LIBS = $(GNU_GETOPT_LONG) $(MALLOC) $(BULIBS)
+ADDL_LIBS = $(GNU_GETOPT_LONG) $(MALLOC) $(BULIBS) $(BFD)
BFD = $(LIBDIR)/libbfd.a
#\f
# (cd $(LIBDIR); make)
$(SIZE_PROG): $(ADDL_LIBS) size.o $(BFD)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $(SIZE_PROG) size.o $(ADDL_LIBS) $(BFD)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $(SIZE_PROG) size.o $(ADDL_LIBS) $(LOADLIBES)
$(COPY_PROG): $(ADDL_LIBS) copy.o $(BFD)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $(COPY_PROG) copy.o $(ADDL_LIBS) $(BFD)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $(COPY_PROG) copy.o $(ADDL_LIBS) $(LOADLIBES)
$(NM_PROG): $(ADDL_LIBS) nm.o $(BFD)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $(NM_PROG) nm.o $(MALLOC) $(ADDL_LIBS) $(BFD)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $(NM_PROG) nm.o $(ADDL_LIBS) $(LOADLIBES)
$(OBJDUMP_PROG): $(ADDL_LIBS) size.o objdump.o $(DISASMS) $(BFD)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $(OBJDUMP_PROG) objdump.o $(DISASMS) $(ADDL_LIBS) $(BFD)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $(OBJDUMP_PROG) objdump.o $(DISASMS) $(ADDL_LIBS) $(LOADLIBES)
$(AR_PROG): $(ADDL_LIBS) ar.o $(BFD)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $(AR_PROG) ar.o $(MALLOC) $(ADDL_LIBS) $(BFD)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $(AR_PROG) ar.o $(ADDL_LIBS) $(LOADLIBES)
$(RANLIB_PROG): $(AR_PROG)
-rm -f $(RANLIB_PROG)
-rm -f $(STRIP_PROG)
-ln $(COPY_PROG) $(STRIP_PROG)
+stage1: force
+ - mkdir stage1
+ - mv -f *.o $(PROGS) stage1
+
+stage2: force
+ - mkdir stage2
+ - mv -f *.o $(PROGS) stage2
+
+stage3: force
+ - mkdir stage3
+ - mv -f *.o $(PROGS) stage3
+
+de-stage1: force
+ - (cd stage1 ; mv -f * ..)
+ - rmdir stage1
+
+de-stage2: force
+ - (cd stage2 ; mv -f * ..)
+ - rmdir stage2
+
+de-stage3: force
+ - (cd stage3 ; mv -f * ..)
+ - rmdir stage3
+
clean:
-rm -f *.o *~ \#* core $(PROGS) TAGS
etags tags: TAGS
-TAGS: .force
+TAGS: force
etags $(INCDIR)/*.h $(BFDSRC)/*.[hc] *.[hc]
realclean: clean
# 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>__#
# script appropriate for this directory. For more information, check
# any existing configure script.
-configdirs="getopt bfd binutils ld gas gnulib1 gcc clib"
+configdirs="getopt bfd binutils ld gas gcc gnulib clib"
srctrigger=README.configure
srcname="gnu development package"
#
# $Log$
-# Revision 1.8 1991/04/17 01:34:44 rich
+# Revision 1.9 1991/04/24 16:50:54 rich
+# Three staging checkpoint.
+#
+# Revision 1.7 1991/04/17 01:34:47 rich
# Added getopt for binutils, fixed problem with host dependancies in
# configure.template.
#
# script appropriate for this directory. For more information, check
# any existing configure script.
-configdirs="getopt bfd binutils ld gas gnulib1 gcc clib"
+configdirs="getopt bfd binutils ld gas gcc gnulib clib"
srctrigger=README.configure
srcname="gnu development package"
HOST_CPPFLAGS=$(CPPFLAGS)
# Choose the real default target.
-ALL=gas
+ALL=as
# End of variables for you to override.
# Now figure out from those variables how to compile and link.
# This is the variable actually used when we compile.
-ALL_CFLAGS = $(INTERNAL_CFLAGS) $(CFLAGS)
+ALL_CFLAGS = $(INTERNAL_CFLAGS) $(CFLAGS) $(HDEFINES) $(TDEFINES)
# Even if ALLOCA is set, don't use it if compiling with GCC.
USE_ALLOCA= `if [ x"${CC}" = x"${OLDCC}" ] ; then echo ${ALLOCA}; else true; fi`
\f
# Files to be copied away after each stage in building.
STAGE_GCC=gcc
-STAGESTUFF = *.o gas
+STAGESTUFF = *.o as
# The files that "belong" in CONFIG_H are deliberately omitted
# because having them there would not be useful in actual practice.
# CONFIG_H = config.h tm.h
CONFIG_H =
\f
-gas: $(OBJS) $(LIBDEPS)
- $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o gas $(OBJS) $(LIBS)
+as: $(OBJS) $(LIBDEPS)
+ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o as $(OBJS) $(LIBS) $(LOADLIBES)
objdump:
all.internal: native
# This is what is made with the host's compiler if making a cross assembler.
-native: config.status gas
+native: config.status as
config.status:
@echo You must configure gas. Look at the INSTALL file for details.
# Entry points `install', `includes' and `uninstall'.
# Copy the files into directories where they will be run.
-install: gas
- $(INSTALL_PROGRAM) gas $(libsubdir)/as
+install: as
+ $(INSTALL_PROGRAM) as $(libsubdir)/as
# Create the installation directory.
install-dir:
# Cancel installation by deleting the installed files.
uninstall:
-rm -rf $(libsubdir)
- -rm -rf $(bindir)/gas
+ -rm -rf $(bindir)/as
-rm -rf $(mandir)/gas.$(manext)
\f
tags TAGS: force
etags $(REAL_SOURCES) $(REAL_HEADERS) README Makefile config/*.[hc]
-bootstrap: gas force
+bootstrap: as force
$(MAKE) stage1
- $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage1/ $(CFLAGS)" libdir=$(libdir) ALLOCA= gas
+ $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage1/ $(CFLAGS)" libdir=$(libdir) ALLOCA= as
$(MAKE) stage2
- $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage2/ $(CFLAGS)" libdir=$(libdir) ALLOCA= gas
+ $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage2/ $(CFLAGS)" libdir=$(libdir) ALLOCA= as
for i in *.o; do cmp $$i stage2/$$i; done
bootstrap2: force
- $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage1/ $(CFLAGS)" libdir=$(libdir) ALLOCA= gas
+ $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage1/ $(CFLAGS)" libdir=$(libdir) ALLOCA= as
$(MAKE) stage2
- $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage2/ $(CFLAGS)" libdir=$(libdir) ALLOCA= gas
+ $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage2/ $(CFLAGS)" libdir=$(libdir) ALLOCA= as
$(MAKE) stage-last
bootstrap3: force
- $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage2/ $(CFLAGS)" libdir=$(libdir) ALLOCA= gas
+ $(MAKE) CC="$(CC)" CFLAGS="-O -Bstage2/ $(CFLAGS)" libdir=$(libdir) ALLOCA= as
$(MAKE) comparison
# Copy the object files from a particular stage into a subdirectory.
stage1: force
-mkdir stage1
-mv $(STAGESTUFF) stage1
- -(cd stage1 ; ln -s gas as)
stage2: force
-mkdir stage2
-mv $(STAGESTUFF) stage2
- -(cd stage2 ; ln -s gas as)
-
stage3: force
-mkdir stage3
- -mv $(STAGESTUFF) $(STAGE_GCC) stage3
- -rm -f stage3/gnulib
- -cp gnulib stage3
- -if $(RANLIB_TEST) ; then $(RANLIB) stage3/gnulib; else true; fi
+ -mv $(STAGESTUFF) stage3
-stage4: force
- -mkdir stage4
- -mv $(STAGESTUFF) $(STAGE_GCC) stage4
- -rm -f stage4/gnulib
- -cp gnulib stage4
- -if $(RANLIB_TEST) ; then $(RANLIB) stage4/gnulib; else true; fi
+de-stage1: force
+ - (cd stage1 ; mv -f * ..)
+ - rmdir stage1
+
+de-stage2: force
+ - (cd stage2 ; mv -f * ..)
+ - rmdir stage2
+
+de-stage3: force
+ - (cd stage3 ; mv -f * ..)
+ - rmdir stage3
stage-last:
for i in *.o; do cmp $$i stage2/$$i; done
.PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4
comparison: clean
- $(MAKE) "CC=/usr/local/bin/gcc -Wall" gas
+ $(MAKE) "CC=/usr/local/bin/gcc -Wall" as
$(MAKE) stage1
- - $(MAKE) "CC=/usr/local/bin/gcc -Wall -b$(target) -Bstage1/" gas -k
+ - $(MAKE) "CC=/usr/local/bin/gcc -Wall -b$(target) -Bstage1/" as -k
$(MAKE) stage2
- - $(MAKE) "CC=/usr/local/bin/gcc -Wall -b$(target)" gas -k
+ - $(MAKE) "CC=/usr/local/bin/gcc -Wall -b$(target)" as -k
$(MAKE) stage-last
force: