diff options
author | obrien <obrien@FreeBSD.org> | 2002-02-01 18:50:05 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-02-01 18:50:05 +0000 |
commit | 9aba5b9cc9db7213b0cacba0519c7693496b5deb (patch) | |
tree | bbdeea2acfeedca1e3a251a9b7c6966a686e6fee /contrib/gcc/Makefile.in | |
parent | 60c95d795161a605edde5f9879b1d53658c281e8 (diff) | |
download | FreeBSD-src-9aba5b9cc9db7213b0cacba0519c7693496b5deb.zip FreeBSD-src-9aba5b9cc9db7213b0cacba0519c7693496b5deb.tar.gz |
Use the stock 3.1-snap file now.
I have folded all our local changes into the FSF CVS repo.
Diffstat (limited to 'contrib/gcc/Makefile.in')
-rw-r--r-- | contrib/gcc/Makefile.in | 3520 |
1 files changed, 1879 insertions, 1641 deletions
diff --git a/contrib/gcc/Makefile.in b/contrib/gcc/Makefile.in index 8a93346..74cd023 100644 --- a/contrib/gcc/Makefile.in +++ b/contrib/gcc/Makefile.in @@ -1,21 +1,21 @@ # Makefile for GNU C compiler. -# Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, -# 1998, 1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 +# 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. -#This file is part of GNU CC. +#This file is part of GCC. -#GNU CC is free software; you can redistribute it and/or modify +#GCC 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 CC is distributed in the hope that it will be useful, +#GCC 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 CC; see the file COPYING. If not, write to +#along with GCC; see the file COPYING. If not, write to #the Free Software Foundation, 59 Temple Place - Suite 330, #Boston MA 02111-1307, USA. @@ -26,6 +26,9 @@ # uninstall, TAGS, mostlyclean, clean, distclean, maintainer-clean, # stage1, stage2, stage3, stage4. +# This is the default target. +all: + # Suppress smart makes who think they know how to automake Yacc files .y.c: @@ -33,6 +36,9 @@ srcdir = @srcdir@ VPATH = @srcdir@ +# Pointer to the GCC Project website +website=http://gcc.gnu.org + # Variables that exist for you to override. # See below for how to change them for certain systems. @@ -43,38 +49,53 @@ SUBDIRS =@subdirs@ # Selection of languages to be made. # This is overridden by configure. CONFIG_LANGUAGES = @all_languages@ -LANGUAGES = c proto gcov$(exeext) $(CONFIG_LANGUAGES) - -# Languages should create dependencies of $(INTL_TARGETS) on generated -# sources in Make-lang.in. Example: -# $(INTL_TARGETS): $(srcdir)/cp/parse.c -INTL_TARGETS = intl.all intl.install intl.distdir +LANGUAGES = c gcov$(exeext) $(CONFIG_LANGUAGES) # Selection of languages to be made during stage1 build. # This is overridden by configure. BOOT_LANGUAGES = c @all_boot_languages@ -ALLOCA = -ALLOCA_FLAGS = -ALLOCA_FINISH = true - -# 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 -# WARN_CFLAGS are the warning flags to pass to stage2 and stage3. -# (And for stage 1 if the native compiler is GCC.) It is -# separate from BOOT_CFLAGS because people tend to override optimization -# flags and we'd like them to still have warnings turned on. They are free -# to explicitly turn warnings off if they wish. +# Various ways of specifying flags for compilations: +# CFLAGS is for the user to override to, e.g., do a cross build with -O2. +# For recursive bootstrap builds CFLAGS is used to pass in STAGE1_CFLAGS +# or BOOT_CFLAGS +# STAGE1_CFLAGS is set by configure on some targets or passed from toplevel +# and sets the CFLAGS passed to stage1 of a bootstrap compilation. +# BOOT_CFLAGS is the value of CFLAGS to pass to the stage2, stage3 and stage4 +# bootstrap compilations. # XCFLAGS is used for most compilations but not when using the GCC just built. # TCFLAGS is used for compilations with the GCC just built. XCFLAGS = TCFLAGS = -# -W -Wall warnings are disabled for releases. CFLAGS = -g -BOOT_CFLAGS = -O2 $(CFLAGS) -#WARN_CFLAGS = -W -Wall +STAGE1_CFLAGS = -g @stage1_cflags@ +BOOT_CFLAGS = -g -O2 + +# The warning flags are separate from BOOT_CFLAGS because people tend to +# override optimization flags and we'd like them to still have warnings +# turned on. These flags are also used to pass other stage dependent +# flags from configure. The user is free to explicitly turn these flags +# off if they wish. +# LOOSE_WARN are the warning flags to use when compiling something +# which is only compiled with gcc, such as libgcc and the frontends +# other than C. +# STRICT_WARN and STRICT2_WARN are the additional warning flags to +# apply to the back end and the C front end, which may be compiled +# with other compilers. This is partially controlled by configure in +# stage1, as not all versions of gcc understand -Wno-long-long. +LOOSE_WARN = -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes +STRICT_WARN = -Wtraditional @strict1_warn@ +STRICT2_WARN = -Wtraditional -pedantic -Wno-long-long + +# This is how we control whether or not the additional warnings are applied. +.-warn = $(STRICT_WARN) +GCC_WARN_CFLAGS = $(LOOSE_WARN) $($(@D)-warn) + +# All warnings have to be shut off in stage1 if the compiler used then +# isn't gcc; configure determines that. WARN_CFLAGS will be either +# $(GCC_WARN_CFLAGS), or nothing. +WARN_CFLAGS = @warn_cflags@ + # These exists to be overridden by the x-* and t-* files, respectively. X_CFLAGS = T_CFLAGS = @@ -84,20 +105,14 @@ T_CPPFLAGS = AWK = @AWK@ CC = @CC@ -# srcdir might be a relative pathname which won't be valid in a subdirectory, -# so we must use objdir/srcdir instead to make it safe. objdir is always -# a full pathname. -BISON = `if [ -f $(objdir)/../bison/bison ] ; then case $(srcdir) in \ - /*) echo $(objdir)/../bison/bison -L $(srcdir)/../bison/ ;; \ - *) echo $(objdir)/../bison/bison -L $(objdir)/$(srcdir)/../bison/ ;; \ - esac; else echo bison ; fi` +BISON = @BISON@ BISONFLAGS = -LEX = `if [ -f $(objdir)/../flex/flex ] ; then echo $(objdir)/../flex/flex ; else echo flex ; fi` -LEXFLAGS = +FLEX = @FLEX@ +FLEXFLAGS = AR = ar AR_FLAGS = rc -LN = @symbolic_link@ DLLTOOL = dlltool +RANLIB = @RANLIB@ SHELL = /bin/sh # on sysV, define this as cp. INSTALL = @INSTALL@ @@ -108,74 +123,53 @@ LN_S=@LN_S@ # These permit overriding just for certain files. INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ -MAKEINFO = `if [ -f $(objdir)/../texinfo/makeinfo/Makefile ] ; \ - then echo $(objdir)/../texinfo/makeinfo/makeinfo ; \ - else echo makeinfo ; fi` +INSTALL_SCRIPT = @INSTALL@ +MAKEINFO = @MAKEINFO@ MAKEINFOFLAGS = TEXI2DVI = texi2dvi +TEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl +POD2MAN = pod2man --center="GNU" --release="gcc-$(version)" # For GNUmake: let us decide what gets passed to recursive makes. MAKEOVERRIDES = @SET_MAKE@ +# Some compilers can't handle cc -c blah.c -o foo/blah.o. +# In stage2 and beyond, we force this to "-o $@" since we know we're using gcc. +OUTPUT_OPTION = @OUTPUT_OPTION@ -# 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 = - -# How to invoke ranlib. -RANLIB = ranlib -# Test to use to see whether ranlib exists on the system. -RANLIB_TEST = \ - [ -f $(RANLIB) ] \ - || [ -f /usr/bin/ranlib -o -f /bin/ranlib ] +# Some versions of `touch' (such as the version on Solaris 2.8) +# do not correctly set the timestamp due to buggy versions of `utime' +# in the kernel. So, we use `echo' instead. +STAMP = echo timestamp > -# Compiler to use for compiling libgcc1.a. -# OLDCC should not be the GNU C compiler, -# since that would compile typical libgcc1.a functions such as mulsi3 -# into infinite recursions. -OLDCC = cc +# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is +# -I../zlib, unless we were configured with --with-system-zlib, in which +# case both are empty. +ZLIB = @zlibdir@ -lz +ZLIBINC = @zlibinc@ -# CFLAGS for use with OLDCC, for compiling libgcc1.a. -# NOTE: -O does not work on some Unix systems! -CCLIBFLAGS = -O - -# Version of ar to use when compiling libgcc1.a. -OLDAR = ar -OLDAR_FLAGS = qc +# Substitution type for target's getgroups 2nd arg. +TARGET_GETGROUPS_T = @TARGET_GETGROUPS_T@ # Target to use when installing include directory. Either -# install-headers-tar or install-headers-cpio. +# install-headers-tar, install-headers-cpio or install-headers-cp. INSTALL_HEADERS_DIR = @build_install_headers_dir@ # Header files that are made available under the same name # to programs compiled with GCC. USER_H = $(srcdir)/ginclude/stdarg.h $(srcdir)/ginclude/stddef.h \ - $(srcdir)/ginclude/varargs.h $(srcdir)/ginclude/va-alpha.h \ - $(srcdir)/ginclude/va-h8300.h $(srcdir)/ginclude/va-i860.h \ - $(srcdir)/ginclude/va-i960.h $(srcdir)/ginclude/va-mips.h \ - $(srcdir)/ginclude/va-m88k.h $(srcdir)/ginclude/va-mn10200.h \ - $(srcdir)/ginclude/va-mn10300.h $(srcdir)/ginclude/va-pa.h \ - $(srcdir)/ginclude/va-pyr.h $(srcdir)/ginclude/va-sparc.h \ - $(srcdir)/ginclude/va-clipper.h $(srcdir)/ginclude/va-spur.h \ - $(srcdir)/ginclude/va-m32r.h $(srcdir)/ginclude/va-sh.h \ - $(srcdir)/ginclude/va-v850.h $(srcdir)/ginclude/va-arc.h \ - $(srcdir)/ginclude/iso646.h $(srcdir)/ginclude/va-ppc.h \ - $(srcdir)/ginclude/va-c4x.h $(EXTRA_HEADERS) $(LANG_EXTRA_HEADERS) \ - $(srcdir)/ginclude/proto.h $(srcdir)/ginclude/stdbool.h - -# Target to use whe installing assert.h. Some systems may -# want to set this empty. -INSTALL_ASSERT_H = install-assert-h - -# The GCC to use for compiling libgcc2.a, enquire, and libgcc1-test. + $(srcdir)/ginclude/varargs.h \ + $(srcdir)/ginclude/stdbool.h $(srcdir)/ginclude/iso646.h \ + $(EXTRA_HEADERS) + +# The GCC to use for compiling libgcc.a, enquire, and crt*.o. # Usually the one we just built. # Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS). -GCC_FOR_TARGET = ./xgcc -B$(build_tooldir)/bin/ -B./ -I$(build_tooldir)/include +GCC_FOR_TARGET = ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. # It omits XCFLAGS, and specifies -B./. -# It also specifies -I./include to find, e.g., stddef.h. -GCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) -I./include $(TCFLAGS) +# It also specifies -isystem ./include to find, e.g., stddef.h. +GCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -isystem ./include $(TCFLAGS) # Sed command to transform gcc to installed name. Overwritten by configure. program_transform_name = @program_transform_name@ @@ -200,10 +194,12 @@ AR_FOR_TARGET = ` \ if [ "$(host_canonical)" = "$(target)" ] ; then \ echo ar; \ else \ - t='$(program_transform_name)'; echo ar | sed -e $$t ; \ + t='$(program_transform_cross_name)'; echo ar | sed -e $$t ; \ fi; \ fi` -AR_FLAGS_FOR_TARGET = rc +AR_FLAGS_FOR_TARGET = +AR_CREATE_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) rc +AR_EXTRACT_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) x RANLIB_FOR_TARGET = ` \ if [ -f $(objdir)/../binutils/ranlib ] ; then \ echo $(objdir)/../binutils/ranlib ; \ @@ -211,30 +207,47 @@ RANLIB_FOR_TARGET = ` \ if [ "$(host_canonical)" = "$(target)" ] ; then \ echo ranlib; \ else \ - t='$(program_transform_name)'; echo ranlib | sed -e $$t ; \ + t='$(program_transform_cross_name)'; echo ranlib | sed -e $$t ; \ fi; \ fi` RANLIB_TEST_FOR_TARGET = \ [ -f $(RANLIB_FOR_TARGET) ] \ || ( [ "$(host_canonical)" = "$(target)" ] \ && [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ) +NM_FOR_TARGET = ` \ + if [ -f ./nm ] ; then \ + echo ./nm ; \ + elif [ -f $(objdir)/../binutils/nm-new ] ; then \ + echo $(objdir)/../binutils/nm-new ; \ + else \ + if [ "$(host_canonical)" = "$(target)" ] ; then \ + echo nm; \ + else \ + t='$(program_transform_cross_name)'; echo nm | sed -e $$t ; \ + fi; \ + fi` + +# Where to find some libiberty headers. +HASHTAB_H = $(srcdir)/../include/hashtab.h +OBSTACK_H = $(srcdir)/../include/obstack.h +SPLAY_TREE_H= $(srcdir)/../include/splay-tree.h +FIBHEAP_H = $(srcdir)/../include/fibheap.h -# Dir to search for system headers. Overridden by cross-make. -SYSTEM_HEADER_DIR = /usr/include +# Default native SYSTEM_HEADER_DIR, to be overridden by targets. +NATIVE_SYSTEM_HEADER_DIR = /usr/include +# Default cross SYSTEM_HEADER_DIR, to be overridden by targets. +CROSS_SYSTEM_HEADER_DIR = $(build_tooldir)/sys-include -# Control whether to run fixproto. -STMP_FIXPROTO = stmp-fixproto +# autoconf sets SYSTEM_HEADER_DIR to one of the above. +SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ + +# Control whether to run fixproto and fixincludes. +STMP_FIXPROTO = @STMP_FIXPROTO@ +STMP_FIXINC = @STMP_FIXINC@ # Test to see whether <limits.h> exists in the system header files. LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ] -# There may be a premade insn-attrtab.c for this machine. -# (You could rebuild it with genattrtab as usual, but it takes a long time.) -# PREMADE_ATTRTAB is the file name of the file to use. -# PREMADE_ATTRTAB_MD is the md file it corresponds to. -PREMADE_ATTRTAB_MD = Makefile # Guaranteed not to cmp equal to md. -PREMADE_ATTRTAB = - target=@target@ target_alias=@target_alias@ xmake_file=@dep_host_xmake_file@ @@ -242,21 +255,28 @@ tmake_file=@dep_tmake_file@ out_file=$(srcdir)/config/@out_file@ out_object_file=@out_object_file@ md_file=$(srcdir)/config/@md_file@ -tm_file=@tm_file_list@ -build_xm_file=@build_xm_file_list@ -host_xm_file=@host_xm_file_list@ +tm_p_file_list=@tm_p_file_list@ +tm_p_file=@tm_p_file@ +build_xm_file_list=@build_xm_file_list@ +build_xm_file=@build_xm_file@ +build_xm_defines=@build_xm_defines@ +host_xm_file_list=@host_xm_file_list@ +host_xm_file=@host_xm_file@ +host_xm_defines=@host_xm_defines@ +xm_file=@xm_file@ +xm_defines=@xm_defines@ lang_specs_files=@lang_specs_files@ lang_options_files=@lang_options_files@ lang_tree_files=@lang_tree_files@ +target_cpu_default=@target_cpu_default@ GCC_THREAD_FILE=@thread_file@ OBJC_BOEHM_GC=@objc_boehm_gc@ -JAVAGC=@JAVAGC@ GTHREAD_FLAGS=@gthread_flags@ # Be prepared for gcc2 merges. gcc_version=@gcc_version@ gcc_version_trigger=@gcc_version_trigger@ version=$(gcc_version) -mainversion=`sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/' < $(srcdir)/version.c` +mainversion=`grep version_string $(srcdir)/version.c | sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/'` # Common prefix for installation directories. # NOTE: This directory must exist when you start installation. @@ -280,24 +300,25 @@ unlibsubdir = ../../.. dollar = @dollar@ # Used in install-cross. gcc_tooldir = @gcc_tooldir@ -# Since tooldir does not exist at build-time, use -B$(build_tooldir)/bin/ +# Used to install the shared libgcc. +slibdir = @slibdir@ +# Since gcc_tooldir does not exist at build-time, use -B$(build_tooldir)/bin/ build_tooldir = $(exec_prefix)/$(target_alias) -# Directory in which the compiler finds g++ includes. -gcc_gxx_include_dir= @gcc_gxx_include_dir@ +# Directory in which the compiler finds target-independent g++ includes. +gcc_gxx_include_dir = @gcc_gxx_include_dir@ # Directory to search for site-specific includes. -includedir = $(local_prefix)/include -# assertdir is overridden in cross-make. -# (But this currently agrees with what is in cross-make.) -assertdir = $(gcc_tooldir)/include +local_includedir = $(local_prefix)/include +includedir = $(prefix)/include # where the info files go infodir = @infodir@ # Where cpp should go besides $prefix/bin if necessary cpp_install_dir = @cpp_install_dir@ # where the locale files go -datadir = $(prefix)/@DATADIRNAME@ +datadir = @datadir@ localedir = $(datadir)/locale # Extension (if any) to put in installed man-page filename. -manext = .1 +man1ext = .1 +man7ext = .7 objext = .o exeext = @host_exeext@ build_exeext = @build_exeext@ @@ -305,6 +326,7 @@ build_exeext = @build_exeext@ # Directory in which to put man pages. mandir = @mandir@ man1dir = $(mandir)/man1 +man7dir = $(mandir)/man7 # Dir for temp files. tmpdir = /tmp @@ -316,60 +338,51 @@ USE_NLS = @USE_NLS@ # Internationalization library. INTLLIBS = @INTLLIBS@ +INTLDEPS = @INTLDEPS@ -# List of internationalization subdirectories. -POSUB = @POSUB@ -INTL_SUBDIRS = intl $(POSUB) +# Character encoding conversion library. +LIBICONV = @LIBICONV@ -# Additional system libraries to link with. -CLIB= +# List of internationalization subdirectories. +INTL_SUBDIRS = intl -# Change this to a null string if obstacks are installed in the -# system library. -OBSTACK=obstack.o +# The GC method to be used on this system. +GGC=@GGC@.o -# Configure will set these if you need vfprintf and possibly _doprnt support. -VFPRINTF=@vfprintf@ -DOPRINT=@doprint@ +# If a supplementary library is being used for the GC. +GGC_LIB= -# Specify the rule for actually making libgcc.a, +# libgcc.a may be built directly or via stmp-multilib, +# and installed likewise. Overridden by t-fragment. LIBGCC = libgcc.a -# and the rule for installing it. INSTALL_LIBGCC = install-libgcc -# Specify the rule for actually making libgcc1.a. -# The value may be empty; that means to do absolutely nothing -# with or for libgcc1.a. -LIBGCC1 = libgcc1.a - -# Specify the rule for making libgcc1.a for a cross-compiler. -# The default rule assumes that libgcc1.a is supplied by the user. -CROSS_LIBGCC1 = libgcc1.cross - -# Specify the rule for actually making libgcc2.a. -LIBGCC2 = libgcc2.a - # Options to use when compiling libgcc2.a. # -g1 causes output of debug info only for file-scope entities. # we use this here because that should be enough, and also # so that -g1 will be tested. # LIBGCC2_DEBUG_CFLAGS = -g1 -LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED @inhibit_libc@ +LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED @inhibit_libc@ # Additional options to use when compiling libgcc2.a. -# Some targets override this to -Iinclude +# Some targets override this to -isystem include LIBGCC2_INCLUDES = # Additional target-dependent options for compiling libgcc2.a. -TARGET_LIBGCC2_CFLAGS = +TARGET_LIBGCC2_CFLAGS = -# Things which must be built before building libgcc2.a. -# Some targets override this to stmp-int-hdrs -LIBGCC2_DEPS = +# Options to use when compiling crtbegin/end. +CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ + -finhibit-size-directive -fno-inline-functions -fno-exceptions -# libgcc1-test target (must also be overridable for a target) -LIBGCC1_TEST = libgcc1-test +# Additional sources to handle exceptions; overridden on ia64. +LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ + $(srcdir)/unwind-sjlj.c +LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h + +# nm flags to list global symbols in libgcc object files. +SHLIB_NM_FLAGS = -pg # List of extra executables that should be compiled for this target machine # that are used for compiling from source code to object code. @@ -395,23 +408,17 @@ EXTRA_GCC_OBJS =@host_extra_gcc_objs@ # Often this is edited directly by `configure'. EXTRA_HEADERS =@extra_headers_list@ -# Set this to `collect2' to enable use of collect2. -USE_COLLECT2 = @will_use_collect2@ -# If we might be using collect2, then this variable will be set to -# -DUSE_COLLECT2. toplev.c, collect2.c and libgcc2.c all need to -# if we may be using collect2. -MAYBE_USE_COLLECT2 = @maybe_use_collect2@ # It is convenient for configure to add the assignment at the beginning, # so don't override it here. USE_COLLECT2 = collect2$(exeext) -# List of extra C and assembler files to add to libgcc1.a. +# List of extra C and assembler files to add to static and shared libgcc2. # Assembler files should have names ending in `.asm'. -LIB1FUNCS_EXTRA = +LIB2FUNCS_EXTRA = -# List of extra C and assembler files to add to libgcc2.a. +# List of extra C and assembler files to add to static libgcc2. # Assembler files should have names ending in `.asm'. -LIB2FUNCS_EXTRA = +LIB2FUNCS_STATIC_EXTRA = # Handle cpp installation. INSTALL_CPP= @@ -422,18 +429,21 @@ UNINSTALL_CPP= FLOAT_H=@float_h_file@ # Program to convert libraries. -LIBCONVERT = +LIBCONVERT = # Control whether header files are installed. INSTALL_HEADERS=install-headers -# Options for tar when copying trees. So HPUX can override it. -TAROUTOPTS = xpBf +# Control whether Info documentation is built and installed. +BUILD_INFO = @BUILD_INFO@ + +# Control whether manpages generated by texi2pod.pl can be rebuilt. +GENERATED_MANPAGES = @GENERATED_MANPAGES@ # Additional directories of header files to run fixincludes on. # These should be directories searched automatically by default # just as /usr/include is. -# *Do not* use this for directories that happen to contain +# *Do not* use this for directories that happen to contain # header files, but are not searched automatically by default. # On most systems, this is empty. OTHER_FIXINCLUDES_DIRS= @@ -444,7 +454,7 @@ COMPILERS = cc1$(exeext) @all_compilers@ # List of things which should already be built whenever we try to use xgcc # to compile anything (without linking). -GCC_PASSES=xgcc$(exeext) cc1$(exeext) cpp0$(exeext) $(EXTRA_PASSES) +GCC_PASSES=xgcc$(exeext) cc1$(exeext) cpp0$(exeext) specs $(EXTRA_PASSES) # List of things which should already be built whenever we try to use xgcc # to link anything. @@ -453,48 +463,41 @@ GCC_PARTS=$(GCC_PASSES) $(LIBGCC) $(EXTRA_PROGRAMS) $(USE_COLLECT2) $(EXTRA_PART # Directory to link to, when using the target `maketest'. DIR = ../gcc -# Guaranteed to not exist when not passing md through cpp. -# This value is overridden directly by configure. -MD_FILE = md-cpp-not-used - # Flags to use when cross-building GCC. # Prefix to apply to names of object files when using them # to run on the machine we are compiling on. -HOST_PREFIX= +HOST_PREFIX = @HOST_PREFIX@ # Prefix to apply to names of object files when compiling them # to run on the machine we are compiling on. -# The default for this variable is chosen to keep these rules +# The default for this variable is chosen to keep these rules # out of the way of the other rules for compiling the same source files. -HOST_PREFIX_1=loser- -HOST_CC=$(CC) -HOST_CFLAGS=$(ALL_CFLAGS) -HOST_CLIB=$(CLIB) -HOST_INTLLIBS=$(INTLLIBS) +HOST_PREFIX_1 = @HOST_PREFIX_1@ +# Native compiler for the build machine and its switches. +HOST_CC = @HOST_CC@ +HOST_CFLAGS= @HOST_CFLAGS@ -DGENERATOR_FILE + +# Native linker and preprocessor flags. For x-fragment overrides. HOST_LDFLAGS=$(LDFLAGS) HOST_CPPFLAGS=$(ALL_CPPFLAGS) -HOST_ALLOCA=$(ALLOCA) -HOST_MALLOC=$(MALLOC) -HOST_OBSTACK=$(OBSTACK) -HOST_VFPRINTF=$(VFPRINTF) -HOST_DOPRINT=$(DOPRINT) # Actual name to use when installing a native compiler. -GCC_INSTALL_NAME = `t='$(program_transform_name)'; echo gcc | sed -e $$t` -CPP_INSTALL_NAME = `t='$(program_transform_name)'; echo cpp | sed -e $$t` -PROTOIZE_INSTALL_NAME = `t='$(program_transform_name)'; echo protoize | sed -e $$t` -UNPROTOIZE_INSTALL_NAME = `t='$(program_transform_name)'; echo unprotoize | sed -e $$t` -GCOV_INSTALL_NAME = `t='$(program_transform_name)'; echo gcov | sed -e $$t` +GCC_INSTALL_NAME = `echo gcc|sed '$(program_transform_name)'` +GCC_TARGET_INSTALL_NAME = $(target_alias)-`echo gcc|sed '$(program_transform_name)'` +CPP_INSTALL_NAME = `echo cpp|sed '$(program_transform_name)'` +PROTOIZE_INSTALL_NAME = `echo protoize|sed '$(program_transform_name)'` +UNPROTOIZE_INSTALL_NAME = `echo unprotoize|sed '$(program_transform_name)'` +GCOV_INSTALL_NAME = `echo gcov|sed '$(program_transform_name)'` +GCCBUG_INSTALL_NAME = `echo gccbug|sed '$(program_transform_name)'` # Actual name to use when installing a cross-compiler. -GCC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gcc | sed -e $$t` -PROTOIZE_CROSS_NAME = `t='$(program_transform_cross_name)'; echo protoize | sed -e $$t` -UNPROTOIZE_CROSS_NAME = `t='$(program_transform_cross_name)'; echo unprotoize | sed -e $$t` +GCC_CROSS_NAME = `echo gcc|sed '$(program_transform_cross_name)'` +CPP_CROSS_NAME = `echo cpp|sed '$(program_transform_cross_name)'` +PROTOIZE_CROSS_NAME = `echo protoize|sed '$(program_transform_cross_name)'` +UNPROTOIZE_CROSS_NAME = `echo unprotoize|sed '$(program_transform_cross_name)'` -# Choose the real default target. -ALL=all.internal - -# Choose the real install target. -INSTALL_TARGET=install-normal +# Set by autoconf to "all.internal" for a native build, or +# "all.cross" to build a cross compiler. +ALL = @ALL@ # Setup the testing framework, if you have one EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \ @@ -507,17 +510,22 @@ RUNTEST = `if [ -f $${srcdir}/../dejagnu/runtest ] ; then \ RUNTESTFLAGS = # Extra symbols for fixproto to define when parsing headers. -FIXPROTO_DEFINES = +FIXPROTO_DEFINES = # Extra flags to use when compiling crt{begin,end}.o. -CRTSTUFF_T_CFLAGS = +CRTSTUFF_T_CFLAGS = # Extra flags to use when compiling [m]crt0.o. -CRT0STUFF_T_CFLAGS = +CRT0STUFF_T_CFLAGS = # "t" or nothing, for building multilibbed versions of, say, crtbegin.o. T = +# Should T contain a `=', libgcc.mk will make T_TARGET, setting +# $(T_TARGET) to the name of the actual target filename. +T_TARGET = +T_TARGET : $(T_TARGET) + # End of variables for you to override. # Definition of `all' is here so that new rules inserted by sed @@ -529,77 +537,103 @@ all: all.indirect # This tells GNU Make version 3 not to put all variables in the environment. .NOEXPORT: +# GCONFIG_H lists the config files that the generator files depend on, while +# CONFIG_H lists the the ones ordinary gcc files depend on, which includes +# several files generated by those generators. +GCONFIG_H = config.h $(host_xm_file_list) +HCONFIG_H = hconfig.h $(build_xm_file_list) +CONFIG_H = $(GCONFIG_H) insn-constants.h insn-flags.h +TCONFIG_H = tconfig.h $(xm_file_list) +TARGET_H = target.h +TARGET_DEF_H = target-def.h +TM_P_H = tm_p.h $(tm_p_file_list) tm-preds.h + +MACHMODE_H = machmode.h machmode.def +RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H) +RTL_H = $(RTL_BASE_H) genrtl.h +PARAMS_H = params.h params.def +TREE_H = tree.h real.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def +BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h +DEMANGLE_H = $(srcdir)/../include/demangle.h +RECOG_H = recog.h +EXPR_H = expr.h +OPTABS_H = optabs.h insn-codes.h +REGS_H = regs.h varray.h $(MACHMODE_H) +INTEGRATE_H = integrate.h varray.h +LOOP_H = loop.h varray.h bitmap.h +GCC_H = gcc.h version.h +GGC_H = ggc.h varray.h +TIMEVAR_H = timevar.h timevar.def +INSN_ATTR_H = insn-attr.h $(srcdir)/insn-addr.h $(srcdir)/varray.h +C_COMMON_H = c-common.h $(SPLAY_TREE_H) +C_TREE_H = c-tree.h $(C_COMMON_H) +SYSTEM_H = system.h hwint.h $(srcdir)/../include/libiberty.h +PREDICT_H = predict.h predict.def +CPPLIB_H = cpplib.h line-map.h + # sed inserts variable overrides after the following line. ####target overrides @target_overrides@ ####host overrides @host_overrides@ - -####cross overrides -@cross_defines@ -@cross_overrides@ - -####build overrides -@build_overrides@ # # Now figure out from those variables how to compile and link. all.indirect: $(ALL) -# IN_GCC tells various files that system.h, toplev.c, etc are available. -INTERNAL_CFLAGS = $(CROSS) -DIN_GCC $(SCHED_CFLAGS) @extra_c_flags@ +# IN_GCC distinguishes between code compiled into GCC itself and other +# programs built during a bootstrap. +# autoconf inserts -DCROSS_COMPILE if we are building a cross compiler. +INTERNAL_CFLAGS = -DIN_GCC @CROSS@ # This is the variable actually used when we compile. # If you change this line, you probably also need to change the definition # of HOST_CFLAGS in build-make to match. -ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) $(XCFLAGS) \ - @DEFS@ +ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) \ + $(CFLAGS) $(WARN_CFLAGS) $(XCFLAGS) @DEFS@ # Likewise. ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS) -# Even if ALLOCA is set, don't use it if compiling with GCC. -USE_ALLOCA= ${ALLOCA} -USE_HOST_ALLOCA= ` case "${HOST_ALLOCA}" in ?*) echo ${HOST_PREFIX}${HOST_ALLOCA} ;; esac ` -USE_HOST_MALLOC= ` case "${HOST_MALLOC}" in ?*) echo ${HOST_PREFIX}${HOST_MALLOC} ;; esac ` -USE_HOST_OBSTACK= ` case "${HOST_OBSTACK}" in ?*) echo ${HOST_PREFIX}${HOST_OBSTACK} ;; esac ` -USE_HOST_VFPRINTF= ` case "${HOST_VFPRINTF}" in ?*) echo ${HOST_PREFIX}${HOST_VFPRINTF} ;; esac ` -USE_HOST_DOPRINT= ` case "${HOST_DOPRINT}" in ?*) echo ${HOST_PREFIX}${HOST_DOPRINT} ;; esac ` +# Build and host support libraries. FORBUILD is either +# .. or ../$(build_alias) depending on whether host != build. +LIBIBERTY = ../libiberty/libiberty.a +BUILD_LIBIBERTY = @FORBUILD@/libiberty/libiberty.a -# Dependency on obstack, alloca, malloc or whatever library facilities -# are not installed in the system libraries. -# We don't use USE_ALLOCA because backquote expansion doesn't work in deps. -LIBDEPS= $(INTLLIBS) $(OBSTACK) $(ALLOCA) $(MALLOC) $(VFPRINTF) $(DOPRINT) +# Dependencies on the intl and portability libraries. +LIBDEPS= $(INTLDEPS) $(LIBIBERTY) # Likewise, for use in the tools that must run on this machine # even if we are cross-building GCC. -# We don't use USE_ALLOCA because backquote expansion doesn't work in deps. -HOST_LIBDEPS= $(HOST_PREFIX)$(HOST_INTLLIBS) $(HOST_PREFIX)$(HOST_OBSTACK) $(HOST_PREFIX)$(HOST_ALLOCA) $(HOST_PREFIX)$(HOST_MALLOC) $(HOST_PREFIX)$(HOST_VFPRINTF) $(HOST_PREFIX)$(HOST_DOPRINT) +HOST_LIBDEPS= $(BUILD_LIBIBERTY) # How to link with both our special library facilities # and the system's installed libraries. -LIBS = $(OBSTACK) $(USE_ALLOCA) $(MALLOC) $(INTLLIBS) @LIBS@ $(VFPRINTF) $(DOPRINT) $(CLIB) ../libiberty/libiberty.a +LIBS = $(INTLLIBS) @LIBS@ $(LIBIBERTY) # Likewise, for use in the tools that must run on this machine # even if we are cross-building GCC. -HOST_LIBS = $(USE_HOST_OBSTACK) $(USE_HOST_ALLOCA) $(USE_HOST_MALLOC) \ - $(HOST_INTLLIBS) $(USE_HOST_VFPRINTF) $(USE_HOST_DOPRINT) \ - $(HOST_CLIB) +HOST_LIBS = $(BUILD_LIBIBERTY) + +HOST_RTL = $(HOST_PREFIX)rtl.o read-rtl.o $(HOST_PREFIX)bitmap.o \ + $(HOST_PREFIX)ggc-none.o gensupport.o -HOST_RTL = $(HOST_PREFIX)rtl.o $(HOST_PREFIX)bitmap.o -HOST_RTLANAL = $(HOST_PREFIX)rtlanal.o HOST_PRINT = $(HOST_PREFIX)print-rtl.o +HOST_ERRORS = $(HOST_PREFIX)errors.o # 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 +# so that *config.h will be found in the compilation # subdirectory rather than in the source directory. -INCLUDES = -I. -I$(srcdir) -I$(srcdir)/config -I$(srcdir)/../include +# -I$(@D) and -I$(srcdir)/$(@D) cause the subdirectory of the file +# currently being compiled, in both source trees, to be examined as well. +INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \ + -I$(srcdir)/config -I$(srcdir)/../include # Always use -I$(srcdir)/config when compiling. .c.o: - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) # This tells GNU make version 3 not to export all the variables # defined in this file into the environment. @@ -611,9 +645,6 @@ INCLUDES = -I. -I$(srcdir) -I$(srcdir)/config -I$(srcdir)/../include # These next lines are overridden by configure. LANG_MAKEFILES = @all_lang_makefiles@ LANG_STAGESTUFF = @all_stagestuff@ -LANG_DIFF_EXCLUDES = @all_diff_excludes@ -LANG_LIB2FUNCS = @all_lib2funcs@ -LANG_EXTRA_HEADERS = @all_headers@ # Flags to pass to recursive makes. # CC is set by configure. Hosts without symlinks need special handling @@ -622,23 +653,24 @@ LANG_EXTRA_HEADERS = @all_headers@ # ??? The choices here will need some experimenting with. ORDINARY_FLAGS_TO_PASS = \ "AR_FLAGS_FOR_TARGET=$(AR_FLAGS_FOR_TARGET)" \ + "AR_CREATE_FOR_TARGET=$(AR_CREATE_FOR_TARGET)" \ + "AR_EXTRACT_FOR_TARGET=$(AR_EXTRACT_FOR_TARGET)" \ "AR_FOR_TARGET=$(AR_FOR_TARGET)" \ "BISON=$(BISON)" \ "BISONFLAGS=$(BISONFLAGS)" \ - "CFLAGS=$(CFLAGS)" \ - "CLIB=$(CLIB)" \ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \ "LDFLAGS=$(LDFLAGS)" \ - "LEX=$(LEX)" \ - "LEXFLAGS=$(LEXFLAGS)" \ + "FLEX=$(FLEX)" \ + "FLEXFLAGS=$(FLEXFLAGS)" \ "LN=$(LN)" \ "LN_S=$(LN_S)" \ "MAKEINFO=$(MAKEINFO)" \ "MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \ + "MAKEOVERRIDES=" \ "RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \ "RANLIB_TEST_FOR_TARGET=$(RANLIB_TEST_FOR_TARGET)" \ "SHELL=$(SHELL)" \ - "STAGE_PREFIX=@stage_prefix_set_by_configure@" \ "exeext=$(exeext)" \ "build_exeext=$(build_exeext)" \ "objext=$(objext)" \ @@ -646,14 +678,14 @@ ORDINARY_FLAGS_TO_PASS = \ "prefix=$(prefix)" \ "local_prefix=$(local_prefix)" \ "gxx_include_dir=$(gcc_gxx_include_dir)" \ - "tooldir=$(tooldir)" \ + "build_tooldir=$(build_tooldir)" \ "gcc_tooldir=$(gcc_tooldir)" \ "bindir=$(bindir)" \ "libsubdir=$(libsubdir)" \ "datadir=$(datadir)" \ - "distdir=../tmp/\$$(subdir)" \ "localedir=$(localedir)" -FLAGS_TO_PASS = $(ORDINARY_FLAGS_TO_PASS) "CC=@cc_set_by_configure@" +FLAGS_TO_PASS = $(ORDINARY_FLAGS_TO_PASS) "CC=@cc_set_by_configure@" \ + "STAGE_PREFIX=@stage_prefix_set_by_configure@" PREPEND_DOTDOT_TO_RELATIVE_PATHS = sed \ -e 's|^ *[^ /][^ /]*/|%&|' \ -e 's| -B| -B%|g' \ @@ -661,120 +693,112 @@ PREPEND_DOTDOT_TO_RELATIVE_PATHS = sed \ -e 's|%% *|../|g' \ -e 's|%||g' SUBDIR_FLAGS_TO_PASS = $(ORDINARY_FLAGS_TO_PASS) \ - "CC=`echo @quoted_cc_set_by_configure@ | $(PREPEND_DOTDOT_TO_RELATIVE_PATHS)`" + "CC=`echo @quoted_cc_set_by_configure@ | $(PREPEND_DOTDOT_TO_RELATIVE_PATHS)`" \ + "STAGE_PREFIX=`echo @quoted_stage_prefix_set_by_configure@ | $(PREPEND_DOTDOT_TO_RELATIVE_PATHS)`" # # Lists of files for various purposes. +# Target specific, C specific object file +C_TARGET_OBJS=@c_target_objs@ + +# Target specific, C++ specific object file +CXX_TARGET_OBJS=@cxx_target_objs@ + # Language-specific object files for C and Objective C. -C_AND_OBJC_OBJS = c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o \ - c-aux-info.o c-common.o c-iterate.o @extra_c_objs@ +C_AND_OBJC_OBJS = attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o \ + c-convert.o c-aux-info.o c-common.o c-format.o c-semantics.o \ + c-objc-common.o libcpp.a $(C_TARGET_OBJS) # Language-specific object files for C. C_OBJS = c-parse.o c-lang.o $(C_AND_OBJC_OBJS) -SCHED_PREFIX = @sched_prefix@ -SCHED_CFLAGS = @sched_cflags@ - # Language-independent object files. -OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \ - function.o stmt.o except.o expr.o calls.o expmed.o explow.o optabs.o \ - intl.o varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o genrtl.o real.o \ - dbxout.o sdbout.o dwarfout.o dwarf2out.o xcoffout.o bitmap.o alias.o gcse.o \ - integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o varray.o \ - regclass.o regmove.o local-alloc.o global.o reload.o reload1.o caller-save.o \ - insn-peep.o reorg.o $(SCHED_PREFIX)sched.o final.o recog.o reg-stack.o \ - insn-opinit.o insn-recog.o insn-extract.o insn-output.o insn-emit.o lcm.o \ - profile.o insn-attrtab.o $(out_object_file) getpwd.o $(EXTRA_OBJS) convert.o \ - mbchar.o dyn-string.o splay-tree.o graph.o sbitmap.o resource.o hash.o + +OBJS = alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o \ + cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfglayout.o cfgloop.o cfgrtl.o \ + combine.o conflict.o convert.o cse.o cselib.o dbxout.o debug.o dependence.o \ + df.o diagnostic.o doloop.o dominance.o dwarf2asm.o dwarf2out.o dwarfout.o \ + emit-rtl.o except.o explow.o expmed.o expr.o final.o flow.o \ + fold-const.o function.o gcse.o genrtl.o ggc-common.o global.o graph.o \ + haifa-sched.o hash.o hashtable.o ifcvt.o insn-attrtab.o insn-emit.o \ + insn-extract.o insn-opinit.o insn-output.o insn-peep.o insn-recog.o \ + integrate.o intl.o jump.o langhooks.o lcm.o lists.o local-alloc.o \ + loop.o mbchar.o optabs.o params.o predict.o print-rtl.o print-tree.o \ + profile.o real.o recog.o reg-stack.o regclass.o regmove.o regrename.o \ + reload.o reload1.o reorg.o resource.o rtl.o rtlanal.o rtl-error.o \ + sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o \ + sibcall.o simplify-rtx.o ssa.o ssa-ccp.o ssa-dce.o stmt.o \ + stor-layout.o stringpool.o timevar.o toplev.o tree.o tree-dump.o \ + tree-inline.o unroll.o varasm.o varray.o version.o vmsdbgout.o xcoffout.o \ + $(GGC) $(out_object_file) $(EXTRA_OBJS) + +BACKEND = main.o libbackend.a # 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 # them before rtl.o is compiled. -GEN= genemit genoutput genrecog genextract genflags gencodes genconfig \ - genpeep gengenrtl gencheck - -CCCP=@cpp_main@ +GEN= genemit$(build_exeext) genoutput$(build_exeext) genrecog$(build_exeext) \ + genextract$(build_exeext) genflags$(build_exeext) gencodes$(build_exeext) \ + genconfig$(build_exeext) genpeep$(build_exeext) gengenrtl$(build_exeext) \ + gencheck$(build_exeext) genpreds$(build_exeext) genconstants$(build_exeext) # Files to be copied away after each stage in building. STAGESTUFF = *$(objext) insn-flags.h insn-config.h insn-codes.h \ insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \ - insn-attr.h insn-attrtab.c insn-opinit.c tree-check.h \ - s-flags s-config s-codes s-mlib s-under\ + insn-attr.h insn-attrtab.c insn-opinit.c insn-constants.h tm-preds.h \ + tree-check.h \ + s-flags s-config s-codes s-mlib s-under s-genrtl \ s-output s-recog s-emit s-extract s-peep s-check \ - s-attr s-attrtab s-opinit s-crt s-crtS s-crt0 \ + s-attr s-attrtab s-opinit s-preds s-constants s-crt0 \ genemit$(build_exeext) genoutput$(build_exeext) genrecog$(build_exeext) \ genextract$(build_exeext) genflags$(build_exeext) gencodes$(build_exeext) \ genconfig$(build_exeext) genpeep$(build_exeext) genattrtab$(build_exeext) \ genattr$(build_exeext) genopinit$(build_exeext) gengenrtl$(build_exeext) \ - gencheck$(build_exeext) \ + gencheck$(build_exeext) genpreds$(build_exeext) genconstants$(build_exeext) \ + genrtl.c genrtl.h \ xgcc$(exeext) cpp$(exeext) cc1$(exeext) cpp0$(exeext) $(EXTRA_PASSES) \ - $(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) \ - $(CCCP)$(exeext) cc1obj$(exeext) enquire$(exeext) \ - protoize$(exeext) unprotoize$(exeext) \ - specs collect2$(exeext) $(USE_COLLECT2) underscore.c \ - gcov$(exeext) *.bp \ - *.greg *.lreg *.combine *.flow *.cse *.jump *.rtl *.tree *.loop \ - *.dbr *.jump2 *.sched *.cse2 *.sched2 *.stack *.gcse *.flow2 \ - *.[si] libcpp.a \ + $(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) cc1obj$(exeext) \ + enquire$(exeext) protoize$(exeext) unprotoize$(exeext) \ + specs collect2$(exeext) $(USE_COLLECT2) underscore.c tradcpp0$(exeext) \ + gcov$(exeext) *.[0-9][0-9].* *.[si] libcpp.a libbackend.a libgcc.mk \ $(LANG_STAGESTUFF) -# Members of libgcc1.a. -LIB1FUNCS = _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \ - _lshrsi3 _ashrsi3 _ashlsi3 \ - _divdf3 _muldf3 _negdf2 _adddf3 _subdf3 \ - _fixdfsi _fixsfsi _floatsidf _floatsisf _truncdfsf2 _extendsfdf2 \ - _addsf3 _negsf2 _subsf3 _mulsf3 _divsf3 \ - _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \ - _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2 - # Library members defined in libgcc2.c. -LIB2FUNCS = _muldi3 _divdi3 _moddi3 _udivdi3 _umoddi3 _negdi2 \ - _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 \ - _udiv_w_sdiv _udivmoddi4 _cmpdi2 _ucmpdi2 _floatdidf _floatdisf \ - _fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \ - _fixxfdi _fixunsxfdi _floatdixf _fixunsxfsi \ - _fixtfdi _fixunstfdi _floatditf \ - __gcc_bcmp _varargs __dummy _eprintf \ - _bb _shtab _clear_cache _trampoline __main _exit \ - _ctors _pure - -LIB2FUNCS_EH = _eh +# Variable length limited to 255 charactes when passed to a shell script. +LIB2FUNCS_1 = _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 _clz \ + _cmpdi2 _ucmpdi2 _floatdidf _floatdisf _fixunsdfsi _fixunssfsi \ + _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi _fixxfdi _fixunsxfdi + +LIB2FUNCS_2 = _floatdixf _fixunsxfsi _fixtfdi _fixunstfdi _floatditf \ + _clear_cache _trampoline __main _exit _absvsi2 _absvdi2 _addvsi3 \ + _addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors + +# Defined in libgcc2.c, included only in the static library. +LIB2FUNCS_ST = _eprintf _bb __gcc_bcmp FPBIT_FUNCS = _pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf \ _fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \ - _lt_sf _le_sf _si_to_sf _sf_to_si _negate_sf _make_sf \ - _sf_to_df + _lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf \ + _sf_to_df _thenan_sf _sf_to_usi _usi_to_sf DPBIT_FUNCS = _pack_df _unpack_df _addsub_df _mul_df _div_df \ _fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df \ - _lt_df _le_df _si_to_df _df_to_si _negate_df _make_df \ - _df_to_sf - -# The files that "belong" in CONFIG_H are deliberately omitted -# because having them there would not be useful in actual practice. -# All they would do is cause complete recompilation every time -# one of the machine description files is edited. -# That may or may not be what one wants to do. -# If it is, rm *.o is an easy way to do it. -# CONFIG_H = $(host_xm_file) $(tm_file) -CONFIG_H = -RTL_BASE_H = rtl.h rtl.def machmode.h machmode.def -RTL_H = $(RTL_BASE_H) genrtl.h -TREE_H = tree.h real.h tree.def machmode.h machmode.def tree-check.h -BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h -DEMANGLE_H = $(srcdir)/../include/demangle.h -RECOG_H = recog.h -EXPR_H = expr.h insn-codes.h -REGS_H = regs.h varray.h machmode.h machmode.def + _lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df \ + _df_to_sf _thenan_df _df_to_usi _usi_to_df + +# These might cause a divide overflow trap and so are compiled with +# unwinder info. +LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4 + # # Language makefile fragments. # The following targets define the interface between us and the languages. # -# all.build, all.cross, start.encap, rest.encap, +# all.cross, start.encap, rest.encap, # info, dvi, # install-normal, install-common, install-info, install-man, -# uninstall, distdir, +# uninstall, # mostlyclean, clean, distclean, extraclean, maintainer-clean, # stage1, stage2, stage3, stage4 # @@ -793,8 +817,9 @@ REGS_H = regs.h varray.h machmode.h machmode.def # # The only suffixes we want for implicit rules are .c and .o, so clear # the list and add them. This speeds up GNU Make, and allows -r to work. +# For i18n support, we also need .gmo, .po, .pox. .SUFFIXES: -.SUFFIXES: .c .o +.SUFFIXES: .c .o .po .pox .gmo Makefile: $(srcdir)/Makefile.in config.status $(srcdir)/version.c \ $(xmake_file) $(tmake_file) $(LANG_MAKEFILES) @@ -804,8 +829,43 @@ Makefile: $(srcdir)/Makefile.in config.status $(srcdir)/version.c \ LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.run rm -f config.run -$(srcdir)/configure: $(srcdir)/configure.in - cd $(srcdir); autoconf +config.h: cs-config.h ; @true +hconfig.h: cs-hconfig.h ; @true +tconfig.h: cs-tconfig.h ; @true +tm_p.h: cs-tm_p.h ; @true + +cs-config.h: Makefile + HEADERS="$(host_xm_file)" DEFINES="$(host_xm_defines)" \ + TARGET_CPU_DEFAULT="$(target_cpu_default)" \ + $(SHELL) $(srcdir)/mkconfig.sh config.h + +cs-hconfig.h: Makefile + HEADERS="$(build_xm_file)" DEFINES="$(build_xm_defines)" \ + TARGET_CPU_DEFAULT="$(target_cpu_default)" \ + $(SHELL) $(srcdir)/mkconfig.sh hconfig.h + +cs-tconfig.h: Makefile + HEADERS="$(xm_file)" DEFINES="$(xm_defines)" \ + TARGET_CPU_DEFAULT="" \ + $(SHELL) $(srcdir)/mkconfig.sh tconfig.h + +cs-tm_p.h: Makefile + HEADERS="$(tm_p_file)" DEFINES="" TARGET_CPU_DEFAULT="" \ + $(SHELL) $(srcdir)/mkconfig.sh tm_p.h + +# Don't automatically run autoconf, since configure.in might be accidentally +# newer than configure. Also, this writes into the source directory which +# might be on a read-only file system. If configured for maintainer mode +# then do allow autoconf to be run. + +$(srcdir)/configure: @MAINT@ $(srcdir)/configure.in + (cd $(srcdir) && autoconf) + +gccbug: $(srcdir)/gccbug.in + CONFIG_FILES=gccbug CONFIG_HEADERS= ./config.status + +mklibgcc: $(srcdir)/mklibgcc.in + CONFIG_FILES=mklibgcc CONFIG_HEADERS= ./config.status # cstamp-h.in controls rebuilding of config.in. # It is named cstamp-h.in and not stamp-h.in so the mostlyclean rule doesn't @@ -816,11 +876,14 @@ $(srcdir)/configure: $(srcdir)/configure.in # "echo timestamp" is used instead of touch to be consistent with other # packages that use autoconf (??? perhaps also to avoid problems with patch?). # ??? Newer versions have a maintainer mode that may be useful here. -$(srcdir)/config.in: $(srcdir)/cstamp-h.in -$(srcdir)/cstamp-h.in: $(srcdir)/configure.in $(srcdir)/acconfig.h - cd $(srcdir) && autoheader - @rm -f $(srcdir)/cstamp-h.in - echo timestamp > $(srcdir)/cstamp-h.in + +# Don't run autoheader automatically either. +# Only run it if maintainer mode is enabled. +@MAINT@ $(srcdir)/config.in: $(srcdir)/cstamp-h.in +@MAINT@ $(srcdir)/cstamp-h.in: $(srcdir)/configure.in $(srcdir)/acconfig.h +@MAINT@ (cd $(srcdir) && autoheader) +@MAINT@ @rm -f $(srcdir)/cstamp-h.in +@MAINT@ echo timestamp > $(srcdir)/cstamp-h.in auto-host.h: cstamp-h ; @true cstamp-h: config.in config.status CONFIG_HEADERS=auto-host.h:config.in LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.status @@ -828,9 +891,9 @@ cstamp-h: config.in config.status # Really, really stupid make features, such as SUN's KEEP_STATE, may force # a target to build even if it is up-to-date. So we must verify that # config.status does not exist before failing. -config.status: configure version.c +config.status: $(srcdir)/configure $(srcdir)/config.gcc version.c @if [ ! -f config.status ] ; then \ - echo You must configure gcc. Look at the INSTALL file for details.; \ + echo You must configure gcc. Look at http://gcc.gnu.org/install/ for details.; \ false; \ else \ LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.status --recheck; \ @@ -840,22 +903,20 @@ all.internal: start.encap rest.encap doc # This is what to compile if making a cross-compiler. # Note that we can compile enquire using the cross-compiler just built, # although we can't run it on this machine. -all.cross: native gcc-cross specs stmp-headers $(STMP_FIXPROTO) $(LIBGCC) \ - $(LIBGCC1_TEST) $(EXTRA_PARTS) lang.all.cross doc -# This is what to compile if making gcc with a cross-compiler. -all.build: native xgcc$(exeext) cpp$(exeext) $(EXTRA_PARTS) lang.all.build +all.cross: native gcc-cross cpp$(exeext) specs \ + $(LIBGCC) $(EXTRA_PARTS) lang.all.cross doc # This is what must be made before installing GCC and converting libraries. -start.encap: native xgcc$(exeext) cpp$(exeext) specs $(LIBGCC1) \ +start.encap: native xgcc$(exeext) cpp$(exeext) specs \ xlimits.h lang.start.encap # These can't be made until after GCC can run. -rest.encap: stmp-headers $(STMP_FIXPROTO) $(LIBGCC) $(EXTRA_PARTS) lang.rest.encap +rest.encap: $(STMP_FIXPROTO) $(LIBGCC) $(EXTRA_PARTS) lang.rest.encap # This is what is made with the host's compiler # whether making a cross compiler or not. -native: config.status auto-host.h intl.all $(LANGUAGES) \ +native: config.status auto-host.h intl.all build-@POSUB@ $(LANGUAGES) \ $(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(USE_COLLECT2) # Define the names for selecting languages in LANGUAGES. -C c: cc1$(exeext) +C c: cc1$(exeext) tradcpp0$(exeext) PROTO: proto # Tell GNU make these are phony targets. @@ -865,23 +926,15 @@ PROTO: proto # This does the things that can't be done on the host machine. rest.cross: $(LIBGCC) specs -# Verify that it works to compile and link libgcc1-test. -# If it does, then there are sufficient replacements for libgcc1.a. -libgcc1-test: libgcc1-test.o native $(GCC_PARTS) - @echo "Testing libgcc1. Ignore linker warning messages." - $(GCC_FOR_TARGET) $(GCC_CFLAGS) libgcc1-test.o -o libgcc1-test \ - -nostartfiles -nostdlib `$(GCC_FOR_TARGET) --print-libgcc-file-name` -libgcc1-test.o: libgcc1-test.c native xgcc$(exeext) - $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -c $(srcdir)/libgcc1-test.c - # Recompile all the language-independent object files. # This is used only if the user explicitly asks for it. -compilations: ${OBJS} +compilations: $(BACKEND) -# Create a list of the language-independent object files so the language -# subdirectories needn't mention their names explicitly. -stamp-objlist: $(OBJS) - echo " $(OBJS)" | sed -e 's, \([a-z0-9]\), ../\1,g' -e 's/\.o/$(objext)/g' >stamp-objlist +# Like libcpp.a, this archive is strictly for the host. +libbackend.a: $(OBJS) + -rm -rf libbackend.a + $(AR) $(AR_FLAGS) libbackend.a $(OBJS) + -$(RANLIB) libbackend.a # We call this executable `xgcc' rather than `gcc' # to avoid confusion if the current directory is in the path @@ -891,9 +944,7 @@ xgcc$(exeext): gcc.o gccspec.o version.o intl.o prefix.o \ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o gccspec.o intl.o \ prefix.o version.o $(EXTRA_GCC_OBJS) $(LIBS) -# We call this executable `xcpp' rather than `cpp' -# since the real preprocessor is named `cpp'. It too is renamed -# when it is installed. +# cpp is to cpp0 as gcc is to cc1. # The only difference from xgcc is that it's linked with cppspec.o # instead of gccspec.o. cpp$(exeext): gcc.o cppspec.o version.o intl.o prefix.o \ @@ -912,8 +963,9 @@ specs: xgcc$(exeext) gcc-cross: xgcc$(exeext) cp xgcc$(exeext) gcc-cross$(exeext) -cc1$(exeext): $(P) $(OBJS) $(C_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(C_OBJS) $(LIBS) +cc1$(exeext): $(C_OBJS) $(BACKEND) $(LIBDEPS) + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cc1$(exeext) \ + $(C_OBJS) $(BACKEND) $(LIBS) # Build the version of limits.h that we will install. xlimits.h: glimits.h limitx.h limity.h @@ -925,256 +977,61 @@ xlimits.h: glimits.h limitx.h limity.h mv tmp-xlimits.h xlimits.h # # Build libgcc.a. -# This is done in two parts because some functions, in libgcc1.c, -# must be compiled with something other than GCC, -# while the rest, in libgcc2.c, must be compiled with xgcc. -# That means we can't do libgcc2.c until after xgcc, cc1, etc. - -# Use this as value of LIBGCC1 to cause conversion to GNU library format. -# LIBCONVERT should put its output in libgcc1.conv. -libgcc1.conv: libgcc1.a - $(LIBCONVERT) libgcc1.a libgcc1.conv - -# Use this as value of LIBGCC1 to inhibit use of libgcc1.c entirely. -# Make an empty file instead. -libgcc1.null: $(GCC_PASSES) - echo "void __foo () {}" > dummy.c - $(GCC_FOR_TARGET) $(GCC_CFLAGS) -c dummy.c - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) libgcc1.null dummy$(objext) - rm -f dummy$(objext) dummy.c - -# This is $(LIBGCC1) for a cross-compiler. -# We have no automatic way of building libgcc1.a, -# so it's up to the installer to find a way to do that. -# This rule deliberately does not depend on libgcc1.a -# so that it will fail if the installer hasn't provided it. -libgcc1.cross: - mv libgcc1.a libgcc1.cross || (echo You must find a way to make libgcc1.a; false) - -# Compile the library of arithmetic subroutines with the native compiler. -# Don't compile it with GCC! -# (That would cause most arithmetic functions to call themselves.) -# -# NOTE: If you modify these rules substantially, please be sure to -# check at least config/i386/t-sco5 and possibly other makefile -# fragments. -libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1FUNCS_EXTRA) config.status - -rm -f tmplibgcc1.a -# Actually build it in tmplibgcc1.a, then rename at end, -# so that libgcc1.a itself remains nonexistent if compilation is aborted. -# -e causes any failing command to make this rule fail. -# -e doesn't work in certain shells, so we test $$? as well. -# lynx has a broken ar, it always complains when the initial library is -# empty, thus this command works only if we don't do -e -# There is a trailing backslash (\) deleted from the following line. -# set -e; - for name in $(LIB1FUNCS); \ - do \ - echo $${name}; \ - rm -f $${name}$(objext); \ - $(OLDCC) -DIN_LIBGCC1 $(CCLIBFLAGS) $(INCLUDES) -c -DL$${name} $(srcdir)/libgcc1.c; \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - mv libgcc1$(objext) $${name}$(objext); \ - $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ - rm -f $${name}$(objext); \ - done -# Some shells crash when a loop has no items. -# So make sure there is always at least one--`..'. -# Then ignore it. -# We don't use -e here because there are if statements -# that should not make the command give up when the if condition is false. -# Instead, we test for failure after each command where it matters. - for file in .. $(LIB1FUNCS_EXTRA); \ - do \ - if [ x$${file} != x.. ]; then \ - name=`echo $${file} | sed -e 's/[.][cS]$$//' -e 's/[.]asm$$//'`; \ - echo $${name}; \ - if [ $${name}.asm = $${file} ]; then \ - cp $${file} $${name}.s || exit 1; file=$${name}.s; \ - else true; fi; \ - $(OLDCC) -DIN_LIBGCC1 $(CCLIBFLAGS) $(INCLUDES) -c $${file}; \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - rm -f $${name}.s $${name}$(objext); \ - else true; \ - fi; \ - done - -if $(RANLIB_TEST_FOR_TARGET) ; then \ - $(RANLIB_FOR_TARGET) tmplibgcc1.a; \ - else true; fi - mv tmplibgcc1.a libgcc1.a - -# Build libgcc1.a from assembler source. LIB1ASMFUNCS is the list of -# functions. LIB1ASMSRC is the name of the source file in the config -# subdirectory. -libgcc1-asm.a: libgcc2.ready config.status $(srcdir)/config/$(LIB1ASMSRC) - -rm -f tmplibgcc1.a libgcc1.S - cp $(srcdir)/config/$(LIB1ASMSRC) libgcc1.S -# Actually build it in tmplibgcc1.a, then rename at end, -# so that libgcc1-asm.a itself remains nonexistent if compilation is aborted. -# -e causes any failing command to make this rule fail. -# -e doesn't work in certain shells, so we test $$? as well. -# lynx has a broken ar, it always complains when the initial library is -# empty, thus this command works only if we don't do -e -# There is a trailing backslash (\) deleted from the following line. -# set -e; - for name in $(LIB1ASMFUNCS); \ - do \ - echo $${name}; \ - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} libgcc1.S; \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - mv libgcc1$(objext) $${name}$(objext); \ - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc1.a $${name}$(objext); \ - rm -f $${name}$(objext); \ - done - -rm -f libgcc1.S - mv tmplibgcc1.a libgcc1-asm.a - -# Generate assembly versions of the functions required for libgcc1. -# You'll still need to massage the code by hand (possibly hacking -# underscores and local labels) but this will get you started. -libgcc1.S: libgcc1.c $(CONFIG_H) config.status - -rm -f libgcc1.S - touch libgcc1.S - for name in $(LIB1FUNCS); \ - do \ - echo $${name}; \ - $(OLDCC) -DIN_LIBGCC1 $(CCLIBFLAGS) $(INCLUDES) -S -DL$${name} $(srcdir)/libgcc1.c; \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - echo '#ifdef ' L$${name} >> libgcc1.S; \ - cat libgcc1.s >> libgcc1.S; \ - echo '#endif /*' L$${name} '*/' >> libgcc1.S; \ - echo "" >> libgcc1.S; \ - done -# Compiling libgcc2.a requires making sure that cc1, etc. have been compiled. -# But recompiling cc1 should not force recompilation of libgcc2.a. -# If you want to force recompilation, delete libgcc2.a. -libgcc2.ready: $(GCC_PASSES) $(LIBGCC2_DEPS) stmp-int-hdrs $(STMP_FIXPROTO) - -if [ -f libgcc2.ready ] ; then \ - true; \ - else \ - touch libgcc2.ready; \ - fi - -LIB2ADD = $(srcdir)/frame.c $(LIB2FUNCS_EXTRA) $(LANG_LIB2FUNCS) -libgcc2.a: libgcc2.c libgcc2.ready $(CONFIG_H) $(FPBIT) $(DPBIT) $(LIB2ADD) \ - machmode.h longlong.h frame.h gbl-ctors.h config.status -# Actually build it in tmplibgcc2.a, then rename at end, -# so that libgcc2.a itself remains nonexistent if compilation is aborted. - -rm -f tmplibgcc2.a -# -e causes any failing command to make this rule fail. -# -e doesn't work in certain shells, so we test $$? as well. -# lynx has a broken ar, it always complains when the initial library is -# empty, thus this command works only if we don't do -e -# There is a trailing backslash (\) deleted from the following line. -# set -e; - for name in $(LIB2FUNCS); \ - do \ - echo $${name}; \ - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} \ - $(MAYBE_USE_COLLECT2) $(srcdir)/libgcc2.c -o $${name}$(objext); \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${name}$(objext); \ - rm -f $${name}$(objext); \ - done - for name in $(LIB2FUNCS_EH); \ - do \ - echo $${name}; \ - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -fexceptions $(INCLUDES) -c \ - -DL$${name} $(srcdir)/libgcc2.c -o $${name}$(objext); \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${name}$(objext); \ - rm -f $${name}$(objext); \ - done - if [ x$(FPBIT) != x ]; then \ - for name in $(FPBIT_FUNCS); \ - do \ - echo $${name}; \ - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} \ - -DFINE_GRAINED_LIBRARIES $(FPBIT) -o $${name}$(objext); \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${name}$(objext); \ - rm -f $${name}$(objext); \ - done; \ - else true; fi; - if [ x$(DPBIT) != x ]; then \ - for name in $(DPBIT_FUNCS); \ - do \ - echo $${name}; \ - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} \ - -DFINE_GRAINED_LIBRARIES $(DPBIT) -o $${name}$(objext); \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${name}$(objext); \ - rm -f $${name}$(objext); \ - done; \ - else true; fi; -# Some shells crash when a loop has no items. -# So make sure there is always at least one--`..'. -# Then ignore it. -# We don't use -e here because there are if statements -# that should not make the command give up when the if condition is false. -# Instead, we test for failure after each command where it matters. - for file in $(LIB2ADD); do \ - name=`echo $${file} | sed -e 's/[.][cSo]$$//' -e 's/[.]asm$$//' -e 's/[.]txt$$//'`; \ - oname=` echo $${name} | sed -e 's,.*/,,'`; \ - if [ $${name}.txt = $${file} ]; then \ - for f in .. `cat $${file}`; do if [ x$${f} != x.. ]; then \ - $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ - AR_FOR_TARGET="$(AR_FOR_TARGET)" \ - AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" CC="$(CC)" \ - CFLAGS="$(CFLAGS)" HOST_PREFIX="$(HOST_PREFIX)" \ - HOST_PREFIX_1="$(HOST_PREFIX_1)" \ - LANGUAGES="$(LANGUAGES)" \ - LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" $${f}; \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${f}; \ - rm -f $${f}; \ - else true; \ - fi; done; \ - else \ - echo $${name}; \ - if [ $${name}.asm = $${file} ]; then \ - cp $${file} $${name}.s || exit 1; file=$${name}.s; \ - else true; fi; \ - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${oname}$(objext); \ - rm -f $${name}.s $${oname}$(objext); \ - fi; \ - done - mv tmplibgcc2.a libgcc2.a -# These lines were deleted from above the mv command -# because ranlibing libgcc.a itself should suffice. -# -if [ x${HPUX_GAS} = x ] ; then \ -# if $(RANLIB_TEST_FOR_TARGET) ; then \ -# $(RANLIB_FOR_TARGET) tmplibgcc2.a; -# else true; fi; \ -# else true; fi - -# Combine the various libraries into a single library, libgcc.a. -libgcc.a: $(LIBGCC1) $(LIBGCC2) - -rm -rf tmplibgcc.a libgcc.a tmpcopy - mkdir tmpcopy - -if [ x$(LIBGCC1) != x ]; \ - then (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC1)); \ - else true; \ - fi -# Some versions of ar (specifically the one in RISC/os 5.x), create an -# unwritable table of contents file, and then print an error message when -# the second ar command tries to overwrite this file. To avoid the error -# message from ar, we make sure all files are writable. - -(cd tmpcopy; chmod +w * > /dev/null 2>&1) - (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC2)) - (cd tmpcopy; $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) ../tmplibgcc.a *$(objext)) - rm -rf tmpcopy - -if $(RANLIB_TEST_FOR_TARGET) ; then \ - $(RANLIB_FOR_TARGET) tmplibgcc.a; \ - else true; fi -# Actually build it in tmplibgcc.a, then rename at end, -# so that libgcc.a itself remains nonexistent if compilation is aborted. - mv tmplibgcc.a libgcc.a +LIB2ADD = $(LIB2FUNCS_EXTRA) +LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA) + +libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) xgcc$(exeext) + objext='$(objext)' \ + LIB1ASMFUNCS='$(LIB1ASMFUNCS)' \ + LIB2FUNCS_1='$(LIB2FUNCS_1)' \ + LIB2FUNCS_2='$(LIB2FUNCS_2)' \ + LIB2FUNCS_ST='$(LIB2FUNCS_ST)' \ + LIB2ADD='$(LIB2ADD)' \ + LIB2ADD_ST='$(LIB2ADD_ST)' \ + LIB2ADDEH='$(LIB2ADDEH)' \ + LIB2ADDEHDEP='$(LIB2ADDEHDEP)' \ + FPBIT='$(FPBIT)' \ + FPBIT_FUNCS='$(FPBIT_FUNCS)' \ + LIB2_DIVMOD_FUNCS='$(LIB2_DIVMOD_FUNCS)' \ + DPBIT='$(DPBIT)' \ + DPBIT_FUNCS='$(DPBIT_FUNCS)' \ + MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \ + EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \ + SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_INSTALL='$(SHLIB_INSTALL)' \ + SHLIB_EXT='$(SHLIB_EXT)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)' \ + SHLIB_MKMAP='$(SHLIB_MKMAP)' \ + SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \ + SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \ + mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \ + $(SHELL) mklibgcc > tmp-libgcc.mk + mv tmp-libgcc.mk libgcc.mk + +# All the things that might cause us to want to recompile bits of libgcc. +LIBGCC_DEPS = $(GCC_PASSES) $(LANGUAGES) stmp-int-hdrs $(STMP_FIXPROTO) \ + libgcc.mk $(srcdir)/libgcc2.c $(TCONFIG_H) \ + $(MACHMODE_H) longlong.h gbl-ctors.h config.status stmp-int-hdrs \ + tsystem.h $(FPBIT) $(DPBIT) $(LIB2ADD) $(LIB2ADD_ST) $(LIB2ADDEH) \ + $(LIB2ADDEHDEP) $(EXTRA_PARTS) $(srcdir)/config/$(LIB1ASMSRC) + +libgcc.a: $(LIBGCC_DEPS) + $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ + HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ + AR_FOR_TARGET="$(AR_FOR_TARGET)" \ + AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \ + AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ + CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ + RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)" \ + RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \ + NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \ + LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \ + INCLUDES="$(INCLUDES)" \ + CONFIG_H="$(TCONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \ + LIB1ASMSRC='$(LIB1ASMSRC)' \ + MAKEOVERRIDES= \ + -f libgcc.mk all # Use the genmultilib shell script to generate the information the gcc # driver program needs to select the library directory based on the @@ -1182,129 +1039,72 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2) multilib.h: s-mlib; @true s-mlib: $(srcdir)/genmultilib Makefile $(SHELL) $(srcdir)/genmultilib \ - "$(MULTILIB_OPTIONS)" \ - "$(MULTILIB_DIRNAMES)" \ - "$(MULTILIB_MATCHES)" \ - "$(MULTILIB_EXCEPTIONS)" \ - "$(MULTILIB_EXTRA_OPTS)" > tmp-mlib.h - $(srcdir)/move-if-change tmp-mlib.h multilib.h - touch s-mlib + "`test @enable_multilib@ != yes || echo $(MULTILIB_OPTIONS)`" \ + "`test @enable_multilib@ != yes || echo $(MULTILIB_DIRNAMES)`" \ + "`test @enable_multilib@ != yes || echo $(MULTILIB_MATCHES)`" \ + "`test @enable_multilib@ != yes || echo $(MULTILIB_EXCEPTIONS)`" \ + "`test @enable_multilib@ != yes || echo $(MULTILIB_EXTRA_OPTS)`" \ + "`test @enable_multilib@ != yes || echo $(MULTILIB_EXCLUSIONS)`" \ + > tmp-mlib.h + $(SHELL) $(srcdir)/move-if-change tmp-mlib.h multilib.h + $(STAMP) s-mlib # Build multiple copies of libgcc.a, one for each target switch. -stmp-multilib: $(LIBGCC1) libgcc2.c libgcc2.ready $(CONFIG_H) \ - frame.h \ - $(LIB2ADD) machmode.h longlong.h gbl-ctors.h config.status - for i in `$(GCC_FOR_TARGET) --print-multi-lib`; do \ - dir=`echo $$i | sed -e 's/;.*$$//'`; \ - flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ - $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ - AR_FOR_TARGET="$(AR_FOR_TARGET)" \ - AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ - CC="$(CC)" CFLAGS="$(CFLAGS)" \ - RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)" \ - RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \ - LANGUAGES="$(LANGUAGES)" \ - HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ - LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS) $${flags}" \ - MULTILIB_CFLAGS="$${flags}" \ - LIBGCC1="$(LIBGCC1)" LIBGCC2="$(LIBGCC2)" \ - dir="$${dir}" stmp-multilib-sub; \ - if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ - done - touch stmp-multilib - -# Subroutine of stmp-multilib so make -n works. -stmp-multilib-sub: - rm -f $(LIBGCC2) - if [ -d $(dir) ]; then \ - cd $(dir); \ - rm -f libgcc.a $(EXTRA_MULTILIB_PARTS); \ - else true; \ - fi +stmp-multilib: $(LIBGCC_DEPS) $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ + HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ AR_FOR_TARGET="$(AR_FOR_TARGET)" \ + AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \ AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ - CC="$(CC)" CFLAGS="$(CFLAGS)" \ - HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ - LANGUAGES="$(LANGUAGES)" \ - LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" $(LIBGCC2) - if [ x$(LIBGCC1) != xlibgcc1-asm.a ]; \ - then true; \ - else rm -f $(LIBGCC1); \ - fi - if [ x$(LIBGCC1) != xlibgcc1-asm.a ]; \ - then true; \ - else \ - $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ - AR_FOR_TARGET="$(AR_FOR_TARGET)" \ - AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ - CC="$(CC)" CFLAGS="$(CFLAGS)" \ - HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ - LANGUAGES="$(LANGUAGES)" \ - LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" $(LIBGCC1); \ - fi - rm -rf tmplibgcc.a tmpcopy - mkdir tmpcopy - if [ x$(LIBGCC1) != x ]; \ - then (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC1)); \ - else true; \ - fi -# Some versions of ar (specifically the one in RISC/os 5.x), create an -# unwritable table of contents file, and then print an error message when -# the second ar command tries to overwrite this file. To avoid the error -# message from ar, we make sure all files are writable. - -(cd tmpcopy; chmod +w * > /dev/null 2>&1) - (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC2)) - (cd tmpcopy; $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) ../tmplibgcc.a *$(objext)) - rm -rf libgcc2.a tmpcopy - if $(RANLIB_TEST_FOR_TARGET) ; then \ - $(RANLIB_FOR_TARGET) tmplibgcc.a; \ - else true; fi - if [ -d $(dir) ]; then true; else mkdir $(dir); fi - mv tmplibgcc.a $(dir)/libgcc.a - for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ - $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ - AR_FOR_TARGET="$(AR_FOR_TARGET)" \ - AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ - CC="$(CC)" CFLAGS="$(CFLAGS)" \ - HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ - LANGUAGES="$(LANGUAGES)" \ - MULTILIB_CFLAGS="$(MULTILIB_CFLAGS)" T="t" t$${f}; \ - mv t$${f} $(dir)/$${f}; \ - else true; \ - fi; done + CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ + RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)" \ + RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \ + NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \ + LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \ + INCLUDES="$(INCLUDES)" \ + CONFIG_H="$(CONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \ + LIB1ASMSRC='$(LIB1ASMSRC)' \ + MAKEOVERRIDES= \ + -f libgcc.mk all + $(STAMP) stmp-multilib # Compile two additional files that are linked with every program # linked using GCC on systems using COFF or ELF, for the sake of C++ # constructors. -$(T)crtbegin.o: crtstuff.c $(GCC_PASSES) $(CONFIG_H) \ - defaults.h frame.h gbl-ctors.h - $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ - -finhibit-size-directive -fno-inline-functions -fno-exceptions $(CRTSTUFF_T_CFLAGS) \ - -c $(srcdir)/crtstuff.c -DCRT_BEGIN -o $(T)crtbegin$(objext) - -$(T)crtend.o: crtstuff.c $(GCC_PASSES) $(CONFIG_H) \ - defaults.h frame.h gbl-ctors.h - $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ - -finhibit-size-directive -fno-inline-functions -fno-exceptions $(CRTSTUFF_T_CFLAGS) \ - -c $(srcdir)/crtstuff.c -DCRT_END -o $(T)crtend$(objext) - -# On some systems we also want to install versions of these files -# compiled using PIC for use in shared libraries. -crtbeginS.o crtendS.o: s-crtS ; @true - -s-crtS: crtstuff.c $(GCC_PASSES) $(CONFIG_H) \ - defaults.h frame.h gbl-ctors.h - $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(CRTSTUFF_T_CFLAGS_S) \ - -DCRT_BEGIN -DCRTSTUFFS_O -finhibit-size-directive -fno-inline-functions \ - -fno-exceptions -g0 -c $(srcdir)/crtstuff.c - mv crtstuff$(objext) crtbeginS$(objext) - $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(CRTSTUFF_T_CFLAGS_S) \ - -DCRT_END -DCRTSTUFFS_O -finhibit-size-directive -fno-inline-functions \ - -fno-exceptions -g0 -c $(srcdir)/crtstuff.c -o crtendS$(objext) - touch s-crtS - -# Compile the start modules crt0.o and mcrt0.o that are linked with every program +$(T)crtbegin.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ + gbl-ctors.h stmp-int-hdrs tsystem.h + $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \ + @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_BEGIN \ + -o $(T)crtbegin$(objext) + +$(T)crtend.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ + gbl-ctors.h stmp-int-hdrs tsystem.h + $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \ + @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_END \ + -o $(T)crtend$(objext) + +# These are versions of crtbegin and crtend for shared libraries. +$(T)crtbeginS.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ + gbl-ctors.h stmp-int-hdrs tsystem.h + $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS_S) \ + @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_BEGIN -DCRTSTUFFS_O \ + -o $(T)crtbeginS$(objext) + +$(T)crtendS.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ + gbl-ctors.h stmp-int-hdrs tsystem.h + $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS_S) \ + @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_END -DCRTSTUFFS_O \ + -o $(T)crtendS$(objext) + +# This is a version of crtbegin for -static links. +$(T)crtbeginT.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \ + gbl-ctors.h stmp-int-hdrs tsystem.h + $(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \ + @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_BEGIN -DCRTSTUFFT_O \ + -o $(T)crtbeginT$(objext) + +# Compile the start modules crt0.o and mcrt0.o that are linked with +# every program crt0.o: s-crt0 ; @true mcrt0.o: s-crt0; @true @@ -1313,7 +1113,7 @@ s-crt0: $(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H) -o crt0.o -c $(CRT0_S) $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \ -o mcrt0.o -c $(MCRT0_S) - touch s-crt0 + $(STAMP) s-crt0 # # Compiling object files from source files. @@ -1322,70 +1122,73 @@ s-crt0: $(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H) # C language specific files. -c-parse.o : $(srcdir)/c-parse.c $(CONFIG_H) $(TREE_H) c-lex.h \ - $(srcdir)/c-parse.h c-tree.h input.h flags.h system.h toplev.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c $(srcdir)/c-parse.c -$(srcdir)/c-parse.h: $(srcdir)/c-parse.c +c-errors.o: c-errors.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) flags.h \ + diagnostic.h $(TM_P_H) +c-parse.o : $(srcdir)/c-parse.c $(CONFIG_H) $(TREE_H) c-lex.h $(GGC_H) intl.h \ + $(C_TREE_H) input.h flags.h $(SYSTEM_H) toplev.h output.h $(CPPLIB_H) + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + -c $(srcdir)/c-parse.c $(OUTPUT_OPTION) + $(srcdir)/c-parse.c: $(srcdir)/c-parse.y - cd $(srcdir); $(BISON) $(BISONFLAGS) -d -o c-parse.c c-parse.y + cd $(srcdir) && \ + if $(BISON) $(BISONFLAGS) -o c-p$$$$.c c-parse.y; then \ + test -f c-p$$$$.output && mv -f c-p$$$$.output c-parse.output ; \ + mv -f c-p$$$$.c c-parse.c ; \ + else \ + rm -f c-p$$$$.* ; \ + false ; \ + fi + $(srcdir)/c-parse.y: c-parse.in echo '/*WARNING: This file is automatically generated!*/' >tmp-c-parse.y sed -e "/^ifobjc$$/,/^end ifobjc$$/d" \ -e "/^ifc$$/d" -e "/^end ifc$$/d" \ $(srcdir)/c-parse.in >>tmp-c-parse.y - $(srcdir)/move-if-change tmp-c-parse.y $(srcdir)/c-parse.y - -$(srcdir)/c-gperf.h: c-parse.gperf - gperf -L C -F ', 0, 0' -p -j1 -i 1 -g -o -t -G -N is_reserved_word \ - -k1,3,$$ $(srcdir)/c-parse.gperf >tmp-gperf.h - $(srcdir)/move-if-change tmp-gperf.h $(srcdir)/c-gperf.h - -c-decl.o : c-decl.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h flags.h \ - output.h toplev.h -c-typeck.o : c-typeck.c $(CONFIG_H) system.h $(TREE_H) c-tree.h flags.h \ - intl.h output.h $(EXPR_H) $(RTL_H) toplev.h -c-lang.o : c-lang.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h toplev.h \ - output.h -c-lex.o : c-lex.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-lex.h c-tree.h \ - $(srcdir)/c-parse.h input.h intl.h flags.h $(srcdir)/c-gperf.h c-pragma.h \ - toplev.h output.h mbchar.h -c-aux-info.o : c-aux-info.c $(CONFIG_H) system.h $(TREE_H) c-tree.h flags.h \ - toplev.h -c-convert.o : c-convert.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h -c-pragma.o: c-pragma.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) except.h \ - function.h defaults.h c-pragma.h toplev.h -c-iterate.o: c-iterate.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-tree.h \ - flags.h toplev.h $(EXPR_H) -mbchar.o: mbchar.c $(CONFIG_H) system.h mbchar.h -graph.o: graph.c $(CONFIG_H) system.h toplev.h flags.h output.h $(RTL_H) \ - hard-reg-set.h $(BASIC_BLOCK_H) -sbitmap.o: sbitmap.c $(CONFIG_H) system.h $(RTL_H) flags.h $(BASIC_BLOCK_H) - -COLLECT2_OBJS = collect2.o tlink.o hash.o intl.o underscore.o version.o + $(SHELL) $(srcdir)/move-if-change tmp-c-parse.y $(srcdir)/c-parse.y + +c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) $(C_TREE_H) \ + $(GGC_H) $(TARGET_H) c-lex.h flags.h function.h output.h $(EXPR_H) \ + debug.h toplev.h intl.h $(TM_P_H) tree-inline.h $(TIMEVAR_H) +c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ + $(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H) +c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ + langhooks.h langhooks-def.h +c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h \ + debug.h $(C_TREE_H) \ + c-pragma.h input.h intl.h flags.h toplev.h output.h \ + mbchar.h $(CPPLIB_H) $(EXPR_H) $(TM_P_H) +c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ + $(C_TREE_H) $(RTL_H) insn-config.h integrate.h $(EXPR_H) $(C_TREE_H) \ + flags.h toplev.h tree-inline.h diagnostic.h integrate.h $(VARRAY_H) \ + $(GGC_H) +c-aux-info.o : c-aux-info.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ + flags.h toplev.h +c-convert.o : c-convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h toplev.h +c-pragma.o: c-pragma.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) function.h \ + c-pragma.h toplev.h output.h $(GGC_H) $(TM_P_H) +mbchar.o: mbchar.c $(CONFIG_H) $(SYSTEM_H) mbchar.h +graph.o: graph.c $(CONFIG_H) $(SYSTEM_H) toplev.h flags.h output.h $(RTL_H) \ + function.h hard-reg-set.h $(BASIC_BLOCK_H) graph.h +sbitmap.o: sbitmap.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \ + $(BASIC_BLOCK_H) + +COLLECT2_OBJS = collect2.o tlink.o hash.o intl.o underscore.o version.o +COLLECT2_LIBS = @COLLECT2_LIBS@ collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS) # Don't try modifying collect2 (aka ld) in place--it might be linking this. - -rm -f collect2$(exeext) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(COLLECT2_OBJS) $(LIBS) + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o T$@ \ + $(COLLECT2_OBJS) $(LIBS) $(COLLECT2_LIBS) + mv -f T$@ $@ -collect2.o : collect2.c $(CONFIG_H) system.h gstab.h intl.h \ - $(srcdir)/../include/obstack.h $(DEMANGLE_H) collect2.h +collect2.o : collect2.c $(CONFIG_H) $(SYSTEM_H) gstab.h intl.h \ + $(OBSTACK_H) $(DEMANGLE_H) collect2.h version.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ - -DTARGET_MACHINE=\"$(target_alias)\" $(MAYBE_USE_COLLECT2) \ - -c `echo $(srcdir)/collect2.c | sed 's,^\./,,'` + -DTARGET_MACHINE=\"$(target_alias)\" \ + -c $(srcdir)/collect2.c $(OUTPUT_OPTION) -tlink.o: tlink.c $(DEMANGLE_H) hash.h $(CONFIG_H) system.h toplev.h collect2.h -hash.o: hash.c hash.h system.h toplev.h - -vfprintf.o: $(srcdir)/../libiberty/vfprintf.c $(CONFIG_H) system.h - rm -f vfprintf.c - $(LN_S) $(srcdir)/../libiberty/vfprintf.c vfprintf.c - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) vfprintf.c - -splay-tree.o: $(srcdir)/../libiberty/splay-tree.c \ - $(srcdir)/../include/splay-tree.h $(srcdir)/../include/libiberty.h - rm -f splay-tree.c - $(LN_S) $(srcdir)/../libiberty/splay-tree.c splay-tree.c - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) splay-tree.c +tlink.o: tlink.c $(DEMANGLE_H) hash.h $(CONFIG_H) $(SYSTEM_H) collect2.h intl.h +hash.o: hash.c hash.h $(SYSTEM_H) toplev.h $(GCONFIG_H) + $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) underscore.c: s-under ; @true @@ -1398,235 +1201,414 @@ s-under: $(GCC_PASSES) else \ echo "int prepends_underscore = 0;" >>tmp-under.c; \ fi - $(srcdir)/move-if-change tmp-under.c underscore.c + $(SHELL) $(srcdir)/move-if-change tmp-under.c underscore.c -rm -f tmp-dum.c tmp-dum.s - touch s-under + $(STAMP) s-under # A file used by all variants of C. -c-common.o : c-common.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h \ - flags.h toplev.h output.h c-pragma.h $(RTL_H) +c-common.o : c-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \ + $(C_COMMON_H) flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \ + $(EXPR_H) $(TM_P_H) builtin-types.def builtin-attrs.def $(TARGET_H) \ + diagnostic.h tree-inline.h + +# A file used by all variants of C and some other languages. + +attribs.o : attribs.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) flags.h \ + toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) $(EXPR_H) $(TM_P_H) \ + builtin-types.def $(TARGET_H) + +c-format.o : c-format.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ + $(C_COMMON_H) flags.h toplev.h intl.h diagnostic.h + +c-semantics.o : c-semantics.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ + c-lex.h flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \ + $(EXPR_H) # Language-independent files. DRIVER_DEFINES = \ - -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \ + -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-lib/\" \ -DDEFAULT_TARGET_VERSION=\"$(version)\" \ -DDEFAULT_TARGET_MACHINE=\"$(target_alias)\" \ - -DTOOLDIR_BASE_PREFIX=\"$(exec_prefix)/\" -gcc.o: gcc.c $(CONFIG_H) system.h intl.h multilib.h \ - Makefile $(lang_specs_files) prefix.h + -DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \ + -DTOOLDIR_BASE_PREFIX=\"$(unlibsubdir)/../\" \ + `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \ + `test "X$${SHLIB_MULTILIB}" = "X" || echo "-DNO_SHARED_LIBGCC_MULTILIB"` + +gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) intl.h multilib.h \ + Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) + (SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(DRIVER_DEFINES) \ - -c `echo $(srcdir)/gcc.c | sed 's,^\./,,'` + -c $(srcdir)/gcc.c $(OUTPUT_OPTION)) -gccspec.o: gccspec.c $(CONFIG_H) system.h -cppspec.o: cppspec.c $(CONFIG_H) system.h +gccspec.o: gccspec.c $(CONFIG_H) $(SYSTEM_H) $(GCC_H) + (SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(DRIVER_DEFINES) \ + -c $(srcdir)/gccspec.c $(OUTPUT_OPTION)) + +cppspec.o: cppspec.c $(CONFIG_H) $(SYSTEM_H) $(GCC_H) tree-check.h: s-check ; @true -s-check : gencheck $(srcdir)/move-if-change - ./gencheck > tmp-check.h - $(srcdir)/move-if-change tmp-check.h tree-check.h - touch s-check +s-check : gencheck$(build_exeext) $(srcdir)/move-if-change + ./gencheck$(build_exeext) > tmp-check.h + $(SHELL) $(srcdir)/move-if-change tmp-check.h tree-check.h + $(STAMP) s-check -gencheck : gencheck.o $(lang_tree_files) $(HOST_LIBDEPS) +gencheck$(build_exeext) : gencheck.o $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ gencheck.o $(HOST_LIBS) -gencheck.o : gencheck.c tree.def $(CONFIG_H) hconfig.h system.h +gencheck.o : gencheck.c gencheck.h tree.def $(HCONFIG_H) $(SYSTEM_H) \ + $(lang_tree_files) $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \ - $(srcdir)/gencheck.c + $(srcdir)/gencheck.c $(OUTPUT_OPTION) + +gencheck.h : s-gencheck ; @true +s-gencheck : Makefile + ltf="$(lang_tree_files)"; for f in $$ltf; do \ + echo "#include \"$$f\""; \ + done | sed 's|$(srcdir)/||' > tmp-gencheck.h + $(SHELL) $(srcdir)/move-if-change tmp-gencheck.h gencheck.h + $(STAMP) s-gencheck + +options.h : s-options ; @true +s-options : Makefile + lof="$(lang_options_files)"; for f in $$lof; do \ + echo "#include \"$$f\""; \ + done | sed 's|$(srcdir)/||' > tmp-options.h + $(SHELL) $(srcdir)/move-if-change tmp-options.h options.h + $(STAMP) s-options + +specs.h : s-specs ; @true +s-specs : Makefile + lsf="$(lang_specs_files)"; for f in $$lsf; do \ + echo "#include \"$$f\""; \ + done | sed 's|$(srcdir)/||' > tmp-specs.h + $(SHELL) $(srcdir)/move-if-change tmp-specs.h specs.h + $(STAMP) s-specs dumpvers: dumpvers.c -version.o: version.c -obstack.o: $(srcdir)/../libiberty/obstack.c $(CONFIG_H) - rm -f obstack.c - $(LN_S) $(srcdir)/../libiberty/obstack.c obstack.c - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) obstack.c +version.o: version.c version.h + +ggc-common.o: ggc-common.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \ + flags.h $(GGC_H) varray.h hash.h $(HASHTAB_H) $(TM_P_H) + +ggc-simple.o: ggc-simple.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + $(GGC_H) varray.h $(TIMEVAR_H) $(TM_P_H) + +ggc-page.o: ggc-page.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + toplev.h $(GGC_H) varray.h $(TIMEVAR_H) $(TM_P_H) + +stringpool.o: stringpool.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \ + flags.h toplev.h + +hashtable.o: hashtable.c hashtable.h $(CONFIG_H) $(SYSTEM_H) $(OBSTACK_H) + +line-map.o: line-map.c line-map.h intl.h $(CONFIG_H) $(SYSTEM_H) + +ggc-none.o: ggc-none.c $(GCONFIG_H) $(SYSTEM_H) $(GGC_H) + $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) -prefix.o: prefix.c $(CONFIG_H) system.h Makefile prefix.h +prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) Makefile prefix.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DPREFIX=\"$(prefix)\" \ - -c `echo $(srcdir)/prefix.c | sed 's,^\./,,'` - -convert.o: convert.c $(CONFIG_H) $(TREE_H) flags.h convert.h toplev.h - -tree.o : tree.c $(CONFIG_H) system.h $(TREE_H) flags.h function.h toplev.h except.h -print-tree.o : print-tree.c $(CONFIG_H) system.h $(TREE_H) -stor-layout.o : stor-layout.c $(CONFIG_H) system.h $(TREE_H) flags.h \ - function.h $(EXPR_H) $(RTL_H) toplev.h except.h -fold-const.o : fold-const.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h \ - $(RTL_H) -toplev.o : toplev.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) \ - flags.h input.h insn-attr.h xcoffout.h defaults.h output.h \ - insn-codes.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h dwarfout.h \ - dwarf2out.h sdbout.h dbxout.h $(EXPR_H) $(BASIC_BLOCK_H) \ - $(lang_options_files) - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \ + -c $(srcdir)/prefix.c $(OUTPUT_OPTION) + +convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h convert.h toplev.h + +langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h \ + tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h langhooks-def.h +tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h function.h toplev.h \ + $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h +tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ + flags.h langhooks.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \ + $(EXPR_H) $(SPLAY_TREE_H) tree-dump.h +tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \ + expr.h flags.h params.h input.h insn-config.h $(INTEGRATE_H) \ + $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h langhooks.h \ + $(C_COMMON_H) tree-inline.h +print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GGC_H) \ + langhooks.h +stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \ + function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H) $(TM_P_H) +fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \ + toplev.h $(HASHTAB_H) $(EXPR_H) $(RTL_H) $(GGC_H) $(TM_P_H) +diagnostic.o : diagnostic.c diagnostic.h real.h diagnostic.def \ + $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) flags.h $(GGC_H) \ + input.h toplev.h intl.h +toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.h \ + flags.h xcoffout.h input.h $(INSN_ATTR_H) output.h diagnostic.h \ + debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h \ + dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \ + graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) \ + ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) halfpic.h \ + langhooks.h insn-flags.h options.h + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DTARGET_NAME=\"$(target_alias)\" \ - -c `echo $(srcdir)/toplev.c | sed 's,^\./,,'` - -rtl.o : rtl.c $(CONFIG_H) system.h $(RTL_H) bitmap.h - -print-rtl.o : print-rtl.c $(CONFIG_H) system.h $(RTL_H) bitmap.h basic-block.h -rtlanal.o : rtlanal.c $(CONFIG_H) system.h $(RTL_H) - -varasm.o : varasm.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h \ - function.h defaults.h $(EXPR_H) hard-reg-set.h $(REGS_H) \ - xcoffout.h output.h c-pragma.h toplev.h except.h dbxout.h sdbout.h -function.o : function.c $(CONFIG_H) system.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 toplev.h except.h hash.h -stmt.o : stmt.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h \ - insn-flags.h insn-config.h insn-codes.h hard-reg-set.h $(EXPR_H) except.h \ - loop.h $(RECOG_H) toplev.h output.h varray.h -except.o : except.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ - function.h insn-flags.h $(EXPR_H) $(REGS_H) hard-reg-set.h \ - insn-config.h $(RECOG_H) output.h except.h toplev.h intl.h -expr.o : expr.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h \ - $(REGS_H) insn-flags.h insn-codes.h $(EXPR_H) insn-config.h $(RECOG_H) \ - output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h except.h -calls.o : calls.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h $(EXPR_H) \ - insn-flags.h $(REGS_H) toplev.h output.h -expmed.o : expmed.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ - insn-flags.h insn-config.h insn-codes.h $(EXPR_H) $(RECOG_H) real.h toplev.h -explow.o : explow.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ - hard-reg-set.h insn-config.h $(EXPR_H) $(RECOG_H) insn-flags.h \ - insn-codes.h toplev.h -optabs.o : optabs.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ - insn-flags.h insn-config.h insn-codes.h $(EXPR_H) $(RECOG_H) reload.h \ - toplev.h -dbxout.o : dbxout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h $(REGS_H) \ - insn-config.h reload.h gstab.h xcoffout.h defaults.h output.h dbxout.h \ - toplev.h -sdbout.o : sdbout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h except.h \ - function.h $(EXPR_H) output.h hard-reg-set.h $(REGS_H) defaults.h real.h \ - insn-config.h $(srcdir)/../include/obstack.h xcoffout.h c-pragma.h \ - sdbout.h toplev.h -dwarfout.o : dwarfout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf.h \ - flags.h insn-config.h reload.h output.h defaults.h toplev.h dwarfout.h -dwarf2out.o : dwarf2out.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf2.h \ - flags.h insn-config.h reload.h output.h defaults.h \ - hard-reg-set.h $(REGS_H) $(EXPR_H) toplev.h dwarf2out.h dyn-string.h -xcoffout.o : xcoffout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) xcoffout.h \ - flags.h toplev.h output.h dbxout.h -emit-rtl.o : emit-rtl.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ - except.h function.h $(REGS_H) insn-config.h $(RECOG_H) real.h \ - $(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h -real.o : real.c $(CONFIG_H) system.h $(TREE_H) toplev.h -getpwd.o : getpwd.c $(CONFIG_H) system.h - -integrate.o : integrate.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \ - integrate.h insn-flags.h insn-config.h $(EXPR_H) real.h $(REGS_H) \ - intl.h function.h output.h $(RECOG_H) except.h toplev.h - -jump.o : jump.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \ - insn-config.h insn-flags.h $(RECOG_H) $(EXPR_H) real.h except.h \ - toplev.h insn-attr.h -stupid.o : stupid.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h \ - $(BASIC_BLOCK_H) insn-config.h reload.h flags.h toplev.h - -cse.o : cse.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \ - real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h output.h \ - $(srcdir)/../include/splay-tree.h -gcse.o : gcse.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h \ - flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ - output.h toplev.h -resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h system.h \ - $(BASIC_BLOCK_H) $(REGS_H) flags.h output.h resource.h toplev.h -lcm.o : lcm.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \ - real.h insn-config.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) -profile.o : profile.c $(CONFIG_H) system.h $(RTL_H) flags.h insn-flags.h \ - gcov-io.h $(TREE_H) output.h $(REGS_H) toplev.h insn-config.h -loop.o : loop.c $(CONFIG_H) system.h $(RTL_H) flags.h loop.h insn-config.h \ - insn-flags.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) real.h \ - toplev.h varray.h -unroll.o : unroll.c $(CONFIG_H) system.h $(RTL_H) insn-config.h \ - integrate.h $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) loop.h toplev.h varray.h -flow.o : flow.c $(CONFIG_H) system.h $(RTL_H) flags.h insn-config.h \ - $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h recog.h \ - insn-flags.h -combine.o : combine.c $(CONFIG_H) system.h $(RTL_H) flags.h \ - insn-config.h insn-flags.h insn-codes.h insn-attr.h $(REGS_H) $(EXPR_H) \ - $(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h toplev.h -regclass.o : regclass.c $(CONFIG_H) system.h $(RTL_H) hard-reg-set.h flags.h \ - $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(RECOG_H) reload.h real.h toplev.h \ - output.h -local-alloc.o : local-alloc.c $(CONFIG_H) system.h $(RTL_H) flags.h \ - $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) output.h \ - insn-attr.h toplev.h -bitmap.o : bitmap.c $(CONFIG_H) system.h $(RTL_H) flags.h $(BASIC_BLOCK_H) \ + -c $(srcdir)/toplev.c $(OUTPUT_OPTION) +main.o : main.c $(CONFIG_H) $(SYSTEM_H) toplev.h + +rtl-error.o: rtl-error.c system.h $(RTL_H) $(INSN_ATTR_H) insn-config.h \ + input.h toplev.h intl.h diagnostic.h $(CONFIG_H) + +rtl.o : rtl.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) real.h $(GGC_H) errors.h + $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) + +print-rtl.o : print-rtl.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \ + hard-reg-set.h $(BASIC_BLOCK_H) + $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) + +rtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) toplev.h $(RTL_H) hard-reg-set.h $(TM_P_H) +errors.o : errors.c $(GCONFIG_H) $(SYSTEM_H) errors.h + $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) + +varasm.o : varasm.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \ + function.h $(EXPR_H) hard-reg-set.h $(REGS_H) $(OBSTACK_H) \ + output.h c-pragma.h toplev.h xcoffout.h debug.h $(GGC_H) $(TM_P_H) \ + $(HASHTAB_H) $(TARGET_H) langhooks.h +function.o : function.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + function.h $(EXPR_H) libfuncs.h $(REGS_H) hard-reg-set.h \ + insn-config.h $(RECOG_H) output.h toplev.h except.h hash.h $(GGC_H) $(TM_P_H) +stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h \ + insn-config.h hard-reg-set.h $(EXPR_H) libfuncs.h except.h \ + $(LOOP_H) $(RECOG_H) toplev.h output.h varray.h $(GGC_H) $(TM_P_H) +except.o : except.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + except.h function.h $(EXPR_H) libfuncs.h integrate.h \ + insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \ + dwarf2asm.h dwarf2out.h toplev.h $(HASHTAB_H) intl.h $(GGC_H) +expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h \ + $(REGS_H) $(EXPR_H) $(OPTABS_H) libfuncs.h insn-attr.h insn-config.h \ + $(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \ + except.h reload.h $(GGC_H) langhooks.h intl.h $(TM_P_H) +builtins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + $(TARGET_H) function.h $(REGS_H) $(EXPR_H) $(OPTABS_H) insn-config.h \ + $(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \ + except.h $(TM_P_H) $(PREDICT_H) libfuncs.h +calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h $(EXPR_H) \ + libfuncs.h $(REGS_H) toplev.h output.h function.h $(TIMEVAR_H) $(TM_P_H) +expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) real.h \ + toplev.h $(TM_P_H) +explow.o : explow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + hard-reg-set.h insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) \ + toplev.h function.h ggc.h $(TM_P_H) +optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + insn-config.h $(EXPR_H) $(OPTABS_H) libfuncs.h $(RECOG_H) reload.h \ + toplev.h $(GGC_H) real.h $(TM_P_H) except.h +dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \ + $(REGS_H) debug.h $(TM_P_H) $(TARGET_H) function.h langhooks.h \ + insn-config.h reload.h gstab.h xcoffout.h output.h dbxout.h toplev.h +debug.o : debug.c $(CONFIG_H) $(SYSTEM_H) +sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \ + function.h $(EXPR_H) output.h hard-reg-set.h $(REGS_H) real.h \ + insn-config.h $(OBSTACK_H) xcoffout.h c-pragma.h ggc.h \ + sdbout.h toplev.h $(TM_P_H) except.h debug.h +dwarfout.o : dwarfout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf.h \ + flags.h insn-config.h reload.h output.h toplev.h $(TM_P_H) \ + debug.h langhooks.h +dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf2.h \ + debug.h flags.h insn-config.h reload.h output.h diagnostic.h \ + hard-reg-set.h $(REGS_H) $(EXPR_H) libfuncs.h toplev.h dwarf2out.h varray.h \ + $(GGC_H) except.h dwarf2asm.h $(TM_P_H) langhooks.h +dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) flags.h $(RTL_H) $(TREE_H) \ + output.h dwarf2asm.h $(TM_P_H) +vmsdbgout.o : vmsdbgout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \ + output.h vmsdbg.h debug.h langhooks.h +xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) xcoffout.h \ + flags.h toplev.h output.h dbxout.h $(GGC_H) +emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + function.h $(REGS_H) insn-config.h $(RECOG_H) real.h $(GGC_H) \ + $(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h \ + $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h +real.o : real.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h $(TM_P_H) +integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + debug.h $(INTEGRATE_H) insn-config.h $(EXPR_H) real.h $(REGS_H) \ + intl.h function.h output.h $(RECOG_H) except.h toplev.h $(LOOP_H) \ + $(PARAMS_H) $(TM_P_H) $(TARGET_H) +jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \ + insn-config.h $(RECOG_H) $(EXPR_H) real.h except.h function.h \ + toplev.h $(INSN_ATTR_H) $(TM_P_H) reload.h $(PREDICT_H) + +simplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) \ + hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \ + output.h function.h $(GGC_H) $(OBSTACK_H) $(TM_P_H) +cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) \ + hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \ + output.h function.h cselib.h $(GGC_H) $(OBSTACK_H) $(TM_P_H) +cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \ + real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h output.h function.h \ + $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) +gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h \ + flags.h real.h insn-config.h ggc.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ + function.h output.h toplev.h $(TM_P_H) $(PARAMS_H) +sibcall.o : sibcall.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) function.h \ + hard-reg-set.h flags.h insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) +resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \ + $(BASIC_BLOCK_H) $(REGS_H) flags.h output.h resource.h function.h toplev.h \ + $(INSN_ATTR_H) except.h $(PARAMS_H) $(TM_P_H) +lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \ + real.h insn-config.h $(INSN_ATTR_H) $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \ + $(TM_P_H) df.h +ssa.o : ssa.c $(CONFIG_H) $(SYSTEM_H) $(REGS_H) varray.h $(EXPR_H) \ + hard-reg-set.h flags.h function.h real.h insn-config.h $(RECOG_H) \ + $(BASIC_BLOCK_H) output.h ssa.h +ssa-dce.o : ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h \ + $(BASIC_BLOCK_H) ssa.h insn-config.h $(RECOG_H) output.h +ssa-ccp.o : ssa-ccp.c $(CONFIG_H) system.h $(RTL_H) hard-reg-set.h \ + $(BASIC_BLOCK_H) ssa.h insn-config.h $(RECOG_H) output.h \ + errors.h $(GGC_H) df.h function.h +df.o : df.c $(CONFIG_H) system.h $(RTL_H) insn-config.h $(RECOG_H) \ + function.h $(REGS_H) $(OBSTACK_H) hard-reg-set.h $(BASIC_BLOCK_H) df.h \ + $(FIBHEAP_H) +conflict.o : conflict.c $(CONFIG_H) $(SYSTEM_H) $(OBSTACK_H) $(HASHTAB_H) \ + $(RTL_H) hard-reg-set.h $(BASIC_BLOCK_H) +profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + insn-config.h output.h $(REGS_H) $(EXPR_H) function.h \ + gcov-io.h toplev.h $(GGC_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TARGET_H) +loop.o : loop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \ + insn-config.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) \ + real.h $(PREDICT_H) $(BASIC_BLOCK_H) function.h \ + toplev.h varray.h except.h cselib.h $(OPTABS_H) $(TM_P_H) +doloop.o : doloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \ + $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) toplev.h +unroll.o : unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h function.h \ + $(INTEGRATE_H) $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) $(LOOP_H) toplev.h \ + hard-reg-set.h varray.h $(BASIC_BLOCK_H) $(TM_P_H) $(PREDICT_H) +flow.o : flow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h insn-config.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \ + function.h except.h $(EXPR_H) ssa.h $(GGC_H) $(TM_P_H) +cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \ + function.h except.h $(GGC_H) $(TM_P_H) +cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \ + function.h except.h $(GGC_H) $(TM_P_H) +cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ + $(BASIC_BLOCK_H) hard-reg-set.h $(GGC_H) +cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \ + function.h except.h $(GGC_H) +cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TIMEVAR_H)\ + $(BASIC_BLOCK_H) hard-reg-set.h output.h flags.h $(RECOG_H) toplev.h \ + $(GGC_H) insn-config.h cselib.h $(TM_P_H) +cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ + $(BASIC_BLOCK_H) hard-reg-set.h +dominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h \ + $(BASIC_BLOCK_H) +combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h function.h \ + insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \ + $(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h toplev.h $(TM_P_H) +regclass.o : regclass.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h flags.h \ + $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(RECOG_H) reload.h real.h \ + toplev.h function.h output.h $(GGC_H) $(TM_P_H) $(EXPR_H) +local-alloc.o : local-alloc.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \ + output.h function.h $(INSN_ATTR_H) toplev.h except.h $(TM_P_H) +bitmap.o : bitmap.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(BASIC_BLOCK_H) \ $(REGS_H) -global.o : global.c $(CONFIG_H) system.h $(RTL_H) flags.h reload.h \ - $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h output.h toplev.h -varray.o : varray.c $(CONFIG_H) system.h varray.h $(RTL_H) $(TREE_H) bitmap.h - -reload.o : reload.c $(CONFIG_H) system.h $(RTL_H) flags.h output.h $(EXPR_H) \ - reload.h $(RECOG_H) hard-reg-set.h insn-config.h insn-codes.h $(REGS_H) \ - real.h toplev.h -reload1.o : reload1.c $(CONFIG_H) system.h $(RTL_H) real.h flags.h $(EXPR_H) \ - reload.h $(REGS_H) hard-reg-set.h insn-config.h insn-flags.h insn-codes.h \ - $(BASIC_BLOCK_H) $(RECOG_H) output.h toplev.h -caller-save.o : caller-save.c $(CONFIG_H) system.h $(RTL_H) flags.h \ - $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) \ - $(RECOG_H) reload.h $(EXPR_H) toplev.h -reorg.o : reorg.c $(CONFIG_H) system.h $(RTL_H) conditions.h hard-reg-set.h \ - $(BASIC_BLOCK_H) $(REGS_H) insn-config.h insn-attr.h insn-flags.h \ - $(RECOG_H) flags.h output.h $(EXPR_H) toplev.h -alias.o : alias.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h \ - $(REGS_H) toplev.h output.h $(EXPR_H) -regmove.o : regmove.c $(CONFIG_H) system.h $(RTL_H) insn-config.h \ - $(RECOG_H) output.h reload.h $(REGS_H) hard-reg-set.h flags.h \ - $(EXPR_H) insn-flags.h $(BASIC_BLOCK_H) toplev.h -$(SCHED_PREFIX)sched.o : $(SCHED_PREFIX)sched.c $(CONFIG_H) system.h $(RTL_H) \ - $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h \ - insn-attr.h toplev.h recog.h -final.o : final.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h intl.h \ - $(REGS_H) $(RECOG_H) conditions.h insn-config.h insn-attr.h except.h real.h \ - output.h hard-reg-set.h insn-flags.h insn-codes.h gstab.h xcoffout.h \ - defaults.h toplev.h reload.h dwarfout.h dwarf2out.h sdbout.h dbxout.h -recog.o : recog.c $(CONFIG_H) system.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 toplev.h -reg-stack.o : reg-stack.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) recog.h \ - $(REGS_H) hard-reg-set.h flags.h insn-config.h insn-flags.h toplev.h -dyn-string.o: dyn-string.c dyn-string.h $(CONFIG_H) system.h - -$(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) \ + $(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) +global.o : global.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h reload.h function.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h output.h toplev.h \ + $(TM_P_H) +varray.o : varray.c $(CONFIG_H) $(SYSTEM_H) varray.h $(RTL_H) $(TREE_H) bitmap.h \ + errors.h +reload.o : reload.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h output.h \ + $(EXPR_H) $(OPTABS_H) reload.h $(RECOG_H) hard-reg-set.h insn-config.h \ + $(REGS_H) function.h real.h toplev.h $(TM_P_H) +reload1.o : reload1.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) real.h flags.h \ + $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) hard-reg-set.h insn-config.h \ + $(BASIC_BLOCK_H) $(RECOG_H) output.h function.h toplev.h cselib.h $(TM_P_H) \ + except.h +caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h \ + $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) function.h \ + $(RECOG_H) reload.h $(EXPR_H) toplev.h $(TM_P_H) +reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) conditions.h hard-reg-set.h \ + $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(INSN_ATTR_H) except.h \ + $(RECOG_H) function.h flags.h output.h $(EXPR_H) toplev.h $(PARAMS_H) $(TM_P_H) +alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \ + $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(EXPR_H) \ + $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h +regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \ + $(RECOG_H) output.h $(REGS_H) hard-reg-set.h flags.h function.h \ + $(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h +haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \ + $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) $(TARGET_H) +sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \ + $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h cselib.h $(PARAMS_H) $(TM_P_H) +sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \ + $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) +sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \ + $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) +sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \ + hard-reg-set.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(REGS_H) $(TM_P_H) +final.o : final.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h intl.h \ + $(REGS_H) $(RECOG_H) conditions.h insn-config.h $(INSN_ATTR_H) function.h \ + real.h output.h hard-reg-set.h except.h debug.h xcoffout.h \ + toplev.h reload.h dwarf2out.h $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) +recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) function.h $(BASIC_BLOCK_H) \ + $(REGS_H) $(RECOG_H) $(EXPR_H) hard-reg-set.h flags.h insn-config.h \ + $(INSN_ATTR_H) real.h toplev.h output.h reload.h $(TM_P_H) +reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) $(RECOG_H) \ + $(REGS_H) hard-reg-set.h flags.h insn-config.h toplev.h reload.h \ + varray.h function.h $(TM_P_H) +predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h \ + $(RECOG_H) function.h except.h $(EXPR_H) $(TM_P_H) $(PREDICT_H) +lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) toplev.h $(RTL_H) $(GGC_H) +bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ + $(BASIC_BLOCK_H) hard-reg-set.h output.h cfglayout.h +cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \ + insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h function.h \ + cfglayout.h +timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) $(TIMEVAR_H) flags.h intl.h +regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \ + $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h $(RECOG_H) function.h \ + resource.h $(OBSTACK_H) flags.h $(TM_P_H) +ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) toplev.h \ + flags.h insn-config.h function.h $(RECOG_H) $(BASIC_BLOCK_H) $(EXPR_H) \ + output.h $(TM_P_H) +dependence.o : dependence.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \ + $(C_COMMON_H) flags.h varray.h $(EXPR_H) +params.o : params.c $(CONFIG_H) $(SYSTEM_H) $(PARAMS_H) toplev.h + +$(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) $(GGC_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \ - insn-flags.h output.h insn-attr.h insn-codes.h system.h toplev.h - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(out_file) + output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) libfuncs.h \ + $(TARGET_DEF_H) function.h sched-int.h $(TM_P_H) $(EXPR_H) $(OPTABS_H) \ + langhooks.h + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(out_file) $(OUTPUT_OPTION) # Build auxiliary files that support ecoff format. mips-tfile: mips-tfile.o version.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tfile.o version.o $(LIBS) -mips-tfile.o : mips-tfile.c $(CONFIG_H) $(RTL_H) system.h machmode.h +mips-tfile.o : mips-tfile.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) version.h mips-tdump: mips-tdump.o version.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tdump.o version.o $(LIBS) -mips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) system.h +mips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) # Build file to support OSF/rose half-pic format. -halfpic.o: halfpic.c $(CONFIG_H) $(RTL_H) $(TREE_H) system.h - -# Normally this target is not used; but it is used if you -# define ALLOCA=alloca.o. In that case, you must get a suitable alloca.c -# from the GNU Emacs distribution. -alloca.o: $(srcdir)/../libiberty/alloca.c - rm -f alloca.c - $(LN_S) $(srcdir)/../libiberty/alloca.c alloca.c - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ALLOCA_FLAGS) \ - -c `echo alloca.c | sed 's,^\./,,'` - $(ALLOCA_FINISH) +halfpic.o: halfpic.c $(CONFIG_H) $(RTL_H) $(TREE_H) $(SYSTEM_H) halfpic.h + # -# Generate header and source files from the machine description, +# Generate header and source files from the machine description, # and compile them. -.PRECIOUS: insn-config.h insn-flags.h insn-codes.h \ +.PRECIOUS: insn-config.h insn-flags.h insn-codes.h insn-constants.h \ insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \ insn-attr.h insn-attrtab.c @@ -1650,115 +1632,134 @@ alloca.o: $(srcdir)/../libiberty/alloca.c # trailing `;'), we call true for each. insn-config.h: s-config ; @true -s-config : $(md_file) genconfig $(srcdir)/move-if-change - ./genconfig $(md_file) > tmp-config.h - $(srcdir)/move-if-change tmp-config.h insn-config.h - touch s-config +s-config : $(md_file) genconfig$(build_exeext) $(srcdir)/move-if-change + ./genconfig$(build_exeext) $(md_file) > tmp-config.h + $(SHELL) $(srcdir)/move-if-change tmp-config.h insn-config.h + $(STAMP) s-config insn-flags.h: s-flags ; @true -s-flags : $(md_file) genflags $(srcdir)/move-if-change - ./genflags $(md_file) > tmp-flags.h - $(srcdir)/move-if-change tmp-flags.h insn-flags.h - touch s-flags +s-flags : $(md_file) genflags$(build_exeext) $(srcdir)/move-if-change + ./genflags$(build_exeext) $(md_file) > tmp-flags.h + $(SHELL) $(srcdir)/move-if-change tmp-flags.h insn-flags.h + $(STAMP) s-flags insn-codes.h: s-codes ; @true -s-codes : $(md_file) gencodes $(srcdir)/move-if-change - ./gencodes $(md_file) > tmp-codes.h - $(srcdir)/move-if-change tmp-codes.h insn-codes.h - touch s-codes +s-codes : $(md_file) gencodes$(build_exeext) $(srcdir)/move-if-change + ./gencodes$(build_exeext) $(md_file) > tmp-codes.h + $(SHELL) $(srcdir)/move-if-change tmp-codes.h insn-codes.h + $(STAMP) s-codes + +insn-constants.h: s-constants ; @true +s-constants : $(md_file) genconstants$(build_exeext) $(srcdir)/move-if-change + ./genconstants$(build_exeext) $(md_file) > tmp-constants.h + $(SHELL) $(srcdir)/move-if-change tmp-constants.h insn-constants.h + $(STAMP) s-constants insn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) $(EXPR_H) real.h output.h \ - insn-config.h insn-flags.h insn-codes.h system.h reload.h recog.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-emit.c + insn-config.h $(OPTABS_H) $(SYSTEM_H) reload.h $(RECOG_H) toplev.h \ + function.h flags.h hard-reg-set.h resource.h $(TM_P_H) + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-emit.c \ + $(OUTPUT_OPTION) insn-emit.c: s-emit ; @true -s-emit : $(md_file) genemit $(srcdir)/move-if-change - ./genemit $(md_file) > tmp-emit.c - $(srcdir)/move-if-change tmp-emit.c insn-emit.c - touch s-emit +s-emit : $(md_file) genemit$(build_exeext) $(srcdir)/move-if-change + ./genemit$(build_exeext) $(md_file) > tmp-emit.c + $(SHELL) $(srcdir)/move-if-change tmp-emit.c insn-emit.c + $(STAMP) s-emit insn-recog.o : insn-recog.c $(CONFIG_H) $(RTL_H) insn-config.h $(RECOG_H) \ - real.h output.h flags.h system.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-recog.c + real.h output.h flags.h $(SYSTEM_H) function.h hard-reg-set.h resource.h \ + $(TM_P_H) toplev.h reload.h + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-recog.c \ + $(OUTPUT_OPTION) insn-recog.c: s-recog ; @true -s-recog : $(md_file) genrecog $(srcdir)/move-if-change - ./genrecog $(md_file) > tmp-recog.c - $(srcdir)/move-if-change tmp-recog.c insn-recog.c - touch s-recog +s-recog : $(md_file) genrecog$(build_exeext) $(srcdir)/move-if-change + ./genrecog$(build_exeext) $(md_file) > tmp-recog.c + $(SHELL) $(srcdir)/move-if-change tmp-recog.c insn-recog.c + $(STAMP) s-recog -insn-opinit.o : insn-opinit.c $(CONFIG_H) $(RTL_H) insn-codes.h insn-flags.h \ - insn-config.h flags.h $(RECOG_H) $(EXPR_H) reload.h system.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-opinit.c +insn-opinit.o : insn-opinit.c $(CONFIG_H) $(RTL_H) \ + insn-config.h flags.h $(RECOG_H) $(EXPR_H) $(OPTABS_H) reload.h $(SYSTEM_H) + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-opinit.c \ + $(OUTPUT_OPTION) insn-opinit.c: s-opinit ; @true -s-opinit : $(md_file) genopinit $(srcdir)/move-if-change - ./genopinit $(md_file) > tmp-opinit.c - $(srcdir)/move-if-change tmp-opinit.c insn-opinit.c - touch s-opinit +s-opinit : $(md_file) genopinit$(build_exeext) $(srcdir)/move-if-change + ./genopinit$(build_exeext) $(md_file) > tmp-opinit.c + $(SHELL) $(srcdir)/move-if-change tmp-opinit.c insn-opinit.c + $(STAMP) s-opinit -insn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) system.h toplev.h \ - insn-config.h recog.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-extract.c +insn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) toplev.h \ + insn-config.h $(RECOG_H) + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-extract.c \ + $(OUTPUT_OPTION) insn-extract.c: s-extract ; @true -s-extract : $(md_file) genextract $(srcdir)/move-if-change - ./genextract $(md_file) > tmp-extract.c - $(srcdir)/move-if-change tmp-extract.c insn-extract.c - touch s-extract +s-extract : $(md_file) genextract$(build_exeext) $(srcdir)/move-if-change + ./genextract$(build_exeext) $(md_file) > tmp-extract.c + $(SHELL) $(srcdir)/move-if-change tmp-extract.c insn-extract.c + $(STAMP) s-extract insn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) $(REGS_H) output.h real.h \ - system.h insn-config.h recog.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-peep.c + $(SYSTEM_H) insn-config.h $(RECOG_H) except.h function.h $(TM_P_H) + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-peep.c \ + $(OUTPUT_OPTION) insn-peep.c: s-peep ; @true -s-peep : $(md_file) genpeep $(srcdir)/move-if-change - ./genpeep $(md_file) > tmp-peep.c - $(srcdir)/move-if-change tmp-peep.c insn-peep.c - touch s-peep +s-peep : $(md_file) genpeep$(build_exeext) $(srcdir)/move-if-change + ./genpeep$(build_exeext) $(md_file) > tmp-peep.c + $(SHELL) $(srcdir)/move-if-change tmp-peep.c insn-peep.c + $(STAMP) s-peep insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(RTL_H) $(REGS_H) real.h \ - output.h insn-attr.h insn-config.h system.h toplev.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-attrtab.c + output.h $(INSN_ATTR_H) insn-config.h $(SYSTEM_H) toplev.h $(RECOG_H) \ + $(TM_P_H) flags.h + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-attrtab.c \ + $(OUTPUT_OPTION) insn-attr.h: s-attr ; @true -s-attr : $(md_file) genattr $(srcdir)/move-if-change - ./genattr $(md_file) > tmp-attr.h - $(srcdir)/move-if-change tmp-attr.h insn-attr.h - touch s-attr +s-attr : $(md_file) genattr$(build_exeext) $(srcdir)/move-if-change + ./genattr$(build_exeext) $(md_file) > tmp-attr.h + $(SHELL) $(srcdir)/move-if-change tmp-attr.h insn-attr.h + $(STAMP) s-attr insn-attrtab.c: s-attrtab ; @true -s-attrtab : $(md_file) genattrtab $(srcdir)/move-if-change - if cmp -s $(PREMADE_ATTRTAB_MD) $(md_file); \ - then \ - echo Using $(PREMADE_ATTRTAB); \ - cp $(PREMADE_ATTRTAB) tmp-attrtab.c; \ - else \ - ./genattrtab $(md_file) > tmp-attrtab.c; \ - fi - $(srcdir)/move-if-change tmp-attrtab.c insn-attrtab.c - touch s-attrtab - -insn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) $(REGS_H) real.h conditions.h \ - hard-reg-set.h insn-config.h insn-flags.h insn-attr.h output.h $(RECOG_H) \ - insn-codes.h system.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-output.c +s-attrtab : $(md_file) genattrtab$(build_exeext) $(srcdir)/move-if-change + ./genattrtab$(build_exeext) $(md_file) > tmp-attrtab.c + $(SHELL) $(srcdir)/move-if-change tmp-attrtab.c insn-attrtab.c + $(STAMP) s-attrtab + +insn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) $(GGC_H) $(REGS_H) real.h \ + conditions.h hard-reg-set.h insn-config.h $(INSN_ATTR_H) $(EXPR_H) \ + output.h $(RECOG_H) function.h $(SYSTEM_H) toplev.h flags.h \ + insn-codes.h $(TM_P_H) + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-output.c \ + $(OUTPUT_OPTION) insn-output.c: s-output ; @true -s-output : $(md_file) genoutput $(srcdir)/move-if-change - ./genoutput $(md_file) > tmp-output.c - $(srcdir)/move-if-change tmp-output.c insn-output.c - touch s-output +s-output : $(md_file) genoutput$(build_exeext) $(srcdir)/move-if-change + ./genoutput$(build_exeext) $(md_file) > tmp-output.c + $(SHELL) $(srcdir)/move-if-change tmp-output.c insn-output.c + $(STAMP) s-output -genrtl.o : genrtl.c $(CONFIG_H) $(RTL_H) system.h +genrtl.o : genrtl.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) $(GGC_H) genrtl.c genrtl.h : s-genrtl @true # force gnu make to recheck modification times. -s-genrtl: gengenrtl $(srcdir)/move-if-change $(RTL_BASE_H) - ./gengenrtl tmp-genrtl.h tmp-genrtl.c - $(srcdir)/move-if-change tmp-genrtl.h genrtl.h - $(srcdir)/move-if-change tmp-genrtl.c genrtl.c - touch s-genrtl +s-genrtl: gengenrtl$(build_exeext) $(srcdir)/move-if-change $(RTL_BASE_H) + ./gengenrtl$(build_exeext) -h > tmp-genrtl.h + $(SHELL) $(srcdir)/move-if-change tmp-genrtl.h genrtl.h + ./gengenrtl$(build_exeext) > tmp-genrtl.c + $(SHELL) $(srcdir)/move-if-change tmp-genrtl.c genrtl.c + $(STAMP) s-genrtl + +tm-preds.h: s-preds; @true + +s-preds: genpreds$(build_exeext) $(srcdir)/move-if-change + ./genpreds$(build_exeext) > tmp-preds.h + $(SHELL) $(srcdir)/move-if-change tmp-preds.h tm-preds.h + $(STAMP) s-preds # # Compile the programs that generate insn-* from the machine description. @@ -1767,258 +1768,251 @@ s-genrtl: gengenrtl $(srcdir)/move-if-change $(RTL_BASE_H) # even if GCC is being compiled to run on some other machine. # $(CONFIG_H) is omitted from the deps of the gen*.o -# because these programs don't really depend on anything +# because these programs don't really depend on anything # about the target machine. They do depend on config.h itself, # since that describes the host machine. -# Pass the md file through cpp if the target requests it. -$(MD_FILE): $(MD_DEPS) - rm -f $@ - $(MD_CPP) $(MD_CPPFLAGS) $(md_file) | sed 's/^# /; /g' > tmp-$@ - mv tmp-$@ $@ +read-rtl.o: read-rtl.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \ + $(OBSTACK_H) $(HASHTAB_H) + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/read-rtl.c $(OUTPUT_OPTION) + +gensupport.o: gensupport.c $(RTL_H) $(OBSTACK_H) $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gensupport.c $(OUTPUT_OPTION) -genconfig : genconfig.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genconfig$(build_exeext) : genconfig.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genconfig.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genconfig.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genconfig.o : genconfig.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconfig.c +genconfig.o : genconfig.c $(RTL_H) $(HCONFIG_H) \ + $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconfig.c $(OUTPUT_OPTION) -genflags : genflags.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genflags$(build_exeext) : genflags.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genflags.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genflags.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genflags.o : genflags.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genflags.c +genflags.o : genflags.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \ + $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genflags.c $(OUTPUT_OPTION) -gencodes : gencodes.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +gencodes$(build_exeext) : gencodes.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - gencodes.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + gencodes.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -gencodes.o : gencodes.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gencodes.c +gencodes.o : gencodes.c $(RTL_H) $(HCONFIG_H) \ + $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gencodes.c $(OUTPUT_OPTION) -genemit : genemit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genconstants$(build_exeext) : genconstants.o $(HOST_RTL) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genemit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genconstants.o $(HOST_RTL) $(HOST_ERRORS) $(HOST_LIBS) -genemit.o : genemit.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genemit.c +genconstants.o : genconstants.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconstants.c $(OUTPUT_OPTION) -genopinit : genopinit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genemit$(build_exeext) : genemit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genopinit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genemit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genopinit.o : genopinit.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genopinit.c +genemit.o : genemit.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genemit.c $(OUTPUT_OPTION) -genrecog : genrecog.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genopinit$(build_exeext) : genopinit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genrecog.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genopinit.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genrecog.o : genrecog.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genrecog.c +genopinit.o : genopinit.c $(RTL_H) $(HCONFIG_H) \ + $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genopinit.c $(OUTPUT_OPTION) -genextract : genextract.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genrecog$(build_exeext) : genrecog.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genextract.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genrecog.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genextract.o : genextract.c $(RTL_H) $(build_xm_file) system.h insn-config.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genextract.c +genrecog.o : genrecog.c $(RTL_H) $(HCONFIG_H) \ + $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genrecog.c $(OUTPUT_OPTION) -genpeep : genpeep.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genextract$(build_exeext) : genextract.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genpeep.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genextract.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genpeep.o : genpeep.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpeep.c +genextract.o : genextract.c $(RTL_H) $(HCONFIG_H) \ + $(SYSTEM_H) insn-config.h errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genextract.c $(OUTPUT_OPTION) -genattr : genattr.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genpeep$(build_exeext) : genpeep.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genattr.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genpeep.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genattr.o : genattr.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattr.c +genpeep.o : genpeep.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpeep.c $(OUTPUT_OPTION) -genattrtab : genattrtab.o $(HOST_RTL) $(HOST_PRINT) $(HOST_RTLANAL) $(HOST_LIBDEPS) +genattr$(build_exeext) : genattr.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genattrtab.o $(HOST_RTL) $(HOST_PRINT) $(HOST_RTLANAL) $(HOST_LIBS) + genattr.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genattrtab.o : genattrtab.c $(RTL_H) $(build_xm_file) system.h insn-config.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattrtab.c +genattr.o : genattr.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattr.c $(OUTPUT_OPTION) -genoutput : genoutput.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBDEPS) +genattrtab$(build_exeext) : genattrtab.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ - genoutput.o $(HOST_RTL) $(HOST_PRINT) $(HOST_LIBS) + genattrtab.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) -genoutput.o : genoutput.c $(RTL_H) $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genoutput.c +genattrtab.o : genattrtab.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \ + $(SYSTEM_H) errors.h $(GGC_H) gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattrtab.c $(OUTPUT_OPTION) -gengenrtl : gengenrtl.o $(HOST_LIBDEPS) +genoutput$(build_exeext) : genoutput.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS) + $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ + genoutput.o $(HOST_RTL) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBS) + +genoutput.o : genoutput.c $(RTL_H) $(HCONFIG_H) \ + $(SYSTEM_H) errors.h gensupport.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genoutput.c $(OUTPUT_OPTION) + +gengenrtl$(build_exeext) : gengenrtl.o $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ gengenrtl.o $(HOST_LIBS) -gengenrtl.o : gengenrtl.c $(RTL_BASE_H) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gengenrtl.c +gengenrtl.o : gengenrtl.c $(RTL_BASE_H) $(HCONFIG_H) $(SYSTEM_H) real.h + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gengenrtl.c $(OUTPUT_OPTION) + +genpreds$(build_exeext) : genpreds.o $(HOST_LIBDEPS) + $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ + genpreds.o $(HOST_LIBS) + +genpreds.o : genpreds.c $(RTL_BASE_H) $(HCONFIG_H) $(SYSTEM_H) + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpreds.c $(OUTPUT_OPTION) # # Compile the libraries to be used by gen*. # If we are not cross-building, gen* use the same .o's that cc1 will use, -# and HOST_PREFIX_1 is `foobar', just to ensure these rules don't conflict -# with the rules for rtl.o, alloca.o, etc. -$(HOST_PREFIX_1)rtl.o: $(srcdir)/rtl.c $(CONFIG_H) system.h $(RTL_H) bitmap.h +# and HOST_PREFIX_1 is `loser-', just to ensure these rules don't conflict +# with the rules for rtl.o, etc. +$(HOST_PREFIX_1)rtl.o: $(srcdir)/rtl.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \ + real.h $(GGC_H) errors.h rm -f $(HOST_PREFIX)rtl.c sed -e 's/config[.]h/hconfig.h/' $(srcdir)/rtl.c > $(HOST_PREFIX)rtl.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtl.c + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtl.c $(OUTPUT_OPTION) -$(HOST_PREFIX_1)print-rtl.o: $(srcdir)/print-rtl.c $(CONFIG_H) $(RTL_H) \ - bitmap.h basic-block.h +$(HOST_PREFIX_1)print-rtl.o: $(srcdir)/print-rtl.c $(HCONFIG_H) \ + $(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H) rm -f $(HOST_PREFIX)print-rtl.c sed -e 's/config[.]h/hconfig.h/' $(srcdir)/print-rtl.c > $(HOST_PREFIX)print-rtl.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)print-rtl.c + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)print-rtl.c $(OUTPUT_OPTION) -$(HOST_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(CONFIG_H) system.h $(RTL_H) \ +$(HOST_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \ flags.h $(BASIC_BLOCK_H) $(REGS_H) rm -f $(HOST_PREFIX)bitmap.c sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(HOST_PREFIX)bitmap.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)bitmap.c - -$(HOST_PREFIX_1)rtlanal.o: $(srcdir)/rtlanal.c $(CONFIG_H) $(RTL_H) - rm -f $(HOST_PREFIX)rtlanal.c - sed -e 's/config[.]h/hconfig.h/' $(srcdir)/rtlanal.c > $(HOST_PREFIX)rtlanal.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtlanal.c - -$(HOST_PREFIX_1)alloca.o: $(srcdir)/../libiberty/alloca.c - rm -f $(HOST_PREFIX)alloca.c - $(LN_S) $(srcdir)/../libiberty/alloca.c $(HOST_PREFIX)alloca.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)alloca.c - -$(HOST_PREFIX_1)obstack.o: $(srcdir)/../libiberty/obstack.c - rm -f $(HOST_PREFIX)obstack.c - sed -e 's/config[.]h/hconfig.h/' $(srcdir)/../libiberty/obstack.c > $(HOST_PREFIX)obstack.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)obstack.c - -$(HOST_PREFIX_1)vfprintf.o: $(srcdir)/../libiberty/vfprintf.c - rm -f $(HOST_PREFIX)vfprintf.c - sed -e 's/config[.]h/hconfig.h/' $(srcdir)/../libiberty/vfprintf.c > $(HOST_PREFIX)vfprintf.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)vfprintf.c - -$(HOST_PREFIX_1)doprint.o: doprint.c - rm -f $(HOST_PREFIX)doprint.c - sed -e 's/config[.]h/hconfig.h/' $(srcdir)/doprint.c > $(HOST_PREFIX)doprint.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)doprint.c - -$(HOST_PREFIX_1)malloc.o: malloc.c - rm -f $(HOST_PREFIX)malloc.c - sed -e 's/config[.]h/hconfig.h/' $(srcdir)/malloc.c > $(HOST_PREFIX)malloc.c - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)malloc.c + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)bitmap.c $(OUTPUT_OPTION) -# This satisfies the dependency that we get if you cross-compile a compiler -# that does not need to compile alloca, malloc or whatever. -$(HOST_PREFIX_1): - touch $(HOST_PREFIX_1) +$(HOST_PREFIX_1)errors.o: errors.c $(HCONFIG_H) $(SYSTEM_H) errors.h + rm -f $(HOST_PREFIX)errors.c + sed -e 's/config[.]h/hconfig.h/' $(srcdir)/errors.c > $(HOST_PREFIX)errors.c + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)errors.c $(OUTPUT_OPTION) +$(HOST_PREFIX_1)ggc-none.o: ggc-none.c $(HCONFIG_H) $(SYSTEM_H) $(GCC_H) + rm -f $(HOST_PREFIX)ggc-none.c + sed -e 's/config[.]h/hconfig.h/' $(srcdir)/ggc-none.c > $(HOST_PREFIX)ggc-none.c + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)ggc-none.c $(OUTPUT_OPTION) # # Remake internationalization support. - -intl.o: intl.c intl.h gansidecl.h Makefile +intl.o: intl.c $(CONFIG_H) system.h intl.h Makefile $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DLOCALEDIR=\"$(localedir)\" \ - -c `echo $(srcdir)/intl.c | sed 's,^\./,,'` - -# This is needed to when doing a partial build after a `make clean'. -# libintl.a does not depend on intl.all, -# as that would force a lot of recompiling. -$(top_builddir)/intl/libintl.a: - @echo "$(MAKE) intl.all" - @$(MAKE) $(FLAGS_TO_PASS) intl.all + -c $(srcdir)/intl.c $(OUTPUT_OPTION) -# Make sure all the headers are there for xgettext to scan. -$(INTL_TARGETS): $(srcdir)/c-gperf.h \ - $(srcdir)/c-parse.c $(srcdir)/c-parse.h $(srcdir)/cexp.c +$(top_builddir)/intl/libintl.a: intl.all -intl.all intl.install intl.uninstall intl.distdir \ +intl.all intl.install intl.uninstall \ intl.mostlyclean intl.clean intl.distclean intl.maintainer-clean: @for d in $(INTL_SUBDIRS); do \ target=`expr $@ : 'intl.\(.*\)'` && \ echo "(cd $$d && $(MAKE) $$target)" && \ (cd $$d && AWK='$(AWK)' $(MAKE) $(SUBDIR_FLAGS_TO_PASS) $$target); \ + if [ $$? -eq 0 ] ; then true ; else exit 1 ; fi ; \ done -# intl.distdir doesn't copy the intl makefiles (since they aren't distributed), -# but we need them for the `make extraclean' in distdir-finish. -intl.distdir-fixup: - for d in $(INTL_SUBDIRS); do \ - ln $$d/Makefile tmp/$$d || cp $$d/Makefile tmp/$$d || exit; \ - done +# intl.all and intl.install need config.h to exist, and the files it includes. +# (FIXME: intl/*.c shouldn't need to see insn-foo.h!) +intl.all intl.install: config.h insn-flags.h insn-constants.h + +# Make-lang.in should add dependencies of po-generated on any generated +# files which need to be scanned by gettext (usually Yacc-generated parsers). +po-generated: c-parse.c tradcif.c + # # Remake cpp and protoize. -# Making the preprocessor -cpp0$(exeext): $(CCCP)$(exeext) - -rm -f cpp0$(exeext) - $(LN) $(CCCP)$(exeext) cpp0$(exeext) -CCCP_OBJS = cccp.o cexp.o intl.o prefix.o version.o @extra_cpp_objs@ mbchar.o -cccp$(exeext): $(CCCP_OBJS) $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(CCCP_OBJS) $(LIBS) -cexp.o: $(srcdir)/cexp.c $(CONFIG_H) system.h - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c $(srcdir)/cexp.c -$(srcdir)/cexp.c: $(srcdir)/cexp.y - cd $(srcdir); $(BISON) -o cexp.c cexp.y - -# We use $(libsubdir)/$(unlibsubdir) to match the -# -iprefix argument which gcc will pass if GCC_EXEC_PREFIX is used. -cccp.o: cccp.c $(CONFIG_H) intl.h pcp.h version.c config.status system.h \ - mbchar.h prefix.h Makefile.in - $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ - -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \ - -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -c `echo $(srcdir)/cccp.c | sed 's,^\./,,'` - -LIBCPP_OBJS = cpplib.o cpphash.o cppalloc.o cpperror.o cppexp.o cppfiles.o \ - cppinit.o cppulp.o prefix.o version.o mbchar.o @extra_cpp_objs@ - -# All the other archives built/used by this makefile are for targets. This -# one is strictly for the host. -# +PREPROCESSOR_DEFINES = \ + -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \ + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_alias)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ + -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ + -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" + +LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o \ + cpphash.o cpperror.o cppinit.o cppdefault.o \ + hashtable.o line-map.o mkdeps.o prefix.o version.o mbchar.o + +LIBCPP_DEPS = $(CPPLIB_H) cpphash.h line-map.h hashtable.h intl.h \ + $(OBSTACK_H) $(SYSTEM_H) + +# Most of the other archives built/used by this makefile are for +# targets. This one is strictly for the host. libcpp.a: $(LIBCPP_OBJS) + -rm -rf libcpp.a $(AR) $(AR_FLAGS) libcpp.a $(LIBCPP_OBJS) - if $(RANLIB_TEST) ; then $(RANLIB) libcpp.a ; else true ; fi + -$(RANLIB) libcpp.a -cppmain$(exeext): cppmain.o intl.o libcpp.a $(LIBDEPS) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cppmain$(exeext) cppmain.o \ +cpp0$(exeext): cppmain.o intl.o libcpp.a $(LIBDEPS) + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cpp0$(exeext) cppmain.o \ intl.o libcpp.a $(LIBS) -cppmain.o: cppmain.c $(CONFIG_H) cpplib.h intl.h system.h +cppmain.o: cppmain.c $(CONFIG_H) $(CPPLIB_H) intl.h $(SYSTEM_H) -cppulp.o: cppulp.c $(CONFIG_H) system.h output.h -cpplib.o: cpplib.c $(CONFIG_H) cpplib.h intl.h system.h cpphash.h -cpphash.o: cpphash.c $(CONFIG_H) cpplib.h intl.h system.h cpphash.h -cppalloc.o: cppalloc.c $(CONFIG_H) cpplib.h intl.h system.h -cpperror.o: cpperror.c $(CONFIG_H) cpplib.h intl.h system.h -cppexp.o: cppexp.c $(CONFIG_H) cpplib.h intl.h system.h -cppfiles.o: cppfiles.c $(CONFIG_H) cpplib.h intl.h system.h +cpperror.o: cpperror.c $(CONFIG_H) $(LIBCPP_DEPS) +cppexp.o: cppexp.c $(CONFIG_H) $(LIBCPP_DEPS) +cpplex.o: cpplex.c $(CONFIG_H) $(LIBCPP_DEPS) mbchar.h +cppmacro.o: cppmacro.c $(CONFIG_H) $(LIBCPP_DEPS) +cpplib.o: cpplib.c $(CONFIG_H) $(LIBCPP_DEPS) +cpphash.o: cpphash.c $(CONFIG_H) $(LIBCPP_DEPS) +cppfiles.o: cppfiles.c $(CONFIG_H) $(LIBCPP_DEPS) $(SPLAY_TREE_H) mkdeps.h +cppinit.o: cppinit.c $(CONFIG_H) $(LIBCPP_DEPS) cppdefault.h \ + mkdeps.h prefix.h version.h except.h -cppinit.o: cppinit.c $(CONFIG_H) cpplib.h intl.h system.h \ - cpphash.h prefix.h output.h Makefile +cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) cppdefault.h Makefile $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ - -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \ - -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -c `echo $(srcdir)/cppinit.c | sed 's,^\./,,'` + $(PREPROCESSOR_DEFINES) \ + -c $(srcdir)/cppdefault.c $(OUTPUT_OPTION) + +mkdeps.o: mkdeps.c $(CONFIG_H) $(SYSTEM_H) mkdeps.h + +# The traditional mode preprocessor, a separate program for ease of +# maintenance. Some code is shared with the ISO-C cpp. +tradcpp0$(exeext): tradcpp.o tradcif.o cppdefault.o version.o intl.o \ + mkdeps.o $(LIBDEPS) + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o tradcpp0$(exeext) \ + tradcpp.o tradcif.o mkdeps.o cppdefault.o version.o intl.o $(LIBS) + +tradcpp.o: tradcpp.c $(CONFIG_H) $(SYSTEM_H) version.h cppdefault.h tradcpp.h +tradcif.o: $(srcdir)/tradcif.c $(CONFIG_H) $(SYSTEM_H) tradcpp.h + +$(srcdir)/tradcif.c: $(srcdir)/tradcif.y + (cd $(srcdir) && $(BISON) $(BISONFLAGS) -o tr$$$$.c tradcif.y && \ + mv -f tr$$$$.c tradcif.c) # Note for the stamp targets, we run the program `true' instead of # having an empty command (nothing following the semicolon). proto: config.status protoize$(exeext) unprotoize$(exeext) SYSCALLS.c.X -PROTO_OBJS = getpwd.o intl.o version.o +PROTO_OBJS = intl.o version.o protoize$(exeext): protoize.o $(PROTO_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ protoize.o $(PROTO_OBJS) $(LIBS) @@ -2026,33 +2020,28 @@ protoize$(exeext): protoize.o $(PROTO_OBJS) $(LIBDEPS) unprotoize$(exeext): unprotoize.o $(PROTO_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ unprotoize.o $(PROTO_OBJS) $(LIBS) -protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) system.h \ - Makefile +protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) $(SYSTEM_H) \ + Makefile version.h + (SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ - -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \ - -DSTD_PROTO_DIR=\"$(libsubdir)\" \ - $(srcdir)/protoize.c + $(DRIVER_DEFINES) $(PREPROCESSOR_DEFINES) \ + $(srcdir)/protoize.c $(OUTPUT_OPTION)) unprotoize.o: unprotoize.c protoize.c $(srcdir)/../include/getopt.h \ - $(CONFIG_H) system.h Makefile + $(CONFIG_H) $(SYSTEM_H) Makefile version.h + (SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ - -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \ - -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ - -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \ - -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ - -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \ - -DSTD_PROTO_DIR=\"$(libsubdir)\" \ - $(srcdir)/unprotoize.c + $(DRIVER_DEFINES) $(PREPROCESSOR_DEFINES) \ + $(srcdir)/unprotoize.c $(OUTPUT_OPTION)) # This info describes the target machine, so compile with GCC just built. SYSCALLS.c.X: $(srcdir)/sys-types.h $(srcdir)/sys-protos.h $(GCC_PASSES) \ stmp-int-hdrs -rm -f SYSCALLS.c tmp-SYSCALLS.s - cat $(srcdir)/sys-types.h $(srcdir)/sys-protos.h > SYSCALLS.c + sed -e s/TARGET_GETGROUPS_T/$(TARGET_GETGROUPS_T)/ \ + $(srcdir)/sys-types.h $(srcdir)/sys-protos.h > SYSCALLS.c $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -aux-info $@ -S -o tmp-SYSCALLS.s SYSCALLS.c -rm -f SYSCALLS.c tmp-SYSCALLS.s @@ -2063,31 +2052,35 @@ test-protoize-simple: ./protoize ./unprotoize $(GCC_PASSES) cp $(srcdir)/protoize.c tmp-proto.c chmod u+w tmp-proto.c ./protoize -N -B ./ -x getopt.h -c "-B./ -Wall -Wwrite-strings \ - $(CFLAGS) $(INCLUDES) \ + $(GCC_CFLAGS) $(INCLUDES) \ -DGCC_INCLUDE_DIR=0 \ -DGPLUSPLUS_INCLUDE_DIR=0 \ -DCROSS_INCLUDE_DIR=0 \ -DTOOL_INCLUDE_DIR=0 \ - -DSTD_PROTO_DIR=0" tmp-proto.c + -DSTANDARD_EXEC_PREFIX=0 \ + -DDEFAULT_TARGET_MACHINE=0 \ + -DDEFAULT_TARGET_VERSION=0" tmp-proto.c @echo '**********' Expect 400 lines of differences. -diff $(srcdir)/protoize.c tmp-proto.c > tmp-proto.diff -wc -l tmp-proto.diff ./unprotoize -N -x getopt.h -c "-B./ -Wall -Wwrite-strings \ - $(CFLAGS) $(INCLUDES) \ + $(GCC_CFLAGS) $(INCLUDES) \ -DGCC_INCLUDE_DIR=0 \ -DGPLUSPLUS_INCLUDE_DIR=0 \ -DCROSS_INCLUDE_DIR=0 \ -DTOOL_INCLUDE_DIR=0 \ - -DSTD_PROTO_DIR=0" tmp-proto.c + -DSTANDARD_EXEC_PREFIX=0 \ + -DDEFAULT_TARGET_MACHINE=0 \ + -DDEFAULT_TARGET_VERSION=0" tmp-proto.c @echo Expect zero differences. diff $(srcdir)/protoize.c tmp-proto.c | cat -rm -f tmp-proto.[cs] tmp-proto$(objext) -gcov.o: gcov.c gcov-io.h intl.h system.h +gcov.o: gcov.c gcov-io.h intl.h $(SYSTEM_H) $(CONFIG_H) # Only one of 'gcov' or 'gcov.exe' is actually built, depending # upon whether $(exeext) is empty or not. -GCOV_OBJS = gcov.o intl.o +GCOV_OBJS = gcov.o intl.o version.o gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) $(GCOV_OBJS) $(LIBS) -o $@ # @@ -2097,16 +2090,17 @@ gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS) # Build the include directory including float.h (which no longer depends upon # enquire). -stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h +stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h # Copy in the headers provided with gcc. # The sed command gets just the last file name component; # this is necessary because VPATH could add a dirname. # Using basename would be simpler, but some systems don't have it. # The touch command is here to workaround an AIX/Linux NFS bug. + -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi for file in .. $(USER_H); do \ if [ X$$file != X.. ]; then \ realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ - touch include/$$realfile; \ + $(STAMP) include/$$realfile; \ rm -f include/$$realfile; \ cp $$file include; \ chmod a+r include/$$realfile; \ @@ -2124,98 +2118,90 @@ stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h rm -f include/README cp $(srcdir)/README-fixinc include/README chmod a+r include/README - touch $@ + $(STAMP) $@ -# Now that float.h no longer depends upon enquire, this is actually a no-op. -stmp-headers: - touch $@ +# fixinc.sh depends on this, not on specs directly. +# The idea is to make sure specs gets built, but not rerun fixinc.sh +# after each stage just because specs' mtime has changed. +specs.ready: specs + -if [ -f specs.ready ] ; then \ + true; \ + else \ + $(STAMP) specs.ready; \ + fi FIXINCSRCDIR=$(srcdir)/fixinc fixinc.sh: $(FIXINCSRCDIR)/mkfixinc.sh $(FIXINCSRCDIR)/fixincl.c \ $(FIXINCSRCDIR)/procopen.c $(FIXINCSRCDIR)/gnu-regex.c \ $(FIXINCSRCDIR)/server.c $(FIXINCSRCDIR)/gnu-regex.h \ - $(FIXINCSRCDIR)/server.h $(FIXINCSRCDIR)/inclhack.def - MAKE="$(MAKE)"; srcdir=`cd $(srcdir)/fixinc; pwd` ; \ - export MAKE srcdir ; \ - cd ./fixinc; $(SHELL) $${srcdir}/mkfixinc.sh $(target) - -##stmp-fixinc: $(FIXINCLUDES) gsyslimits.h -## rm -rf include -## mkdir include -## if [ x$(FIXINCLUDES) != xMakefile.in ]; \ -## then \ -## for dir in $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS); do \ -## if [ -d $$dir ]; \ -## then \ -## $(SHELL) $(srcdir)/$(FIXINCLUDES) include $$dir; \ -## else true; fi; \ -## done; \ -## if [ x$(INSTALL_ASSERT_H) != x ] ; \ -## then \ -## rm -f include/assert.h; \ -## cp $(srcdir)/assert.h include/assert.h; \ -## chmod a+r include/assert.h; \ -## fi \ -## else true; \ -## fi + $(FIXINCSRCDIR)/server.h $(FIXINCSRCDIR)/inclhack.def specs.ready + (MAKE="$(MAKE)"; srcdir=`cd $(srcdir)/fixinc && pwd` ; \ + CC="$(HOST_CC)"; CFLAGS="$(HOST_CFLAGS)"; LDFLAGS="$(HOST_LDFLAGS)"; \ + WARN_CFLAGS="$(WARN_CFLAGS)"; \ + export MAKE srcdir CC CFLAGS LDFLAGS WARN_CFLAGS; cd ./fixinc && \ + $(SHELL) $${srcdir}/mkfixinc.sh $(build_canonical) $(target)) # Build fixed copies of system files. stmp-fixinc: fixinc.sh gsyslimits.h rm -rf include; mkdir include - TARGET_MACHINE=$(target); srcdir=`cd $(srcdir); pwd`; \ - INSTALL_ASSERT_H=$(INSTALL_ASSERT_H); SHELL=$(SHELL) ;\ - export TARGET_MACHINE srcdir INSTALL_ASSERT_H SHELL ; \ - $(SHELL) ./fixinc.sh `pwd`/include $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) - rm -f include/syslimits.h + -chmod a+rx include + (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); pwd`; \ + SHELL='$(SHELL)' ;\ + export TARGET_MACHINE srcdir SHELL ; \ + $(SHELL) ./fixinc.sh `pwd`/include $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS); \ + rm -f include/syslimits.h; \ if [ -f include/limits.h ]; then \ mv include/limits.h include/syslimits.h; \ else \ cp $(srcdir)/gsyslimits.h include/syslimits.h; \ - fi - chmod a+r include/syslimits.h -# If $(SYSTEM_HEADER_DIR) is $(tooldir)/sys-include, and + fi; \ + chmod a+r include/syslimits.h) +# If $(SYSTEM_HEADER_DIR) is $(build_tooldir)/sys-include, and # that directory exists, then make sure that $(libsubdir) exists. -# This is because cpp is compiled to find $(tooldir)/include via +# This is because cpp is compiled to find $(gcc_tooldir)/include via # $(libsubdir)/$(unlibsubdir), which will only work if $(libsubdir) # exists. -# We deliberately use tooldir instead of gcc_tooldir here. gcc_tooldir -# won't work because libsubdir doesn't exist yet. - if [ "$(SYSTEM_HEADER_DIR)" = "$(tooldir)/sys-include" ] \ - && [ -d $(tooldir)/sys-include ]; then \ +# ??? Better would be to use -isystem $(build_tooldir)/sys-include, +# but fixincludes does not take such arguments. + if [ "$(SYSTEM_HEADER_DIR)" = "$(build_tooldir)/sys-include" ] \ + && [ -d $(build_tooldir)/sys-include ]; then \ 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/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; fi; \ if [ -d $(libdir)/gcc-lib/$(target_alias)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias)/$(version) ; fi; \ else true; fi - - touch stmp-fixinc + $(STAMP) stmp-fixinc # Files related to the fixproto script. +# gen-protos and fix-header are compiled with HOST_CC, but they are only +# used in native and host-x-target builds, so it's safe to link them with +# libiberty.a. deduced.h: $(GCC_PASSES) $(srcdir)/scan-types.sh stmp-int-hdrs if [ -d $(SYSTEM_HEADER_DIR) ]; \ then \ - CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -Iinclude -I${SYSTEM_HEADER_DIR}"; \ + CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -isystem include -isystem ${SYSTEM_HEADER_DIR}"; \ export CC; \ $(SHELL) $(srcdir)/scan-types.sh "$(srcdir)" >tmp-deduced.h; \ mv tmp-deduced.h deduced.h; \ else \ - touch deduced.h; \ + $(STAMP) deduced.h; \ fi -GEN_PROTOS_OBJS = gen-protos.o scan.o libcpp.a -gen-protos: $(GEN_PROTOS_OBJS) $(HOST_LIBDEPS) - ${HOST_CC} $(HOST_CFLAGS) $(HOST_LDFLAGS) -o gen-protos \ +GEN_PROTOS_OBJS = gen-protos.o scan.o +gen-protos$(build_exeext): $(GEN_PROTOS_OBJS) + ${HOST_CC} $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \ $(GEN_PROTOS_OBJS) $(HOST_LIBS) -gen-protos.o: gen-protos.c scan.h $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gen-protos.c +gen-protos.o: gen-protos.c scan.h $(HCONFIG_H) $(SYSTEM_H) + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gen-protos.c $(OUTPUT_OPTION) -scan.o: scan.c scan.h $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan.c +scan.o: scan.c scan.h $(HCONFIG_H) $(SYSTEM_H) + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan.c $(OUTPUT_OPTION) -xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos Makefile - cat deduced.h $(srcdir)/sys-protos.h > tmp-fixtmp.c +xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos$(build_exeext) Makefile + sed -e s/TARGET_GETGROUPS_T/$(TARGET_GETGROUPS_T)/ \ + deduced.h $(srcdir)/sys-protos.h > tmp-fixtmp.c mv tmp-fixtmp.c fixtmp.c $(GCC_FOR_TARGET) fixtmp.c -w -U__SIZE_TYPE__ -U__PTRDIFF_TYPE__ -U__WCHAR_TYPE__ -E \ | sed -e 's/ / /g' -e 's/ *(/ (/g' -e 's/ [ ]*/ /g' -e 's/( )/()/' \ @@ -2223,36 +2209,36 @@ xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos Makefil mv xsys-protos.hT xsys-protos.h rm -rf fixtmp.c -fix-header: fix-header.o scan-decls.o scan.o xsys-protos.h $(HOST_LIBDEPS) \ - libcpp.a +# This is nominally a 'build' program, but it's run only when host==build, +# so we can (indeed, must) use $(LIBDEPS) and $(LIBS). +fix-header$(build_exeext): fix-header.o scan-decls.o scan.o xsys-protos.h \ + $(LIBDEPS) libcpp.a $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ fix-header.o \ - scan-decls.o scan.o libcpp.a $(HOST_LIBS) + scan-decls.o scan.o libcpp.a $(LIBS) -fix-header.o: fix-header.c $(srcdir)/../include/obstack.h scan.h \ - xsys-protos.h $(build_xm_file) system.h cpplib.h cpphash.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/fix-header.c +fix-header.o: fix-header.c $(OBSTACK_H) scan.h \ + xsys-protos.h $(HCONFIG_H) $(SYSTEM_H) $(CPPLIB_H) + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/fix-header.c $(OUTPUT_OPTION) -scan-decls.o: scan-decls.c scan.h cpplib.h $(build_xm_file) system.h - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan-decls.c +scan-decls.o: scan-decls.c scan.h $(CPPLIB_H) $(HCONFIG_H) $(SYSTEM_H) + $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan-decls.c $(OUTPUT_OPTION) # stmp-fixproto depends on this, not on fix-header directly. # The idea is to make sure fix-header gets built, # but not rerun fixproto after each stage # just because fix-header's mtime has changed. -fixhdr.ready: fix-header +fixhdr.ready: fix-header$(build_exeext) -if [ -f fixhdr.ready ] ; then \ true; \ else \ - touch fixhdr.ready; \ + $(STAMP) fixhdr.ready; \ fi -# stmp-headers is to make sure fixincludes has already finished. +# stmp-int-headers is to make sure fixincludes has already finished. # The if statement is so that we don't run fixproto a second time # if it has already been run on the files in `include'. -stmp-fixproto: fixhdr.ready fixproto stmp-headers - @echo "Various warnings and error messages from fixproto are normal" - -if [ -d include ] ; then true; else mkdir include; fi - -if [ -f include/fixed ] ; then true; \ +stmp-fixproto: fixhdr.ready fixproto stmp-int-hdrs + if [ -f include/fixed ] ; then true; \ else \ : This line works around a 'make' bug in BSDI 1.1.; \ FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"; export FIXPROTO_DEFINES; \ @@ -2260,43 +2246,138 @@ stmp-fixproto: fixhdr.ready fixproto stmp-headers export mkinstalldirs; \ if [ -d $(SYSTEM_HEADER_DIR) ] ; then \ $(SHELL) ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR); \ + if [ $$? -eq 0 ] ; then true ; else exit 1 ; fi ; \ else true; fi; \ - touch include/fixed; \ + $(STAMP) include/fixed; \ fi - touch stmp-fixproto + $(STAMP) stmp-fixproto # # Remake the info files. -doc: info -info: cpp.info gcc.info lang.info - -cpp.info: $(srcdir)/cpp.texi - $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi - -gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \ - $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \ - $(srcdir)/tm.texi $(srcdir)/gcov.texi - $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi - -dvi: gcc.dvi cpp.dvi lang.dvi +docdir = $(srcdir)/doc + +doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug +info: $(docdir)/cpp.info $(docdir)/gcc.info $(docdir)/gccint.info lang.info $(docdir)/cppinternals.info + +$(docdir)/cpp.info: $(docdir)/cpp.texi $(docdir)/include/fdl.texi + cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi + +$(docdir)/gcc.info: $(docdir)/gcc.texi $(docdir)/include/gcc-common.texi \ + $(docdir)/frontends.texi $(docdir)/standards.texi \ + $(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \ + $(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \ + $(docdir)/bugreport.texi $(docdir)/service.texi \ + $(docdir)/contribute.texi $(docdir)/vms.texi \ + $(docdir)/include/funding.texi $(docdir)/gnu.texi \ + $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \ + $(docdir)/contrib.texi + cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gcc.info doc/gcc.texi + +$(docdir)/gccint.info: $(docdir)/gccint.texi \ + $(docdir)/include/gcc-common.texi $(docdir)/contribute.texi \ + $(docdir)/makefile.texi $(docdir)/configterms.texi \ + $(docdir)/portability.texi $(docdir)/interface.texi \ + $(docdir)/passes.texi $(docdir)/c-tree.texi \ + $(docdir)/rtl.texi $(docdir)/md.texi $(docdir)/tm.texi \ + $(docdir)/hostconfig.texi $(docdir)/fragments.texi \ + $(docdir)/configfiles.texi $(docdir)/collect2.texi \ + $(docdir)/headerdirs.texi $(docdir)/include/funding.texi \ + $(docdir)/gnu.texi $(docdir)/include/gpl.texi \ + $(docdir)/include/fdl.texi $(docdir)/contrib.texi \ + $(docdir)/languages.texi $(docdir)/sourcebuild.texi + cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gccint.info doc/gccint.texi + +$(docdir)/cppinternals.info: $(docdir)/cppinternals.texi + cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cppinternals.info \ + doc/cppinternals.texi + +dvi: gcc.dvi gccint.dvi cpp.dvi lang.dvi cppinternals.dvi # This works with GNU Make's default rule. -gcc.dvi: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \ - $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \ - $(srcdir)/tm.texi $(srcdir)/gcov.texi - TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex gcc.texi - texindex gcc.?? - TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex gcc.texi - -cpp.dvi: $(srcdir)/cpp.texi - TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex cpp.texi - texindex cpp.?? - TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex cpp.texi - - -INSTALL: $(srcdir)/install1.texi $(srcdir)/install.texi - cd $(srcdir); $(MAKEINFO) -D INSTALLONLY \ - --no-split -o INSTALL install1.texi +cpp.dvi: $(docdir)/cpp.texi $(docdir)/include/fdl.texi + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cpp.texi + +gcc.dvi: $(docdir)/gcc.texi $(docdir)/include/gcc-common.texi \ + $(docdir)/frontends.texi $(docdir)/standards.texi \ + $(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \ + $(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \ + $(docdir)/bugreport.texi $(docdir)/service.texi \ + $(docdir)/contribute.texi $(docdir)/vms.texi \ + $(docdir)/include/funding.texi $(docdir)/gnu.texi \ + $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \ + $(docdir)/contrib.texi + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gcc.texi + +gccint.dvi: $(docdir)/gccint.texi \ + $(docdir)/include/gcc-common.texi $(docdir)/contribute.texi \ + $(docdir)/makefile.texi $(docdir)/configterms.texi \ + $(docdir)/portability.texi $(docdir)/interface.texi \ + $(docdir)/passes.texi $(docdir)/c-tree.texi \ + $(docdir)/rtl.texi $(docdir)/md.texi $(docdir)/tm.texi \ + $(docdir)/hostconfig.texi $(docdir)/fragments.texi \ + $(docdir)/configfiles.texi $(docdir)/collect2.texi \ + $(docdir)/headerdirs.texi $(docdir)/include/funding.texi \ + $(docdir)/gnu.texi $(docdir)/include/gpl.texi \ + $(docdir)/include/fdl.texi $(docdir)/contrib.texi \ + $(docdir)/languages.texi $(docdir)/sourcebuild.texi + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gccint.texi + +cppinternals.dvi: $(docdir)/cppinternals.texi + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi + +generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 \ + $(docdir)/gfdl.7 $(docdir)/gpl.7 $(docdir)/fsf-funding.7 \ + lang.generated-manpages + +$(docdir)/gcov.1: $(docdir)/gcov.texi + $(STAMP) $(docdir)/gcov.1 + -$(TEXI2POD) < $(docdir)/gcov.texi > gcov.pod + -($(POD2MAN) --section=1 gcov.pod > $(docdir)/gcov.1.T$$$$ && \ + mv -f $(docdir)/gcov.1.T$$$$ $(docdir)/gcov.1) || \ + (rm -f $(docdir)/gcov.1.T$$$$ && exit 1) + -rm -f gcov.pod + +$(docdir)/cpp.1: $(docdir)/cpp.texi + $(STAMP) $(docdir)/cpp.1 + -$(TEXI2POD) < $(docdir)/cpp.texi > cpp.pod + -($(POD2MAN) --section=1 cpp.pod > $(docdir)/cpp.1.T$$$$ && \ + mv -f $(docdir)/cpp.1.T$$$$ $(docdir)/cpp.1) || \ + (rm -f $(docdir)/cpp.1.T$$$$ && exit 1) + -rm -f cpp.pod + +$(docdir)/gcc.1: $(docdir)/invoke.texi + $(STAMP) $(docdir)/gcc.1 + -$(TEXI2POD) < $(docdir)/invoke.texi > gcc.pod + -($(POD2MAN) --section=1 gcc.pod > $(docdir)/gcc.1.T$$$$ && \ + mv -f $(docdir)/gcc.1.T$$$$ $(docdir)/gcc.1) || \ + (rm -f $(docdir)/gcc.1.T$$$$ && exit 1) + -rm -f gcc.pod + +$(docdir)/gfdl.7: $(docdir)/include/fdl.texi + $(STAMP) $(docdir)/gfdl.7 + -$(TEXI2POD) < $(docdir)/include/fdl.texi > gfdl.pod + -($(POD2MAN) --section=7 gfdl.pod > $(docdir)/gfdl.7.T$$$$ && \ + mv -f $(docdir)/gfdl.7.T$$$$ $(docdir)/gfdl.7) || \ + (rm -f $(docdir)/gfdl.7.T$$$$ && exit 1) + -rm -f gfdl.pod + +$(docdir)/gpl.7: $(docdir)/include/gpl.texi + $(STAMP) $(docdir)/gpl.7 + -$(TEXI2POD) < $(docdir)/include/gpl.texi > gpl.pod + -($(POD2MAN) --section=7 gpl.pod > $(docdir)/gpl.7.T$$$$ && \ + mv -f $(docdir)/gpl.7.T$$$$ $(docdir)/gpl.7) || \ + (rm -f $(docdir)/gpl.7.T$$$$ && exit 1) + -rm -f gpl.pod + +$(docdir)/fsf-funding.7: $(docdir)/include/funding.texi + $(STAMP) $(docdir)/fsf-funding.7 + -$(TEXI2POD) < $(docdir)/include/funding.texi > fsf-funding.pod + -($(POD2MAN) --section=7 fsf-funding.pod \ + > $(docdir)/fsf-funding.7.T$$$$ && \ + mv -f $(docdir)/fsf-funding.7.T$$$$ $(docdir)/fsf-funding.7) || \ + (rm -f $(docdir)/fsf-funding.7.T$$$$ && exit 1) + -rm -f fsf-funding.pod + # # Deletion of files made during compilation. # There are four levels of this: @@ -2311,34 +2392,32 @@ INSTALL: $(srcdir)/install1.texi $(srcdir)/install.texi # We remove as much from the language subdirectories as we can # (less duplicated code). - -mostlyclean: intl.mostlyclean lang.mostlyclean +INTL_MOSTLYCLEAN = intl.mostlyclean +mostlyclean: $(INTL_MOSTLYCLEAN) lang.mostlyclean -rm -f $(STAGESTUFF) + -rm -rf libgcc # Delete the temporary source copies for cross compilation. - -rm -f $(HOST_PREFIX_1)rtl.c $(HOST_PREFIX_1)rtlanal.c - -rm -f $(HOST_PREFIX_1)alloca.c $(HOST_PREFIX_1)malloc.c - -rm -f $(HOST_PREFIX_1)obstack.c + -rm -f $(HOST_PREFIX_1)rtl.c $(HOST_PREFIX_1)print-rtl.c + -rm -f $(HOST_PREFIX_1)bitmap.c $(HOST_PREFIX_1)errors.c + -rm -f $(HOST_PREFIX_1)ggc-none.c # Delete the temp files made in the course of building libgcc.a. - -rm -f tmplibgcc* tmpcopy xlimits.h libgcc1-test - for name in $(LIB1FUNCS); do rm -f $${name}.c; done + -rm -f xlimits.h # Delete other built files. - -rm -f t-float.h-cross xsys-protos.hT fp-bit.c dp-bit.c + -rm -f t-float.h-cross xsys-protos.hT # Delete the stamp and temporary files. -rm -f s-* tmp-* stamp-* stmp-* -rm -f */stamp-* */tmp-* # Delete debugging dump files. - -rm -f *.greg *.lreg *.combine *.flow *.cse *.jump *.rtl *.tree *.loop - -rm -f *.dbr *.jump2 *.sched *.cse2 *.sched2 *.stack *.addressof - -rm -f *.regmove *.mach *.bp *.gcse *.flow2 - -rm -f */*.greg */*.lreg */*.combine */*.flow */*.cse */*.jump */*.rtl - -rm -f */*.tree */*.loop */*.dbr */*.jump2 */*.sched */*.cse2 - -rm -f */*.sched2 */*.stack */*.regmove */*.gcse */*.flow2 + -rm -f *.[0-9][0-9].* */*.[0-9][0-9].* # Delete some files made during installation. -rm -f specs float.h-* enquire SYSCALLS.c.X SYSCALLS.c - -rm -f collect collect2 mips-tfile mips-tdump alloca.s + -rm -f collect collect2 mips-tfile mips-tdump # Delete files generated for fixproto - -rm -rf fix-header xsys-protos.h deduced.h tmp-deduced.h \ - gen-protos fixproto.list fixtmp.* fixhdr.ready + -rm -rf fix-header$(build_exeext) xsys-protos.h deduced.h tmp-deduced.h \ + gen-protos$(build_exeext) fixproto.list fixtmp.* fixhdr.ready +# Delete files generated for fixincl + -rm -rf fixincl fixinc.sh specs.ready + (cd fixinc && $(MAKE) clean) # Delete unwanted output files from TeX. -rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg -rm -f */*.toc */*.log */*.vr */*.fn */*.cp */*.tp */*.ky */*.pg @@ -2346,22 +2425,17 @@ mostlyclean: intl.mostlyclean lang.mostlyclean -rm -f gcc.vrs gcc.kys gcc.tps gcc.pgs gcc.fns # Delete core dumps. -rm -f core */core - -rm -f *.bp */*.bp # Delete all files made by compilation # that don't exist in the distribution. -clean: mostlyclean intl.clean lang.clean -# It may not be quite desirable to delete unprotoize.c here, -# but the spec for `make clean' requires it. -# Using unprotoize.c is not quite right in the first place, -# but what better way is there? - -rm -f libgcc.a libgcc1.a libgcc1-asm.a libgcc2.a libgcc2.ready - -rm -f libgcc1.null +INTL_CLEAN = intl.clean +clean: mostlyclean $(INTL_CLEAN) lang.clean + -rm -f libgcc.a libgcc_eh.a libgcc_s$(SHLIB_EXT) libgcc_s$(SHLIB_EXT).1 + -rm -f config.h tconfig.h hconfig.h tm_p.h + -rm -f cs-* + -rm -rf libgcc -rm -f *.dvi -rm -f */*.dvi - -if [ -f md.pre-cpp ]; then \ - rm -f md ; \ - fi # Delete the include directory. -rm -rf include # Delete files used by the "multilib" facility (including libgcc subdirs). @@ -2372,13 +2446,17 @@ clean: mostlyclean intl.clean lang.clean rm -rf `echo $(MULTILIB_OPTIONS) | sed -e 's/\// /g'`; \ fi ; fi -rm -fr stage1 stage2 stage3 stage4 +# Delete stamps of bootstrap stages + -rm -f stage?_* + -rm -f clean?_* + -rm -f stage_last # Delete all files that users would normally create # while building and installing GCC. INTL_DISTCLEAN = intl.distclean distclean: clean $(INTL_DISTCLEAN) lang.distclean - -rm -f tm.h config.h auto-host.h auto-build.h tconfig.h hconfig.h - -rm -f md cstamp-h + -rm -f auto-host.h auto-build.h + -rm -f cstamp-h -rm -f config.status config.run config.cache config.bak -rm -f Make-lang Make-hooks Make-host Make-target -rm -f Makefile specs.h options.h gencheck.h *.oaux @@ -2390,6 +2468,11 @@ distclean: clean $(INTL_DISTCLEAN) lang.distclean -rm -f site.exp site.bak testsuite/site.exp testsuite/site.bak -rm -f testsuite/{gcc,g++}.{log,sum} -rm -f intl/libintl.h libintl.h + -rm -f cxxmain.c + -rm -f mklibgcc libgcc.map gccbug .gdbinit configargs.h + -rm -f gcov.pod + -rm -f fixinc/Makefile + -rmdir ada cp f java objc fixinc intl po 2>/dev/null # Delete anything likely to be found in the source directory # that shouldn't be in the distribution. @@ -2411,72 +2494,58 @@ extraclean: distclean lang.extraclean # Get rid of every file that's generated from some other file, except for `configure'. # Most of these files ARE PRESENT in the GCC distribution. -# We define INTL_DISTCLEAN to be empty in the submake, so that -# we don't descend into intl after its makefile has been removed. +# We define INTL_DISTCLEAN, INTL_CLEAN & INTL_MOSTLYCLEAN to be empty in the +# submake, so that we don't descend into intl after its makefile has been +# removed. maintainer-clean: @echo 'This command is intended for maintainers to use; it' @echo 'deletes files that may need special tools to rebuild.' - $(MAKE) INTL_DISTCLEAN= distclean \ - intl.maintainer-clean lang.maintainer-clean - -rm -f c-parse.y c-gperf.h - -rm -f c-parse.c c-parse.h c-parse.output - -rm -f cexp.c cexp.output TAGS - -rm -f cpp.info* cpp.??s cpp.*aux - -rm -f gcc.info* gcc.??s gcc.*aux + $(MAKE) INTL_DISTCLEAN= INTL_CLEAN= INTL_MOSTLYCLEAN= \ + intl.maintainer-clean lang.maintainer-clean distclean + -rm -f c-parse.y c-parse.c c-parse.output TAGS + -rm -f cpp.??s cpp.*aux + -rm -f gcc.??s gcc.*aux + -rm -f $(docdir)/cpp.info* $(docdir)/gcc.info* $(docdir)/gccint.info* + -rm -f $(docdir)/cppinternals.info* + -rm -f $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 + -rm -f $(docdir)/fsf-funding.7 $(docdir)/gfdl.7 $(docdir)/gpl.7 # # Entry points `install' and `uninstall'. # Also use `install-collect2' to install collect2 when the config files don't. -# The semicolon is to prevent the install.sh -> install default rule -# from doing anything. Having it run true helps avoid problems and -# noise from versions of make which don't like to have null commands. -install: $(INSTALL_TARGET) ; @true - # Copy the compiler files into directories where they will be run. # Install the driver last so that the window when things are # broken is small. -install-normal: install-common $(INSTALL_HEADERS) $(INSTALL_LIBGCC) \ - $(INSTALL_CPP) install-man install-info intl.install lang.install-normal \ - install-driver - -# Do nothing while making gcc with a cross-compiler. The person who -# makes gcc for the target machine has to know how to put a complete -# gcc together by hand. -install-build: force - @echo You have to install gcc on your target machine by hand. - -# Run this on the target machine -# to finish installation of cross compiler. -# This is not used anymore now that float.h does not depend on enquire. -install-cross-rest: install-float-h-cross +install: install-common $(INSTALL_HEADERS) $(INSTALL_LIBGCC) \ + $(INSTALL_CPP) install-man install-info intl.install install-@POSUB@ \ + lang.install-normal install-driver # Handle cpp installation. install-cpp: cpp$(exeext) - -rm -f $(bindir)/$(CPP_INSTALL_NAME)$(exeext) - $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(bindir)/$(CPP_INSTALL_NAME)$(exeext) - if [ x$(cpp_install_dir) != x ]; then \ - rm -f $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ - $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ - else true; fi + -if [ -f gcc-cross$(exeext) ] ; then \ + rm -f $(bindir)/$(CPP_CROSS_NAME)$(exeext); \ + $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(bindir)/$(CPP_CROSS_NAME)$(exeext); \ + if [ x$(cpp_install_dir) != x ]; then \ + rm -f $(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \ + $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \ + else true; fi; \ + else \ + rm -f $(bindir)/$(CPP_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(bindir)/$(CPP_INSTALL_NAME)$(exeext); \ + if [ x$(cpp_install_dir) != x ]; then \ + rm -f $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ + else true; fi; \ + fi uninstall-cpp: - -rm -f $(bindir)/cpp + -rm -f $(bindir)/$(CPP_INSTALL_NAME)$(exeext) + -rm -f $(bindir)/$(CPP_CROSS_NAME)$(exeext) -if [ x$(cpp_install_dir) != x ]; then \ - rm -f $(prefix)/$(cpp_install_dir)/cpp; \ + rm -f $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ + rm -f $(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \ else true; fi -# Install float.h for cross compiler. -# Run this on the target machine! -# This is not used anymore now that float.h does not depend on enquire. -install-float-h-cross: installdirs -# if [ -f enquire ] ; then true; else false; fi -# Note: don't use -. We should fail right away if enquire was not made. - ./enquire -f > $(tmpdir)/float.h - -rm -f $(libsubdir)/include/float.h - $(INSTALL_DATA) $(tmpdir)/float.h $(libsubdir)/include/float.h - -rm -f $(tmpdir)/float.h - chmod a-x $(libsubdir)/include/float.h - # Create the installation directories. installdirs: -if [ -d $(prefix) ] ; then true ; else mkdir $(prefix) ; chmod a+rx $(prefix) ; fi @@ -2491,18 +2560,18 @@ installdirs: done -if [ -d $(bindir) ] ; then true ; else mkdir $(bindir) ; chmod a+rx $(bindir) ; fi -if [ -d $(includedir) ] ; then true ; else mkdir $(includedir) ; chmod a+rx $(includedir) ; fi - -if [ -d $(gcc_tooldir) ] ; then true ; else mkdir $(gcc_tooldir) ; chmod a+rx $(gcc_tooldir) ; fi - -if [ -d $(assertdir) ] ; then true ; else mkdir $(assertdir) ; chmod a+rx $(assertdir) ; fi -if [ -d $(infodir) ] ; then true ; else mkdir $(infodir) ; chmod a+rx $(infodir) ; fi + -if [ -d $(slibdir) ] ; then true ; else mkdir $(slibdir) ; chmod a+rx $(slibdir) ; fi # We don't use mkdir -p to create the parents of man1dir, # because some systems don't support it. # Instead, we use this technique to create the immediate parent of man1dir. -parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \ if [ -d $$parent ] ; then true ; else mkdir $$parent ; chmod a+rx $$parent ; fi -if [ -d $(man1dir) ] ; then true ; else mkdir $(man1dir) ; chmod a+rx $(man1dir) ; fi + -if [ -d $(man7dir) ] ; then true ; else mkdir $(man7dir) ; chmod a+rx $(man7dir) ; fi # Install the compiler executables built during cross compilation. -install-common: native installdirs $(EXTRA_PARTS) lang.install-common +install-common: native $(EXTRA_PARTS) lang.install-common for file in $(COMPILERS); do \ if [ -f $$file ] ; then \ rm -f $(libsubdir)/$$file; \ @@ -2549,16 +2618,19 @@ install-common: native installdirs $(EXTRA_PARTS) lang.install-common fi -rm -f $(libsubdir)/cpp0$(exeext) $(INSTALL_PROGRAM) cpp0$(exeext) $(libsubdir)/cpp0$(exeext) + -rm -f $(libsubdir)/tradcpp0$(exeext) + $(INSTALL_PROGRAM) tradcpp0$(exeext) $(libsubdir)/tradcpp0$(exeext) # Install gcov if it was compiled. -if [ -f gcov$(exeext) ]; \ then \ rm -f $(bindir)/gcov$(exeext); \ $(INSTALL_PROGRAM) gcov$(exeext) $(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \ fi + $(INSTALL_SCRIPT) gccbug $(bindir)/$(GCCBUG_INSTALL_NAME) # Install the driver program as $(target_alias)-gcc # and also as either gcc (if native) or $(gcc_tooldir)/bin/gcc. -install-driver: xgcc$(exeext) +install-driver: installdirs xgcc$(exeext) -if [ -f gcc-cross$(exeext) ] ; then \ rm -f $(bindir)/$(GCC_CROSS_NAME)$(exeext); \ $(INSTALL_PROGRAM) gcc-cross$(exeext) $(bindir)/$(GCC_CROSS_NAME)$(exeext); \ @@ -2571,7 +2643,7 @@ install-driver: xgcc$(exeext) $(INSTALL_PROGRAM) xgcc$(exeext) $(bindir)/$(GCC_INSTALL_NAME)$(exeext); \ rm -f $(bindir)/$(target_alias)-gcc-1$(exeext); \ $(LN) $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-1$(exeext); \ - mv $(bindir)/$(target_alias)-gcc-1$(exeext) $(bindir)/$(target_alias)-gcc$(exeext); \ + mv $(bindir)/$(target_alias)-gcc-1$(exeext) $(bindir)/$(GCC_TARGET_INSTALL_NAME)$(exeext); \ fi # Install the info files. @@ -2579,60 +2651,107 @@ install-driver: xgcc$(exeext) # to do the install. install-info: doc installdirs lang.install-info -rm -f $(infodir)/cpp.info* $(infodir)/gcc.info* - for f in cpp.info* gcc.info*; do \ - $(INSTALL_DATA) $$f $(infodir)/$$f; \ - done + -rm -f $(infodir)/cppinternals.info* $(infodir)/gccint.info* + if [ -f $(docdir)/gcc.info ]; then \ + for f in $(docdir)/cpp.info* $(docdir)/gcc.info* \ + $(docdir)/cppinternals.info* $(docdir)/gccint.info*; do \ + realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ + $(INSTALL_DATA) $$f $(infodir)/$$realfile; \ + done; \ + else true; fi -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ if [ -f $(infodir)/dir ] ; then \ - for f in cpp.info gcc.info; do \ - install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \ + for f in cpp.info gcc.info gccint.info cppinternals.info; do \ + if [ -f $(infodir)/$$f ]; then \ + install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \ + else true; fi; \ done; \ else true; fi; \ else true; fi; -chmod a-x $(infodir)/cpp.info* $(infodir)/gcc.info* + -chmod a-x $(infodir)/cppinternals.info* $(infodir)/gccint.info* # Install the man pages. -install-man: installdirs $(srcdir)/gcc.1 $(srcdir)/cccp.1 lang.install-man +install-man: installdirs $(GENERATED_MANPAGES) lang.install-man -if [ -f gcc-cross$(exeext) ] ; then \ - rm -f $(man1dir)/$(GCC_CROSS_NAME)$(manext); \ - $(INSTALL_DATA) $(srcdir)/gcc.1 $(man1dir)/$(GCC_CROSS_NAME)$(manext); \ - chmod a-x $(man1dir)/$(GCC_CROSS_NAME)$(manext); \ + rm -f $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \ + $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \ + chmod a-x $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \ else \ - rm -f $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \ - $(INSTALL_DATA) $(srcdir)/gcc.1 $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \ - chmod a-x $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \ + rm -f $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ + $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ + chmod a-x $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ fi - -rm -f $(man1dir)/cccp$(manext) - -$(INSTALL_DATA) $(srcdir)/cccp.1 $(man1dir)/cccp$(manext) - -chmod a-x $(man1dir)/cccp$(manext) + -rm -f $(man1dir)/cpp$(man1ext) + -$(INSTALL_DATA) $(docdir)/cpp.1 $(man1dir)/cpp$(man1ext) + -chmod a-x $(man1dir)/cpp$(man1ext) + -rm -f $(man1dir)/gcov$(man1ext) + -$(INSTALL_DATA) $(docdir)/gcov.1 $(man1dir)/gcov$(man1ext) + -chmod a-x $(man1dir)/gcov$(man1ext) + -rm -f $(man7dir)/fsf-funding$(man7ext) + -$(INSTALL_DATA) $(docdir)/fsf-funding.7 $(man7dir)/fsf-funding$(man7ext) + -chmod a-x $(man7dir)/fsf-funding$(man7ext) + -rm -f $(man7dir)/gfdl$(man7ext) + -$(INSTALL_DATA) $(docdir)/gfdl.7 $(man7dir)/gfdl$(man7ext) + -chmod a-x $(man7dir)/gfdl$(man7ext) + -rm -f $(man7dir)/gpl$(man7ext) + -$(INSTALL_DATA) $(docdir)/gpl.7 $(man7dir)/gpl$(man7ext) + -chmod a-x $(man7dir)/gpl$(man7ext) # Install the library. -install-libgcc: libgcc.a installdirs - -if [ -f libgcc.a ] ; then \ - rm -f $(libsubdir)/libgcc.a; \ - $(INSTALL_DATA) libgcc.a $(libsubdir)/libgcc.a; \ - if $(RANLIB_TEST_FOR_TARGET) ; then \ - (cd $(libsubdir); $(RANLIB_FOR_TARGET) libgcc.a); else true; fi; \ - chmod a-x $(libsubdir)/libgcc.a; \ - else true; fi +install-libgcc: libgcc.mk libgcc.a installdirs + if $(RANLIB_TEST_FOR_TARGET); then \ + r_f_t=$(RANLIB_FOR_TARGET); \ + else \ + r_f_t=: ; \ + fi; \ + $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ + HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ + AR_FOR_TARGET="$(AR_FOR_TARGET)" \ + AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \ + AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ + CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ + RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \ + NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \ + LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \ + INCLUDES="$(INCLUDES)" \ + CONFIG_H="$(TCONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \ + LIB1ASMSRC='$(LIB1ASMSRC)' \ + MAKEOVERRIDES= \ + INSTALL_DATA="$(INSTALL_DATA)" \ + RANLIB_FOR_TARGET="$$r_f_t" \ + libsubdir="$(libsubdir)" \ + slibdir="$(slibdir)" \ + -f libgcc.mk install # Install multiple versions of libgcc.a. install-multilib: stmp-multilib installdirs - for i in `$(GCC_FOR_TARGET) --print-multi-lib`; do \ - dir=`echo $$i | sed -e 's/;.*$$//'`; \ - if [ -d $(libsubdir)/$${dir} ]; then true; else mkdir $(libsubdir)/$${dir}; fi; \ - for f in libgcc.a $(EXTRA_MULTILIB_PARTS); do \ - rm -f $(libsubdir)/$${dir}/$${f}; \ - $(INSTALL_DATA) $${dir}/$${f} $(libsubdir)/$${dir}/$${f}; \ - done; \ - if $(RANLIB_TEST_FOR_TARGET); then \ - (cd $(libsubdir)/$${dir}; $(RANLIB_FOR_TARGET) libgcc.a); \ - else true; fi; \ - chmod a-x $(libsubdir)/$${dir}/libgcc.a; \ - done + if $(RANLIB_TEST_FOR_TARGET); then \ + r_f_t=$(RANLIB_FOR_TARGET); \ + else \ + r_f_t=: ; \ + fi; \ + $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ + HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ + AR_FOR_TARGET="$(AR_FOR_TARGET)" \ + AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \ + AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ + CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ + RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \ + NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \ + LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \ + INCLUDES="$(INCLUDES)" \ + CONFIG_H="$(CONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \ + LIB1ASMSRC='$(LIB1ASMSRC)' \ + MAKEOVERRIDES= \ + INSTALL_DATA="$(INSTALL_DATA)" \ + RANLIB_FOR_TARGET="$$r_f_t" \ + libsubdir="$(libsubdir)" \ + slibdir="$(slibdir)" \ + -f libgcc.mk install # Install all the header files built in the include subdirectory. -install-headers: install-include-dir $(INSTALL_HEADERS_DIR) $(INSTALL_ASSERT_H) +install-headers: $(INSTALL_HEADERS_DIR) # Fix symlinks to absolute paths in the installed include directory to # point to the installed directory, not the build directory. # Don't need to use LN_S here since we really do need ln -s and no substitutes. @@ -2655,45 +2774,26 @@ install-include-dir: installdirs -chmod a+rx $(libsubdir)/include # Install the include directory using tar. -install-headers-tar: stmp-headers $(STMP_FIXPROTO) install-include-dir +install-headers-tar: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir # We use `pwd`/include instead of just include to problems with CDPATH # Unless a full pathname is provided, some shells would print the new CWD, # found in CDPATH, corrupting the output. We could just redirect the # output of `cd', but some shells lose on redirection within `()'s (cd `pwd`/include ; \ - tar -cf - .; exit 0) | (cd $(libsubdir)/include; tar $(TAROUTOPTS) - ) + tar -cf - .; exit 0) | (cd $(libsubdir)/include; tar xpf - ) # /bin/sh on some systems returns the status of the first tar, # and that can lose with GNU tar which always writes a full block. # So use `exit 0' to ignore its exit status. # Install the include directory using cpio. -install-headers-cpio: stmp-headers $(STMP_FIXPROTO) install-include-dir +install-headers-cpio: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir # See discussion about the use of `pwd` above cd `pwd`/include ; \ find . -print | cpio -pdum $(libsubdir)/include -# Put assert.h where it won't override GNU libc's assert.h. -# It goes in a dir that is searched after GNU libc's headers; -# thus, the following conditionals are no longer needed. -# But it's not worth deleting them now. -## Don't replace the assert.h already there if it is not from GCC. -## This code would be simpler if it tested for -f ... && ! grep ... -## but supposedly the ! operator is missing in sh on some systems. -install-assert-h: assert.h installdirs - if [ -f $(assertdir)/assert.h ]; \ - then \ - if grep "__eprintf" $(assertdir)/assert.h >/dev/null; \ - then \ - rm -f $(assertdir)/assert.h; \ - $(INSTALL_DATA) $(srcdir)/assert.h $(assertdir)/assert.h; \ - chmod a-x $(assertdir)/assert.h; \ - else true; \ - fi; \ - else \ - rm -f $(assertdir)/assert.h; \ - $(INSTALL_DATA) $(srcdir)/assert.h $(assertdir)/assert.h; \ - chmod a-x $(assertdir)/assert.h; \ - fi +# Install the include directory using cp. +install-headers-cp: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir + cp -p -r include $(libsubdir) # Use this target to install the program `collect2' under the name `collect2'. install-collect2: collect2 installdirs @@ -2711,14 +2811,15 @@ uninstall: intl.uninstall lang.uninstall $(UNINSTALL_CPP) -rm -rf $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext) -rm -rf $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext) -rm -rf $(bindir)/$(GCOV_INSTALL_NAME)$(exeext) - -rm -rf $(man1dir)/$(GCC_INSTALL_NAME)$(manext) - -rm -rf $(man1dir)/$(GCC_CROSS_NAME)$(manext) - -rm -rf $(man1dir)/cccp$(manext) - -rm -rf $(man1dir)/protoize$(manext) - -rm -rf $(man1dir)/unprotoize$(manext) + -rm -rf $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) + -rm -rf $(man1dir)/$(GCC_CROSS_NAME)$(man1ext) + -rm -rf $(man1dir)/cpp$(man1ext) + -rm -rf $(man1dir)/protoize$(man1ext) + -rm -rf $(man1dir)/unprotoize$(man1ext) -rm -f $(infodir)/cpp.info* $(infodir)/gcc.info* + -rm -f $(infodir)/cppinternals.info* $(infodir)/gccint.info* # -# These targets are for the dejagnu testsuites. The file site.exp +# These targets are for the dejagnu testsuites. The file site.exp # contains global variables that all the testsuites will use. # Set to $(target_alias)/ for cross. @@ -2727,7 +2828,7 @@ target_subdir = @target_subdir@ site.exp: ./config.status Makefile @echo "Making a new config file..." -@rm -f ./tmp? - @touch site.exp + @$(STAMP) site.exp -@mv site.exp site.bak @echo "## these variables are automatically generated by make ##" > ./tmp0 @echo "# Do not edit here. If you wish to override these values" >> ./tmp0 @@ -2741,6 +2842,8 @@ site.exp: ./config.status Makefile # CFLAGS is set even though it's empty to show we reserve the right to set it. @echo "set CFLAGS \"\"" >> ./tmp0 @echo "set CXXFLAGS \"-I$(objdir)/../$(target_subdir)libio -I\$$srcdir/../libg++/src -I\$$srcdir/../libio -I\$$srcdir/../libstdc++ -I\$$srcdir/../libstdc++/stl -L$(objdir)/../$(target_subdir)libg++ -L$(objdir)/../$(target_subdir)libstdc++\"" >> ./tmp0 + @echo "set TESTING_IN_BUILD_TREE 1" >> ./tmp0 + @echo "set HAVE_LIBSTDCXX_V3 1" >> ./tmp0 # If newlib has been configured, we need to pass -B to gcc so it can find # newlib's crt0.o if it exists. This will cause a "path prefix not used" # message if it doesn't, but the testsuite is supposed to ignore the message - @@ -2770,199 +2873,243 @@ site.exp: ./config.status Makefile -e '1,/^## All variables above are.*##/ d' >> site.exp -@rm -f ./tmp? -CHECK_TARGETS = check-gcc check-g++ check-g77 check-objc +CHECK_TARGETS = check-gcc @check_languages@ -check: $(CHECK_TARGETS) +check-c++ : check-g++ +check-f77 : check-g77 +check-java : -testsuite/site.exp: site.exp - if [ -d testsuite ]; then \ - true; \ - else \ - mkdir testsuite; \ - fi - rm -rf testsuite/site.exp - cp site.exp testsuite/site.exp +check: $(CHECK_TARGETS) -check-g++: testsuite/site.exp - -rootme=`pwd`; export rootme; \ +# The idea is to parallelize testing of multilibs, for example: +# make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu} +# will run 3 concurrent sessions of check-gcc, eventually testing +# all 10 combinations. GNU make is required, as is a shell that expands +# alternations within braces. +check-gcc//% check-g++//% check-g77//% check-objc//%: site.exp + target=`echo "$@" | sed 's,//.*,,'`; \ + variant=`echo "$@" | sed 's,^[^/]*//,,'`; \ + vardots=`echo "$$variant" | sed 's,/,.,g'`; \ + $(MAKE) TESTSUITEDIR="testsuite.$$vardots" \ + RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \ + "$$target" + +TESTSUITEDIR = testsuite + +$(TESTSUITEDIR)/site.exp: site.exp + test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) + -rm -f $@ + sed '/set tmpdir/ s|testsuite|$(TESTSUITEDIR)|' < site.exp > $@ + +check-g++: $(TESTSUITEDIR)/site.exp + -(rootme=`pwd`; export rootme; \ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \ - cd testsuite; \ + cd $(TESTSUITEDIR); \ EXPECT=${EXPECT} ; export EXPECT ; \ if [ -f $${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \ export TCL_LIBRARY ; fi ; \ - $(RUNTEST) --tool g++ $(RUNTESTFLAGS) + $(RUNTEST) --tool g++ $(RUNTESTFLAGS)) -check-gcc: testsuite/site.exp - -rootme=`pwd`; export rootme; \ +check-gcc: $(TESTSUITEDIR)/site.exp + -(rootme=`pwd`; export rootme; \ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \ - cd testsuite; \ + cd $(TESTSUITEDIR); \ EXPECT=${EXPECT} ; export EXPECT ; \ if [ -f $${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \ export TCL_LIBRARY ; fi ; \ - $(RUNTEST) --tool gcc $(RUNTESTFLAGS) + $(RUNTEST) --tool gcc $(RUNTESTFLAGS)) -check-g77: testsuite/site.exp - -rootme=`pwd`; export rootme; \ +check-g77: $(TESTSUITEDIR)/site.exp + -(rootme=`pwd`; export rootme; \ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \ - cd testsuite; \ + cd $(TESTSUITEDIR); \ EXPECT=${EXPECT} ; export EXPECT ; \ if [ -f $${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \ export TCL_LIBRARY ; fi ; \ - $(RUNTEST) --tool g77 $(RUNTESTFLAGS) + $(RUNTEST) --tool g77 $(RUNTESTFLAGS)) -check-objc: testsuite/site.exp +check-objc: $(TESTSUITEDIR)/site.exp + -(rootme=`pwd`; export rootme; \ + srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \ + cd $(TESTSUITEDIR); \ + EXPECT=${EXPECT} ; export EXPECT ; \ + if [ -f $${rootme}/../expect/expect ] ; then \ + TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \ + export TCL_LIBRARY ; fi ; \ + $(RUNTEST) --tool objc $(RUNTESTFLAGS)) + +check-consistency: testsuite/site.exp -rootme=`pwd`; export rootme; \ srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \ cd testsuite; \ EXPECT=${EXPECT} ; export EXPECT ; \ if [ -f $${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; pwd` ; \ - export TCL_LIBRARY ; fi ; \ - $(RUNTEST) --tool objc $(RUNTESTFLAGS) + export TCL_LIBRARY ; fi ; \ + $(RUNTEST) --tool consistency $(RUNTESTFLAGS) # These exist for maintenance purposes. # Update the tags table. TAGS: force - cd $(srcdir); \ + (cd $(srcdir); \ mkdir tmp-tags; \ - mv -f c-parse.[ch] cexp.c =*.[chy] tmp-tags; \ + mv -f c-parse.[ch] =*.[chy] tmp-tags; \ etags *.y *.h *.c; \ mv tmp-tags/* .; \ - rmdir tmp-tags - -# Create the distribution tar.gz file. -dist: tmp-gcc.xtar - gzip --best < tmp-gcc.xtar > tmp-gcc.xtar.gz - mv tmp-gcc.xtar.gz gcc-$(version).tar.gz - -tmp-gcc.xtar: distdir -# Make the distribution. - tar -chf tmp-gcc.xtar gcc-$(version) - -distdir-cvs: force - if [ -d $(srcdir)/CVS ]; then cd $(srcdir) && cvs -r update; fi - -# This target exists to do the initial work before the language specific -# stuff gets done. -distdir-start: doc $(srcdir)/INSTALL $(srcdir)/c-parse.y $(srcdir)/c-gperf.h \ - $(srcdir)/c-parse.c $(srcdir)/cexp.c $(srcdir)/config.in \ - $(srcdir)/version.c TAGS - @case '$(USE_NLS)' in \ - yes) ;; \ - *) echo "configure with --enable-nls before making a distribution"; \ - exit 1;; \ - esac - @if grep -s "for version ${mainversion}" gcc.texi > /dev/null; \ - then true; \ - else echo "You must update the version number in \`gcc.texi'"; sleep 10;\ - fi -# 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) $(srcdir)/README > tmp.README - mv tmp.README README - -rm -rf gcc-$(version) tmp -# Put all the files in a temporary subdirectory -# which has the name that we want to have in the tar file. - mkdir tmp - mkdir tmp/config - mkdir tmp/ginclude - mkdir tmp/objc - mkdir tmp/intl - mkdir tmp/po - for file in `(cd $(srcdir) && echo *[0-9a-zA-Z+])`; do \ - test -f $(srcdir)/$$file && $(LN_S) $(srcdir)/$$file tmp; \ - done - if test "$(srcdir)" != "." ; then \ - for file in c-parse.c cexp.c ; do \ - test -f ./$$file && $(LN_S) ../$$file tmp; \ - done; \ - fi - for file in `(cd $(srcdir)/config && echo *[0-9a-zA-Z+])`; do \ - if test -d $(srcdir)/config/$$file \ - && test "$$file" != RCS && test "$$file" != CVS; then \ - mkdir tmp/config/$$file; \ - for subfile in `(cd $(srcdir)/config/$$file && echo *[0-9a-zA-Z+])`; do \ - $(LN_S) $(srcdir)/config/$$file/$$subfile tmp/config/$$file; \ - done; \ - else \ - $(LN_S) $(srcdir)/config/$$file tmp/config; \ - fi; \ - done - for file in `(cd $(srcdir)/ginclude && echo *[0-9a-zA-Z+])`; do \ - $(LN_S) $(srcdir)/ginclude/$$file tmp/ginclude; \ - done - for file in `(cd $(srcdir)/objc && echo *[0-9a-zA-Z+])`; do \ - $(LN_S) $(srcdir)/objc/$$file tmp/objc; \ - done - $(LN_S) .gdbinit tmp - -# Finish making `distdir', after the languages have done their thing. -distdir-finish: - mv tmp gcc-$(version) -# Get rid of everything we don't want in the distribution. We'd want -# this to use Makefile.in, but it doesn't have the `lang.foo' targets -# expanded. - cd gcc-$(version); make extraclean distdir-check VERSION_DEP= - -distdir-check: - ($(AWK) '/^[^#]/{print} /^#[A-Za-z]/{print substr($$1, 2)}' | sort) \ - < po/POTFILES.in > tmp.POTFILES - ls [A-Za-z]*.[ch] [a-z]*/[A-Za-z]*.[ch] \ - [a-z]*/[a-z]*/[A-Za-z]*.[ch] | sort > tmp.src - diff tmp.POTFILES tmp.src || { \ - echo "po/POTFILES.in and sources do not match -- please fix"; \ - exit 1; \ - } - rm -f tmp.* - -distdir: distdir-cvs distdir-start intl.distdir intl.distdir-fixup \ - lang.distdir distdir-finish - -# make diff oldversion=M.N -# creates a diff file between an older distribution and this one. -# The -P option assumes this is GNU diff. -diff: - diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x c-gperf.h \ - -x cexp.c -x -x TAGS -x INSTALL \ - -x configure -x config.in \ - -x "gcc.??" -x "gcc.??s" -x gcc.aux -x "gcc.info*" \ - -x "cpp.??" -x "cpp.??s" -x cpp.aux -x "cpp.info*" \ - $(LANG_DIFF_EXCLUDES) \ - gcc-$(oldversion) gcc-$(version) > gcc-$(oldversion)-$(version).diff - -bootstrap bootstrap-lean: force + rmdir tmp-tags) + +# A list of files to be destroyed during "lean" builds. +VOL_FILES=`echo $(BACKEND) $(OBJS) $(C_OBJS) $(LIBCPP_OBJS) *.c *.h gen*` + +# Flags to pass to stage2 and later recursive makes. Note that the +# WARN_CFLAGS setting can't be to the expansion of GCC_WARN_CFLAGS in +# the context of the stage_x rule. +STAGE2_FLAGS_TO_PASS = \ + CFLAGS="$(BOOT_CFLAGS)" \ + LDFLAGS="$(BOOT_LDFLAGS)" \ + WARN_CFLAGS="\$$(GCC_WARN_CFLAGS)" \ + STRICT_WARN="$(STRICT2_WARN)" \ + libdir=$(libdir) \ + LANGUAGES="$(LANGUAGES)" \ + MAKEOVERRIDES= \ + OUTPUT_OPTION="-o \$$@" + # Only build the C compiler for stage1, because that is the only one that # we can guarantee will build with the native compiler, and also it is the -# only thing useful for building stage2. - $(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" +# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS), +# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them +# overrideable (for a bootstrap build stage1 also builds gcc.info). +stage1_build: + $(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" \ + CFLAGS="$(STAGE1_CFLAGS)" MAKEINFO="$(MAKEINFO)" \ + MAKEINFOFLAGS="$(MAKEINFOFLAGS)" + $(STAMP) stage1_build + echo stage1_build > stage_last + +stage1_copy: stage1_build $(MAKE) stage1 -# This used to define ALLOCA as empty, but that would lead to bad results -# for a subsequent `make install' since that would not have ALLOCA empty. -# To prevent `make install' from compiling alloca.o and then relinking cc1 -# because alloca.o is newer, we permit these recursive makes to compile -# alloca.o. Then cc1 is newer, so it won't have to be relinked. - $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)" - $(MAKE) stage2 - -if test $@ = bootstrap-lean; then rm -rf stage1; else true; fi - $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)" + $(STAMP) stage1_copy + echo stage2_build > stage_last + +stage2_build: stage1_copy + $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \ + STAGE_PREFIX=stage1/ \ + $(STAGE2_FLAGS_TO_PASS) + $(STAMP) stage2_build + echo stage2_build > stage_last -bootstrap2 bootstrap2-lean: force - $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)" +stage2_copy: stage2_build $(MAKE) stage2 - -if test $@ = bootstrap2-lean; then rm -rf stage1; else true; fi - $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)" + $(STAMP) stage2_copy + echo stage3_build > stage_last + +stage3_build: stage2_copy + $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" \ + STAGE_PREFIX=stage2/ \ + $(STAGE2_FLAGS_TO_PASS) + $(STAMP) stage3_build + echo stage3_build > stage_last + +# For bootstrap4: +stage3_copy: stage3_build + $(MAKE) stage3 + $(STAMP) stage3_copy + echo stage4_build > stage_last + +stage4_build: stage3_copy + $(MAKE) CC="stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" \ + STAGE_PREFIX=stage3/ \ + $(STAGE2_FLAGS_TO_PASS) + $(STAMP) stage4_build + echo stage4_build > stage_last + +# Additional steps for *-lean targets: +clean_s1: stage1_copy + -(cd stage1 && rm -f $(VOL_FILES)) + $(STAMP) clean_s1 + +clean_s2: stage2_copy + -rm -rf stage1 + $(STAMP) clean_s2 + +# The various entry points for bootstrapping. + +bootstrap: stage3_build + @echo + @echo Bootstrap complete - make \"quickstrap\" to redo last build, + @echo \"restage1\" through \"restage3\" to rebuild specific stages, + @echo or \"cleanstrap\" to redo the bootstrap from scratch. + +bootstrap-lean : clean_s1 clean_s2 stage3_build + @echo + @echo Bootstrap complete - make \"quickstrap\" to redo last build, + @echo or \"cleanstrap\" to redo the bootstrap from scratch. + +bootstrap2: bootstrap + +bootstrap2-lean : bootstrap-lean + +bootstrap3 bootstrap3-lean: bootstrap + +bootstrap4 bootstrap4-lean: stage4_build + +unstage1 unstage2 unstage3 unstage4: + -set -vx; stage=`echo $@ | sed -e 's/un//'`; \ + rm -f $$stage/as$(exeext); \ + rm -f $$stage/ld$(exeext); \ + rm -f $$stage/collect-ld$(exeext); \ + if test -d $$stage; then \ + mv $$stage/* . 2>/dev/null; \ + for i in `cd $$stage; echo *` ; do \ + if test -d $$stage/$$i; then \ + mv $$stage/$$i/* $$i/. 2>/dev/null; \ + else \ + mv $$stage/$$i .; \ + fi; \ + done \ + fi ; \ + rm -f $${stage}_build $${stage}_copy ;\ + echo $${stage}_build > stage_last + +restage1: unstage1 + $(MAKE) stage1_build + +restage2: unstage2 + $(MAKE) LANGUAGES="$(LANGUAGES)" stage2_build -bootstrap3 bootstrap3-lean: force - $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)" +restage3: unstage3 + $(MAKE) LANGUAGES="$(LANGUAGES)" stage3_build -bootstrap4 bootstrap4-lean: force - $(MAKE) CC="stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)" +restage4: unstage4 + $(MAKE) LANGUAGES="$(LANGUAGES)" stage4_build + +bubblestrap: + if test -f stage3_build; then true; else \ + echo; echo You must \"make bootstrap\" first.; \ + exit 1; \ + fi + for i in stage3 \ + unstage1 stage1_build stage1_copy \ + unstage2 stage2_build stage2_copy \ + unstage3 stage3_build ; \ + do \ + $(MAKE) LANGUAGES="$(LANGUAGES)" $$i || exit 1 ; \ + done + +quickstrap: + if test -f stage_last ; then \ + LAST=`cat stage_last`; rm $$LAST; $(MAKE) LANGUAGES="$(LANGUAGES)" $$LAST; \ + else \ + $(MAKE) stage1_build; \ + fi + +cleanstrap: + -$(MAKE) clean + $(MAKE) LANGUAGES="$(LANGUAGES)" bootstrap # Compare the object files in the current directory with those in the # stage2 directory. @@ -3031,6 +3178,7 @@ gnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4- # Copy the object files from a particular stage into a subdirectory. stage1-start: -if [ -d stage1 ] ; then true ; else mkdir stage1 ; fi + $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage1 -for dir in intl $(SUBDIRS) ; \ do \ if [ -d stage1/$$dir ] ; then true ; else mkdir stage1/$$dir ; fi ; \ @@ -3039,14 +3187,18 @@ stage1-start: -mv intl/*$(objext) stage1/intl # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. - -if [ -f as$(exeext) ] ; then $(LN_S) ../as$(exeext) stage1 ; else true ; fi - -if [ -f ld$(exeext) ] ; then $(LN_S) ../ld$(exeext) stage1 ; else true ; fi - -if [ -f collect-ld$(exeext) ] ; then $(LN_S) ../collect-ld$(exeext) stage1 ; else true ; fi - -rm -f stage1/libgcc.a + -if [ -f as$(exeext) ] ; then (cd stage1 && $(LN_S) ../as$(exeext) .) ; else true ; fi + -if [ -f ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../ld$(exeext) .) ; else true ; fi + -if [ -f collect-ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi + -rm -f stage1/libgcc.a stage1/libgcc_eh.a -cp libgcc.a stage1 -if $(RANLIB_TEST_FOR_TARGET) ; then \ $(RANLIB_FOR_TARGET) stage1/libgcc.a; \ else true; fi + -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage1; \ + if $(RANLIB_TEST_FOR_TARGET) ; then \ + $(RANLIB_FOR_TARGET) stage1/libgcc_eh.a; \ + else true; fi; fi -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage1/$${f} . ; \ else true; \ @@ -3055,6 +3207,7 @@ stage1: force stage1-start lang.stage1 stage2-start: -if [ -d stage2 ] ; then true ; else mkdir stage2 ; fi + $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage2 -for dir in intl $(SUBDIRS) ; \ do \ if [ -d stage2/$$dir ] ; then true ; else mkdir stage2/$$dir ; fi ; \ @@ -3063,14 +3216,18 @@ stage2-start: -mv intl/*$(objext) stage2/intl # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. - -if [ -f as$(exeext) ] ; then $(LN_S) ../as$(exeext) stage2 ; else true ; fi - -if [ -f ld$(exeext) ] ; then $(LN_S) ../ld$(exeext) stage2 ; else true ; fi - -if [ -f collect-ld ] ; then $(LN_S) ../collect-ld$(exeext) stage2 ; else true ; fi - -rm -f stage2/libgcc.a + -if [ -f as$(exeext) ] ; then (cd stage2 && $(LN_S) ../as$(exeext) .) ; else true ; fi + -if [ -f ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../ld$(exeext) .) ; else true ; fi + -if [ -f collect-ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi + -rm -f stage2/libgcc.a stage2/libgcc_eh.a -cp libgcc.a stage2 -if $(RANLIB_TEST_FOR_TARGET) ; then \ $(RANLIB_FOR_TARGET) stage2/libgcc.a; \ else true; fi + -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage2; \ + if $(RANLIB_TEST_FOR_TARGET) ; then \ + $(RANLIB_FOR_TARGET) stage2/libgcc_eh.a; \ + else true; fi; fi -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage2/$${f} . ; \ else true; \ @@ -3079,6 +3236,7 @@ stage2: force stage2-start lang.stage2 stage3-start: -if [ -d stage3 ] ; then true ; else mkdir stage3 ; fi + $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage3 -for dir in intl $(SUBDIRS) ; \ do \ if [ -d stage3/$$dir ] ; then true ; else mkdir stage3/$$dir ; fi ; \ @@ -3087,14 +3245,18 @@ stage3-start: -mv intl/*$(objext) stage3/intl # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. - -if [ -f as$(exeext) ] ; then $(LN_S) ../as$(exeext) stage3 ; else true ; fi - -if [ -f ld$(exeext) ] ; then $(LN_S) ../ld$(exeext) stage3 ; else true ; fi - -if [ -f collect-ld$(exeext) ] ; then $(LN_S) ../collect-ld$(exeext) stage3 ; else true ; fi - -rm -f stage3/libgcc.a + -if [ -f as$(exeext) ] ; then (cd stage3 && $(LN_S) ../as$(exeext) .) ; else true ; fi + -if [ -f ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../ld$(exeext) .) ; else true ; fi + -if [ -f collect-ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi + -rm -f stage3/libgcc.a stage3/libgcc_eh.a -cp libgcc.a stage3 -if $(RANLIB_TEST_FOR_TARGET) ; then \ $(RANLIB_FOR_TARGET) stage3/libgcc.a; \ else true; fi + -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage3; \ + if $(RANLIB_TEST_FOR_TARGET) ; then \ + $(RANLIB_FOR_TARGET) stage3/libgcc_eh.a; \ + else true; fi; fi -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage3/$${f} . ; \ else true; \ @@ -3103,6 +3265,7 @@ stage3: force stage3-start lang.stage3 stage4-start: -if [ -d stage4 ] ; then true ; else mkdir stage4 ; fi + $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage4 -for dir in intl $(SUBDIRS) ; \ do \ if [ -d stage4/$$dir ] ; then true ; else mkdir stage4/$$dir ; fi ; \ @@ -3111,14 +3274,18 @@ stage4-start: -mv intl/*$(objext) stage4/intl # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. - -if [ -f as$(exeext) ] ; then $(LN_S) ../as$(exeext) stage4 ; else true ; fi - -if [ -f ld$(exeext) ] ; then $(LN_S) ../ld$(exeext) stage4 ; else true ; fi - -if [ -f collect-ld$(exeext) ] ; then $(LN_S) ../collect-ld$(exeext) stage4 ; else true ; fi - -rm -f stage4/libgcc.a + -if [ -f as$(exeext) ] ; then (cd stage4 && $(LN_S) ../as$(exeext) .) ; else true ; fi + -if [ -f ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../ld$(exeext) .) ; else true ; fi + -if [ -f collect-ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi + -rm -f stage4/libgcc.a stage4/libgcc_eh.a -cp libgcc.a stage4 -if $(RANLIB_TEST_FOR_TARGET) ; then \ $(RANLIB_FOR_TARGET) stage4/libgcc.a; \ else true; fi + -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage4; \ + if $(RANLIB_TEST_FOR_TARGET) ; then \ + $(RANLIB_FOR_TARGET) stage4/libgcc_eh.a; \ + else true; fi; fi -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage4/$${f} . ; \ else true; \ @@ -3129,16 +3296,16 @@ stage4: force stage4-start lang.stage4 # and delete the object files. Use this if you're just verifying a version # that is pretty sure to work, and you are short of disk space. risky-stage1: stage1 - -make clean + -$(MAKE) clean risky-stage2: stage2 - -make clean + -$(MAKE) clean risky-stage3: stage3 - -make clean + -$(MAKE) clean risky-stage4: stage4 - -make clean + -$(MAKE) clean #In GNU Make, ignore whether `stage*' exists. .PHONY: stage1 stage2 stage3 stage4 clean maintainer-clean TAGS bootstrap @@ -3181,7 +3348,7 @@ enquire.o: $(srcdir)/enquire.c $(GCC_PASSES) stmp-int-hdrs fi; \ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(ENQUIRE_CFLAGS) \ -DSYS_FLOAT_H_WRAP=$$SYS_FLOAT_H_WRAP \ - -I. -c $(srcdir)/enquire.c + -I. -c $(srcdir)/enquire.c $(OUTPUT_OPTION) # Create float.h source for the native machine. # Make it empty if we can use the system float.h without changes. @@ -3199,3 +3366,74 @@ float.h-cross: echo "#endif" >> t-float.h-cross mv t-float.h-cross float.h-cross +# Rules for generating translated message descriptions. +# Disabled by autoconf if the tools are not available. + +XGETTEXT = @XGETTEXT@ +GMSGFMT = @GMSGFMT@ +MSGMERGE = msgmerge + +PACKAGE = @PACKAGE@ +CATALOGS = @CATALOGS@ + +.PHONY: build- install- build-po install-po update-po + +# Dummy rules to deal with dependencies produced by use of +# "build-@POSUB@" and "install-@POSUB@" above, when NLS is disabled. +build-: ; @true +install-: ; @true + +build-po: $(CATALOGS) + +# This notation should be acceptable to all Make implementations used +# by people who are interested in updating .po files. +update-po: $(CATALOGS:.gmo=.pox) + +# N.B. We do not attempt to copy these into $(srcdir). The snapshot +# script does that. +.po.gmo: + -test -d po || mkdir po + $(GMSGFMT) --statistics -o $@ $< + +# The new .po has to be gone over by hand, so we deposit it into +# build/po with a different extension. +# If build/po/$(PACKAGE).pot exists, use it (it was just created), +# else use the one in srcdir. +.po.pox: + -test -d po || mkdir po + $(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \ + then echo po/$(PACKAGE).pot; \ + else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@ + +# This rule has to look for .gmo modules in both srcdir and +# the cwd, and has to check that we actually have a catalog +# for each language, in case they weren't built or included +# with the distribution. +install-po: + $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$(datadir) + for cat in $(CATALOGS); do \ + lang=`basename $$cat | sed 's/\.gmo$$//'`; \ + if [ -f $$cat ]; then :; \ + elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + echo $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$$dir; \ + $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$$dir || exit 1; \ + echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ + $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ + done + +# Rule for regenerating the message template (gcc.pot). +# Instead of forcing everyone to edit POTFILES.in, which proved impractical, +# this rule has no dependencies and always regenerates gcc.pot. This is +# relatively harmless since the .po files do not directly depend on it. +# Note that exgettext has an awk script embedded in it which requires a +# fairly modern (POSIX-compliant) awk. +# The .pot file is left in the build directory. +$(PACKAGE).pot: po/$(PACKAGE).pot +po/$(PACKAGE).pot: force + -test -d po || mkdir po + $(MAKE) po-generated + AWK=$(AWK) $(SHELL) $(srcdir)/po/exgettext \ + $(XGETTEXT) $(PACKAGE) $(srcdir) |