# Generated automatically from Makefile.in by configure. # Makefile for GNU F77 compiler. # 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. # The makefile built from this file lives in the language subdirectory. # Its purpose is to provide support for: # # 1) recursion where necessary, and only then (building .o's), and # 2) building and debugging f771 from the language subdirectory, and # 3) nothing else. # # The parent makefile handles all other chores, with help from the # language makefile fragment, of course. # # The targets for external use are: # all, TAGS, ???mostlyclean, ???clean. # Suppress smart makes who think they know how to automake Yacc files .y.c: # Variables that exist for you to override. # See below for how to change them for certain systems. ALLOCA = # Various ways of specifying flags for compilations: # CFLAGS is for the user to override to, e.g., do a bootstrap with -O2. # BOOT_CFLAGS is the value of CFLAGS to pass # to the stage2 and stage3 compilations # XCFLAGS is used for most compilations but not when using the GCC just built. XCFLAGS = CFLAGS = -g BOOT_CFLAGS = -O $(CFLAGS) # These exists to be overridden by the x-* and t-* files, respectively. X_CFLAGS = T_CFLAGS = X_CPPFLAGS = T_CPPFLAGS = CC = gcc BISON = bison BISONFLAGS = LEX = flex LEXFLAGS = AR = ar AR_FLAGS = rc SHELL = /bin/sh MAKEINFO = makeinfo TEXI2DVI = texi2dvi # Define this as & to perform parallel make on a Sequent. # Note that this has some bugs, and it seems currently necessary # to compile all the gen* files first by hand to avoid erroneous results. P = # This is used in the definition of SUBDIR_USE_ALLOCA. # ??? Perhaps it would be better if it just looked for *gcc*. OLDCC = cc # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. # It omits XCFLAGS, and specifies -B./. # It also specifies -B$(tooldir)/ to find as and ld for a cross compiler. GCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) # Tools to use when building a cross-compiler. # These are used because `configure' appends `cross-make' # to the makefile when making a cross-compiler. target=mips-idt-ecoff xmake_file= ./config/sparc/x-sysv4 tmake_file= ./config/mips/t-ecoff ./config/t-install-cpp # Directory where sources are, from where we are. srcdir = . # Additional system libraries to link with. CLIB= # Change this to a null string if obstacks are installed in the # system library. OBSTACK=obstack.o # Choose the real default target. ALL=all # End of variables for you to override. # Definition of `all' is here so that new rules inserted by sed # do not specify the default target. all: all.indirect # This tells GNU Make version 3 not to put all variables in the environment. .NOEXPORT: # sed inserts variable overrides after the following line. ####target overrides CONFIG2_H = $(srcdir)/config/mips/ecoff.h # We have a premade insn-attrtab.c to save the hour it takes to run genattrtab. # PREMADE_ATTRTAB = $(srcdir)/config/mips/mips-at.c # PREMADE_ATTRTAB_MD = $(srcdir)/config/mips/mips-at.md # Suppress building libgcc1.a, since the MIPS compiler port is complete # and does not need anything from libgcc1.a. LIBGCC1 = # When building a cross compiler, put the mips16 support functions in # libgcc1.a. CROSS_LIBGCC1 = libgcc1-asm.a LIB1ASMSRC = mips/mips16.S LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \ _m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \ _m16fltsisf _m16fixsfsi \ _m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \ _m16extsfdf2 _m16trdfsf2 \ _m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \ _m16fltsidf _m16fixdfsi \ _m16retsf _m16retdf \ _m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \ _m16stubsf0 _m16stubsf1 _m16stubsf2 _m16stubsf5 _m16stubsf6 \ _m16stubsf9 _m16stubsf10 \ _m16stubdf0 _m16stubdf1 _m16stubdf2 _m16stubdf5 _m16stubdf6 \ _m16stubdf9 _m16stubdf10 # We must build libgcc2.a with -G 0, in case the user wants to link # without the $gp register. TARGET_LIBGCC2_CFLAGS = -G 0 # fp-bit and dp-bit are really part of libgcc1, but this will cause # them to be built correctly, so... [taken from t-sparclite] LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c dp-bit.c: $(srcdir)/config/fp-bit.c echo '#ifdef __MIPSEL__' > dp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c echo '#endif' >> dp-bit.c echo '#define US_SOFTWARE_GOFAST' >> dp-bit.c cat $(srcdir)/config/fp-bit.c >> dp-bit.c fp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT' > fp-bit.c echo '#ifdef __MIPSEL__' >> fp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c echo '#endif' >> fp-bit.c echo '#define US_SOFTWARE_GOFAST' >> fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c # Build the libraries for both hard and soft floating point MULTILIB_OPTIONS = msoft-float/msingle-float EL/EB mips1/mips3 MULTILIB_DIRNAMES = soft-float single el eb mips1 mips3 MULTILIB_MATCHES = msingle-float=m4650 LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib # Add additional dependencies to recompile selected modules whenever the # tm.h file changes. The files compiled are: # # gcc.c (*_SPEC changes) # toplev.c (new switches + assembly output changes) # sdbout.c (debug format changes) # dbxout.c (debug format changes) # dwarfout.c (debug format changes) # final.c (assembly output changes) # varasm.c (assembly output changes) # cse.c (cost functions) # insn-output.c (possible ifdef changes in tm.h) # regclass.c (fixed/call used register changes) # cccp.c (new preprocessor macros, -v version #) # explow.c (GO_IF_LEGITIMATE_ADDRESS) # recog.c (GO_IF_LEGITIMATE_ADDRESS) # reload.c (GO_IF_LEGITIMATE_ADDRESS) gcc.o: $(CONFIG2_H) toplev.o: $(CONFIG2_H) sdbout.o: $(CONFIG2_H) dbxout.o: $(CONFIG2_H) dwarfout.o: $(CONFIG2_H) final.o: $(CONFIG2_H) varasm.o: $(CONFIG2_H) cse.o: $(CONFIG2_H) insn-output.o: $(CONFIG2_H) regclass.o: $(CONFIG2_H) cccp.o: $(CONFIG2_H) explow.o: $(CONFIG2_H) recog.o: $(CONFIG2_H) reload.o: $(CONFIG2_H) # Handle cpp installation. INSTALL_CPP=install-cpp UNINSTALL_CPP=uninstall-cpp ####host overrides X_CFLAGS=-DSVR4 ALLOCA=alloca.o ####cross overrides CROSS=-DCROSS_COMPILE # Build libgcc1.a for a cross-compiler. # By default this expects the user to provide libgcc1.a, # and gives up immediately if the user has not done so. LIBGCC1 = $(CROSS_LIBGCC1) # Dir to search for system headers. Normally /usr/include. # Use CROSS_INCLUDE_DIR not TOOL_INCLUDE_DIR for other vendor's headers. SYSTEM_HEADER_DIR = $(tooldir)/sys-include # Don't try to compile the things we can't compile. ALL = all.cross # Don't install assert.h in /usr/local/include. assertdir = $(tooldir)/include ####build overrides # # Now figure out from those variables how to compile and link. all.indirect: Makefile ../f771$(exeext) # IN_GCC tells obstack.h that we are using gcc's file. INTERNAL_CFLAGS = $(CROSS) -DIN_GCC # This is the variable actually used when we compile. ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) $(XCFLAGS) -W -Wall # Likewise. ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS) # We should be compiling with the built compiler, for which # BOOT_LDFLAGS is appropriate. (Formerly we had a separate # F771_LDFLAGS, but the ld flags can be taken care of by the target # configuration files in egcs.) LDFLAGS=$(BOOT_LDFLAGS) # Even if ALLOCA is set, don't use it if compiling with GCC. SUBDIR_OBSTACK = `if [ x$(OBSTACK) != x ]; then echo ../$(OBSTACK); else true; fi` SUBDIR_USE_ALLOCA = `case "${CC}" in "${OLDCC}") if [ x$(ALLOCA) != x ]; then echo ../$(ALLOCA); else true; fi ;; esac` SUBDIR_MALLOC = `if [ x$(MALLOC) != x ]; then echo ../$(MALLOC); else true; fi` # How to link with both our special library facilities # and the system's installed libraries. LIBS = $(SUBDIR_OBSTACK) $(SUBDIR_USE_ALLOCA) $(SUBDIR_MALLOC) $(CLIB) # Specify the directories to be searched for header files. # Both . and srcdir are used, in that order, # so that tm.h and config.h will be found in the compilation # subdirectory rather than in the source directory. INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config -I$(srcdir)/../../include # Always use -I$(srcdir)/config when compiling. .c.o: $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< # # Lists of files for various purposes. # Language-specific object files for g77 F77_OBJS = \ bad.o \ bit.o \ bld.o \ com.o \ data.o \ equiv.o \ expr.o \ global.o \ implic.o \ info.o \ intrin.o \ lab.o \ lex.o \ malloc.o \ name.o \ parse.o \ proj.o \ src.o \ st.o \ sta.o \ stb.o \ stc.o \ std.o \ ste.o \ storag.o \ stp.o \ str.o \ sts.o \ stt.o \ stu.o \ stv.o \ stw.o \ symbol.o \ target.o \ top.o \ type.o \ version.o \ where.o # Language-independent object files. OBJS = `cat ../stamp-objlist` OBJDEPS = ../stamp-objlist compiler: ../f771$(exeext) ../f771$(exeext): $(P) $(F77_OBJS) $(OBJDEPS) $(LIBDEPS) rm -f f771$(exeext) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(F77_OBJS) $(OBJS) $(LIBS) Makefile: $(srcdir)/Makefile.in $(srcdir)/../configure cd ..; $(SHELL) config.status native: config.status ../f771$(exeext) # # Compiling object files from source files. # Note that dependencies on obstack.h are not written # because that file is not part of GCC. # F77 language-specific files. # These macros expand to the corresponding g77-source .j files plus # the gcc-source files involved (each file itself, plus whatever # files on which it depends, but without including stuff resulting # from configuration, since we can't guess at that). The files # that live in a distclean'd gcc source directory have "$(srcdir)/" # prefixes, while the others don't because they'll be created # only in the build directory. ASSERT_H = $(srcdir)/assert.j $(srcdir)/../assert.h CONFIG_H = $(srcdir)/config.j ../config.h CONVERT_H = $(srcdir)/convert.j $(srcdir)/../convert.h FLAGS_H = $(srcdir)/flags.j $(srcdir)/../flags.h GLIMITS_H = $(srcdir)/glimits.j $(srcdir)/../glimits.h HCONFIG_H = $(srcdir)/hconfig.j ../hconfig.h INPUT_H = $(srcdir)/input.j $(srcdir)/../input.h OUTPUT_H = $(srcdir)/output.j $(srcdir)/../output.h RTL_H = $(srcdir)/rtl.j $(srcdir)/../rtl.h $(srcdir)/../rtl.def \ $(srcdir)/../machmode.h $(srcdir)/../machmode.def SYSTEM_H = $(srcdir)/system.j $(srcdir)/../system.h TCONFIG_H = $(srcdir)/tconfig.j ../tconfig.h TM_H = $(srcdir)/tm.j ../tm.h TOPLEV_H = $(srcdir)/toplev.j $(srcdir)/../toplev.h TREE_H = $(srcdir)/tree.j $(srcdir)/../tree.h $(srcdir)/../real.h \ $(srcdir)/../tree.def $(srcdir)/../machmode.h $(srcdir)/../machmode.def #Build the first part of this list with the command line: # cd gcc/; make deps-kinda -f f/Makefile.in #Note that this command uses the host C compiler; # use HOST_CC="./xgcc -B./" to use GCC in the build directory, for example. #Also note that this particular build file seems to want to use # substitions: $(CONFIG_H) for config.h; $(TREE_H) for tree.h; # $(RTL_H) for rtl.h; etc.. deps-kinda uses a sed script to do those # substitutions, plus others for elegance. ansify.o: ansify.c $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) bad.o: bad.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bad.h bad.def where.h \ $(GLIMITS_H) top.h malloc.h $(FLAGS_H) com.h com-rt.def $(TREE_H) bld.h \ bld-op.def bit.h info.h info-b.def info-k.def info-w.def target.h \ lex.h type.h intrin.h intrin.def lab.h symbol.h symbol.def equiv.h \ storag.h global.h name.h $(TOPLEV_H) bit.o: bit.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) bit.h \ malloc.h bld.o: bld.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bld.h bld-op.def bit.h \ malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ intrin.h intrin.def com.o: com.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(FLAGS_H) $(RTL_H) $(TOPLEV_H) \ $(TREE_H) $(OUTPUT_H) $(CONVERT_H) com.h com-rt.def bld.h bld-op.def bit.h \ malloc.h info.h info-b.def info-k.def info-w.def target.h bad.h \ bad.def where.h $(GLIMITS_H) top.h lex.h type.h intrin.h intrin.def \ lab.h symbol.h symbol.def equiv.h storag.h global.h name.h expr.h \ implic.h src.h st.h data.o: data.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) data.h bld.h \ bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ name.h intrin.h intrin.def expr.h st.h equiv.o: equiv.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) equiv.h bld.h \ bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ lex.h type.h lab.h storag.h symbol.h symbol.def global.h name.h \ intrin.h intrin.def data.h expr.o: expr.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) expr.h bld.h \ bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ name.h intrin.h intrin.def implic.h src.h st.h stamp-str fini.o: fini.c proj.h $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) malloc.h global.o: global.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) global.h info.h \ info-b.def info-k.def info-w.def target.h $(TREE_H) bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h lex.h type.h name.h symbol.h \ symbol.def bld.h bld-op.def bit.h com.h com-rt.def lab.h storag.h \ intrin.h intrin.def equiv.h implic.o: implic.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) implic.h info.h \ info-b.def info-k.def info-w.def target.h $(TREE_H) bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h lex.h type.h symbol.h symbol.def \ bld.h bld-op.def bit.h com.h com-rt.def lab.h storag.h intrin.h \ intrin.def equiv.h global.h name.h src.h info.o: info.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) info.h info-b.def \ info-k.def info-w.def target.h $(TREE_H) bad.h bad.def where.h $(GLIMITS_H) \ top.h malloc.h lex.h type.h intdoc.o: intdoc.c $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) intrin.h intrin.def \ intdoc.h0 intdoc.h0 intrin.o: intrin.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) intrin.h \ intrin.def bld.h bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) \ info.h info-b.def info-k.def info-w.def target.h bad.h bad.def \ where.h $(GLIMITS_H) top.h lex.h type.h lab.h storag.h symbol.h \ symbol.def equiv.h global.h name.h expr.h src.h lab.o: lab.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) lab.h com.h com-rt.def \ $(TREE_H) bld.h bld-op.def bit.h malloc.h info.h info-b.def info-k.def \ info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ type.h intrin.h intrin.def symbol.h symbol.def equiv.h storag.h \ global.h name.h lex.o: lex.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) top.h malloc.h where.h \ $(GLIMITS_H) bad.h bad.def com.h com-rt.def $(TREE_H) bld.h bld-op.def \ bit.h info.h info-b.def info-k.def info-w.def target.h lex.h type.h \ intrin.h intrin.def lab.h symbol.h symbol.def equiv.h storag.h \ global.h name.h src.h $(FLAGS_H) $(INPUT_H) $(TOPLEV_H) $(OUTPUT_H) malloc.o: malloc.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) malloc.h name.o: name.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bad.h bad.def where.h \ $(GLIMITS_H) top.h malloc.h name.h global.h info.h info-b.def info-k.def \ info-w.def target.h $(TREE_H) lex.h type.h symbol.h symbol.def bld.h \ bld-op.def bit.h com.h com-rt.def lab.h storag.h intrin.h intrin.def \ equiv.h src.h parse.o: parse.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) top.h malloc.h \ where.h $(GLIMITS_H) com.h com-rt.def $(TREE_H) bld.h bld-op.def bit.h \ info.h info-b.def info-k.def info-w.def target.h bad.h bad.def lex.h \ type.h intrin.h intrin.def lab.h symbol.h symbol.def equiv.h storag.h \ global.h name.h version.h $(FLAGS_H) proj.o: proj.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) src.o: src.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) src.h bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h st.o: st.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) st.h bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h lex.h symbol.h symbol.def bld.h \ bld-op.def bit.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ info-w.def target.h type.h lab.h storag.h intrin.h intrin.def equiv.h \ global.h name.h sta.h stamp-str stb.h expr.h stp.h stt.h stc.h std.h \ stv.h stw.h ste.h sts.h stu.h sta.o: sta.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) sta.h bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h lex.h stamp-str symbol.h symbol.def \ bld.h bld-op.def bit.h com.h com-rt.def $(TREE_H) info.h info-b.def \ info-k.def info-w.def target.h type.h lab.h storag.h intrin.h \ intrin.def equiv.h global.h name.h implic.h stb.h expr.h stp.h stt.h \ stc.h std.h stv.h stw.h stb.o: stb.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stb.h bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h expr.h bld.h bld-op.def bit.h com.h \ com-rt.def $(TREE_H) info.h info-b.def info-k.def info-w.def target.h \ lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ name.h intrin.h intrin.def stp.h stt.h stamp-str src.h sta.h stc.h stc.o: stc.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stc.h bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h bld.h bld-op.def bit.h com.h \ com-rt.def $(TREE_H) info.h info-b.def info-k.def info-w.def target.h \ lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ name.h intrin.h intrin.def expr.h stp.h stt.h stamp-str data.h implic.h \ src.h sta.h std.h stv.h stw.h std.o: std.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) std.h bld.h bld-op.def \ bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ intrin.h intrin.def stp.h stt.h stamp-str stv.h stw.h sta.h ste.h sts.h ste.o: ste.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(RTL_H) $(TOPLEV_H) ste.h \ bld.h bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h \ info-b.def info-k.def info-w.def target.h bad.h bad.def where.h \ $(GLIMITS_H) top.h lex.h type.h lab.h storag.h symbol.h symbol.def \ equiv.h global.h name.h intrin.h intrin.def stp.h stt.h stamp-str sts.h \ stv.h stw.h expr.h sta.h storag.o: storag.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) storag.h bld.h \ bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ lex.h type.h lab.h symbol.h symbol.def equiv.h global.h name.h \ intrin.h intrin.def data.h stp.o: stp.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stp.h bld.h bld-op.def \ bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ intrin.h intrin.def stt.h str.o: str.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) src.h bad.h bad.def \ where.h $(GLIMITS_H) top.h malloc.h stamp-str lex.h sts.o: sts.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) sts.h malloc.h com.h \ com-rt.def $(TREE_H) bld.h bld-op.def bit.h info.h info-b.def info-k.def \ info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ type.h intrin.h intrin.def lab.h symbol.h symbol.def equiv.h storag.h \ global.h name.h stt.o: stt.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stt.h top.h malloc.h \ where.h $(GLIMITS_H) bld.h bld-op.def bit.h com.h com-rt.def $(TREE_H) \ info.h info-b.def info-k.def info-w.def target.h bad.h bad.def lex.h \ type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ intrin.h intrin.def stp.h expr.h sta.h stamp-str stu.o: stu.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bld.h bld-op.def bit.h \ malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ intrin.h intrin.def implic.h stu.h sta.h stamp-str stv.o: stv.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stv.h lab.h com.h \ com-rt.def $(TREE_H) bld.h bld-op.def bit.h malloc.h info.h info-b.def \ info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ lex.h type.h intrin.h intrin.def symbol.h symbol.def equiv.h storag.h \ global.h name.h stw.o: stw.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stw.h bld.h bld-op.def \ bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ intrin.h intrin.def stv.h sta.h stamp-str symbol.o: symbol.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) symbol.h \ symbol.def bld.h bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) \ info.h info-b.def info-k.def info-w.def target.h bad.h bad.def \ where.h $(GLIMITS_H) top.h lex.h type.h lab.h storag.h intrin.h \ intrin.def equiv.h global.h name.h src.h st.h target.o: target.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) \ target.h $(TREE_H) bad.h bad.def where.h top.h malloc.h info.h \ info-b.def info-k.def info-w.def type.h lex.h top.o: top.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) top.h malloc.h where.h \ $(GLIMITS_H) bad.h bad.def bit.h bld.h bld-op.def com.h com-rt.def \ $(TREE_H) info.h info-b.def info-k.def info-w.def target.h lex.h type.h \ lab.h storag.h symbol.h symbol.def equiv.h global.h name.h intrin.h \ intrin.def data.h expr.h implic.h src.h st.h $(FLAGS_H) $(TOPLEV_H) type.o: type.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) type.h malloc.h version.o: version.c where.o: where.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) where.h $(GLIMITS_H) \ top.h malloc.h lex.h # The rest of this list (Fortran 77 language-specific files) is hand-generated. stamp-str: str-1t.h str-1t.j str-2t.h str-2t.j \ str-fo.h str-fo.j str-io.h str-io.j str-nq.h str-nq.j \ str-op.h str-op.j str-ot.h str-ot.j touch stamp-str str-1t.h str-1t.j: fini str-1t.fin ./fini `echo $(srcdir)/str-1t.fin | sed 's,^\./,,'` str-1t.j str-1t.h str-2t.h str-2t.j: fini str-2t.fin ./fini `echo $(srcdir)/str-2t.fin | sed 's,^\./,,'` str-2t.j str-2t.h str-fo.h str-fo.j: fini str-fo.fin ./fini `echo $(srcdir)/str-fo.fin | sed 's,^\./,,'` str-fo.j str-fo.h str-io.h str-io.j: fini str-io.fin ./fini `echo $(srcdir)/str-io.fin | sed 's,^\./,,'` str-io.j str-io.h str-nq.h str-nq.j: fini str-nq.fin ./fini `echo $(srcdir)/str-nq.fin | sed 's,^\./,,'` str-nq.j str-nq.h str-op.h str-op.j: fini str-op.fin ./fini `echo $(srcdir)/str-op.fin | sed 's,^\./,,'` str-op.j str-op.h str-ot.h str-ot.j: fini str-ot.fin ./fini `echo $(srcdir)/str-ot.fin | sed 's,^\./,,'` str-ot.j str-ot.h fini: fini.o proj-h.o $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o fini fini.o proj-h.o fini.o: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \ `echo $(srcdir)/fini.c | sed 's,^\./,,'` -o $@ # Like proj.o, but depends on hconfig.h instead of config.h. proj-h.o: proj.c proj.h $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) $(HOST_CC) -c -DUSE_HCONFIG $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \ `echo $(srcdir)/proj.c | sed 's,^\./,,'` -o $@ # Other than str-*.j, the *.j files are dummy #include files # that normally just #include the corresponding back-end *.h # files, but not if MAKING_DEPENDENCIES is #defined. The str-*.j # files also are not actually included if MAKING_DEPENDENCIES # is #defined. The point of all this is to come up with a clean # dependencies list whether working in a clean directory, such # that str-*.j and such do not exist, or in a directory full # of already-built files. Any dependency on a str-*.j file # implies a dependency on str.h, so we key on that to replace # it with stamp-str, and dependencies on the other *.j files # are generally left alone (modulo special macros like RTL_H) # because we might not want to recompile all of g77 just # because a back-end file changes. MG is usually "-MG" but # should be defined with "make MG= deps-kinda..." if using # a compiler that doesn't support -MG (gcc does as of 2.6) -- # it prevents diagnostics when an #include file is missing, # as will be the case with proj.h in a clean directory. MG=-MG deps-kinda: $(HOST_CC) -DMAKING_DEPENDENCIES -MM $(MG) *.c 2>&1 | \ sed -e 's: \([.]/\)*assert[.]j: $$(ASSERT_H):g' \ -e 's: \([.]/\)*config[.]j: $$(CONFIG_H):g' \ -e 's: \([.]/\)*convert[.]j: $$(CONVERT_H):g' \ -e 's: \([.]/\)*flags[.]j: $$(FLAGS_H):g' \ -e 's: \([.]/\)*glimits[.]j: $$(GLIMITS_H):g' \ -e 's: \([.]/\)*hconfig[.]j: $$(HCONFIG_H):g' \ -e 's: \([.]/\)*input[.]j: $$(INPUT_H):g' \ -e 's: \([.]/\)*output[.]j: $$(OUTPUT_H):g' \ -e 's: \([.]/\)*rtl[.]j: $$(RTL_H):g' \ -e 's: \([.]/\)*system[.]j: $$(SYSTEM_H):g' \ -e 's: \([.]/\)*tconfig[.]j: $$(TCONFIG_H):g' \ -e 's: \([.]/\)*tm[.]j: $$(TM_H):g' \ -e 's: \([.]/\)*toplev[.]j: $$(TOPLEV_H):g' \ -e 's: \([.]/\)*tree[.]j: $$(TREE_H):g' \ -e 's: \([.]/\)*str[.]h: stamp-str:g' \ -e 's:.*g77spec.*::g' \ -e 's%^\(.*\)[ ]*: %\1: %g' # This rule is just a handy way to build the g77 derived files without # having the gcc source tree around. g77-only: force if [ -f g77.texi ] ; then \ (cd ..; $(MAKE) srcdir=. HOST_CC=cc HOST_CFLAGS=-g -f f/Make-lang.in f77.rebuilt); \ else \ $(MAKE) srcdir=. HOST_CC=cc HOST_CFLAGS=-g -f f/Make-lang.in f77.rebuilt; \ fi # # These exist for maintenance purposes. # Update the tags table. TAGS: force cd $(srcdir)/f ; \ etags *.c *.h ; \ echo 'l' | tr 'l' '\f' >> TAGS ; \ etags -a ../*.h ../*.c; .PHONY: none all all.indirect f77.rebuilt compiler native deps-kinda g77-only TAGS force force: