# compiler proper (cc1, cc1obj, cc1plus).
EXTRA_OBJS =
+# Set this to `ld' to enable use of collect2.
+# USE_COLLECT2 =
+# It is convenient for configure to add the assignment at the beginning,
+# so don't override it here.
+
# List of extra C and assembler files to add to libgcc1.a.
# Assembler files should have names ending in `.asm'.
LIB1FUNCS_EXTRA =
# List of things which should already be built whenever we try to use gcc
# to link anything.
-GCC_PARTS=$(GCC_PASSES) libgcc.a $(EXTRA_PROGRAMS) $(EXTRA_PARTS)
+GCC_PARTS=$(GCC_PASSES) libgcc.a $(EXTRA_PROGRAMS) $(USE_COLLECT2) $(EXTRA_PARTS)
# Change this to empty to prevent installing limits.h.
# Actually, this currently has no effect,
# Language-independent object files.
OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \
function.o stmt.o expr.o calls.o expmed.o explow.o optabs.o varasm.o \
- rtl.o print-rtl.o rtlanal.o dbxout.o sdbout.o dwarfout.o emit-rtl.o \
+ rtl.o print-rtl.o rtlanal.o emit-rtl.o \
+ dbxout.o sdbout.o dwarfout.o xcoffout.o \
integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o \
regclass.o local-alloc.o global-alloc.o reload.o reload1.o caller-save.o \
insn-peep.o reorg.o sched.o final.o recog.o reg-stack.o \
insn-recog.o insn-extract.o insn-output.o insn-emit.o \
- insn-attrtab.o aux-output.o xcoffout.o $(EXTRA_OBJS)
+ insn-attrtab.o aux-output.o getpwd.o $(EXTRA_OBJS)
# GEN files are listed separately, so they can be built before doing parallel
# makes for cc1 or cc1plus. Otherwise sequent parallel make attempts to load
stamp-attr stamp-attrtab \
genemit genoutput genrecog genextract genflags gencodes genconfig genpeep \
genattrtab genattr \
- $(GCC_PASSES) $(EXTRA_PARTS) gcc-cross cccp cc1plus cc1obj enquire \
- protoize unprotoize specs collect2
+ $(GCC_PASSES) $(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross cccp \
+ cc1plus cc1obj enquire protoize unprotoize specs collect2
# Members of libgcc1.a.
LIB1FUNCS = _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
# Avoid a lot of time thinking about remaking Makefile.in and *.def.
.SUFFIXES: .in .def
-Makefile: $(srcdir)/Makefile.in $(srcdir)/configure \
+Makefile: $(srcdir)/Makefile.in $(srcdir)/configure $(srcdir)/version.c \
$(srcdir)/config/$(xmake_file) $(srcdir)/config/$(tmake_file)
sh config.status
rest.encap: libgcc.a float.h $(EXTRA_PARTS)
# This is what is made with the host's compiler
# whether making a cross compiler or not.
-native: config.status cpp $(LANGUAGES) $(EXTRA_PASSES) $(EXTRA_PROGRAMS)
+native: config.status cpp $(LANGUAGES) $(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(USE_COLLECT2)
# Define the names for selecting languages in LANGUAGES.
C c: cc1
cp-xref.o : cp-xref.c $(CONFIG_H) $(CPLUS_TREE_H)
cp-pt.o : cp-pt.c $(CONFIG_H) $(CPLUS_TREE_H) cp-decl.h cp-parse.h
+# To make a configuration always use collect2, set USE_COLLECT2 to ld.
+ld: collect2
+ rm -f ld
+ ln collect2 ld
+
collect2 : collect2.o version.o $(LIBDEPS)
$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o collect2 collect2.o version.o $(LIBS)
collect2.o : collect2.c $(CONFIG_H) gstab.h
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
+ -DSTANDARD_BIN_PREFIX=\"$(bindir)/\" \
+ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-lib/\" \
+ -DDEFAULT_TARGET_MACHINE=\"$(target)\" \
+ -c `echo $(srcdir)/collect2.c | sed 's,^\./,,'`
# Objectionable C language specific files.
stor-layout.o : stor-layout.c $(CONFIG_H) $(TREE_H) function.h
fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H) flags.h
toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h input.h \
- insn-attr.h xcoff.h
+ insn-attr.h xcoffout.h
+ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(MAYBE_USE_COLLECT2) -c `echo $(srcdir)/toplev.c | sed 's,^\./,,'`
rtl.o : rtl.c $(CONFIG_H) $(RTL_H)
rtlanal.o : rtlanal.c $(CONFIG_H) $(RTL_H)
varasm.o : varasm.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h \
- insn-codes.h expr.h hard-reg-set.h regs.h xcoff.h
+ insn-codes.h expr.h hard-reg-set.h regs.h xcoffout.h
function.o : function.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h function.h \
insn-flags.h insn-codes.h expr.h regs.h hard-reg-set.h insn-config.h \
recog.h output.h
optabs.o : optabs.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \
insn-flags.h insn-config.h insn-codes.h expr.h recog.h
dbxout.o : dbxout.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h regs.h \
- insn-config.h reload.h gstab.h xcoff.h
+ insn-config.h reload.h gstab.h xcoffout.h
sdbout.o : sdbout.c $(CONFIG_H) $(TREE_H) $(RTL_H) gsyms.h flags.h \
insn-config.h reload.h
dwarfout.o : dwarfout.c $(CONFIG_H) $(TREE_H) $(RTL_H) dwarf.h flags.h \
insn-config.h reload.h output.h
-xcoffout.o : xcoffout.c $(CONFIG_H) $(TREE_H) $(RTL_H) xcoff.h flags.h
+xcoffout.o : xcoffout.c $(CONFIG_H) $(TREE_H) $(RTL_H) xcoffout.h flags.h
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(RTL_H) flags.h gvarargs.h function.h \
regs.h insn-config.h insn-codes.h real.h expr.h
getpwd.o : getpwd.c $(CONFIG_H)
flags.h insn-config.h insn-attr.h
final.o : final.c $(CONFIG_H) $(RTL_H) gvarargs.h flags.h regs.h \
recog.h conditions.h insn-config.h insn-attr.h real.h output.h \
- hard-reg-set.h insn-codes.h gstab.h xcoff.h
+ hard-reg-set.h insn-codes.h gstab.h xcoffout.h
recog.o : recog.c $(CONFIG_H) $(RTL_H) \
regs.h recog.h hard-reg-set.h flags.h insn-config.h insn-attr.h \
insn-flags.h insn-codes.h real.h
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ALLOCA_FLAGS) \
`echo $(srcdir)/alloca.c | sed 's,^\./,,'`
$(ALLOCA_FINISH)
+ -rm alloca.s
\f
# Generate header and source files from the machine description,
# and compile them.
| awk 'NF > 0 {print}' > tmp-unproto.1
mv tmp-unproto.1 unprotoize.1
-SYSCALLS.c : $(srcdir)/sys-types.h $(srcdir)/sys-protos.h
- cat $(srcdir)/sys-types.h $(srcdir)/sys-protos.h >$@
-
# This info describes the target machine, so compile with GCC just built.
-SYSCALLS.c.X: SYSCALLS.c $(GCC_PASSES)
+SYSCALLS.c.X: $(srcdir)/sys-types.h $(srcdir)/sys-protos.h $(GCC_PASSES)
+ -rm -f SYSCALLS.c
+ cat $(srcdir)/sys-types.h $(srcdir)/sys-protos.h > SYSCALLS.c
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
- -fgen-aux-info -S -o /dev/null SYSCALLS.c
+ -aux-info $@ -S -o /dev/null SYSCALLS.c
+ -rm -f SYSCALLS.c
\f
# Remake the info files.
-doc: $(srcdir)/cpp.info $(srcdir)/gplus.info $(srcdir)/gcc.info
+doc: $(srcdir)/cpp.info $(srcdir)/gcc.info
$(srcdir)/cpp.info: $(srcdir)/cpp.texi
makeinfo `echo $(srcdir)/cpp.texi | sed 's,^\./,,'`
-$(srcdir)/gplus.info: $(srcdir)/gplus.texi
- makeinfo `echo $(srcdir)/gplus.texi | sed 's,^\./,,'`
+#$(srcdir)/gplus.info: $(srcdir)/gplus.texi
+# makeinfo `echo $(srcdir)/gplus.texi | sed 's,^\./,,'`
$(srcdir)/gcc.info: $(srcdir)/gcc.texi
makeinfo `echo $(srcdir)/gcc.texi | sed 's,^\./,,'`
\f
# Deletion of files made during compilation.
# There are four levels of this:
-# `mostlyclean', `clean', `cleanconfig' and `realclean'.
+# `mostlyclean', `clean', `distclean' and `realclean'.
# `mostlyclean' is useful while working on a particular type of machine.
# It deletes most, but not all, of the files made by compilation.
# It does not delete libgcc.a or its parts, so it won't have to be recompiled.
# `clean' deletes everything made by running `make all'.
-# `cleanconfig' also deletes the files made by config.
+# `distclean' also deletes the files made by config.
# `realclean' also deletes everything that could be regenerated automatically.
+
mostlyclean:
-rm -f $(STAGESTUFF)
# Delete the temporary source copies for cross compilation.
-rm -f *.dbr *.jump2 *.sched *.cse2 *.sched2 *.stack
# Delete some files made during installation.
-rm -f specs float.h enquire SYSCALLS.c SYSCALLS.c.X
- -rm -f collect collect2 ld mips-tfile mips-tdump
+ -rm -f collect collect2 ld mips-tfile mips-tdump alloca.s
# Delete unwanted output files from TeX.
-rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg
+# Delete sorted indices we don't actually use.
+ -rm -f gcc.vrs gcc.kys gcc.tps gcc.pgs gcc.fns
# Delete core dumps.
-rm -f core
-# delete all files made by compilation.
+# Delete all files made by compilation
+# that don't exist in the distribution.
clean: mostlyclean
-rm -f libgcc.a libgcc1.a libgcc2.a libgcc2.ready
- -rm -fr stage1 stage2 stage3 stage4
-# This is used to get rid of everything found in the source dir
-# that shouldn't be in the distribution.
+# Delete all files that users would normally create
+# while building and installing GCC.
distclean: clean
-rm -f tm.h aux-output.c config.h md config.status tconfig.h
-rm -f Makefile *.dvi *.oaux
+ -rm -fr stage1 stage2 stage3 stage4
# Delete anything likely to be found in the source directory
# that shouldn't be in the distribution.
extraclean: distclean
- -rm -rf =* #* *~ config/#* config/*~
- -rm -f *.dvi *.oaux patch*
+ -rm -rf =* #* *~* config/=* config/#* config/*~*
+ -rm -f *.dvi *.oaux patch* config/patch* *.orig *.rej *.d *.Z *.tar
-rm -f *.s *.s[0-9] *.i
# Get rid of every file that's generated from some other file.
install-dir:
if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi
if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib ; fi
+ if [ -d $(libdir)/gcc-lib/include ] ; then true ; else mkdir $(libdir)/gcc-lib/include ; fi
if [ -d $(libdir)/gcc-lib/$(target) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target) ; fi
if [ -d $(libdir)/gcc-lib/$(target)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target)/$(version) ; fi
if [ -d $(bindir) ] ; then true ; else mkdir $(bindir) ; fi
else true; \
fi; \
done
- for file in $(EXTRA_PASSES) $(EXTRA_PARTS) $(EXTRA_PROGRAMS) ..; do \
+ for file in $(EXTRA_PASSES) $(EXTRA_PARTS) $(EXTRA_PROGRAMS) $(USE_COLLECT2) ..; do \
if [ x"$$file" != x.. ]; then \
rm -f $(libsubdir)/$$file; \
$(INSTALL_PROGRAM) $$file $(libsubdir)/$$file; \
tar chf gcc.xtar gcc-$(version)
# Get rid of the temporary directory.
rm -rf gcc-$(version)
+# Update the version number in README
+ awk '$$1 " " $$2 " " $$3 == "This directory contains" \
+ { $$6 = version; print $$0 } \
+ $$1 " " $$2 " " $$3 != "This directory contains"' \
+ version=$(version) README > tmp.README
+ mv tmp.README README
# do make -f ../gcc/Makefile maketest DIR=../gcc
# in the intended test directory to make it a suitable test directory.