-# Top level makefile fragment for GNU Fortran. -*-makefile-*-
-# Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Top level -*- makefile -*- fragment for GNU Fortran.
+# Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
#This file is part of GNU Fortran.
# 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.install-normal, foo.install-common, foo.install-man,
# foo.uninstall,
-# foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
+# foo.mostlyclean, foo.clean, foo.distclean,
# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
#
# where `foo' is the name of the language.
# $(srcdir) must be set to the gcc/ source directory (not gcc/f/).
#\f
# Actual name to use when installing a native compiler.
-G77_INSTALL_NAME = `echo g77|sed '$(program_transform_name)'`
-
-# Actual name to use when installing a cross-compiler.
-G77_CROSS_NAME = `echo g77|sed '$(program_transform_cross_name)'`
+G77_INSTALL_NAME := $(shell echo g77|sed '$(program_transform_name)')
# Some versions of `touch' (such as the version on Solaris 2.8)
# do not correctly set the timestamp due to buggy versions of `utime'
# 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.start.encap f77.rest.encap f77.dvi \
f77.install-normal \
- f77.install-common f77.install-info f77.install-man \
+ f77.install-common f77.install-man \
f77.uninstall f77.mostlyclean f77.clean f77.distclean \
- f77.extraclean f77.maintainer-clean f77.rebuilt \
+ f77.maintainer-clean \
f77.stage1 f77.stage2 f77.stage3 f77.stage4 \
f77.stageprofile f77.stagefeedback
g77spec.o: $(srcdir)/f/g77spec.c $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \
- $(CONFIG_H)
+ $(CONFIG_H) intl.h
(SHLIB_LINK='$(SHLIB_LINK)' \
SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
f/str-op.h f/str-op.j f/str-ot.h f/str-ot.j
$(STAMP) f/stamp-str
-f/str-1t.h f/str-1t.j: f/fini$(build_exeext) f/str-1t.fin
- ./f/fini$(build_exeext) $(srcdir)/f/str-1t.fin f/str-1t.j f/str-1t.h
-
-f/str-2t.h f/str-2t.j: f/fini$(build_exeext) f/str-2t.fin
- ./f/fini$(build_exeext) $(srcdir)/f/str-2t.fin f/str-2t.j f/str-2t.h
-
-f/str-fo.h f/str-fo.j: f/fini$(build_exeext) f/str-fo.fin
- ./f/fini$(build_exeext) $(srcdir)/f/str-fo.fin f/str-fo.j f/str-fo.h
-
-f/str-io.h f/str-io.j: f/fini$(build_exeext) f/str-io.fin
- ./f/fini$(build_exeext) $(srcdir)/f/str-io.fin f/str-io.j f/str-io.h
-
-f/str-nq.h f/str-nq.j: f/fini$(build_exeext) f/str-nq.fin
- ./f/fini$(build_exeext) $(srcdir)/f/str-nq.fin f/str-nq.j f/str-nq.h
-
-f/str-op.h f/str-op.j: f/fini$(build_exeext) f/str-op.fin
- ./f/fini$(build_exeext) $(srcdir)/f/str-op.fin f/str-op.j f/str-op.h
-
-f/str-ot.h f/str-ot.j: f/fini$(build_exeext) f/str-ot.fin
- ./f/fini$(build_exeext) $(srcdir)/f/str-ot.fin f/str-ot.j f/str-ot.h
+f/str-1t.h f/str-1t.j: f/stamp-1t ; @true
+f/stamp-1t: f/fini$(build_exeext) f/str-1t.fin
+ ./f/fini$(build_exeext) $(srcdir)/f/str-1t.fin f/tmp-str-1t.j f/tmp-str-1t.h
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-1t.j f/str-1t.j
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-1t.h f/str-1t.h
+ $(STAMP) f/stamp-1t
+
+f/str-2t.h f/str-2t.j: f/stamp-2t ; @true
+f/stamp-2t: f/fini$(build_exeext) f/str-2t.fin
+ ./f/fini$(build_exeext) $(srcdir)/f/str-2t.fin f/tmp-str-2t.j f/tmp-str-2t.h
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-2t.j f/str-2t.j
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-2t.h f/str-2t.h
+ $(STAMP) f/stamp-2t
+
+f/str-fo.h f/str-fo.j: f/stamp-fo ; @true
+f/stamp-fo: f/fini$(build_exeext) f/str-fo.fin
+ ./f/fini$(build_exeext) $(srcdir)/f/str-fo.fin f/tmp-str-fo.j f/tmp-str-fo.h
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-fo.j f/str-fo.j
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-fo.h f/str-fo.h
+ $(STAMP) f/stamp-fo
+
+f/str-io.h f/str-io.j: f/stamp-io ; @true
+f/stamp-io: f/fini$(build_exeext) f/str-io.fin
+ ./f/fini$(build_exeext) $(srcdir)/f/str-io.fin f/tmp-str-io.j f/tmp-str-io.h
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-io.j f/str-io.j
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-io.h f/str-io.h
+ $(STAMP) f/stamp-io
+
+f/str-nq.h f/str-nq.j: f/stamp-nq ; @true
+f/stamp-nq: f/fini$(build_exeext) f/str-nq.fin
+ ./f/fini$(build_exeext) $(srcdir)/f/str-nq.fin f/tmp-str-nq.j f/tmp-str-nq.h
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-nq.j f/str-nq.j
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-nq.h f/str-nq.h
+ $(STAMP) f/stamp-nq
+
+f/str-op.h f/str-op.j: f/stamp-op ; @true
+f/stamp-op: f/fini$(build_exeext) f/str-op.fin
+ ./f/fini$(build_exeext) $(srcdir)/f/str-op.fin f/tmp-str-op.j f/tmp-str-op.h
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-op.j f/str-op.j
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-op.h f/str-op.h
+ $(STAMP) f/stamp-op
+
+f/str-ot.h f/str-ot.j: f/stamp-ot ; @true
+f/stamp-ot: f/fini$(build_exeext) f/str-ot.fin
+ ./f/fini$(build_exeext) $(srcdir)/f/str-ot.fin f/tmp-str-ot.j f/tmp-str-ot.h
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-ot.j f/str-ot.j
+ $(SHELL) $(srcdir)/../move-if-change f/tmp-str-ot.h f/str-ot.h
+ $(STAMP) f/stamp-ot
f/fini$(build_exeext): f/fini.o $(BUILD_LIBDEPS)
$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o f/fini$(build_exeext) \
f77.start.encap: g77$(exeext)
f77.rest.encap:
+f77.srcinfo: doc/g77.info
+ -cp -p $^ $(srcdir)/doc
+f77.srcman: doc/g77.1
+ -cp -p $^ $(srcdir)/doc
+f77.srcextra: f/BUGS f/NEWS
+ -cp -p $^ $(srcdir)/f
+
f77.tags: force
- cd $(srcdir)/f; etags *.c *.h
+ cd $(srcdir)/f; etags -o TAGS.sub *.c *.h; \
+ etags --include TAGS.sub --include ../TAGS.sub
+
+f77.info: doc/g77.info
+dvi:: doc/g77.dvi
+f77.man: doc/g77.1
-f77.info: $(srcdir)/f/g77.info
-f77.dvi: f/g77.dvi
-f77.generated-manpages: $(srcdir)/f/g77.1
+check-f77 : check-g77
+lang_checks += check-g77
# g77 documentation.
-$(srcdir)/f/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \
- $(srcdir)/f/ffe.texi $(srcdir)/f/invoke.texi \
- $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \
- $(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \
- $(srcdir)/doc/include/gpl.texi \
- $(srcdir)/doc/include/funding.texi \
- $(srcdir)/doc/include/gcc-common.texi
- if [ x$(BUILD_INFO) = xinfo ]; then \
- rm -f $(srcdir)/f/g77.info-*; \
- cd $(srcdir)/f && $(MAKEINFO) -I../doc/include -o g77.info g77.texi; \
+TEXI_G77_FILES = f/g77.texi f/bugs.texi f/ffe.texi f/invoke.texi \
+ f/news.texi f/root.texi $(docdir)/include/fdl.texi \
+ $(docdir)/include/gpl.texi $(docdir)/include/funding.texi \
+ $(docdir)/include/gcc-common.texi $(srcdir)/f/intdoc.texi
+
+doc/g77.info: $(TEXI_G77_FILES)
+ if test "x$(BUILD_INFO)" = xinfo; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include -I$(srcdir)/f \
+ -o$@ $<; \
else true; fi
-f/g77.dvi: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \
- $(srcdir)/f/ffe.texi $(srcdir)/f/invoke.texi \
- $(srcdir)/f/news.texi $(srcdir)/f/intdoc.texi \
- $(srcdir)/f/root.texi $(srcdir)/doc/include/fdl.texi \
- $(srcdir)/doc/include/gpl.texi \
- $(srcdir)/doc/include/funding.texi \
- $(srcdir)/doc/include/gcc-common.texi
- s=`cd $(srcdir); ${PWD}`; export s; \
- cd f && $(TEXI2DVI) -I $$s/doc/include $$s/f/g77.texi
-
-$(srcdir)/f/g77.1: $(srcdir)/f/invoke.texi
- -$(TEXI2POD) < $(srcdir)/f/invoke.texi > f/g77.pod; \
- ($(POD2MAN) --section=1 f/g77.pod > f/g77.1.T$$$$ && \
- mv -f f/g77.1.T$$$$ $(srcdir)/f/g77.1) || \
- (rm -f f/g77.1.T$$$$ && exit 1); \
- rm -f f/g77.pod; \
+doc/g77.dvi: $(TEXI_G77_FILES)
+ $(TEXI2DVI) -I $(srcdir)/f -I $(abs_docdir)/include -I $(objdir)/f -o $@ $<
+
+.INTERMEDIATE: g77.pod
+g77.pod: f/invoke.texi
+ -$(TEXI2POD) < $< > $@
# This dance is all about producing accurate documentation for g77's
# intrinsics with minimum fuss. f/ansify appends "\n\" to C strings
# If the documentation files depended on executables in the build
# tree, there'd be no way to ship a source tree with the documentation
-# already generated such that `make' wouldn't attempt to rebuilt it.
+# already generated such that `make' wouldn't attempt to rebuild it.
# So, we punt and arrange for the documentation files to depend on the
# dependencies of the executables, not on the executables themselves.
# But then, we have to build the executables explicitly in their build
# rules.
-INTDOC_DEPS = $(srcdir)/f/intdoc.c $(srcdir)/f/intrin.h $(srcdir)/f/intrin.def
+INTDOC_DEPS = f/intdoc.c f/intrin.h f/intrin.def
-$(srcdir)/f/intdoc.texi: $(INTDOC_DEPS) $(srcdir)/f/intdoc.in
+$(srcdir)/f/intdoc.texi: $(INTDOC_DEPS) f/intdoc.in
$(MAKE) f/intdoc$(build_exeext)
f/intdoc$(build_exeext) > $(srcdir)/f/intdoc.texi
f/intdoc$(build_exeext): $(INTDOC_DEPS) f/intdoc.h0 bconfig.h \
$(SYSTEM_H) coretypes.h $(TM_H) $(BUILD_LIBDEPS)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) \
- $(srcdir)/f/intdoc.c $(BUILD_LIBS) -o f/intdoc$(build_exeext)
+ $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) $< \
+ $(BUILD_LIBS) -o $@
f/intdoc.h0: f/intdoc.in f/ansify$(build_exeext)
- f/ansify$(build_exeext) $(srcdir)/f/intdoc.in \
- < $(srcdir)/f/intdoc.in > f/intdoc.h0
+ f/ansify$(build_exeext) $< < $< > $@
f/ansify$(build_exeext): f/ansify.c bconfig.h $(SYSTEM_H) coretypes.h $(TM_H)
- $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) \
- $(srcdir)/f/ansify.c -o f/ansify$(build_exeext)
+ $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(INCLUDES) $< \
+ -o $@
-$(srcdir)/f/BUGS: f/bugs0.texi f/bugs.texi f/root.texi
- cd $(srcdir)/f; $(MAKEINFO) -D BUGSONLY --no-header --no-split \
- --no-validate -I../doc/include -o BUGS bugs0.texi
-
-$(srcdir)/f/NEWS: f/news0.texi f/news.texi f/root.texi
- cd $(srcdir)/f; $(MAKEINFO) -D NEWSONLY --no-header --no-split \
- --no-validate -I../doc/include -o NEWS news0.texi
+f/BUGS: f/bugs0.texi f/bugs.texi f/root.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -D BUGSONLY --no-header --no-split \
+ --no-validate -I$(docdir)/include -I$(srcdir)/f -o $@ bugs0.texi; \
+ else true; fi
-f77.rebuilt: f/g77.info $(srcdir)/f/BUGS \
- $(srcdir)/f/NEWS
+f/NEWS: f/news0.texi f/news.texi f/root.texi
+ if [ x$(BUILD_INFO) = xinfo ]; then \
+ rm -f $(@)*; \
+ $(MAKEINFO) $(MAKEINFOFLAGS) -D NEWSONLY --no-header --no-split \
+ --no-validate -I$(docdir)/include -I$(srcdir)/f -o $@ news0.texi; \
+ else true; fi
#\f
# Install hooks:
# and also as either g77 (if native) or $(tooldir)/bin/g77.
f77.install-common: installdirs
-if [ -f f771$(exeext) ] ; then \
- if [ -f g77-cross$(exeext) ] ; then \
- rm -f $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
- $(INSTALL_PROGRAM) g77-cross$(exeext) $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
- chmod a+x $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
- else \
- rm -f $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
- $(INSTALL_PROGRAM) g77$(exeext) $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
- chmod a+x $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
- fi ; \
+ rm -f $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
+ $(INSTALL_PROGRAM) g77$(exeext) $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
+ chmod a+x $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
else true; fi
@if [ -f f77-install-ok -o -f $(srcdir)/f77-install-ok ]; then \
echo ''; \
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 installdirs
- if [ -f $(srcdir)/f/g77.info ] ; then \
- rm -f $(DESTDIR)$(infodir)/g77.info*; \
- for f in $(srcdir)/f/g77.info*; do \
- realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
- $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$realfile; \
- done; \
- chmod a-x $(DESTDIR)$(infodir)/g77.info*; \
- else true; fi
- @if [ -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=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info"; \
- install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info || : ; \
- else : ; fi; \
- else : ; fi
+install-info:: $(DESTDIR)$(infodir)/g77.info
-f77.install-man: $(GENERATED_MANPAGES) installdirs
- -if [ -f f771$(exeext) ] ; then \
- if [ -f g77-cross$(exeext) ] ; then \
- rm -f $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
- $(INSTALL_DATA) $(srcdir)/f/g77.1 $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
- chmod a-x $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
- else \
- rm -f $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
- $(INSTALL_DATA) $(srcdir)/f/g77.1 $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
- chmod a-x $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
- fi; \
- else true; fi
+f77.install-man: installdirs $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext)
+
+$(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext): doc/g77.1
+ -rm -f $@
+ -$(INSTALL_DATA) $< $@
+ -chmod a-x $@
f77.uninstall: installdirs
if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
install-info --delete --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info || : ; \
else : ; fi
rm -rf $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
- rm -rf $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
rm -rf $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
- rm -rf $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
rm -rf $(DESTDIR)$(infodir)/g77.info*
#\f
# Clean hooks:
-rm -f f/*$(objext)
-rm -f f/*$(coverageexts)
-rm -f f/fini$(build_exeext) f/stamp-str f/str-*.h f/str-*.j
- -rm -f f/intdoc$(build_exeext) f/ansify$(build_exeext) f/intdoc.h0
+ -rm -f f/BUGS f/NEWS
-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 g77spec.o
f77.distclean:
-rm -f f/Makefile
-f77.extraclean:
f77.maintainer-clean:
- -rm -f f/g77.info* f/g77.*aux f/TAGS f/BUGS f/NEWS f/intdoc.texi
+ -rm -f $(srcdir)/f/BUGS $(srcdir)/f/TAGS $(srcdir)/f/TAGS.SUB
+ -rm -f $(srcdir)/f/NEWS $(srcdir)/f/intdoc.texi
#\f
# Stage hooks:
# The main makefile has already created stage?/f.
-G77STAGESTUFF = f/*$(objext) f/fini$(build_exeext) f/stamp-str \
+G77STAGESTUFF = f/*$(objext) f/fini$(build_exeext) f/stamp-* \
f/str-*.h f/str-*.j g77spec.o
f77.stage1: stage1-start