diff options
Diffstat (limited to 'contrib/gcc/f/Make-lang.in')
-rw-r--r-- | contrib/gcc/f/Make-lang.in | 472 |
1 files changed, 472 insertions, 0 deletions
diff --git a/contrib/gcc/f/Make-lang.in b/contrib/gcc/f/Make-lang.in new file mode 100644 index 0000000..38712fd --- /dev/null +++ b/contrib/gcc/f/Make-lang.in @@ -0,0 +1,472 @@ +# Top level makefile fragment for GNU Fortran. -*-makefile-*- +# Copyright (C) 1995-1998 Free Software Foundation, Inc. + +#This file is part of GNU Fortran. + +#GNU Fortran is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 2, or (at your option) +#any later version. + +#GNU Fortran is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with GNU Fortran; see the file COPYING. If not, write to +#the Free Software Foundation, 59 Temple Place - Suite 330, +#Boston, MA 02111-1307, USA. + +# This file provides the language dependent support in the main Makefile. +# Each language makefile fragment must provide the following targets: +# +# foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap, +# foo.info, foo.dvi, +# foo.install-normal, foo.install-common, foo.install-info, foo.install-man, +# foo.uninstall, foo.distdir, +# foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean, +# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4 +# +# where `foo' is the name of the language. +# +# It should also provide rules for: +# +# - making any compiler driver (eg: g++) +# - the compiler proper (eg: cc1plus) +# - define the names for selecting the language in LANGUAGES. +# +# $(srcdir) must be set to the gcc/ source directory (not gcc/f/). +# +# Actual name to use when installing a native compiler. +G77_INSTALL_NAME = `t='$(program_transform_name)'; echo g77 | sed $$t` + +# Actual name to use when installing a cross-compiler. +G77_CROSS_NAME = `t='$(program_transform_cross_name)'; echo g77 | sed $$t` +# +# Define the names for selecting f77 in LANGUAGES. +# Note that it would be nice to move the dependency on g77 +# into the F77 rule, but that needs a little bit of work +# to do the right thing within all.cross. +F77 f77: f771$(exeext) + +# Tell GNU make to ignore these if they exist. +.PHONY: F77 f77 f77.all.build f77.all.cross \ + f77.start.encap f77.rest.encap f77.info f77.dvi \ + f77.install-normal \ + f77.install-common f77.install-info f77.install-man \ + f77.uninstall f77.mostlyclean f77.clean f77.distclean \ + f77.extraclean f77.maintainer-clean f77.distdir f77.rebuilt \ + f77.stage1 f77.stage2 f77.stage3 f77.stage4 + +g77.c: $(srcdir)/gcc.c + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + if [ -f lang-f77 ]; then \ + rm -f g77.c; \ + $(LN_S) $(srcdir)/gcc.c g77.c; \ + else true; fi + +g77spec.o: $(srcdir)/f/g77spec.c $(srcdir)/f/version.h + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + if [ -f lang-f77 ]; then \ + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/f/g77spec.c; \ + else true; fi + +g77version.o: $(srcdir)/f/version.c + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + if [ -f lang-f77 ]; then \ + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -o g77version.o \ + $(srcdir)/f/version.c; \ + else true; fi + +# N.B.: This is a copy of the gcc.o rule, with -DLANG_SPECIFIC_DRIVER added. +# It'd be nice if we could find an easier way to do this---rather than have +# to track changes to the toplevel gcc Makefile as well. +# We depend on g77.c last, to make it obvious where it came from. +g77.o: $(CONFIG_H) multilib.h config.status $(lang_specs_files) g77.c + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + if [ -f lang-f77 ]; then \ + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(DRIVER_DEFINES) \ + -DLANG_SPECIFIC_DRIVER -c g77.c; \ + else true; fi + +# Create the compiler driver for g77. +g77$(exeext): g77.o g77spec.o g77version.o version.o choose-temp.o pexecute.o prefix.o mkstemp.o \ + $(LIBDEPS) $(EXTRA_GCC_OBJS) + if [ -f lang-f77 ]; then \ + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ g77.o g77spec.o g77version.o \ + version.o choose-temp.o pexecute.o prefix.o mkstemp.o $(EXTRA_GCC_OBJS) $(LIBS); \ + else true; fi + +# Create a version of the g77 driver which calls the cross-compiler. +g77-cross$(exeext): g77$(exeext) + if [ -f lang-f77 ]; then \ + rm -f g77-cross$(exeext); \ + cp g77$(exeext) g77-cross$(exeext); \ + else true; fi + +F77_SRCS = \ + $(srcdir)/f/assert.j \ + $(srcdir)/f/bad.c \ + $(srcdir)/f/bad.def \ + $(srcdir)/f/bad.h \ + $(srcdir)/f/bit.c \ + $(srcdir)/f/bit.h \ + $(srcdir)/f/bld-op.def \ + $(srcdir)/f/bld.c \ + $(srcdir)/f/bld.h \ + $(srcdir)/f/com-rt.def \ + $(srcdir)/f/com.c \ + $(srcdir)/f/com.h \ + $(srcdir)/f/config.j \ + $(srcdir)/f/convert.j \ + $(srcdir)/f/data.c \ + $(srcdir)/f/data.h \ + $(srcdir)/f/equiv.c \ + $(srcdir)/f/equiv.h \ + $(srcdir)/f/expr.c \ + $(srcdir)/f/expr.h \ + $(srcdir)/f/fini.c \ + $(srcdir)/f/flags.j \ + $(srcdir)/f/glimits.j \ + $(srcdir)/f/global.c \ + $(srcdir)/f/global.h \ + $(srcdir)/f/hconfig.j \ + $(srcdir)/f/implic.c \ + $(srcdir)/f/implic.h \ + $(srcdir)/f/input.j \ + $(srcdir)/f/info-b.def \ + $(srcdir)/f/info-k.def \ + $(srcdir)/f/info-w.def \ + $(srcdir)/f/info.c \ + $(srcdir)/f/info.h \ + $(srcdir)/f/intrin.c \ + $(srcdir)/f/intrin.def \ + $(srcdir)/f/intrin.h \ + $(srcdir)/f/lab.c \ + $(srcdir)/f/lab.h \ + $(srcdir)/f/lex.c \ + $(srcdir)/f/lex.h \ + $(srcdir)/f/malloc.c \ + $(srcdir)/f/malloc.h \ + $(srcdir)/f/name.c \ + $(srcdir)/f/name.h \ + $(srcdir)/f/output.j \ + $(srcdir)/f/parse.c \ + $(srcdir)/f/proj.c \ + $(srcdir)/f/proj.h \ + $(srcdir)/f/rtl.j \ + $(srcdir)/f/src.c \ + $(srcdir)/f/src.h \ + $(srcdir)/f/st.c \ + $(srcdir)/f/st.h \ + $(srcdir)/f/sta.c \ + $(srcdir)/f/sta.h \ + $(srcdir)/f/stb.c \ + $(srcdir)/f/stb.h \ + $(srcdir)/f/stc.c \ + $(srcdir)/f/stc.h \ + $(srcdir)/f/std.c \ + $(srcdir)/f/std.h \ + $(srcdir)/f/ste.c \ + $(srcdir)/f/ste.h \ + $(srcdir)/f/storag.c \ + $(srcdir)/f/storag.h \ + $(srcdir)/f/stp.c \ + $(srcdir)/f/stp.h \ + $(srcdir)/f/str-1t.fin \ + $(srcdir)/f/str-2t.fin \ + $(srcdir)/f/str-fo.fin \ + $(srcdir)/f/str-io.fin \ + $(srcdir)/f/str-nq.fin \ + $(srcdir)/f/str-op.fin \ + $(srcdir)/f/str-ot.fin \ + $(srcdir)/f/str.c \ + $(srcdir)/f/str.h \ + $(srcdir)/f/sts.c \ + $(srcdir)/f/sts.h \ + $(srcdir)/f/stt.c \ + $(srcdir)/f/stt.h \ + $(srcdir)/f/stu.c \ + $(srcdir)/f/stu.h \ + $(srcdir)/f/stv.c \ + $(srcdir)/f/stv.h \ + $(srcdir)/f/stw.c \ + $(srcdir)/f/stw.h \ + $(srcdir)/f/symbol.c \ + $(srcdir)/f/symbol.def \ + $(srcdir)/f/symbol.h \ + $(srcdir)/f/system.j \ + $(srcdir)/f/target.c \ + $(srcdir)/f/target.h \ + $(srcdir)/f/tconfig.j \ + $(srcdir)/f/tm.j \ + $(srcdir)/f/top.c \ + $(srcdir)/f/top.h \ + $(srcdir)/f/toplev.j \ + $(srcdir)/f/tree.j \ + $(srcdir)/f/type.c \ + $(srcdir)/f/type.h \ + $(srcdir)/f/version.c \ + $(srcdir)/f/version.h \ + $(srcdir)/f/where.c \ + $(srcdir)/f/where.h + +f771$(exeext): $(P) $(F77_SRCS) $(LIBDEPS) stamp-objlist + touch lang-f77 + cd f; $(MAKE) $(FLAGS_TO_PASS) \ + HOST_CC="$(HOST_CC)" HOST_CFLAGS="$(HOST_CFLAGS)" HOST_CPPFLAGS="$(HOST_CPPFLAGS)" \ + ../f771$(exeext) + +# +# Build hooks: + +f77.all.build: g77$(exeext) +f77.all.cross: g77-cross$(exeext) +f77.start.encap: g77$(exeext) +f77.rest.encap: + +f77.info: f/g77.info +f77.dvi: f/g77.dvi + +# g77 documentation. +f/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ + $(srcdir)/f/g77install.texi $(srcdir)/f/news.texi \ + $(srcdir)/f/intdoc.texi + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + if [ -f lang-f77 ]; then \ + rm -f $(srcdir)/f/g77.info-*; \ + $(MAKEINFO) -I$(srcdir)/f -o f/g77.info $(srcdir)/f/g77.texi; \ + else true; fi + +f/g77.dvi: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \ + $(srcdir)/f/g77install.texi $(srcdir)/f/news.texi \ + $(srcdir)/f/intdoc.texi + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac +# `tex2dvi' was used below, but the Texinfo 3.12 one won't work properly +# with the include files from $(srcdir). This use of TEXINPUTS may not +# be universally valid. `$(TEX)' should be used if it gets defined in +# gcc/Makefile.in. + if [ -f lang-f77 ]; then \ + TEXINPUTS=$(srcdir)/f:$$TEXINPUTS tex $(srcdir)/f/g77.texi; \ + texindex g77.??; \ + TEXINPUTS=$(srcdir)/f:$$TEXINPUTS tex $(srcdir)/f/g77.texi; \ + mv g77.dvi f; \ + else true; fi + +# This dance is all about producing accurate documentation for g77's +# intrinsics with minimum fuss. f/ansify appends "\n\" to C strings +# so ANSI C compilers can compile f/intdoc.h -- gcc can compile f/intdoc.in +# directly, if f/intdoc.c #include'd that, but we don't want to force +# people to install gcc just to build the documentation. We use the +# C format for f/intdoc.in in the first place to allow a fairly "free", +# but widely known format for documentation -- basically anyone who knows +# how to write texinfo source and enclose it in C constants can handle +# it, and f/ansify allows them to not even end lines with "\n\". So, +# essentially, the C preprocessor and compiler are used to enter the +# document snippets into a data base via name lookup, rather than duplicating +# that kind of code here. And we use f/intdoc.c instead of straight +# texinfo in the first place so that as much information as possible +# contained in f/intrin.def can be inserted directly and reliably into +# the documentation. That's better than replicating it, because it +# reduces the likelihood of discrepancies between the docs and the compiler +# itself, which uses f/intrin.def; in fact, many bugs in f/intrin.def have +# been found only upon reading the documentation that was automatically +# produced from it. +$(srcdir)/f/intdoc.texi: f/intdoc.c f/intdoc.in f/ansify.c f/intrin.def f/intrin.h + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + if [ -f lang-f77 ]; then \ + $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) $(INCLUDES) \ + `echo $(srcdir)/f/ansify.c | sed 's,^\./,,'` -o f/ansify; \ + f/ansify < $(srcdir)/f/intdoc.in > f/intdoc.h0 $(srcdir)/f/intdoc.in; \ + $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) $(INCLUDES) -I./f \ + `echo $(srcdir)/f/intdoc.c | sed 's,^\./,,'` -o f/intdoc; \ + f/intdoc > $(srcdir)/f/intdoc.texi; \ + rm f/intdoc f/ansify f/intdoc.h0; \ + else true; fi + +$(srcdir)/f/BUGS: f/bugs0.texi f/bugs.texi + cd $(srcdir)/f; $(MAKEINFO) -D BUGSONLY --no-header --no-split \ + --no-validate -o BUGS bugs0.texi + +$(srcdir)/f/INSTALL: f/install0.texi f/g77install.texi + cd $(srcdir)/f; $(MAKEINFO) -D INSTALLONLY --no-header --no-split \ + --no-validate -o INSTALL install0.texi + +$(srcdir)/f/NEWS: f/news0.texi f/news.texi + cd $(srcdir)/f; $(MAKEINFO) -D NEWSONLY --no-header --no-split \ + --no-validate -o NEWS news0.texi + +f77.rebuilt: f/g77.info $(srcdir)/f/BUGS $(srcdir)/f/INSTALL \ + $(srcdir)/f/NEWS + +# +# Install hooks: +# f771 is installed elsewhere as part of $(COMPILERS). + +f77.install-normal: + +# Install the driver program as $(target)-g77 +# and also as either g77 (if native) or $(tooldir)/bin/g77. +f77.install-common: + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + -if [ -f lang-f77 -a -f f771$(exeext) ] ; then \ + if [ -f g77-cross$(exeext) ] ; then \ + rm -f $(bindir)/$(G77_CROSS_NAME)$(exeext); \ + $(INSTALL_PROGRAM) g77-cross$(exeext) $(bindir)/$(G77_CROSS_NAME)$(exeext); \ + chmod a+x $(bindir)/$(G77_CROSS_NAME)$(exeext); \ + else \ + rm -f $(bindir)/$(G77_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) g77$(exeext) $(bindir)/$(G77_INSTALL_NAME)$(exeext); \ + chmod a+x $(bindir)/$(G77_INSTALL_NAME)$(exeext); \ + fi ; \ + else true; fi + @if [ -f f77-install-ok -o -f $(srcdir)/f77-install-ok ]; then \ + echo ''; \ + echo 'Warning: egcs no longer installs an f77 command.'; \ + echo ' You must do so yourself. For more information,'; \ + echo ' read "Distributing Binaries" in the egcs g77 docs.'; \ + echo ' (To turn off this warning, delete the file'; \ + echo ' f77-install-ok in the source or build directory.)'; \ + echo ''; \ + else true; fi + +# $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir +# to do the install. The sed rule was copied from stmp-int-hdrs. +f77.install-info: f77.info + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + if [ -f lang-f77 -a -f f/g77.info ] ; then \ + rm -f $(infodir)/g77.info*; \ + for f in f/g77.info*; do \ + realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ + $(INSTALL_DATA) $$f $(infodir)/$$realfile; \ + done; \ + chmod a-x $(infodir)/g77.info*; \ + fi + @if [ -f lang-f77 -a -f $(srcdir)/f/g77.info ] ; then \ + if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + echo " install-info --info-dir=$(infodir) $(infodir)/g77.info"; \ + install-info --info-dir=$(infodir) $(infodir)/g77.info || : ; \ + else : ; fi; \ + else : ; fi + +f77.install-man: $(srcdir)/f/g77.1 + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + -if [ -f lang-f77 -a -f f771$(exeext) ] ; then \ + if [ -f g77-cross$(exeext) ] ; then \ + rm -f $(mandir)/$(G77_CROSS_NAME)$(manext); \ + $(INSTALL_DATA) $(srcdir)/f/g77.1 $(mandir)/$(G77_CROSS_NAME)$(manext); \ + chmod a-x $(mandir)/$(G77_CROSS_NAME)$(manext); \ + else \ + rm -f $(mandir)/$(G77_INSTALL_NAME)$(manext); \ + $(INSTALL_DATA) $(srcdir)/f/g77.1 $(mandir)/$(G77_INSTALL_NAME)$(manext); \ + chmod a-x $(mandir)/$(G77_INSTALL_NAME)$(manext); \ + fi; \ + else true; fi + +f77.uninstall: + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + @if [ -f lang-f77 ] ; then \ + if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ + echo " install-info --delete --info-dir=$(infodir) $(infodir)/g77.info"; \ + install-info --delete --info-dir=$(infodir) $(infodir)/g77.info || : ; \ + else : ; fi; \ + else : ; fi + -if [ -f lang-f77 ]; then \ + rm -rf $(bindir)/$(G77_INSTALL_NAME)$(exeext); \ + rm -rf $(bindir)/$(G77_CROSS_NAME)$(exeext); \ + rm -rf $(mandir)/$(G77_INSTALL_NAME)$(manext); \ + rm -rf $(mandir)/$(G77_CROSS_NAME)$(manext); \ + rm -rf $(infodir)/g77.info*; \ + fi +# +# Clean hooks: +# A lot of the ancillary files are deleted by the main makefile. +# We just have to delete files specific to us. + +f77.mostlyclean: + -rm -f f/*$(objext) + -rm -f f/fini f/stamp-str f/str-*.h f/str-*.j + -rm -f f/intdoc f/ansify f/intdoc.h0 + -rm -f g77.aux g77.cps g77.ky g77.toc g77.vr g77.fn g77.kys \ + g77.pg g77.tp g77.vrs g77.cp g77.fns g77.log g77.pgs g77.tps +f77.clean: + -rm -f g77.c g77.o g77spec.o g77version.o +f77.distclean: + -rm -f lang-f77 f/Makefile +f77.extraclean: +f77.maintainer-clean: + -rm -f f/g77.info* f/g77.*aux f/TAGS f/BUGS f/INSTALL f/NEWS f/intdoc.texi +# +# Stage hooks: +# The main makefile has already created stage?/f. + +G77STAGESTUFF = f/*$(objext) f/fini f/stamp-str f/str-*.h f/str-*.j \ + lang-f77 g77.c g77.o g77spec.o g77version.o + +f77.stage1: stage1-start + -if [ -f lang-f77 ]; then \ + mv -f $(G77STAGESTUFF) stage1/f; \ + fi +f77.stage2: stage2-start + -if [ -f lang-f77 ]; then \ + mv -f $(G77STAGESTUFF) stage2/f; \ + fi +f77.stage3: stage3-start + -if [ -f lang-f77 ]; then \ + mv -f $(G77STAGESTUFF) stage3/f; \ + fi +f77.stage4: stage4-start + -if [ -f lang-f77 ]; then \ + mv -f $(G77STAGESTUFF) stage4/f; \ + fi +# +# Maintenance hooks: + +# This target creates the files that can be rebuilt, but go in the +# distribution anyway. It then copies the files to the distdir directory. +f77.distdir: f77.rebuilt + case "$(LANGUAGES)" in \ + *[fF]77*) touch lang-f77;; \ + *) rm -f lang-f77;; \ + esac + -if [ -f lang-f77 ]; then \ + mkdir tmp/f; \ + cd f; \ + for file in *[0-9a-zA-Z+]; do \ + $(LN_S) $$file ../tmp/f; \ + done; \ + fi |