Makefile.in revision 117404
118334Speter# Makefile for GNU C compiler.
290081Sobrien#   Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
3110621Skan#   1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
418334Speter
590081Sobrien#This file is part of GCC.
618334Speter
790081Sobrien#GCC is free software; you can redistribute it and/or modify
818334Speter#it under the terms of the GNU General Public License as published by
918334Speter#the Free Software Foundation; either version 2, or (at your option)
1018334Speter#any later version.
1118334Speter
1290081Sobrien#GCC is distributed in the hope that it will be useful,
1318334Speter#but WITHOUT ANY WARRANTY; without even the implied warranty of
1418334Speter#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1518334Speter#GNU General Public License for more details.
1618334Speter
1718334Speter#You should have received a copy of the GNU General Public License
1890081Sobrien#along with GCC; see the file COPYING.  If not, write to
1918334Speter#the Free Software Foundation, 59 Temple Place - Suite 330,
2018334Speter#Boston MA 02111-1307, USA.
2118334Speter
2218334Speter# The targets for external use include:
2318334Speter# all, doc, proto, install, install-cross, install-cross-rest,
2418334Speter# uninstall, TAGS, mostlyclean, clean, distclean, maintainer-clean,
2518334Speter# stage1, stage2, stage3, stage4.
2618334Speter
2790081Sobrien# This is the default target.
2890081Sobrienall:
2990081Sobrien
3018334Speter# Suppress smart makes who think they know how to automake Yacc files
3118334Speter.y.c:
3218334Speter
3350448Sobrien# Directory where sources are, from where we are.
3450448Sobriensrcdir = @srcdir@
3550448SobrienVPATH = @srcdir@
3650448Sobrien
3790081Sobrien# Pointer to the GCC Project website
3890081Sobrienwebsite=http://gcc.gnu.org
3990081Sobrien
4018334Speter# Variables that exist for you to override.
4118334Speter# See below for how to change them for certain systems.
4218334Speter
4318334Speter# List of language subdirectories.
4418334Speter# This is overridden by configure.
4550448SobrienSUBDIRS =@subdirs@
4618334Speter
4718334Speter# Selection of languages to be made.
4818334Speter# This is overridden by configure.
4952298SobrienCONFIG_LANGUAGES = @all_languages@
5090081SobrienLANGUAGES = c gcov$(exeext) $(CONFIG_LANGUAGES)
5118334Speter
5250448Sobrien# Selection of languages to be made during stage1 build.
5350448Sobrien# This is overridden by configure.
5450448SobrienBOOT_LANGUAGES = c @all_boot_languages@
5550448Sobrien
5690081Sobrien# Various ways of specifying flags for compilations:
5790081Sobrien# CFLAGS is for the user to override to, e.g., do a cross build with -O2.
5890081Sobrien# For recursive  bootstrap builds CFLAGS is used to pass in STAGE1_CFLAGS
5990081Sobrien# or BOOT_CFLAGS
6090081Sobrien# STAGE1_CFLAGS is set by configure on some targets or passed from toplevel
6190081Sobrien# and sets the CFLAGS passed to stage1 of a bootstrap compilation.
6290081Sobrien# BOOT_CFLAGS is the value of CFLAGS to pass to the stage2, stage3 and stage4
6390081Sobrien# bootstrap compilations.
6418334Speter# XCFLAGS is used for most compilations but not when using the GCC just built.
6550448Sobrien# TCFLAGS is used for compilations with the GCC just built.
6618334SpeterXCFLAGS =
6750448SobrienTCFLAGS =
6818334SpeterCFLAGS = -g
6990081SobrienSTAGE1_CFLAGS = -g @stage1_cflags@
7090081SobrienBOOT_CFLAGS = -g -O2
7190081Sobrien
72117404Skan# Flags to determine code coverage. When coverage is disabled, this will
73117404Skan# contain the optimization flags, as you normally want code coverage
74117404Skan# without optimization. The -dumpbase $@ makes sure that the auxilary
75117404Skan# files end up near the object files.
76117404SkanCOVERAGE_FLAGS = @coverage_flags@
77117404Skancoverageexts = .{da,bb,bbg}
78117404Skan
7990081Sobrien# The warning flags are separate from BOOT_CFLAGS because people tend to
8090081Sobrien# override optimization flags and we'd like them to still have warnings
8190081Sobrien# turned on.  These flags are also used to pass other stage dependent
8290081Sobrien# flags from configure.  The user is free to explicitly turn these flags
8390081Sobrien# off if they wish.
8490081Sobrien# LOOSE_WARN are the warning flags to use when compiling something
8590081Sobrien# which is only compiled with gcc, such as libgcc and the frontends
8690081Sobrien# other than C.
8790081Sobrien# STRICT_WARN and STRICT2_WARN are the additional warning flags to
8890081Sobrien# apply to the back end and the C front end, which may be compiled
8990081Sobrien# with other compilers.  This is partially controlled by configure in
9090081Sobrien# stage1, as not all versions of gcc understand -Wno-long-long.
9190081SobrienLOOSE_WARN = -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
9290081SobrienSTRICT_WARN = -Wtraditional @strict1_warn@
9390081SobrienSTRICT2_WARN = -Wtraditional -pedantic -Wno-long-long
9490081Sobrien
95117404Skan# This is set by --enable-checking.  The idea is to catch forgotten
96117404Skan# "extern" tags in header files.
97117404SkanNOCOMMON_FLAG = @nocommon_flag@
98117404Skan
99117404Skan# These are set by --enable-checking=valgrind.
100117404SkanRUN_GEN = @valgrind_command@
101117404SkanVALGRIND_DRIVER_DEFINES = @valgrind_path_defines@
102117404Skan
10390081Sobrien# This is how we control whether or not the additional warnings are applied.
10490081Sobrien.-warn = $(STRICT_WARN)
105117404SkanGCC_WARN_CFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG)
10690081Sobrien
10790081Sobrien# All warnings have to be shut off in stage1 if the compiler used then
10890081Sobrien# isn't gcc; configure determines that.  WARN_CFLAGS will be either
10990081Sobrien# $(GCC_WARN_CFLAGS), or nothing.
11090081SobrienWARN_CFLAGS = @warn_cflags@
11190081Sobrien
11218334Speter# These exists to be overridden by the x-* and t-* files, respectively.
11318334SpeterX_CFLAGS =
11418334SpeterT_CFLAGS =
11518334Speter
11618334SpeterX_CPPFLAGS =
11718334SpeterT_CPPFLAGS =
11818334Speter
119117404SkanADAC = @ADAC@
12052298SobrienAWK = @AWK@
12150448SobrienCC = @CC@
12290081SobrienBISON = @BISON@
12318334SpeterBISONFLAGS =
12490081SobrienFLEX = @FLEX@
12590081SobrienFLEXFLAGS =
12618334SpeterAR = ar
12718334SpeterAR_FLAGS = rc
12850448SobrienDLLTOOL = dlltool
12990081SobrienRANLIB = @RANLIB@
130117404SkanSHELL = @SHELL@
131117404Skan# pwd command to use.  Allow user to override default by setting PWDCMD in
132117404Skan# the environment to account for automounters.  The make variable must not
133117404Skan# be called PWDCMD, otherwise the value set here is passed to make
134117404Skan# subprocesses and overrides the setting from the user's environment.
135117404Skan# Don't use PWD since it is a common shell environment variable and we
136117404Skan# don't want to corrupt it.
137117404SkanPWD_COMMAND = $${PWDCMD-pwd}
13818334Speter# on sysV, define this as cp.
13950448SobrienINSTALL = @INSTALL@
14050448Sobrien# Some systems may be missing symbolic links, regular links, or both.
14150448Sobrien# Allow configure to check this and use "ln -s", "ln", or "cp" as appropriate.
14250448SobrienLN=@LN@
14350448SobrienLN_S=@LN_S@
14418334Speter# These permit overriding just for certain files.
14550448SobrienINSTALL_PROGRAM = @INSTALL_PROGRAM@
14650448SobrienINSTALL_DATA = @INSTALL_DATA@
14790081SobrienINSTALL_SCRIPT = @INSTALL@
14890081SobrienMAKEINFO = @MAKEINFO@
14950448SobrienMAKEINFOFLAGS =
15018334SpeterTEXI2DVI = texi2dvi
15190081SobrienTEXI2POD = perl $(srcdir)/../contrib/texi2pod.pl
15290081SobrienPOD2MAN = pod2man --center="GNU" --release="gcc-$(version)"
15318334Speter# For GNUmake: let us decide what gets passed to recursive makes.
15418334SpeterMAKEOVERRIDES =
15550448Sobrien@SET_MAKE@
15690081Sobrien# Some compilers can't handle cc -c blah.c -o foo/blah.o.
15790081Sobrien# In stage2 and beyond, we force this to "-o $@" since we know we're using gcc.
15890081SobrienOUTPUT_OPTION = @OUTPUT_OPTION@
15918334Speter
16090081Sobrien# Some versions of `touch' (such as the version on Solaris 2.8)
16190081Sobrien# do not correctly set the timestamp due to buggy versions of `utime'
16290081Sobrien# in the kernel.  So, we use `echo' instead.
16390081SobrienSTAMP = echo timestamp >
16418334Speter
16590081Sobrien# This is where we get zlib from.  zlibdir is -L../zlib and zlibinc is
16690081Sobrien# -I../zlib, unless we were configured with --with-system-zlib, in which
16790081Sobrien# case both are empty.
16890081SobrienZLIB = @zlibdir@ -lz
16990081SobrienZLIBINC = @zlibinc@
17018334Speter
17190081Sobrien# Substitution type for target's getgroups 2nd arg.
17290081SobrienTARGET_GETGROUPS_T = @TARGET_GETGROUPS_T@
17318334Speter
17418334Speter# Target to use when installing include directory.  Either
17590081Sobrien# install-headers-tar, install-headers-cpio or install-headers-cp.
17650448SobrienINSTALL_HEADERS_DIR = @build_install_headers_dir@
17718334Speter
17818334Speter# Header files that are made available under the same name
17918334Speter# to programs compiled with GCC.
180117404SkanUSER_H = $(srcdir)/ginclude/float.h \
181117404Skan	 $(srcdir)/ginclude/iso646.h \
182117404Skan	 $(srcdir)/ginclude/stdarg.h \
183117404Skan	 $(srcdir)/ginclude/stdbool.h \
184117404Skan	 $(srcdir)/ginclude/stddef.h \
185117404Skan	 $(srcdir)/ginclude/varargs.h \
186117404Skan	 $(srcdir)/unwind.h \
187117404Skan	 $(EXTRA_HEADERS)
18818334Speter
189117404Skan# The GCC to use for compiling libgcc.a and crt*.o.
19018334Speter# Usually the one we just built.
19118334Speter# Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS).
192117404SkanGCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include
19318334Speter
19418334Speter# This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
19518334Speter# It omits XCFLAGS, and specifies -B./.
19690081Sobrien# It also specifies -isystem ./include to find, e.g., stddef.h.
19790081SobrienGCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -isystem ./include $(TCFLAGS)
19818334Speter
19918334Speter# Sed command to transform gcc to installed name.  Overwritten by configure.
20050448Sobrienprogram_transform_name = @program_transform_name@
20150448Sobrienprogram_transform_cross_name = s,^,$(target_alias)-,
20218334Speter
20350448Sobrienbuild_canonical = @build_canonical@
20450448Sobrienhost_canonical = @host_canonical@
20550448Sobrien
20618334Speter# Tools to use when building a cross-compiler.
20718334Speter# These are used because `configure' appends `cross-make'
20818334Speter# to the makefile when making a cross-compiler.
20918334Speter
21050448Sobrien# Use the tools from the build tree, if they are available.
21150448Sobrien
21250448Sobrien# objdir is set by configure.
21350448Sobrienobjdir = @objdir@
21450448Sobrien
21550448SobrienAR_FOR_TARGET = ` \
21650448Sobrien  if [ -f $(objdir)/../binutils/ar ] ; then \
21750448Sobrien    echo $(objdir)/../binutils/ar ; \
21850448Sobrien  else \
21950448Sobrien    if [ "$(host_canonical)" = "$(target)" ] ; then \
22050448Sobrien      echo ar; \
22150448Sobrien    else \
22290081Sobrien       t='$(program_transform_cross_name)'; echo ar | sed -e $$t ; \
22350448Sobrien    fi; \
22450448Sobrien  fi`
22590081SobrienAR_FLAGS_FOR_TARGET =
22690081SobrienAR_CREATE_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) rc
22790081SobrienAR_EXTRACT_FOR_TARGET = $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) x
22850448SobrienRANLIB_FOR_TARGET = ` \
22950448Sobrien  if [ -f $(objdir)/../binutils/ranlib ] ; then \
23050448Sobrien    echo $(objdir)/../binutils/ranlib ; \
23150448Sobrien  else \
23250448Sobrien    if [ "$(host_canonical)" = "$(target)" ] ; then \
23350448Sobrien      echo ranlib; \
23450448Sobrien    else \
23590081Sobrien       t='$(program_transform_cross_name)'; echo ranlib | sed -e $$t ; \
23650448Sobrien    fi; \
23750448Sobrien  fi`
23850448SobrienRANLIB_TEST_FOR_TARGET = \
23950448Sobrien  [ -f $(RANLIB_FOR_TARGET) ] \
24050448Sobrien  || ( [ "$(host_canonical)" = "$(target)" ] \
24150448Sobrien       && [ -f /usr/bin/ranlib -o -f /bin/ranlib ] )
24290081SobrienNM_FOR_TARGET = ` \
24390081Sobrien  if [ -f ./nm ] ; then \
24490081Sobrien    echo ./nm ; \
24590081Sobrien  elif [ -f $(objdir)/../binutils/nm-new ] ; then \
24690081Sobrien    echo $(objdir)/../binutils/nm-new ; \
24790081Sobrien  else \
24890081Sobrien    if [ "$(host_canonical)" = "$(target)" ] ; then \
24990081Sobrien      echo nm; \
25090081Sobrien    else \
25190081Sobrien       t='$(program_transform_cross_name)'; echo nm | sed -e $$t ; \
25290081Sobrien    fi; \
25390081Sobrien  fi`
25418334Speter
25590081Sobrien# Where to find some libiberty headers.
25690081SobrienHASHTAB_H   = $(srcdir)/../include/hashtab.h
25790081SobrienOBSTACK_H   = $(srcdir)/../include/obstack.h
25890081SobrienSPLAY_TREE_H= $(srcdir)/../include/splay-tree.h
25990081SobrienFIBHEAP_H   = $(srcdir)/../include/fibheap.h
260117404SkanPARTITION_H = $(srcdir)/../include/partition.h
26118334Speter
26290081Sobrien# Default native SYSTEM_HEADER_DIR, to be overridden by targets.
26390081SobrienNATIVE_SYSTEM_HEADER_DIR = /usr/include
26490081Sobrien# Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
26590081SobrienCROSS_SYSTEM_HEADER_DIR = $(build_tooldir)/sys-include
26618334Speter
26790081Sobrien# autoconf sets SYSTEM_HEADER_DIR to one of the above.
26890081SobrienSYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@
26990081Sobrien
27090081Sobrien# Control whether to run fixproto and fixincludes.
27190081SobrienSTMP_FIXPROTO = @STMP_FIXPROTO@
27290081SobrienSTMP_FIXINC = @STMP_FIXINC@
27390081Sobrien
27418334Speter# Test to see whether <limits.h> exists in the system header files.
27518334SpeterLIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
27618334Speter
27750448Sobrientarget=@target@
27850448Sobrientarget_alias=@target_alias@
27950448Sobrienxmake_file=@dep_host_xmake_file@
28050448Sobrientmake_file=@dep_tmake_file@
28150448Sobrienout_file=$(srcdir)/config/@out_file@
28250448Sobrienout_object_file=@out_object_file@
28350448Sobrienmd_file=$(srcdir)/config/@md_file@
284117404Skantm_defines=@tm_defines@
28590081Sobrientm_p_file_list=@tm_p_file_list@
28690081Sobrientm_p_file=@tm_p_file@
28790081Sobrienbuild_xm_file_list=@build_xm_file_list@
28890081Sobrienbuild_xm_file=@build_xm_file@
28990081Sobrienbuild_xm_defines=@build_xm_defines@
29090081Sobrienhost_xm_file_list=@host_xm_file_list@
29190081Sobrienhost_xm_file=@host_xm_file@
29290081Sobrienhost_xm_defines=@host_xm_defines@
29390081Sobrienxm_file=@xm_file@
29490081Sobrienxm_defines=@xm_defines@
29550448Sobrienlang_specs_files=@lang_specs_files@
29650448Sobrienlang_options_files=@lang_options_files@
29752298Sobrienlang_tree_files=@lang_tree_files@
29890081Sobrientarget_cpu_default=@target_cpu_default@
29950448SobrienGCC_THREAD_FILE=@thread_file@
30052298SobrienOBJC_BOEHM_GC=@objc_boehm_gc@
30150448SobrienGTHREAD_FLAGS=@gthread_flags@
30250448Sobrien# Be prepared for gcc2 merges.
30350448Sobriengcc_version=@gcc_version@
30450448Sobriengcc_version_trigger=@gcc_version_trigger@
30550448Sobrienversion=$(gcc_version)
30690081Sobrienmainversion=`grep version_string $(srcdir)/version.c | sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/'`
30718334Speter
30818334Speter# Common prefix for installation directories.
30918334Speter# NOTE: This directory must exist when you start installation.
31050448Sobrienprefix = @prefix@
31118334Speter# Directory in which to put localized header files. On the systems with
31218334Speter# gcc as the native cc, `local_prefix' may not be `prefix' which is
31318334Speter# `/usr'.
31418334Speter# NOTE: local_prefix *should not* default from prefix.
31550448Sobrienlocal_prefix = @local_prefix@
31618334Speter# Directory in which to put host dependent programs and libraries
31750448Sobrienexec_prefix = @exec_prefix@
31818334Speter# Directory in which to put the executable for the command `gcc'
31950448Sobrienbindir = @bindir@
32018334Speter# Directory in which to put the directories used by the compiler.
32150448Sobrienlibdir = @libdir@
32218334Speter# Directory in which the compiler finds executables, libraries, etc.
32350448Sobrienlibsubdir = $(libdir)/gcc-lib/$(target_alias)/$(version)
32452298Sobrien# Used to produce a relative $(gcc_tooldir) in gcc.o
32552298Sobrienunlibsubdir = ../../..
32652298Sobrien# Directory in which to find other cross-compilation tools and headers.
32752298Sobriendollar = @dollar@
32852298Sobrien# Used in install-cross.
32952298Sobriengcc_tooldir = @gcc_tooldir@
33090081Sobrien# Used to install the shared libgcc.
33190081Sobrienslibdir = @slibdir@
33290081Sobrien# Since gcc_tooldir does not exist at build-time, use -B$(build_tooldir)/bin/
33352298Sobrienbuild_tooldir = $(exec_prefix)/$(target_alias)
33490081Sobrien# Directory in which the compiler finds target-independent g++ includes.
33590081Sobriengcc_gxx_include_dir = @gcc_gxx_include_dir@
33618334Speter# Directory to search for site-specific includes.
33790081Sobrienlocal_includedir = $(local_prefix)/include
33890081Sobrienincludedir = $(prefix)/include
33918334Speter# where the info files go
34050448Sobrieninfodir = @infodir@
34150448Sobrien# Where cpp should go besides $prefix/bin if necessary
34250448Sobriencpp_install_dir = @cpp_install_dir@
34352298Sobrien# where the locale files go
34490081Sobriendatadir = @datadir@
34552298Sobrienlocaledir = $(datadir)/locale
34618334Speter# Extension (if any) to put in installed man-page filename.
34790081Sobrienman1ext = .1
34890081Sobrienman7ext = .7
34918334Speterobjext = .o
35050448Sobrienexeext = @host_exeext@
35150448Sobrienbuild_exeext = @build_exeext@
35218334Speter
35318334Speter# Directory in which to put man pages.
35452298Sobrienmandir = @mandir@
35552298Sobrienman1dir = $(mandir)/man1
35690081Sobrienman7dir = $(mandir)/man7
35718334Speter# Dir for temp files.
35818334Spetertmpdir = /tmp
35918334Speter
36052298Sobrien# Top build directory, relative to here.
36152298Sobrientop_builddir = .
36252298Sobrien
36352298Sobrien# Whether we were configured with NLS.
36452298SobrienUSE_NLS = @USE_NLS@
36552298Sobrien
36652298Sobrien# Internationalization library.
36752298SobrienINTLLIBS = @INTLLIBS@
36890081SobrienINTLDEPS = @INTLDEPS@
36952298Sobrien
37090081Sobrien# Character encoding conversion library.
37190081SobrienLIBICONV = @LIBICONV@
37290081Sobrien
37352298Sobrien# List of internationalization subdirectories.
37490081SobrienINTL_SUBDIRS = intl
37552298Sobrien
37690081Sobrien# The GC method to be used on this system.
37790081SobrienGGC=@GGC@.o
37818334Speter
37990081Sobrien# If a supplementary library is being used for the GC.
38090081SobrienGGC_LIB=
38118334Speter
38290081Sobrien# libgcc.a may be built directly or via stmp-multilib,
38390081Sobrien# and installed likewise.  Overridden by t-fragment.
38418334SpeterLIBGCC = libgcc.a
38518334SpeterINSTALL_LIBGCC = install-libgcc
38618334Speter
38718334Speter# Options to use when compiling libgcc2.a.
38850448Sobrien#
38996273SobrienLIBGCC2_DEBUG_CFLAGS = -g
39090081SobrienLIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED @inhibit_libc@
39118334Speter
39218334Speter# Additional options to use when compiling libgcc2.a.
39390081Sobrien# Some targets override this to -isystem include
39418334SpeterLIBGCC2_INCLUDES =
39518334Speter
39618334Speter# Additional target-dependent options for compiling libgcc2.a.
39790081SobrienTARGET_LIBGCC2_CFLAGS =
39818334Speter
39990081Sobrien# Options to use when compiling crtbegin/end.
40090081SobrienCRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
401117404Skan  -finhibit-size-directive -fno-inline-functions -fno-exceptions \
402117404Skan  -fno-zero-initialized-in-bss
40318334Speter
40490081Sobrien# Additional sources to handle exceptions; overridden on ia64.
40590081SobrienLIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \
406117404Skan  $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
40790081SobrienLIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h
40818334Speter
40990081Sobrien# nm flags to list global symbols in libgcc object files.
41090081SobrienSHLIB_NM_FLAGS = -pg
41190081Sobrien
41218334Speter# List of extra executables that should be compiled for this target machine
41318334Speter# that are used for compiling from source code to object code.
41418334Speter# The rules for compiling them should be in the t-* file for the machine.
41550448SobrienEXTRA_PASSES =@extra_passes@
41618334Speter
41718334Speter# Like EXTRA_PASSES, but these are used when linking.
41850448SobrienEXTRA_PROGRAMS = @extra_programs@
41918334Speter
42018334Speter# List of extra object files that should be compiled for this target machine.
42118334Speter# The rules for compiling them should be in the t-* file for the machine.
42250448SobrienEXTRA_PARTS = @extra_parts@
42318334Speter
42418334Speter# List of extra object files that should be compiled and linked with
42518334Speter# compiler proper (cc1, cc1obj, cc1plus).
42650448SobrienEXTRA_OBJS = @extra_objs@
42718334Speter
42818334Speter# List of extra object files that should be compiled and linked with
42918334Speter# the gcc driver.
43050448SobrienEXTRA_GCC_OBJS =@host_extra_gcc_objs@
43118334Speter
43218334Speter# List of additional header files to install.
43318334Speter# Often this is edited directly by `configure'.
43450448SobrienEXTRA_HEADERS =@extra_headers_list@
43518334Speter
43618334Speter# It is convenient for configure to add the assignment at the beginning,
43718334Speter# so don't override it here.
43850448SobrienUSE_COLLECT2 = collect2$(exeext)
43918334Speter
44090081Sobrien# List of extra C and assembler files to add to static and shared libgcc2.
44118334Speter# Assembler files should have names ending in `.asm'.
44290081SobrienLIB2FUNCS_EXTRA =
44318334Speter
44490081Sobrien# List of extra C and assembler files to add to static libgcc2.
44518334Speter# Assembler files should have names ending in `.asm'.
44690081SobrienLIB2FUNCS_STATIC_EXTRA =
44718334Speter
44818334Speter# Program to convert libraries.
44990081SobrienLIBCONVERT =
45018334Speter
45118334Speter# Control whether header files are installed.
452117404SkanINSTALL_HEADERS=install-headers install-mkheaders
45318334Speter
45490081Sobrien# Control whether Info documentation is built and installed.
45590081SobrienBUILD_INFO = @BUILD_INFO@
45618334Speter
45790081Sobrien# Control whether manpages generated by texi2pod.pl can be rebuilt.
45890081SobrienGENERATED_MANPAGES = @GENERATED_MANPAGES@
45990081Sobrien
46018334Speter# Additional directories of header files to run fixincludes on.
46118334Speter# These should be directories searched automatically by default
46218334Speter# just as /usr/include is.
46390081Sobrien# *Do not* use this for directories that happen to contain
46418334Speter# header files, but are not searched automatically by default.
46518334Speter# On most systems, this is empty.
46618334SpeterOTHER_FIXINCLUDES_DIRS=
46718334Speter
46850448Sobrien# A list of all the language-specific executables.
46950448Sobrien# This is overridden by configure.
47050448SobrienCOMPILERS = cc1$(exeext) @all_compilers@
47150448Sobrien
47218334Speter# List of things which should already be built whenever we try to use xgcc
47318334Speter# to compile anything (without linking).
474117404SkanGCC_PASSES=xgcc$(exeext) cc1$(exeext) specs $(EXTRA_PASSES)
47518334Speter
47618334Speter# List of things which should already be built whenever we try to use xgcc
47718334Speter# to link anything.
47818334SpeterGCC_PARTS=$(GCC_PASSES) $(LIBGCC) $(EXTRA_PROGRAMS) $(USE_COLLECT2) $(EXTRA_PARTS)
47918334Speter
48018334Speter# Directory to link to, when using the target `maketest'.
48118334SpeterDIR = ../gcc
48218334Speter
48318334Speter# Flags to use when cross-building GCC.
48418334Speter# Prefix to apply to names of object files when using them
48518334Speter# to run on the machine we are compiling on.
486117404SkanBUILD_PREFIX = @BUILD_PREFIX@
48718334Speter# Prefix to apply to names of object files when compiling them
48818334Speter# to run on the machine we are compiling on.
48990081Sobrien# The default for this variable is chosen to keep these rules
49018334Speter# out of the way of the other rules for compiling the same source files.
491117404SkanBUILD_PREFIX_1 = @BUILD_PREFIX_1@
49290081Sobrien# Native compiler for the build machine and its switches.
49390081SobrienHOST_CC = @HOST_CC@
49490081SobrienHOST_CFLAGS= @HOST_CFLAGS@ -DGENERATOR_FILE
49590081Sobrien
49690081Sobrien# Native linker and preprocessor flags.  For x-fragment overrides.
49718334SpeterHOST_LDFLAGS=$(LDFLAGS)
49818334SpeterHOST_CPPFLAGS=$(ALL_CPPFLAGS)
49918334Speter
50018334Speter# Actual name to use when installing a native compiler.
50190081SobrienGCC_INSTALL_NAME = `echo gcc|sed '$(program_transform_name)'`
50290081SobrienGCC_TARGET_INSTALL_NAME = $(target_alias)-`echo gcc|sed '$(program_transform_name)'`
50390081SobrienCPP_INSTALL_NAME = `echo cpp|sed '$(program_transform_name)'`
50490081SobrienPROTOIZE_INSTALL_NAME = `echo protoize|sed '$(program_transform_name)'`
50590081SobrienUNPROTOIZE_INSTALL_NAME = `echo unprotoize|sed '$(program_transform_name)'`
50690081SobrienGCOV_INSTALL_NAME = `echo gcov|sed '$(program_transform_name)'`
50790081SobrienGCCBUG_INSTALL_NAME = `echo gccbug|sed '$(program_transform_name)'`
50818334Speter
50918334Speter# Actual name to use when installing a cross-compiler.
51090081SobrienGCC_CROSS_NAME = `echo gcc|sed '$(program_transform_cross_name)'`
51190081SobrienCPP_CROSS_NAME = `echo cpp|sed '$(program_transform_cross_name)'`
51290081SobrienPROTOIZE_CROSS_NAME = `echo protoize|sed '$(program_transform_cross_name)'`
51390081SobrienUNPROTOIZE_CROSS_NAME = `echo unprotoize|sed '$(program_transform_cross_name)'`
51418334Speter
51590081Sobrien# Set by autoconf to "all.internal" for a native build, or
51690081Sobrien# "all.cross" to build a cross compiler.
51790081SobrienALL = @ALL@
51818334Speter
51950448Sobrien# Setup the testing framework, if you have one
52050448SobrienEXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
52150448Sobrien            echo $${rootme}/../expect/expect ; \
52250448Sobrien          else echo expect ; fi`
52318334Speter
52450448SobrienRUNTEST = `if [ -f $${srcdir}/../dejagnu/runtest ] ; then \
52550448Sobrien	       echo $${srcdir}/../dejagnu/runtest ; \
52650448Sobrien	    else echo runtest; fi`
52750448SobrienRUNTESTFLAGS =
52850448Sobrien
52918334Speter# Extra symbols for fixproto to define when parsing headers.
53090081SobrienFIXPROTO_DEFINES =
53118334Speter
53218334Speter# Extra flags to use when compiling crt{begin,end}.o.
53390081SobrienCRTSTUFF_T_CFLAGS =
53418334Speter
53550448Sobrien# Extra flags to use when compiling [m]crt0.o.
53690081SobrienCRT0STUFF_T_CFLAGS =
53750448Sobrien
53850448Sobrien# "t" or nothing, for building multilibbed versions of, say, crtbegin.o.
53950448SobrienT =
54050448Sobrien
54190081Sobrien# Should T contain a `=', libgcc.mk will make T_TARGET, setting
54290081Sobrien# $(T_TARGET) to the name of the actual target filename.
54390081SobrienT_TARGET =
54490081SobrienT_TARGET : $(T_TARGET)
54590081Sobrien
54618334Speter# End of variables for you to override.
54718334Speter
54818334Speter# Definition of `all' is here so that new rules inserted by sed
54918334Speter# do not specify the default target.
55018334Speter# The real definition is under `all.internal' (for native compilers)
55118334Speter# or `all.cross' (for cross compilers).
55218334Speterall: all.indirect
55318334Speter
55418334Speter# This tells GNU Make version 3 not to put all variables in the environment.
55518334Speter.NOEXPORT:
55618334Speter
55790081Sobrien# GCONFIG_H lists the config files that the generator files depend on, while
558117404Skan# CONFIG_H lists the ones ordinary gcc files depend on, which includes
55990081Sobrien# several files generated by those generators.
56090081SobrienGCONFIG_H = config.h $(host_xm_file_list)
56190081SobrienHCONFIG_H = hconfig.h $(build_xm_file_list)
56290081SobrienCONFIG_H = $(GCONFIG_H) insn-constants.h insn-flags.h
56390081SobrienTCONFIG_H = tconfig.h $(xm_file_list)
56490081SobrienTARGET_H = target.h
56596273SobrienHOOKS_H = hooks.h
566117404SkanLANGHOOKS_DEF_H = langhooks-def.h $(HOOKS_H)
56796273SobrienTARGET_DEF_H = target-def.h $(HOOKS_H)
56890081SobrienTM_P_H = tm_p.h $(tm_p_file_list) tm-preds.h
56990081Sobrien
570117404SkanMACHMODE_H = machmode.h machmode.def @extra_modes_file@
57190081SobrienRTL_BASE_H = rtl.h rtl.def $(MACHMODE_H)
57290081SobrienRTL_H = $(RTL_BASE_H) genrtl.h
57390081SobrienPARAMS_H = params.h params.def
574117404SkanTREE_H = tree.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def \
575117404Skan          location.h
576117404SkanBASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h $(PARTITION_H) \
577117404Skan          hard-reg-set.h
57890081SobrienDEMANGLE_H = $(srcdir)/../include/demangle.h
57990081SobrienRECOG_H = recog.h
58090081SobrienEXPR_H = expr.h
58190081SobrienOPTABS_H = optabs.h insn-codes.h
58290081SobrienREGS_H = regs.h varray.h $(MACHMODE_H)
58390081SobrienINTEGRATE_H = integrate.h varray.h
58490081SobrienLOOP_H = loop.h varray.h bitmap.h
58590081SobrienGCC_H = gcc.h version.h
586117404SkanGGC_H = ggc.h varray.h gtype-desc.h
58790081SobrienTIMEVAR_H = timevar.h timevar.def
58890081SobrienINSN_ATTR_H = insn-attr.h $(srcdir)/insn-addr.h $(srcdir)/varray.h
589117404SkanC_COMMON_H = c-common.h $(SPLAY_TREE_H) $(CPPLIB_H)
59090081SobrienC_TREE_H = c-tree.h $(C_COMMON_H)
59190081SobrienSYSTEM_H = system.h hwint.h $(srcdir)/../include/libiberty.h
59290081SobrienPREDICT_H = predict.h predict.def
59390081SobrienCPPLIB_H = cpplib.h line-map.h
59490081Sobrien
59518334Speter# sed inserts variable overrides after the following line.
59618334Speter####target overrides
59750448Sobrien@target_overrides@
59850448Sobrien
59918334Speter####host overrides
60050448Sobrien@host_overrides@
60150448Sobrien#
60218334Speter# Now figure out from those variables how to compile and link.
60318334Speter
60418334Speterall.indirect: $(ALL)
60518334Speter
60690081Sobrien# IN_GCC distinguishes between code compiled into GCC itself and other
60790081Sobrien# programs built during a bootstrap.
60890081Sobrien# autoconf inserts -DCROSS_COMPILE if we are building a cross compiler.
60990081SobrienINTERNAL_CFLAGS = -DIN_GCC @CROSS@
61018334Speter
61118334Speter# This is the variable actually used when we compile.
61252298Sobrien# If you change this line, you probably also need to change the definition
61352298Sobrien# of HOST_CFLAGS in build-make to match.
614117404SkanALL_CFLAGS = $(X_CFLAGS) $(T_CFLAGS) \
615117404Skan  $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) $(XCFLAGS) @DEFS@
61618334Speter
61718334Speter# Likewise.
61818334SpeterALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS)
61918334Speter
62090081Sobrien# Build and host support libraries.  FORBUILD is either
62190081Sobrien# .. or ../$(build_alias) depending on whether host != build.
62290081SobrienLIBIBERTY = ../libiberty/libiberty.a
62390081SobrienBUILD_LIBIBERTY = @FORBUILD@/libiberty/libiberty.a
62418334Speter
62590081Sobrien# Dependencies on the intl and portability libraries.
62690081SobrienLIBDEPS= $(INTLDEPS) $(LIBIBERTY)
62718334Speter
62818334Speter# Likewise, for use in the tools that must run on this machine
62918334Speter# even if we are cross-building GCC.
63090081SobrienHOST_LIBDEPS= $(BUILD_LIBIBERTY)
63118334Speter
63218334Speter# How to link with both our special library facilities
63318334Speter# and the system's installed libraries.
63490081SobrienLIBS =	$(INTLLIBS) @LIBS@ $(LIBIBERTY)
63518334Speter
636117404Skan# Any system libraries needed just for GNAT.
637117404SkanSYSLIBS = @GNAT_LIBEXC@
638117404Skan
639117404Skan# Libs needed (at present) just for jcf-dump.
640117404SkanLDEXP_LIB = @LDEXP_LIB@
641117404Skan
64218334Speter# Likewise, for use in the tools that must run on this machine
64318334Speter# even if we are cross-building GCC.
64490081SobrienHOST_LIBS = $(BUILD_LIBIBERTY)
64518334Speter
646117404SkanHOST_RTL = $(BUILD_PREFIX)rtl.o read-rtl.o $(BUILD_PREFIX)bitmap.o \
647117404Skan		$(BUILD_PREFIX)ggc-none.o
648117404SkanHOST_SUPPORT = gensupport.o insn-conditions.o
649117404SkanHOST_EARLY_SUPPORT = gensupport.o dummy-conditions.o
65090081Sobrien
651117404SkanHOST_PRINT = print-rtl1.o
652117404SkanHOST_ERRORS = $(BUILD_PREFIX)errors.o
653117404SkanHOST_VARRAY = $(BUILD_PREFIX)varray.o
65418334Speter
65518334Speter# Specify the directories to be searched for header files.
65618334Speter# Both . and srcdir are used, in that order,
65790081Sobrien# so that *config.h will be found in the compilation
65818334Speter# subdirectory rather than in the source directory.
65990081Sobrien# -I$(@D) and -I$(srcdir)/$(@D) cause the subdirectory of the file
66090081Sobrien# currently being compiled, in both source trees, to be examined as well.
66190081SobrienINCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
66290081Sobrien	   -I$(srcdir)/config -I$(srcdir)/../include
66318334Speter
66418334Speter# Always use -I$(srcdir)/config when compiling.
66518334Speter.c.o:
66690081Sobrien	$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
66718334Speter
66818334Speter# This tells GNU make version 3 not to export all the variables
66918334Speter# defined in this file into the environment.
67018334Speter.NOEXPORT:
67150448Sobrien#
67218334Speter# Support for additional languages (other than c and objc).
67318334Speter# ??? objc can be supported this way too (leave for later).
67418334Speter
67518334Speter# These next lines are overridden by configure.
67650448SobrienLANG_MAKEFILES = @all_lang_makefiles@
67750448SobrienLANG_STAGESTUFF = @all_stagestuff@
67818334Speter
67918334Speter# Flags to pass to recursive makes.
68018334Speter# CC is set by configure.  Hosts without symlinks need special handling
68118334Speter# because we need CC="stage1/xgcc -Bstage1/" to work in the language
68218334Speter# subdirectories.
68318334Speter# ??? The choices here will need some experimenting with.
68452298SobrienORDINARY_FLAGS_TO_PASS = \
68552298Sobrien	"AR_FLAGS_FOR_TARGET=$(AR_FLAGS_FOR_TARGET)" \
68690081Sobrien	"AR_CREATE_FOR_TARGET=$(AR_CREATE_FOR_TARGET)" \
68790081Sobrien	"AR_EXTRACT_FOR_TARGET=$(AR_EXTRACT_FOR_TARGET)" \
68818334Speter	"AR_FOR_TARGET=$(AR_FOR_TARGET)" \
68918334Speter	"BISON=$(BISON)" \
69018334Speter	"BISONFLAGS=$(BISONFLAGS)" \
69190081Sobrien	"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
692110621Skan	"DESTDIR=$(DESTDIR)" \
69318334Speter	"GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
69418334Speter	"LDFLAGS=$(LDFLAGS)" \
69590081Sobrien	"FLEX=$(FLEX)" \
69690081Sobrien	"FLEXFLAGS=$(FLEXFLAGS)" \
69750448Sobrien	"LN=$(LN)" \
69850448Sobrien	"LN_S=$(LN_S)" \
69918334Speter	"MAKEINFO=$(MAKEINFO)" \
70018334Speter	"MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \
70190081Sobrien	"MAKEOVERRIDES=" \
70218334Speter	"RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \
70318334Speter	"RANLIB_TEST_FOR_TARGET=$(RANLIB_TEST_FOR_TARGET)" \
70418334Speter	"SHELL=$(SHELL)" \
70518334Speter	"exeext=$(exeext)" \
70650448Sobrien	"build_exeext=$(build_exeext)" \
70718334Speter	"objext=$(objext)" \
70818334Speter	"exec_prefix=$(exec_prefix)" \
70918334Speter	"prefix=$(prefix)" \
71050448Sobrien	"local_prefix=$(local_prefix)" \
71152298Sobrien	"gxx_include_dir=$(gcc_gxx_include_dir)" \
71290081Sobrien	"build_tooldir=$(build_tooldir)" \
71352298Sobrien	"gcc_tooldir=$(gcc_tooldir)" \
71418334Speter	"bindir=$(bindir)" \
71552298Sobrien	"libsubdir=$(libsubdir)" \
71652298Sobrien	"datadir=$(datadir)" \
71752298Sobrien	"localedir=$(localedir)"
71890081SobrienFLAGS_TO_PASS = $(ORDINARY_FLAGS_TO_PASS) "CC=@cc_set_by_configure@" \
71990081Sobrien	"STAGE_PREFIX=@stage_prefix_set_by_configure@"
72052298SobrienPREPEND_DOTDOT_TO_RELATIVE_PATHS = sed \
72152298Sobrien	-e 's|^ *[^ /][^ /]*/|%&|' \
72252298Sobrien	-e 's| -B| -B%|g' \
72352298Sobrien	-e 's|% *[^- /]|%&|g' \
72452298Sobrien	-e 's|%% *|../|g' \
72552298Sobrien	-e 's|%||g'
72652298SobrienSUBDIR_FLAGS_TO_PASS = $(ORDINARY_FLAGS_TO_PASS) \
72790081Sobrien	"CC=`echo @quoted_cc_set_by_configure@ | $(PREPEND_DOTDOT_TO_RELATIVE_PATHS)`" \
72890081Sobrien	"STAGE_PREFIX=`echo @quoted_stage_prefix_set_by_configure@ | $(PREPEND_DOTDOT_TO_RELATIVE_PATHS)`"
72950448Sobrien#
73018334Speter# Lists of files for various purposes.
73118334Speter
73290081Sobrien# Target specific, C specific object file
73390081SobrienC_TARGET_OBJS=@c_target_objs@
73490081Sobrien
73590081Sobrien# Target specific, C++ specific object file
73690081SobrienCXX_TARGET_OBJS=@cxx_target_objs@
73790081Sobrien
73850448Sobrien# Language-specific object files for C and Objective C.
73990081SobrienC_AND_OBJC_OBJS = attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o \
740117404Skan  c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o \
741117404Skan  c-objc-common.o c-dump.o libcpp.a $(C_TARGET_OBJS)
74218334Speter
74318334Speter# Language-specific object files for C.
744117404SkanC_OBJS = c-parse.o c-lang.o c-pretty-print.o $(C_AND_OBJC_OBJS)
74518334Speter
74618334Speter# Language-independent object files.
74718334Speter
748117404SkanOBJS = alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o	   \
749117404Skan cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfglayout.o cfgloop.o		   \
750117404Skan cfgrtl.o combine.o conflict.o convert.o cse.o cselib.o dbxout.o	   \
751117404Skan debug.o df.o diagnostic.o doloop.o dominance.o		                   \
752117404Skan dwarf2asm.o dwarf2out.o dwarfout.o emit-rtl.o except.o explow.o	   \
753117404Skan expmed.o expr.o final.o flow.o fold-const.o function.o gcse.o		   \
754117404Skan genrtl.o ggc-common.o global.o graph.o gtype-desc.o			   \
755117404Skan haifa-sched.o hashtable.o hooks.o ifcvt.o insn-attrtab.o insn-emit.o	   \
756117404Skan insn-extract.o insn-opinit.o insn-output.o insn-peep.o insn-recog.o	   \
757117404Skan integrate.o intl.o jump.o  langhooks.o lcm.o lists.o local-alloc.o	   \
758117404Skan loop.o mbchar.o optabs.o params.o predict.o print-rtl.o print-tree.o	   \
759117404Skan profile.o ra.o ra-build.o ra-colorize.o ra-debug.o ra-rewrite.o	   \
760117404Skan real.o recog.o reg-stack.o regclass.o regmove.o regrename.o		   \
761117404Skan reload.o reload1.o reorg.o resource.o rtl.o rtlanal.o rtl-error.o	   \
762117404Skan sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o	   \
763117404Skan sibcall.o simplify-rtx.o ssa.o ssa-ccp.o ssa-dce.o stmt.o		   \
764117404Skan stor-layout.o stringpool.o timevar.o toplev.o tracer.o tree.o tree-dump.o \
76590081Sobrien tree-inline.o unroll.o varasm.o varray.o version.o vmsdbgout.o xcoffout.o \
766117404Skan et-forest.o $(GGC) $(out_object_file) $(EXTRA_OBJS)
76790081Sobrien
76890081SobrienBACKEND = main.o libbackend.a
76990081Sobrien
77018334Speter# Files to be copied away after each stage in building.
77118334SpeterSTAGESTUFF = *$(objext) insn-flags.h insn-config.h insn-codes.h \
77218334Speter insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
77390081Sobrien insn-attr.h insn-attrtab.c insn-opinit.c insn-constants.h tm-preds.h \
774117404Skan tree-check.h insn-conditions.c \
775117404Skan s-flags s-config s-codes s-mlib s-genrtl s-gtype gtyp-gen.h \
776117404Skan s-output s-recog s-emit s-extract s-peep s-check s-conditions \
77790081Sobrien s-attr s-attrtab s-opinit s-preds s-constants s-crt0 \
77850448Sobrien genemit$(build_exeext) genoutput$(build_exeext) genrecog$(build_exeext) \
77950448Sobrien genextract$(build_exeext) genflags$(build_exeext) gencodes$(build_exeext) \
78050448Sobrien genconfig$(build_exeext) genpeep$(build_exeext) genattrtab$(build_exeext) \
78150448Sobrien genattr$(build_exeext) genopinit$(build_exeext) gengenrtl$(build_exeext) \
78290081Sobrien gencheck$(build_exeext) genpreds$(build_exeext) genconstants$(build_exeext) \
783117404Skan gengtype$(build_exeext) genconditions$(build_exeext) \
784117404Skan genrtl.c genrtl.h gt-*.h gtype-*.h gtype-desc.c \
785117404Skan xgcc$(exeext) cpp$(exeext) cc1$(exeext) $(EXTRA_PASSES) \
78690081Sobrien $(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) cc1obj$(exeext) \
787117404Skan protoize$(exeext) unprotoize$(exeext) \
788117404Skan specs collect2$(exeext) $(USE_COLLECT2) \
78990081Sobrien gcov$(exeext) *.[0-9][0-9].* *.[si] libcpp.a libbackend.a libgcc.mk \
79018334Speter $(LANG_STAGESTUFF)
79118334Speter
79218334Speter# Library members defined in libgcc2.c.
79390081Sobrien# Variable length limited to 255 charactes when passed to a shell script.
79490081SobrienLIB2FUNCS_1 = _muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 _ffsdi2 _clz \
79590081Sobrien    _cmpdi2 _ucmpdi2 _floatdidf _floatdisf _fixunsdfsi _fixunssfsi \
79690081Sobrien    _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi _fixxfdi _fixunsxfdi
79718334Speter
79890081SobrienLIB2FUNCS_2 = _floatdixf _fixunsxfsi _fixtfdi _fixunstfdi _floatditf \
79990081Sobrien    _clear_cache _trampoline __main _exit _absvsi2 _absvdi2 _addvsi3 \
80090081Sobrien    _addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors
80150448Sobrien
80290081Sobrien# Defined in libgcc2.c, included only in the static library.
80390081SobrienLIB2FUNCS_ST = _eprintf _bb __gcc_bcmp
80490081Sobrien
80550448SobrienFPBIT_FUNCS = _pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf \
80650448Sobrien    _fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf \
80790081Sobrien    _lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf \
808117404Skan    _sf_to_df _sf_to_tf _thenan_sf _sf_to_usi _usi_to_sf
80950448Sobrien
81050448SobrienDPBIT_FUNCS = _pack_df _unpack_df _addsub_df _mul_df _div_df \
81150448Sobrien    _fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df \
81290081Sobrien    _lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df \
813117404Skan    _df_to_sf _df_to_tf _thenan_df _df_to_usi _usi_to_df
81450448Sobrien
815117404SkanTPBIT_FUNCS = _pack_tf _unpack_tf _addsub_tf _mul_tf _div_tf \
816117404Skan    _fpcmp_parts_tf _compare_tf _eq_tf _ne_tf _gt_tf _ge_tf \
817117404Skan    _lt_tf _le_tf _unord_tf _si_to_tf _tf_to_si _negate_tf _make_tf \
818117404Skan    _tf_to_df _tf_to_sf _thenan_tf _tf_to_usi _usi_to_tf
819117404Skan
82090081Sobrien# These might cause a divide overflow trap and so are compiled with
82190081Sobrien# unwinder info.
82290081SobrienLIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
82390081Sobrien
824117404Skan# The only suffixes we want for implicit rules are .c and .o, so clear
825117404Skan# the list and add them.  This speeds up GNU Make, and allows -r to work.
826117404Skan# For i18n support, we also need .gmo, .po, .pox.
827117404Skan# This must come before the language makefile fragments to allow them to
828117404Skan# add suffixes and rules of their own.
829117404Skan.SUFFIXES:
830117404Skan.SUFFIXES: .c .o .po .pox .gmo
831117404Skan
83250448Sobrien#
83318334Speter# Language makefile fragments.
83418334Speter
83518334Speter# The following targets define the interface between us and the languages.
83618334Speter#
83790081Sobrien# all.cross, start.encap, rest.encap,
83818334Speter# info, dvi,
83918334Speter# install-normal, install-common, install-info, install-man,
84090081Sobrien# uninstall,
84118334Speter# mostlyclean, clean, distclean, extraclean, maintainer-clean,
84218334Speter# stage1, stage2, stage3, stage4
84318334Speter#
84418334Speter# Each language is linked in with a series of hooks (since we can't use `::'
84518334Speter# targets).  The name of each hooked is "lang.${target_name}" (eg: lang.info).
84618334Speter# Configure computes and adds these here.
84718334Speter
84818334Speter####language hooks
84950448Sobrien@language_hooks@
85018334Speter
85118334Speter# sed inserts language fragments after the following line.
85218334Speter####language fragments
85350448Sobrien@language_fragments@
85418334Speter
85518334Speter# End of language makefile fragments.
85650448Sobrien#
85718334Speter
85850448SobrienMakefile: $(srcdir)/Makefile.in config.status $(srcdir)/version.c \
85950448Sobrien   $(xmake_file) $(tmake_file) $(LANG_MAKEFILES)
86050448Sobrien	$(SHELL) $(srcdir)/configure.frag $(srcdir) "$(SUBDIRS)" \
86150448Sobrien		"$(xmake_file)" "$(tmake_file)"
86218334Speter	cp config.status config.run
86352298Sobrien	LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.run
86418334Speter	rm -f config.run
86518334Speter
86690081Sobrienconfig.h: cs-config.h ; @true
86790081Sobrienhconfig.h: cs-hconfig.h ; @true
86890081Sobrientconfig.h: cs-tconfig.h ; @true
86990081Sobrientm_p.h: cs-tm_p.h ; @true
87050448Sobrien
87190081Sobriencs-config.h: Makefile
872117404Skan	TM_DEFINES="$(tm_defines)" \
873117404Skan	HEADERS="$(host_xm_file)" XM_DEFINES="$(host_xm_defines)" \
87490081Sobrien	TARGET_CPU_DEFAULT="$(target_cpu_default)" \
87590081Sobrien	$(SHELL) $(srcdir)/mkconfig.sh config.h
87690081Sobrien
87790081Sobriencs-hconfig.h: Makefile
878117404Skan	TM_DEFINES="$(tm_defines)" \
879117404Skan	HEADERS="$(build_xm_file)" XM_DEFINES="$(build_xm_defines)" \
88090081Sobrien	TARGET_CPU_DEFAULT="$(target_cpu_default)" \
88190081Sobrien	$(SHELL) $(srcdir)/mkconfig.sh hconfig.h
88290081Sobrien
88390081Sobriencs-tconfig.h: Makefile
884117404Skan	TM_DEFINES="$(tm_defines)" \
885117404Skan	HEADERS="$(xm_file)" XM_DEFINES="$(xm_defines)" \
88690081Sobrien	TARGET_CPU_DEFAULT="" \
88790081Sobrien	$(SHELL) $(srcdir)/mkconfig.sh tconfig.h
88890081Sobrien
88990081Sobriencs-tm_p.h: Makefile
890117404Skan	TM_DEFINES="" \
891117404Skan	HEADERS="$(tm_p_file)" XM_DEFINES="" TARGET_CPU_DEFAULT="" \
89290081Sobrien	$(SHELL) $(srcdir)/mkconfig.sh tm_p.h
89390081Sobrien
89490081Sobrien# Don't automatically run autoconf, since configure.in might be accidentally
89590081Sobrien# newer than configure.  Also, this writes into the source directory which
89690081Sobrien# might be on a read-only file system.  If configured for maintainer mode
89790081Sobrien# then do allow autoconf to be run.
89890081Sobrien
89990081Sobrien$(srcdir)/configure: @MAINT@ $(srcdir)/configure.in
90090081Sobrien	(cd $(srcdir) && autoconf)
90190081Sobrien
90290081Sobriengccbug:	$(srcdir)/gccbug.in
90390081Sobrien	CONFIG_FILES=gccbug CONFIG_HEADERS= ./config.status
90490081Sobrien
90590081Sobrienmklibgcc: $(srcdir)/mklibgcc.in
90690081Sobrien	CONFIG_FILES=mklibgcc CONFIG_HEADERS= ./config.status
90790081Sobrien
908117404Skanmkheaders: $(srcdir)/mkheaders.in
909117404Skan	CONFIG_FILES=mkheaders CONFIG_HEADERS= ./config.status
910117404Skan
91150448Sobrien# cstamp-h.in controls rebuilding of config.in.
91250448Sobrien# It is named cstamp-h.in and not stamp-h.in so the mostlyclean rule doesn't
91350448Sobrien# delete it.  A stamp file is needed as autoheader won't update the file if
91450448Sobrien# nothing has changed.
91550448Sobrien# It remains in the source directory and is part of the distribution.
91650448Sobrien# This follows what is done in shellutils, fileutils, etc.
91750448Sobrien# "echo timestamp" is used instead of touch to be consistent with other
91850448Sobrien# packages that use autoconf (??? perhaps also to avoid problems with patch?).
91950448Sobrien# ??? Newer versions have a maintainer mode that may be useful here.
92090081Sobrien
92190081Sobrien# Don't run autoheader automatically either.
92290081Sobrien# Only run it if maintainer mode is enabled.
92390081Sobrien@MAINT@ $(srcdir)/config.in: $(srcdir)/cstamp-h.in
92490081Sobrien@MAINT@ $(srcdir)/cstamp-h.in: $(srcdir)/configure.in $(srcdir)/acconfig.h
92590081Sobrien@MAINT@	(cd $(srcdir) && autoheader)
92690081Sobrien@MAINT@	@rm -f $(srcdir)/cstamp-h.in
92790081Sobrien@MAINT@	echo timestamp > $(srcdir)/cstamp-h.in
92850448Sobrienauto-host.h: cstamp-h ; @true
92950448Sobriencstamp-h: config.in config.status
93052298Sobrien	CONFIG_HEADERS=auto-host.h:config.in LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.status
93150448Sobrien
93250448Sobrien# Really, really stupid make features, such as SUN's KEEP_STATE, may force
93350448Sobrien# a target to build even if it is up-to-date.  So we must verify that
93450448Sobrien# config.status does not exist before failing.
93590081Sobrienconfig.status: $(srcdir)/configure $(srcdir)/config.gcc version.c
93650448Sobrien	@if [ ! -f config.status ] ; then \
93790081Sobrien	  echo You must configure gcc.  Look at http://gcc.gnu.org/install/ for details.; \
93850448Sobrien	  false; \
93950448Sobrien	else \
94052298Sobrien	  LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.status --recheck; \
94150448Sobrien	fi
94250448Sobrien
94352298Sobrienall.internal: start.encap rest.encap doc
94418334Speter# This is what to compile if making a cross-compiler.
94590081Sobrienall.cross: native gcc-cross cpp$(exeext) specs \
94690081Sobrien	$(LIBGCC) $(EXTRA_PARTS) lang.all.cross doc
94718334Speter# This is what must be made before installing GCC and converting libraries.
94890081Sobrienstart.encap: native xgcc$(exeext) cpp$(exeext) specs \
94952298Sobrien	xlimits.h lang.start.encap
95018334Speter# These can't be made until after GCC can run.
95190081Sobrienrest.encap: $(STMP_FIXPROTO) $(LIBGCC) $(EXTRA_PARTS) lang.rest.encap
95218334Speter# This is what is made with the host's compiler
95318334Speter# whether making a cross compiler or not.
95490081Sobriennative: config.status auto-host.h intl.all build-@POSUB@ $(LANGUAGES) \
95550448Sobrien	$(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(USE_COLLECT2)
95618334Speter
95718334Speter# Define the names for selecting languages in LANGUAGES.
958117404SkanC c: cc1$(exeext)
95918334SpeterPROTO: proto
96018334Speter
96118334Speter# Tell GNU make these are phony targets.
96250448Sobrien.PHONY: C c PROTO proto
96318334Speter
96418334Speter# On the target machine, finish building a cross compiler.
96518334Speter# This does the things that can't be done on the host machine.
96652298Sobrienrest.cross: $(LIBGCC) specs
96718334Speter
96818334Speter# Recompile all the language-independent object files.
96918334Speter# This is used only if the user explicitly asks for it.
97090081Sobriencompilations: $(BACKEND)
97118334Speter
97290081Sobrien# Like libcpp.a, this archive is strictly for the host.
97390081Sobrienlibbackend.a: $(OBJS)
97490081Sobrien	-rm -rf libbackend.a
97590081Sobrien	$(AR) $(AR_FLAGS) libbackend.a $(OBJS)
97690081Sobrien	-$(RANLIB) libbackend.a
97718334Speter
97818334Speter# We call this executable `xgcc' rather than `gcc'
97918334Speter# to avoid confusion if the current directory is in the path
98018334Speter# and CC is `gcc'.  It is renamed to `gcc' when it is installed.
98152298Sobrienxgcc$(exeext): gcc.o gccspec.o version.o intl.o prefix.o \
98252298Sobrien   version.o $(LIBDEPS) $(EXTRA_GCC_OBJS)
98352298Sobrien	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o gccspec.o intl.o \
98452298Sobrien	  prefix.o version.o $(EXTRA_GCC_OBJS) $(LIBS)
98518334Speter
98690081Sobrien# cpp is to cpp0 as gcc is to cc1.
98752298Sobrien# The only difference from xgcc is that it's linked with cppspec.o
98852298Sobrien# instead of gccspec.o.
98970638Sobriencpp$(exeext): gcc.o cppspec.o version.o intl.o prefix.o \
99052298Sobrien   version.o $(LIBDEPS) $(EXTRA_GCC_OBJS)
99152298Sobrien	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o cppspec.o intl.o \
99252298Sobrien	  prefix.o version.o $(EXTRA_GCC_OBJS) $(LIBS)
99352298Sobrien
99418334Speter# Dump a specs file to make -B./ read these specs over installed ones.
99550448Sobrienspecs: xgcc$(exeext)
99618334Speter	$(GCC_FOR_TARGET) -dumpspecs > tmp-specs
99718334Speter	mv tmp-specs specs
99818334Speter
99918334Speter# We do want to create an executable named `xgcc', so we can use it to
100018334Speter# compile libgcc2.a.
100118334Speter# Also create gcc-cross, so that install-common will install properly.
100250448Sobriengcc-cross: xgcc$(exeext)
100318334Speter	cp xgcc$(exeext) gcc-cross$(exeext)
100418334Speter
100590081Sobriencc1$(exeext): $(C_OBJS) $(BACKEND) $(LIBDEPS)
100690081Sobrien	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cc1$(exeext) \
100790081Sobrien		$(C_OBJS) $(BACKEND) $(LIBS)
100818334Speter
100918334Speter# Build the version of limits.h that we will install.
101018334Speterxlimits.h: glimits.h limitx.h limity.h
101118334Speter	if $(LIMITS_H_TEST) ; then \
101218334Speter	  cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
101318334Speter	else \
101418334Speter	  cat $(srcdir)/glimits.h > tmp-xlimits.h; \
101518334Speter	fi
101618334Speter	mv tmp-xlimits.h xlimits.h
101750448Sobrien#
101818334Speter# Build libgcc.a.
101918334Speter
102090081SobrienLIB2ADD = $(LIB2FUNCS_EXTRA)
102190081SobrienLIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
102218334Speter
1023117404Skanlibgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) xgcc$(exeext) specs
102490081Sobrien	objext='$(objext)' \
102590081Sobrien	LIB1ASMFUNCS='$(LIB1ASMFUNCS)' \
102690081Sobrien	LIB2FUNCS_1='$(LIB2FUNCS_1)' \
102790081Sobrien	LIB2FUNCS_2='$(LIB2FUNCS_2)' \
102890081Sobrien	LIB2FUNCS_ST='$(LIB2FUNCS_ST)' \
102990081Sobrien	LIB2ADD='$(LIB2ADD)' \
103090081Sobrien	LIB2ADD_ST='$(LIB2ADD_ST)' \
103190081Sobrien	LIB2ADDEH='$(LIB2ADDEH)' \
103290081Sobrien	LIB2ADDEHDEP='$(LIB2ADDEHDEP)' \
103390081Sobrien	FPBIT='$(FPBIT)' \
103490081Sobrien	FPBIT_FUNCS='$(FPBIT_FUNCS)' \
103590081Sobrien	LIB2_DIVMOD_FUNCS='$(LIB2_DIVMOD_FUNCS)' \
103690081Sobrien	DPBIT='$(DPBIT)' \
103790081Sobrien	DPBIT_FUNCS='$(DPBIT_FUNCS)' \
1038117404Skan	TPBIT='$(TPBIT)' \
1039117404Skan	TPBIT_FUNCS='$(TPBIT_FUNCS)' \
104090081Sobrien	MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \
104190081Sobrien	EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \
104290081Sobrien	SHLIB_LINK='$(SHLIB_LINK)' \
104390081Sobrien	SHLIB_INSTALL='$(SHLIB_INSTALL)' \
104490081Sobrien	SHLIB_EXT='$(SHLIB_EXT)' \
104590081Sobrien	SHLIB_MULTILIB='$(SHLIB_MULTILIB)' \
104690081Sobrien	SHLIB_MKMAP='$(SHLIB_MKMAP)' \
104796273Sobrien	SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \
104890081Sobrien	SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \
104990081Sobrien	SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \
1050104764Skan	MULTILIB_OSDIRNAMES='$(MULTILIB_OSDIRNAMES)' \
105190081Sobrien	mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \
105290081Sobrien	  $(SHELL) mklibgcc > tmp-libgcc.mk
105390081Sobrien	mv tmp-libgcc.mk libgcc.mk
105418334Speter
105590081Sobrien# All the things that might cause us to want to recompile bits of libgcc.
105690081SobrienLIBGCC_DEPS = $(GCC_PASSES) $(LANGUAGES) stmp-int-hdrs $(STMP_FIXPROTO) \
105790081Sobrien	libgcc.mk $(srcdir)/libgcc2.c $(TCONFIG_H) \
105890081Sobrien	$(MACHMODE_H) longlong.h gbl-ctors.h config.status stmp-int-hdrs \
1059117404Skan	tsystem.h $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \
1060117404Skan	$(LIB2ADD_ST) $(LIB2ADDEH) $(LIB2ADDEHDEP) $(EXTRA_PARTS) \
1061117404Skan	$(srcdir)/config/$(LIB1ASMSRC)
106218334Speter
106390081Sobrienlibgcc.a: $(LIBGCC_DEPS)
106490081Sobrien	$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
1065117404Skan	  BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
106690081Sobrien	  AR_FOR_TARGET="$(AR_FOR_TARGET)" \
106790081Sobrien	  AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
106890081Sobrien	  AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
106990081Sobrien	  CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \
107090081Sobrien	  RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)" \
107190081Sobrien	  RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \
107290081Sobrien	  NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \
107390081Sobrien	  LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \
107490081Sobrien	  INCLUDES="$(INCLUDES)" \
107590081Sobrien	  CONFIG_H="$(TCONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \
107690081Sobrien	  LIB1ASMSRC='$(LIB1ASMSRC)' \
107790081Sobrien	  MAKEOVERRIDES= \
107890081Sobrien	  -f libgcc.mk all
107918334Speter
108018334Speter# Use the genmultilib shell script to generate the information the gcc
108118334Speter# driver program needs to select the library directory based on the
108218334Speter# switches.
108350448Sobrienmultilib.h: s-mlib; @true
108450448Sobriens-mlib: $(srcdir)/genmultilib Makefile
1085104764Skan	if test @enable_multilib@ = yes \
1086104764Skan	   || test -n "$(MULTILIB_OSDIRNAMES)"; then \
108796273Sobrien	  $(SHELL) $(srcdir)/genmultilib \
108896273Sobrien	    "$(MULTILIB_OPTIONS)" \
108996273Sobrien	    "$(MULTILIB_DIRNAMES)" \
109096273Sobrien	    "$(MULTILIB_MATCHES)" \
109196273Sobrien	    "$(MULTILIB_EXCEPTIONS)" \
109296273Sobrien	    "$(MULTILIB_EXTRA_OPTS)" \
109396273Sobrien	    "$(MULTILIB_EXCLUSIONS)" \
1094104764Skan	    "$(MULTILIB_OSDIRNAMES)" \
1095104764Skan	    "@enable_multilib@" \
109696273Sobrien	    > tmp-mlib.h; \
109796273Sobrien	else \
1098104764Skan	  $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
1099104764Skan	    > tmp-mlib.h; \
110096273Sobrien	fi
110190081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-mlib.h multilib.h
110290081Sobrien	$(STAMP) s-mlib
110318334Speter
110418334Speter# Build multiple copies of libgcc.a, one for each target switch.
110590081Sobrienstmp-multilib: $(LIBGCC_DEPS)
110618334Speter	$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
1107117404Skan	  BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
110852298Sobrien	  AR_FOR_TARGET="$(AR_FOR_TARGET)" \
110990081Sobrien	  AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
111052298Sobrien	  AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
111190081Sobrien	  CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \
111290081Sobrien	  RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)" \
111390081Sobrien	  RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \
111490081Sobrien	  NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \
111590081Sobrien	  LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \
111690081Sobrien	  INCLUDES="$(INCLUDES)" \
111790081Sobrien	  CONFIG_H="$(CONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \
111890081Sobrien	  LIB1ASMSRC='$(LIB1ASMSRC)' \
111990081Sobrien	  MAKEOVERRIDES= \
112090081Sobrien	  -f libgcc.mk all
112190081Sobrien	$(STAMP) stmp-multilib
112218334Speter
112318334Speter# Compile two additional files that are linked with every program
112418334Speter# linked using GCC on systems using COFF or ELF, for the sake of C++
112518334Speter# constructors.
112690081Sobrien$(T)crtbegin.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \
112790081Sobrien  gbl-ctors.h stmp-int-hdrs tsystem.h
112890081Sobrien	$(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \
112990081Sobrien	  @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_BEGIN \
113090081Sobrien	  -o $(T)crtbegin$(objext)
113118334Speter
113290081Sobrien$(T)crtend.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \
113390081Sobrien  gbl-ctors.h stmp-int-hdrs tsystem.h
113490081Sobrien	$(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \
113590081Sobrien	  @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_END \
113690081Sobrien	  -o $(T)crtend$(objext)
113718334Speter
113890081Sobrien# These are versions of crtbegin and crtend for shared libraries.
113990081Sobrien$(T)crtbeginS.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \
114090081Sobrien  gbl-ctors.h stmp-int-hdrs tsystem.h
114190081Sobrien	$(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS_S) \
114290081Sobrien	  @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_BEGIN -DCRTSTUFFS_O \
114390081Sobrien	  -o $(T)crtbeginS$(objext)
114418334Speter
114590081Sobrien$(T)crtendS.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \
114690081Sobrien  gbl-ctors.h stmp-int-hdrs tsystem.h
114790081Sobrien	$(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS_S) \
114890081Sobrien	  @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_END -DCRTSTUFFS_O \
114990081Sobrien	  -o $(T)crtendS$(objext)
115050448Sobrien
115190081Sobrien# This is a version of crtbegin for -static links.
115290081Sobrien$(T)crtbeginT.o: crtstuff.c $(GCC_PASSES) $(TCONFIG_H) auto-host.h \
115390081Sobrien  gbl-ctors.h stmp-int-hdrs tsystem.h
115490081Sobrien	$(GCC_FOR_TARGET) $(CRTSTUFF_CFLAGS) $(CRTSTUFF_T_CFLAGS) \
115590081Sobrien	  @inhibit_libc@ -c $(srcdir)/crtstuff.c -DCRT_BEGIN -DCRTSTUFFT_O \
115690081Sobrien	  -o $(T)crtbeginT$(objext)
115790081Sobrien
115890081Sobrien# Compile the start modules crt0.o and mcrt0.o that are linked with
115990081Sobrien# every program
116050448Sobriencrt0.o: s-crt0 ; @true
116150448Sobrienmcrt0.o: s-crt0; @true
116250448Sobrien
116350448Sobriens-crt0:	$(CRT0_S) $(MCRT0_S) $(GCC_PASSES) $(CONFIG_H)
116450448Sobrien	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \
116550448Sobrien	  -o crt0.o -c $(CRT0_S)
116650448Sobrien	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(CRT0STUFF_T_CFLAGS) \
116750448Sobrien	  -o mcrt0.o -c $(MCRT0_S)
116890081Sobrien	$(STAMP) s-crt0
116950448Sobrien#
117018334Speter# Compiling object files from source files.
117118334Speter
117218334Speter# Note that dependencies on obstack.h are not written
117318334Speter# because that file is not part of GCC.
117418334Speter
117518334Speter# C language specific files.
117618334Speter
117790081Sobrienc-errors.o: c-errors.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) flags.h \
117890081Sobrien    diagnostic.h $(TM_P_H)
1179117404Skanc-parse.o : $(srcdir)/c-parse.c $(CONFIG_H) $(TREE_H) $(GGC_H) intl.h \
1180117404Skan    $(C_TREE_H) input.h flags.h $(SYSTEM_H) toplev.h output.h $(CPPLIB_H) \
1181117404Skan    gt-c-parse.h
118290081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
118390081Sobrien	       -c $(srcdir)/c-parse.c $(OUTPUT_OPTION)
118490081Sobrien
118518334Speter$(srcdir)/c-parse.c: $(srcdir)/c-parse.y
118690081Sobrien	cd $(srcdir) && \
118790081Sobrien	if $(BISON) $(BISONFLAGS) -o c-p$$$$.c c-parse.y; then \
118890081Sobrien	  test -f c-p$$$$.output && mv -f c-p$$$$.output c-parse.output ; \
118990081Sobrien	  mv -f c-p$$$$.c c-parse.c ; \
119090081Sobrien	else \
119190081Sobrien	  rm -f c-p$$$$.* ; \
119290081Sobrien	  false ; \
119390081Sobrien	fi
119490081Sobrien
119518334Speter$(srcdir)/c-parse.y: c-parse.in
119650448Sobrien	echo '/*WARNING: This file is automatically generated!*/' >tmp-c-parse.y
119718334Speter	sed -e "/^ifobjc$$/,/^end ifobjc$$/d" \
119818334Speter	  -e "/^ifc$$/d" -e "/^end ifc$$/d" \
119950448Sobrien	  $(srcdir)/c-parse.in >>tmp-c-parse.y
120090081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-c-parse.y $(srcdir)/c-parse.y
120118334Speter
120290081Sobrienc-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) $(C_TREE_H) \
1203117404Skan    $(GGC_H) $(TARGET_H) flags.h function.h output.h $(EXPR_H) \
1204117404Skan    debug.h toplev.h intl.h $(TM_P_H) tree-inline.h $(TIMEVAR_H) c-pragma.h \
1205117404Skan    gt-c-decl.h libfuncs.h except.h
120690081Sobrienc-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
120790081Sobrien    $(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H)
120890081Sobrienc-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
1209117404Skan    $(GGC_H) langhooks.h $(LANGHOOKS_DEF_H) c-common.h gtype-c.h
1210117404Skanc-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \
1211117404Skan    debug.h $(C_TREE_H) c-common.h real.h \
121290081Sobrien    c-pragma.h input.h intl.h flags.h toplev.h output.h \
121390081Sobrien    mbchar.h $(CPPLIB_H) $(EXPR_H) $(TM_P_H)
121490081Sobrienc-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
121590081Sobrien    $(C_TREE_H) $(RTL_H) insn-config.h integrate.h $(EXPR_H) $(C_TREE_H) \
121690081Sobrien    flags.h toplev.h tree-inline.h diagnostic.h integrate.h $(VARRAY_H) \
1217117404Skan    langhooks.h $(GGC_H) gt-c-objc-common.h $(TARGET_H)
121890081Sobrienc-aux-info.o : c-aux-info.c  $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
121990081Sobrien    flags.h toplev.h
1220117404Skanc-convert.o : c-convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h toplev.h \
1221117404Skan    $(C_COMMON_H)
122290081Sobrienc-pragma.o: c-pragma.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) function.h \
1223117404Skan    c-pragma.h toplev.h output.h $(GGC_H) $(TM_P_H) $(C_COMMON_H) gt-c-pragma.h
122490081Sobrienmbchar.o: mbchar.c $(CONFIG_H) $(SYSTEM_H) mbchar.h
122590081Sobriengraph.o: graph.c $(CONFIG_H) $(SYSTEM_H) toplev.h flags.h output.h $(RTL_H) \
122690081Sobrien    function.h hard-reg-set.h $(BASIC_BLOCK_H) graph.h
122790081Sobriensbitmap.o: sbitmap.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \
122890081Sobrien    $(BASIC_BLOCK_H)
122918334Speter
1230117404SkanCOLLECT2_OBJS = collect2.o tlink.o intl.o version.o
123190081SobrienCOLLECT2_LIBS = @COLLECT2_LIBS@
123252298Sobriencollect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS)
123318334Speter# Don't try modifying collect2 (aka ld) in place--it might be linking this.
123490081Sobrien	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o T$@ \
123590081Sobrien		$(COLLECT2_OBJS) $(LIBS) $(COLLECT2_LIBS)
123690081Sobrien	mv -f T$@ $@
123718334Speter
123890081Sobriencollect2.o : collect2.c $(CONFIG_H) $(SYSTEM_H) gstab.h intl.h \
123990081Sobrien	$(OBSTACK_H) $(DEMANGLE_H) collect2.h version.h
124018334Speter	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)  \
124190081Sobrien	-DTARGET_MACHINE=\"$(target_alias)\" \
124290081Sobrien	-c $(srcdir)/collect2.c $(OUTPUT_OPTION)
124318334Speter
1244117404Skantlink.o: tlink.c $(DEMANGLE_H) $(HASHTAB_H) $(CONFIG_H) $(SYSTEM_H) \
1245117404Skan    $(OBSTACK_H) collect2.h intl.h
124618334Speter
124718334Speter# A file used by all variants of C.
124818334Speter
124990081Sobrienc-common.o : c-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \
125090081Sobrien	$(C_COMMON_H) flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
125190081Sobrien	$(EXPR_H) $(TM_P_H) builtin-types.def builtin-attrs.def $(TARGET_H) \
1252117404Skan	diagnostic.h except.h gt-c-common.h real.h langhooks.h c-tree.h
1253117404Skanc-pretty-print.o : c-pretty-print.c c-pretty-print.h pretty-print.h \
1254117404Skan	$(C_COMMON_H) $(CONFIG_H) $(SYSTEM_H) real.h
125518334Speter
1256117404Skanc-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_COMMON_H) \
1257117404Skan        c-pragma.h flags.h toplev.h langhooks.h tree-inline.h diagnostic.h \
1258117404Skan	intl.h
1259117404Skan
126090081Sobrien# A file used by all variants of C and some other languages.
126190081Sobrien
1262117404Skanattribs.o : attribs.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
126390081Sobrien	toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) $(EXPR_H) $(TM_P_H) \
1264117404Skan	builtin-types.def $(TARGET_H) langhooks.h
126590081Sobrien
1266117404Skanc-format.o : c-format.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) langhooks.h \
126790081Sobrien	$(C_COMMON_H) flags.h toplev.h intl.h diagnostic.h
126890081Sobrien
126990081Sobrienc-semantics.o : c-semantics.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
1270117404Skan	flags.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
1271117404Skan	$(EXPR_H) $(PREDICT_H)
127290081Sobrien
1273117404Skanc-dump.o : c-dump.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) tree-dump.h
1274117404Skan
127518334Speter# Language-independent files.
127618334Speter
127750448SobrienDRIVER_DEFINES = \
127890081Sobrien  -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
127918334Speter  -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-lib/\" \
128018334Speter  -DDEFAULT_TARGET_VERSION=\"$(version)\" \
128150448Sobrien  -DDEFAULT_TARGET_MACHINE=\"$(target_alias)\" \
128290081Sobrien  -DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \
128390081Sobrien  -DTOOLDIR_BASE_PREFIX=\"$(unlibsubdir)/../\" \
1284117404Skan  $(VALGRIND_DRIVER_DEFINES) \
128590081Sobrien  `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
128690081Sobrien  `test "X$${SHLIB_MULTILIB}" = "X" || echo "-DNO_SHARED_LIBGCC_MULTILIB"`
128790081Sobrien
128890081Sobriengcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) intl.h multilib.h \
128990081Sobrien    Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H)
129090081Sobrien	(SHLIB_LINK='$(SHLIB_LINK)' \
129190081Sobrien	SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \
129250448Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
129350448Sobrien  $(DRIVER_DEFINES) \
129490081Sobrien  -c $(srcdir)/gcc.c $(OUTPUT_OPTION))
129518334Speter
129690081Sobriengccspec.o: gccspec.c $(CONFIG_H) $(SYSTEM_H) $(GCC_H)
129790081Sobrien	(SHLIB_LINK='$(SHLIB_LINK)' \
129890081Sobrien	SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \
129990081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
130090081Sobrien  $(DRIVER_DEFINES) \
130190081Sobrien  -c $(srcdir)/gccspec.c $(OUTPUT_OPTION))
130252298Sobrien
130390081Sobriencppspec.o: cppspec.c $(CONFIG_H) $(SYSTEM_H) $(GCC_H)
130490081Sobrien
130550448Sobrientree-check.h: s-check ; @true
130690081Sobriens-check : gencheck$(build_exeext) $(srcdir)/move-if-change
1307117404Skan	$(RUN_GEN) ./gencheck$(build_exeext) > tmp-check.h
130890081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-check.h tree-check.h
130990081Sobrien	$(STAMP) s-check
131050448Sobrien
131190081Sobriengencheck$(build_exeext) : gencheck.o $(HOST_LIBDEPS)
131250448Sobrien	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
131350448Sobrien	 gencheck.o $(HOST_LIBS)
131450448Sobrien
131590081Sobriengencheck.o : gencheck.c gencheck.h tree.def $(HCONFIG_H) $(SYSTEM_H) \
131690081Sobrien             $(lang_tree_files)
131752298Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
131890081Sobrien	  $(srcdir)/gencheck.c $(OUTPUT_OPTION)
131950448Sobrien
132090081Sobriengencheck.h : s-gencheck ; @true
132190081Sobriens-gencheck : Makefile
132290081Sobrien	ltf="$(lang_tree_files)"; for f in $$ltf; do \
132390081Sobrien	    echo "#include \"$$f\""; \
132490081Sobrien	done | sed 's|$(srcdir)/||' > tmp-gencheck.h
132590081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-gencheck.h gencheck.h
132690081Sobrien	$(STAMP) s-gencheck
132790081Sobrien
132890081Sobrienoptions.h : s-options ; @true
132990081Sobriens-options : Makefile
133090081Sobrien	lof="$(lang_options_files)"; for f in $$lof; do \
133190081Sobrien	    echo "#include \"$$f\""; \
133290081Sobrien	done | sed 's|$(srcdir)/||' > tmp-options.h
133390081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-options.h options.h
133490081Sobrien	$(STAMP) s-options
133590081Sobrien
133690081Sobrienspecs.h : s-specs ; @true
133790081Sobriens-specs : Makefile
133890081Sobrien	lsf="$(lang_specs_files)"; for f in $$lsf; do \
133990081Sobrien	    echo "#include \"$$f\""; \
134090081Sobrien	done | sed 's|$(srcdir)/||' > tmp-specs.h
134190081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-specs.h specs.h
134290081Sobrien	$(STAMP) s-specs
134390081Sobrien
134418334Speterdumpvers: dumpvers.c
134518334Speter
134690081Sobrienversion.o: version.c version.h
134752298Sobrien
1348117404Skangtype-desc.o: gtype-desc.c $(CONFIG_H) $(SYSTEM_H) varray.h $(HASHTAB_H) \
1349117404Skan	$(TREE_H) $(RTL_H) function.h insn-config.h $(EXPR_H) $(OPTABS_H) \
1350117404Skan	libfuncs.h debug.h $(GGC_H) bitmap.h $(BASIC_BLOCK_H) hard-reg-set.h \
1351117404Skan	ssa.h cselib.h insn-addr.h
1352117404Skan
135390081Sobrienggc-common.o: ggc-common.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
1354117404Skan	flags.h $(GGC_H) varray.h $(HASHTAB_H) $(TM_P_H) langhooks.h \
1355117404Skan	$(PARAMS_H)
135690081Sobrien
135790081Sobrienggc-simple.o: ggc-simple.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
1358117404Skan	$(GGC_H) varray.h $(TIMEVAR_H) $(TM_P_H) $(PARAMS_H)
135990081Sobrien
136090081Sobrienggc-page.o: ggc-page.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
1361117404Skan	toplev.h $(GGC_H) $(TIMEVAR_H) $(TM_P_H)
136290081Sobrien
136390081Sobrienstringpool.o: stringpool.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(OBSTACK_H) \
1364117404Skan	flags.h toplev.h $(GGC_H)
136590081Sobrien
136690081Sobrienhashtable.o: hashtable.c hashtable.h $(CONFIG_H) $(SYSTEM_H) $(OBSTACK_H)
136790081Sobrien
136890081Sobrienline-map.o: line-map.c line-map.h intl.h $(CONFIG_H) $(SYSTEM_H)
136990081Sobrien
137090081Sobrienggc-none.o: ggc-none.c $(GCONFIG_H) $(SYSTEM_H) $(GGC_H)
137190081Sobrien	$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
137290081Sobrien
137390081Sobrienprefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) Makefile prefix.h
137450448Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
137550448Sobrien	-DPREFIX=\"$(prefix)\" \
137690081Sobrien	  -c $(srcdir)/prefix.c $(OUTPUT_OPTION)
137718334Speter
1378117404Skanconvert.o: convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h convert.h \
1379117404Skan   toplev.h langhooks.h
138018334Speter
138190081Sobrienlanghooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h \
138296273Sobrien   tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h \
1383102789Skan   $(LANGHOOKS_DEF_H) flags.h
138490081Sobrientree.o : tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h function.h toplev.h \
1385117404Skan   $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h \
1386117404Skan   real.h gt-tree.h
138790081Sobrientree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
138890081Sobrien   flags.h langhooks.h toplev.h output.h c-pragma.h $(RTL_H) $(GGC_H) \
138990081Sobrien   $(EXPR_H) $(SPLAY_TREE_H) tree-dump.h
139090081Sobrientree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \
139190081Sobrien   expr.h flags.h params.h input.h insn-config.h $(INTEGRATE_H) \
139290081Sobrien   $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h langhooks.h \
139390081Sobrien   $(C_COMMON_H) tree-inline.h
139490081Sobrienprint-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GGC_H) \
1395117404Skan   langhooks.h real.h
1396117404Skanstor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
1397117404Skan   function.h $(EXPR_H) $(RTL_H) toplev.h $(GGC_H) $(TM_P_H) $(TARGET_H) \
139890081Sobrien   langhooks.h
1399117404Skanfold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h real.h \
1400117404Skan   toplev.h $(HASHTAB_H) $(EXPR_H) $(RTL_H) $(GGC_H) $(TM_P_H) langhooks.h
140190081Sobriendiagnostic.o : diagnostic.c diagnostic.h real.h diagnostic.def \
140290081Sobrien   $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) flags.h $(GGC_H) \
1403117404Skan   input.h toplev.h intl.h langhooks.h $(LANGHOOKS_DEF_H)
140490081Sobrientoplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.h \
140590081Sobrien   flags.h xcoffout.h input.h $(INSN_ATTR_H) output.h diagnostic.h \
140690081Sobrien   debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h \
140790081Sobrien   dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \
140890081Sobrien   graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) \
1409117404Skan   ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \
1410117404Skan   langhooks.h insn-flags.h options.h cfglayout.h real.h
141190081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
141250448Sobrien	  -DTARGET_NAME=\"$(target_alias)\" \
141390081Sobrien	  -c $(srcdir)/toplev.c $(OUTPUT_OPTION)
141490081Sobrienmain.o : main.c $(CONFIG_H) $(SYSTEM_H) toplev.h
141518334Speter
141690081Sobrienrtl-error.o: rtl-error.c system.h $(RTL_H) $(INSN_ATTR_H) insn-config.h \
141790081Sobrien   input.h toplev.h intl.h diagnostic.h $(CONFIG_H)
141818334Speter
141990081Sobrienrtl.o : rtl.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) real.h $(GGC_H) errors.h
142090081Sobrien	$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
142118334Speter
1422117404Skanprint-rtl.o : print-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
1423117404Skan    hard-reg-set.h $(BASIC_BLOCK_H) real.h
1424117404Skanrtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) toplev.h $(RTL_H) \
1425117404Skan   hard-reg-set.h $(TM_P_H) insn-config.h $(RECOG_H) real.h flags.h
142618334Speter
142790081Sobrienerrors.o : errors.c $(GCONFIG_H) $(SYSTEM_H) errors.h
142890081Sobrien	$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
142918334Speter
143090081Sobrienvarasm.o : varasm.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
1431117404Skan   function.h $(EXPR_H) hard-reg-set.h $(REGS_H) \
143290081Sobrien   output.h c-pragma.h toplev.h xcoffout.h debug.h $(GGC_H) $(TM_P_H) \
1433117404Skan   $(HASHTAB_H) $(TARGET_H) langhooks.h gt-varasm.h real.h
143490081Sobrienfunction.o : function.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
143590081Sobrien   function.h $(EXPR_H) libfuncs.h $(REGS_H) hard-reg-set.h \
1436117404Skan   insn-config.h $(RECOG_H) output.h toplev.h except.h $(HASHTAB_H) $(GGC_H) \
1437117404Skan   $(TM_P_H) langhooks.h gt-function.h
143890081Sobrienstmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h  \
143990081Sobrien   insn-config.h hard-reg-set.h $(EXPR_H) libfuncs.h except.h \
1440117404Skan   $(LOOP_H) $(RECOG_H) toplev.h output.h varray.h $(GGC_H) $(TM_P_H) \
1441117404Skan   langhooks.h $(PREDICT_H) gt-stmt.h
144290081Sobrienexcept.o : except.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
1443117404Skan   except.h function.h $(EXPR_H) libfuncs.h integrate.h langhooks.h \
144490081Sobrien   insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
1445117404Skan   dwarf2asm.h dwarf2out.h toplev.h $(HASHTAB_H) intl.h $(GGC_H) \
1446117404Skan   gt-except.h
144790081Sobrienexpr.o : expr.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h function.h \
144890081Sobrien   $(REGS_H) $(EXPR_H) $(OPTABS_H) libfuncs.h insn-attr.h insn-config.h \
144990081Sobrien   $(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \
1450117404Skan   except.h reload.h $(GGC_H) langhooks.h intl.h $(TM_P_H) real.h
145190081Sobrienbuiltins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
145290081Sobrien   $(TARGET_H) function.h $(REGS_H) $(EXPR_H) $(OPTABS_H) insn-config.h \
145390081Sobrien   $(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \
1454117404Skan   except.h $(TM_P_H) $(PREDICT_H) libfuncs.h real.h langhooks.h
1455117404Skancalls.o : calls.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
1456117404Skan   $(EXPR_H) langhooks.h $(TARGET_H) \
1457117404Skan   libfuncs.h $(REGS_H) toplev.h output.h function.h $(TIMEVAR_H) $(TM_P_H) \
1458117404Skan   except.h
145990081Sobrienexpmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h  \
146090081Sobrien   insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) real.h \
1461117404Skan   toplev.h $(TM_P_H) langhooks.h
146290081Sobrienexplow.o : explow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
146390081Sobrien   hard-reg-set.h insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) \
1464117404Skan   toplev.h function.h ggc.h $(TM_P_H) gt-explow.h
146590081Sobrienoptabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h  \
146690081Sobrien   insn-config.h $(EXPR_H) $(OPTABS_H) libfuncs.h $(RECOG_H) reload.h \
1467117404Skan   toplev.h $(GGC_H) real.h $(TM_P_H) except.h gt-optabs.h $(BASIC_BLOCK_H)
146890081Sobriendbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
146990081Sobrien    $(REGS_H) debug.h $(TM_P_H) $(TARGET_H) function.h langhooks.h \
147090081Sobrien   insn-config.h reload.h gstab.h xcoffout.h output.h dbxout.h toplev.h
1471117404Skandebug.o : debug.c debug.h $(CONFIG_H) $(SYSTEM_H)
147290081Sobriensdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
147390081Sobrien   function.h $(EXPR_H) output.h hard-reg-set.h $(REGS_H) real.h \
1474117404Skan   insn-config.h xcoffout.h c-pragma.h ggc.h \
1475117404Skan   sdbout.h toplev.h $(TM_P_H) except.h debug.h langhooks.h gt-sdbout.h
147690081Sobriendwarfout.o : dwarfout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf.h \
147790081Sobrien   flags.h insn-config.h reload.h output.h toplev.h $(TM_P_H) \
147890081Sobrien   debug.h langhooks.h
147990081Sobriendwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf2.h \
1480117404Skan   debug.h flags.h insn-config.h reload.h output.h diagnostic.h real.h \
148190081Sobrien   hard-reg-set.h $(REGS_H) $(EXPR_H) libfuncs.h toplev.h dwarf2out.h varray.h \
1482117404Skan   $(GGC_H) except.h dwarf2asm.h $(TM_P_H) langhooks.h $(HASHTAB_H) gt-dwarf2out.h
148390081Sobriendwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) flags.h $(RTL_H) $(TREE_H) \
1484117404Skan   output.h dwarf2asm.h $(TM_P_H) $(GGC_H)
148590081Sobrienvmsdbgout.o : vmsdbgout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
1486117404Skan   output.h vmsdbg.h debug.h langhooks.h function.h
148790081Sobrienxcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) xcoffout.h \
1488117404Skan   flags.h toplev.h output.h dbxout.h $(GGC_H) $(TARGET_H)
148990081Sobrienemit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
149090081Sobrien   function.h $(REGS_H) insn-config.h $(RECOG_H) real.h $(GGC_H) \
149190081Sobrien   $(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h \
149290081Sobrien   $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h
149390081Sobrienreal.o : real.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h $(TM_P_H)
149490081Sobrienintegrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
149590081Sobrien   debug.h $(INTEGRATE_H) insn-config.h $(EXPR_H) real.h $(REGS_H) \
149690081Sobrien   intl.h function.h output.h $(RECOG_H) except.h toplev.h $(LOOP_H) \
1497117404Skan   $(PARAMS_H) $(TM_P_H) $(TARGET_H) langhooks.h gt-integrate.h
149890081Sobrienjump.o : jump.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \
149990081Sobrien   insn-config.h $(RECOG_H) $(EXPR_H) real.h except.h function.h \
150090081Sobrien   toplev.h $(INSN_ATTR_H) $(TM_P_H) reload.h $(PREDICT_H)
150118334Speter
150290081Sobriensimplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) \
150390081Sobrien   hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \
1504117404Skan   output.h function.h $(GGC_H) $(OBSTACK_H) $(TM_P_H) $(TREE_H)
150590081Sobriencselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) \
150690081Sobrien   hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \
1507117404Skan   output.h function.h cselib.h $(GGC_H) $(TM_P_H) gt-cselib.h
150890081Sobriencse.o : cse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
150990081Sobrien   real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h output.h function.h \
1510117404Skan   $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H)
151190081Sobriengcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h \
151290081Sobrien   flags.h real.h insn-config.h ggc.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \
1513117404Skan   function.h output.h toplev.h $(TM_P_H) $(PARAMS_H) except.h gt-gcse.h
151490081Sobriensibcall.o : sibcall.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) function.h \
151590081Sobrien   hard-reg-set.h flags.h insn-config.h $(RECOG_H) $(BASIC_BLOCK_H)
151690081Sobrienresource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
151790081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) flags.h output.h resource.h function.h toplev.h \
151890081Sobrien   $(INSN_ATTR_H) except.h $(PARAMS_H) $(TM_P_H)
151990081Sobrienlcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
152090081Sobrien   real.h insn-config.h $(INSN_ATTR_H) $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) \
152190081Sobrien   $(TM_P_H) df.h
1522117404Skanssa.o : ssa.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) varray.h $(EXPR_H) \
152390081Sobrien   hard-reg-set.h flags.h function.h real.h insn-config.h $(RECOG_H)	\
152490081Sobrien   $(BASIC_BLOCK_H) output.h ssa.h
152590081Sobrienssa-dce.o : ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h \
152690081Sobrien   $(BASIC_BLOCK_H) ssa.h insn-config.h $(RECOG_H) output.h
152790081Sobrienssa-ccp.o : ssa-ccp.c $(CONFIG_H) system.h $(RTL_H) hard-reg-set.h \
152890081Sobrien    $(BASIC_BLOCK_H) ssa.h insn-config.h $(RECOG_H) output.h \
152990081Sobrien    errors.h $(GGC_H) df.h function.h
153090081Sobriendf.o : df.c $(CONFIG_H) system.h $(RTL_H) insn-config.h $(RECOG_H) \
153190081Sobrien   function.h $(REGS_H) $(OBSTACK_H) hard-reg-set.h $(BASIC_BLOCK_H) df.h \
153290081Sobrien   $(FIBHEAP_H)
153390081Sobrienconflict.o : conflict.c $(CONFIG_H) $(SYSTEM_H) $(OBSTACK_H) $(HASHTAB_H) \
153490081Sobrien   $(RTL_H) hard-reg-set.h $(BASIC_BLOCK_H)
153590081Sobrienprofile.o : profile.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
153690081Sobrien   insn-config.h output.h $(REGS_H) $(EXPR_H) function.h \
1537117404Skan   gcov-io.h toplev.h $(GGC_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TARGET_H) \
1538117404Skan   langhooks.h profile.h libfuncs.h gt-profile.h
153990081Sobrienloop.o : loop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \
154090081Sobrien   insn-config.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) \
154190081Sobrien   real.h $(PREDICT_H) $(BASIC_BLOCK_H) function.h \
154290081Sobrien   toplev.h varray.h except.h cselib.h $(OPTABS_H) $(TM_P_H)
154390081Sobriendoloop.o : doloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h $(LOOP_H) \
154490081Sobrien   $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) toplev.h
154590081Sobrienunroll.o : unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h function.h \
154690081Sobrien   $(INTEGRATE_H) $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) $(LOOP_H) toplev.h \
1547117404Skan   hard-reg-set.h varray.h $(BASIC_BLOCK_H) $(TM_P_H) $(PREDICT_H) $(PARAMS_H)
154890081Sobrienflow.o : flow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h insn-config.h \
154990081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
155090081Sobrien   function.h except.h $(EXPR_H) ssa.h $(GGC_H) $(TM_P_H)
155190081Sobriencfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \
155290081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
155390081Sobrien   function.h except.h $(GGC_H) $(TM_P_H)
155490081Sobriencfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \
155590081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
1556117404Skan   function.h except.h $(GGC_H) $(TM_P_H) insn-config.h
155796273Sobriencfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(BASIC_BLOCK_H) \
155896273Sobrien   hard-reg-set.h insn-config.h $(RECOG_H) $(GGC_H) $(TM_P_H)
155990081Sobriencfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h insn-config.h \
156090081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
1561117404Skan   function.h except.h $(GGC_H)
156290081Sobriencfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TIMEVAR_H)\
156390081Sobrien   $(BASIC_BLOCK_H) hard-reg-set.h output.h flags.h $(RECOG_H) toplev.h \
1564117404Skan   $(GGC_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H)
156590081Sobriencfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
156690081Sobrien   $(BASIC_BLOCK_H) hard-reg-set.h
156790081Sobriendominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h \
1568117404Skan   $(BASIC_BLOCK_H) et-forest.h
1569117404Skanet-forest.o : et-forest.c $(CONFIG_H) $(SYSTEM_H) et-forest.h
157090081Sobriencombine.o : combine.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h function.h \
157190081Sobrien   insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \
157290081Sobrien   $(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h toplev.h $(TM_P_H)
157390081Sobrienregclass.o : regclass.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) hard-reg-set.h flags.h \
157490081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(RECOG_H) reload.h real.h \
157590081Sobrien   toplev.h function.h output.h $(GGC_H) $(TM_P_H) $(EXPR_H)
157690081Sobrienlocal-alloc.o : local-alloc.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h \
157790081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \
157890081Sobrien   output.h function.h $(INSN_ATTR_H) toplev.h  except.h $(TM_P_H)
1579117404Skanbitmap.o : bitmap.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h \
1580117404Skan   $(BASIC_BLOCK_H) $(REGS_H) $(GGC_H)
158190081Sobrien	$(CC) -c $(ALL_CFLAGS) -DGENERATOR_FILE $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
158290081Sobrienglobal.o : global.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h reload.h function.h \
158390081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h output.h toplev.h \
158490081Sobrien   $(TM_P_H)
1585117404Skanvarray.o : varray.c $(CONFIG_H) $(SYSTEM_H) varray.h $(GGC_H) errors.h
1586117404Skanra.o : ra.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H)  $(TM_P_H) insn-config.h \
1587117404Skan   $(RECOG_H) integrate.h function.h $(REGS_H) $(OBSTACK_H) hard-reg-set.h \
1588117404Skan   $(BASIC_BLOCK_H) df.h expr.h output.h toplev.h flags.h reload.h ra.h
1589117404Skanra-build.o : ra-build.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_P_H) \
1590117404Skan   insn-config.h $(RECOG_H) function.h $(REGS_H) hard-reg-set.h \
1591117404Skan   $(BASIC_BLOCK_H) df.h output.h ggc.h ra.h gt-ra-build.h reload.h
1592117404Skanra-colorize.o : ra-colorize.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_P_H) \
1593117404Skan    function.h $(REGS_H) hard-reg-set.h $(BASIC_BLOCK_H) df.h output.h ra.h
1594117404Skanra-debug.o : ra-debug.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H)  insn-config.h \
1595117404Skan   $(RECOG_H) function.h hard-reg-set.h $(BASIC_BLOCK_H) df.h output.h ra.h \
1596117404Skan   $(TM_P_H)
1597117404Skanra-rewrite.o : ra-rewrite.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_P_H) \
1598117404Skan   function.h $(REGS_H) hard-reg-set.h $(BASIC_BLOCK_H) df.h expr.h \
1599117404Skan   output.h except.h ra.h reload.h insn-config.h
160090081Sobrienreload.o : reload.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h output.h \
160190081Sobrien   $(EXPR_H) $(OPTABS_H) reload.h $(RECOG_H) hard-reg-set.h insn-config.h \
160290081Sobrien   $(REGS_H) function.h real.h toplev.h $(TM_P_H)
160390081Sobrienreload1.o : reload1.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) real.h flags.h \
160490081Sobrien   $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) hard-reg-set.h insn-config.h \
160590081Sobrien   $(BASIC_BLOCK_H) $(RECOG_H) output.h function.h toplev.h cselib.h $(TM_P_H) \
160696273Sobrien   except.h $(TREE_H)
160790081Sobriencaller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h \
160890081Sobrien   $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) function.h \
160990081Sobrien   $(RECOG_H) reload.h $(EXPR_H) toplev.h $(TM_P_H)
161090081Sobrienreorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) conditions.h hard-reg-set.h \
161190081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(INSN_ATTR_H) except.h \
161290081Sobrien   $(RECOG_H) function.h flags.h output.h $(EXPR_H) toplev.h $(PARAMS_H) $(TM_P_H)
161390081Sobrienalias.o : alias.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \
161490081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(EXPR_H) \
1615117404Skan   $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h $(TARGET_H) \
1616117404Skan   gt-alias.h
161790081Sobrienregmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \
161890081Sobrien   $(RECOG_H) output.h $(REGS_H) hard-reg-set.h flags.h function.h \
161990081Sobrien   $(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h
162090081Sobrienhaifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
162190081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
162290081Sobrien   $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) $(TARGET_H)
162390081Sobriensched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
162490081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
162590081Sobrien   $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h cselib.h $(PARAMS_H) $(TM_P_H)
162690081Sobriensched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
162790081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
1628117404Skan   $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) $(TARGET_H)
162990081Sobriensched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
163090081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h function.h \
163190081Sobrien   $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H)
163290081Sobriensched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
1633117404Skan   hard-reg-set.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(REGS_H) $(TM_P_H) \
1634117404Skan   $(TARGET_H) real.h
163590081Sobrienfinal.o : final.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h intl.h \
163690081Sobrien   $(REGS_H) $(RECOG_H) conditions.h insn-config.h $(INSN_ATTR_H) function.h \
1637117404Skan   real.h output.h hard-reg-set.h except.h debug.h xcoffout.h profile.h \
163890081Sobrien   toplev.h reload.h dwarf2out.h $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H)
163990081Sobrienrecog.o : recog.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) function.h $(BASIC_BLOCK_H) \
164090081Sobrien   $(REGS_H) $(RECOG_H) $(EXPR_H) hard-reg-set.h flags.h insn-config.h \
164190081Sobrien   $(INSN_ATTR_H) real.h toplev.h output.h reload.h $(TM_P_H)
164290081Sobrienreg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) $(RECOG_H) \
164390081Sobrien   $(REGS_H) hard-reg-set.h flags.h insn-config.h toplev.h reload.h \
1644117404Skan   varray.h function.h $(TM_P_H) $(GGC_H) gt-reg-stack.h
164590081Sobrienpredict.o: predict.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
164690081Sobrien   insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h \
1647117404Skan   $(RECOG_H) function.h except.h $(EXPR_H) $(TM_P_H) $(PREDICT_H) real.h \
1648117404Skan   $(PARAMS_H) $(TARGET_H)
164990081Sobrienlists.o: lists.c $(CONFIG_H) $(SYSTEM_H) toplev.h $(RTL_H) $(GGC_H)
165096273Sobrienbb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
165196273Sobrien   flags.h $(BASIC_BLOCK_H) hard-reg-set.h output.h cfglayout.h $(TARGET_H)
1652117404Skantracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
1653117404Skan   $(BASIC_BLOCK_H) hard-reg-set.h output.h cfglayout.h flags.h \
1654117404Skan   $(PARAMS_H) profile.h
165590081Sobriencfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) \
165690081Sobrien   insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h function.h \
165790081Sobrien   cfglayout.h
165890081Sobrientimevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) $(TIMEVAR_H) flags.h intl.h
165990081Sobrienregrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \
166090081Sobrien   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h $(RECOG_H) function.h \
166190081Sobrien   resource.h $(OBSTACK_H) flags.h $(TM_P_H)
166290081Sobrienifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(REGS_H) toplev.h \
166390081Sobrien   flags.h insn-config.h function.h $(RECOG_H) $(BASIC_BLOCK_H) $(EXPR_H) \
1664117404Skan   output.h except.h $(TM_P_H) real.h
166590081Sobrienparams.o : params.c $(CONFIG_H) $(SYSTEM_H) $(PARAMS_H) toplev.h
166696273Sobrienhooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) $(HOOKS_H)
166718334Speter
166890081Sobrien$(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) $(GGC_H) \
166950448Sobrien   $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \
167090081Sobrien   output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) libfuncs.h \
167190081Sobrien   $(TARGET_DEF_H) function.h sched-int.h $(TM_P_H) $(EXPR_H) $(OPTABS_H) \
167290081Sobrien   langhooks.h
167390081Sobrien	$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
167490081Sobrien		$(out_file) $(OUTPUT_OPTION)
167518334Speter
167618334Speter# Build auxiliary files that support ecoff format.
167718334Spetermips-tfile: mips-tfile.o version.o $(LIBDEPS)
167818334Speter	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tfile.o version.o $(LIBS)
167918334Speter
168090081Sobrienmips-tfile.o : mips-tfile.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) version.h
168118334Speter
168218334Spetermips-tdump: mips-tdump.o version.o $(LIBDEPS)
168318334Speter	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tdump.o version.o $(LIBS)
168418334Speter
168590081Sobrienmips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H)
168618334Speter
168750448Sobrien#
168890081Sobrien# Generate header and source files from the machine description,
168918334Speter# and compile them.
169018334Speter
169190081Sobrien.PRECIOUS: insn-config.h insn-flags.h insn-codes.h insn-constants.h \
169218334Speter  insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \
169318334Speter  insn-attr.h insn-attrtab.c
169418334Speter
169518334Speter# The following pair of rules has this effect:
169618334Speter# genconfig is run only if the md has changed since genconfig was last run;
169718334Speter# but the file insn-config.h is touched only when its contents actually change.
169818334Speter
169918334Speter# Each of the other insn-* files is handled by a similar pair of rules.
170018334Speter
170118334Speter# This causes an anomaly in the results of make -n
170250448Sobrien# because insn-* is older than s-*
170318334Speter# and thus make -n thinks that insn-* will be updated
170418334Speter# and force recompilation of things that depend on it.
170518334Speter# We use move-if-change precisely to avoid such recompilation.
170618334Speter# But there is no way to teach make -n that it will be avoided.
170718334Speter
170818334Speter# Each of the insn-*.[ch] rules has a semicolon at the end,
170918334Speter# for otherwise the system Make on SunOS 4.1 never tries
171018334Speter# to recompile insn-*.o.  To avoid problems and extra noise from
171118334Speter# versions of make which don't like empty commands (nothing after the
171218334Speter# trailing `;'), we call true for each.
171318334Speter
171450448Sobrieninsn-config.h: s-config ; @true
171590081Sobriens-config : $(md_file) genconfig$(build_exeext) $(srcdir)/move-if-change
1716117404Skan	$(RUN_GEN) ./genconfig$(build_exeext) $(md_file) > tmp-config.h
171790081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-config.h insn-config.h
171890081Sobrien	$(STAMP) s-config
171918334Speter
1720117404Skaninsn-conditions.c: s-conditions ; @true
1721117404Skans-conditions : $(md_file) genconditions$(build_exeext) $(srcdir)/move-if-change
1722117404Skan	$(RUN_GEN) ./genconditions$(build_exeext) $(md_file) > tmp-conditions.c
1723117404Skan	$(SHELL) $(srcdir)/move-if-change tmp-conditions.c insn-conditions.c
1724117404Skan	$(STAMP) s-conditions
1725117404Skan
1726117404Skaninsn-conditions.o : insn-conditions.c $(GCONFIG_H) $(SYSTEM_H) $(RTL_H) \
1727117404Skan  $(TM_P_H) $(REGS_H) function.h $(RECOG_H) real.h output.h flags.h \
1728117404Skan  hard-reg-set.h resource.h toplev.h reload.h gensupport.h insn-constants.h
1729117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) insn-conditions.c
1730117404Skan
1731117404Skandummy-conditions.o : dummy-conditions.c $(HCONFIG_H) $(SYSTEM_H) gensupport.h
1732117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
1733117404Skan	    $(srcdir)/dummy-conditions.c $(OUTPUT_OPTION)
1734117404Skan
173550448Sobrieninsn-flags.h: s-flags ; @true
173690081Sobriens-flags : $(md_file) genflags$(build_exeext) $(srcdir)/move-if-change
1737117404Skan	$(RUN_GEN) ./genflags$(build_exeext) $(md_file) > tmp-flags.h
173890081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-flags.h insn-flags.h
173990081Sobrien	$(STAMP) s-flags
174018334Speter
174150448Sobrieninsn-codes.h: s-codes ; @true
174290081Sobriens-codes : $(md_file) gencodes$(build_exeext) $(srcdir)/move-if-change
1743117404Skan	$(RUN_GEN) ./gencodes$(build_exeext) $(md_file) > tmp-codes.h
174490081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-codes.h insn-codes.h
174590081Sobrien	$(STAMP) s-codes
174618334Speter
174790081Sobrieninsn-constants.h: s-constants ; @true
174890081Sobriens-constants : $(md_file) genconstants$(build_exeext) $(srcdir)/move-if-change
1749117404Skan	$(RUN_GEN) ./genconstants$(build_exeext) $(md_file) > tmp-constants.h
175090081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-constants.h insn-constants.h
175190081Sobrien	$(STAMP) s-constants
175290081Sobrien
175350448Sobrieninsn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) $(EXPR_H) real.h output.h \
175490081Sobrien  insn-config.h $(OPTABS_H) $(SYSTEM_H) reload.h $(RECOG_H) toplev.h \
175590081Sobrien  function.h flags.h hard-reg-set.h resource.h $(TM_P_H)
175690081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-emit.c \
175790081Sobrien	  $(OUTPUT_OPTION)
175818334Speter
175950448Sobrieninsn-emit.c: s-emit ; @true
176090081Sobriens-emit : $(md_file) genemit$(build_exeext) $(srcdir)/move-if-change
1761117404Skan	$(RUN_GEN) ./genemit$(build_exeext) $(md_file) > tmp-emit.c
176290081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-emit.c insn-emit.c
176390081Sobrien	$(STAMP) s-emit
176418334Speter
176550448Sobrieninsn-recog.o : insn-recog.c $(CONFIG_H) $(RTL_H) insn-config.h $(RECOG_H) \
176690081Sobrien  real.h output.h flags.h $(SYSTEM_H) function.h hard-reg-set.h resource.h \
176790081Sobrien  $(TM_P_H) toplev.h reload.h
176890081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-recog.c \
176990081Sobrien	  $(OUTPUT_OPTION)
177018334Speter
177150448Sobrieninsn-recog.c: s-recog ; @true
177290081Sobriens-recog : $(md_file) genrecog$(build_exeext) $(srcdir)/move-if-change
1773117404Skan	$(RUN_GEN) ./genrecog$(build_exeext) $(md_file) > tmp-recog.c
177490081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-recog.c insn-recog.c
177590081Sobrien	$(STAMP) s-recog
177618334Speter
177790081Sobrieninsn-opinit.o : insn-opinit.c $(CONFIG_H) $(RTL_H) \
177890081Sobrien  insn-config.h flags.h $(RECOG_H) $(EXPR_H) $(OPTABS_H) reload.h $(SYSTEM_H)
177990081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-opinit.c \
178090081Sobrien	  $(OUTPUT_OPTION)
178118334Speter
178250448Sobrieninsn-opinit.c: s-opinit ; @true
178390081Sobriens-opinit : $(md_file) genopinit$(build_exeext) $(srcdir)/move-if-change
1784117404Skan	$(RUN_GEN) ./genopinit$(build_exeext) $(md_file) > tmp-opinit.c
178590081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-opinit.c insn-opinit.c
178690081Sobrien	$(STAMP) s-opinit
178718334Speter
178890081Sobrieninsn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) toplev.h \
178990081Sobrien  insn-config.h $(RECOG_H)
179090081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-extract.c \
179190081Sobrien	  $(OUTPUT_OPTION)
179218334Speter
179350448Sobrieninsn-extract.c: s-extract ; @true
179490081Sobriens-extract : $(md_file) genextract$(build_exeext) $(srcdir)/move-if-change
1795117404Skan	$(RUN_GEN) ./genextract$(build_exeext) $(md_file) > tmp-extract.c
179690081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-extract.c insn-extract.c
179790081Sobrien	$(STAMP) s-extract
179818334Speter
179952298Sobrieninsn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) $(REGS_H) output.h real.h \
180090081Sobrien	$(SYSTEM_H) insn-config.h $(RECOG_H) except.h function.h $(TM_P_H)
180190081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-peep.c \
180290081Sobrien	  $(OUTPUT_OPTION)
180318334Speter
180450448Sobrieninsn-peep.c: s-peep ; @true
180590081Sobriens-peep : $(md_file) genpeep$(build_exeext) $(srcdir)/move-if-change
1806117404Skan	$(RUN_GEN) ./genpeep$(build_exeext) $(md_file) > tmp-peep.c
180790081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-peep.c insn-peep.c
180890081Sobrien	$(STAMP) s-peep
180918334Speter
181052298Sobrieninsn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(RTL_H) $(REGS_H) real.h \
181190081Sobrien    output.h $(INSN_ATTR_H) insn-config.h $(SYSTEM_H) toplev.h $(RECOG_H) \
181290081Sobrien	$(TM_P_H) flags.h
181390081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-attrtab.c \
181490081Sobrien	  $(OUTPUT_OPTION)
181518334Speter
181650448Sobrieninsn-attr.h: s-attr ; @true
181790081Sobriens-attr : $(md_file) genattr$(build_exeext) $(srcdir)/move-if-change
1818117404Skan	$(RUN_GEN) ./genattr$(build_exeext) $(md_file) > tmp-attr.h
181990081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-attr.h insn-attr.h
182090081Sobrien	$(STAMP) s-attr
182118334Speter
182250448Sobrieninsn-attrtab.c: s-attrtab ; @true
182390081Sobriens-attrtab : $(md_file) genattrtab$(build_exeext) $(srcdir)/move-if-change
1824117404Skan	$(RUN_GEN) ./genattrtab$(build_exeext) $(md_file) > tmp-attrtab.c
182590081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-attrtab.c insn-attrtab.c
182690081Sobrien	$(STAMP) s-attrtab
182718334Speter
182890081Sobrieninsn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) $(GGC_H) $(REGS_H) real.h \
182990081Sobrien    conditions.h hard-reg-set.h insn-config.h $(INSN_ATTR_H) $(EXPR_H) \
183090081Sobrien    output.h $(RECOG_H) function.h $(SYSTEM_H) toplev.h flags.h \
183190081Sobrien    insn-codes.h $(TM_P_H)
183290081Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-output.c \
183390081Sobrien	  $(OUTPUT_OPTION)
183418334Speter
183550448Sobrieninsn-output.c: s-output ; @true
183690081Sobriens-output : $(md_file) genoutput$(build_exeext) $(srcdir)/move-if-change
1837117404Skan	$(RUN_GEN) ./genoutput$(build_exeext) $(md_file) > tmp-output.c
183890081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-output.c insn-output.c
183990081Sobrien	$(STAMP) s-output
184050448Sobrien
184190081Sobriengenrtl.o : genrtl.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) $(GGC_H)
184250448Sobriengenrtl.c genrtl.h : s-genrtl
184350448Sobrien	@true	# force gnu make to recheck modification times.
184450448Sobrien
184590081Sobriens-genrtl: gengenrtl$(build_exeext) $(srcdir)/move-if-change $(RTL_BASE_H)
1846117404Skan	$(RUN_GEN) ./gengenrtl$(build_exeext) -h > tmp-genrtl.h
184790081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-genrtl.h genrtl.h
1848117404Skan	$(RUN_GEN) ./gengenrtl$(build_exeext) > tmp-genrtl.c
184990081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-genrtl.c genrtl.c
185090081Sobrien	$(STAMP) s-genrtl
185150448Sobrien
185290081Sobrientm-preds.h: s-preds; @true
185390081Sobrien
185490081Sobriens-preds: genpreds$(build_exeext) $(srcdir)/move-if-change
1855117404Skan	$(RUN_GEN) ./genpreds$(build_exeext) > tmp-preds.h
185690081Sobrien	$(SHELL) $(srcdir)/move-if-change tmp-preds.h tm-preds.h
185790081Sobrien	$(STAMP) s-preds
185890081Sobrien
1859117404SkanGTFILES = $(GCONFIG_H) $(srcdir)/location.h \
1860117404Skan  $(HASHTAB_H) \
1861117404Skan  $(srcdir)/bitmap.h $(srcdir)/function.h  $(srcdir)/rtl.h $(srcdir)/optabs.h \
1862117404Skan  $(srcdir)/tree.h $(srcdir)/libfuncs.h $(srcdir)/hashtable.h $(srcdir)/real.h \
1863117404Skan  $(srcdir)/varray.h $(srcdir)/ssa.h $(srcdir)/insn-addr.h $(srcdir)/cselib.h \
1864117404Skan  $(srcdir)/c-common.h $(srcdir)/c-tree.h \
1865117404Skan  $(srcdir)/basic-block.h \
1866117404Skan  $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c \
1867117404Skan  $(srcdir)/dwarf2out.c $(srcdir)/emit-rtl.c \
1868117404Skan  $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \
1869117404Skan  $(srcdir)/fold-const.c $(srcdir)/function.c \
1870117404Skan  $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
1871117404Skan  $(srcdir)/profile.c $(srcdir)/ra-build.c $(srcdir)/regclass.c \
1872117404Skan  $(srcdir)/reg-stack.c \
1873117404Skan  $(srcdir)/sdbout.c $(srcdir)/stmt.c $(srcdir)/stor-layout.c \
1874117404Skan  $(srcdir)/tree.c $(srcdir)/varasm.c \
1875117404Skan  $(out_file) \
1876117404Skan  @all_gtfiles@
1877117404Skan
1878117404SkanGTFILES_FILES_LANGS = @all_gtfiles_files_langs@
1879117404SkanGTFILES_FILES_FILES = @all_gtfiles_files_files@
1880117404SkanGTFILES_LANG_DIR_NAMES = @subdirs@
1881117404SkanGTFILES_SRCDIR = @srcdir@
1882117404Skan
1883117404Skangtype-desc.h gtype-desc.c gt-except.h gt-function.h : s-gtype; @true
1884117404Skangt-integrate.h gt-stmt.h gt-tree.h gt-varasm.h gt-emit-rtl.h : s-gtype; @true
1885117404Skangt-explow.h gt-stor-layout.h gt-regclass.h gt-lists.h : s-gtype; @true
1886117404Skangt-alias.h gt-cselib.h gt-fold-const.h gt-gcse.h gt-profile.h : s-gtype; @true
1887117404Skangt-expr.h gt-sdbout.h gt-optabs.h gt-bitmap.h gt-dwarf2out.h : s-gtype ; @true
1888117404Skangt-ra-build.h gt-reg-stack.h : s-gtype ; @true
1889117404Skangt-c-common.h gt-c-decl.h gt-c-parse.h gt-c-pragma.h : s-gtype; @true
1890117404Skangt-c-objc-common.h gtype-c.h gt-location.h : s-gtype ; @true
1891117404Skan
1892117404Skangtyp-gen.h: Makefile
1893117404Skan	echo "/* This file is machine generated.  Do not edit.  */" > tmp-gtyp.h
1894117404Skan	echo "static const char *srcdir = "  >> tmp-gtyp.h
1895117404Skan	echo "\"$(GTFILES_SRCDIR)\"" >> tmp-gtyp.h
1896117404Skan	echo ";" >> tmp-gtyp.h
1897117404Skan	echo "static const char *lang_files[] = {" >> tmp-gtyp.h
1898117404Skan	ll="$(GTFILES_FILES_FILES)"; \
1899117404Skan	for f in $$ll; do \
1900117404Skan	echo "\"$$f\", "; done >> tmp-gtyp.h
1901117404Skan	echo "NULL};" >> tmp-gtyp.h
1902117404Skan	echo "static const char *langs_for_lang_files[] = {" >> tmp-gtyp.h
1903117404Skan	ff="$(GTFILES_FILES_LANGS)"; \
1904117404Skan	for f in $$ff; do \
1905117404Skan	echo "\"$$f\", " ; done  >> tmp-gtyp.h
1906117404Skan	echo "NULL};" >> tmp-gtyp.h
1907117404Skan	echo "static const char *all_files[] = {" >> tmp-gtyp.h
1908117404Skan	gf="$(GTFILES)"; \
1909117404Skan	for f in $$gf; do \
1910117404Skan	echo "\"$$f\", "; done >> tmp-gtyp.h
1911117404Skan	echo " NULL};" >> tmp-gtyp.h
1912117404Skan	echo "static const char *lang_dir_names[] = { \"c\", " >> tmp-gtyp.h
1913117404Skan	gf="$(GTFILES_LANG_DIR_NAMES)"; \
1914117404Skan	for l in $$gf; do \
1915117404Skan	echo "\"$$l\", "; done >> tmp-gtyp.h
1916117404Skan	echo "NULL};" >> tmp-gtyp.h
1917117404Skan	$(SHELL) $(srcdir)/move-if-change tmp-gtyp.h gtyp-gen.h 
1918117404Skan
1919117404Skans-gtype: gengtype$(build_exeext) $(GTFILES)
1920117404Skan	$(RUN_GEN) ./gengtype
1921117404Skan	$(STAMP) s-gtype
1922117404Skan
192350448Sobrien#
192418334Speter# Compile the programs that generate insn-* from the machine description.
192518334Speter# They are compiled with $(HOST_CC), and associated libraries,
192618334Speter# since they need to run on this machine
192718334Speter# even if GCC is being compiled to run on some other machine.
192818334Speter
192918334Speter# $(CONFIG_H) is omitted from the deps of the gen*.o
193090081Sobrien# because these programs don't really depend on anything
193118334Speter# about the target machine.  They do depend on config.h itself,
193218334Speter# since that describes the host machine.
193318334Speter
193490081Sobrienread-rtl.o: read-rtl.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \
193590081Sobrien  $(OBSTACK_H) $(HASHTAB_H)
193690081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/read-rtl.c $(OUTPUT_OPTION)
193718334Speter
193890081Sobriengensupport.o: gensupport.c $(RTL_H) $(OBSTACK_H) $(SYSTEM_H) errors.h gensupport.h
193990081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gensupport.c $(OUTPUT_OPTION)
194090081Sobrien
1941117404Skangenconfig$(build_exeext) : genconfig.o $(HOST_RTL) $(HOST_SUPPORT) \
1942117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
194318334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
1944117404Skan	  genconfig.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
1945117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
194618334Speter
194790081Sobriengenconfig.o : genconfig.c $(RTL_H) $(HCONFIG_H) \
194890081Sobrien  $(SYSTEM_H) errors.h gensupport.h
194990081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconfig.c $(OUTPUT_OPTION)
195018334Speter
1951117404Skangenflags$(build_exeext) : genflags.o $(HOST_RTL) $(HOST_SUPPORT) \
1952117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
195318334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
1954117404Skan	 genflags.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
1955117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
195618334Speter
195790081Sobriengenflags.o : genflags.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \
195890081Sobrien  $(SYSTEM_H) errors.h gensupport.h
195990081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genflags.c $(OUTPUT_OPTION)
196018334Speter
1961117404Skangencodes$(build_exeext) : gencodes.o $(HOST_RTL) $(HOST_SUPPORT) \
1962117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
196318334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
1964117404Skan	 gencodes.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
1965117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
196618334Speter
196790081Sobriengencodes.o : gencodes.c $(RTL_H) $(HCONFIG_H) \
196890081Sobrien  $(SYSTEM_H) errors.h gensupport.h
196990081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gencodes.c $(OUTPUT_OPTION)
197018334Speter
1971117404Skangenconstants$(build_exeext) : genconstants.o $(HOST_RTL) $(HOST_EARLY_SUPPORT) \
1972117404Skan  $(HOST_ERRORS) $(HOST_LIBDEPS)
197318334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
1974117404Skan	 genconstants.o $(HOST_EARLY_SUPPORT) $(HOST_RTL) \
1975117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
197618334Speter
197790081Sobriengenconstants.o : genconstants.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h
197890081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconstants.c $(OUTPUT_OPTION)
197918334Speter
1980117404Skangenemit$(build_exeext) : genemit.o $(HOST_RTL) $(HOST_SUPPORT) \
1981117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
198218334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
1983117404Skan	 genemit.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
1984117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
198518334Speter
198690081Sobriengenemit.o : genemit.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h
198790081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genemit.c $(OUTPUT_OPTION)
198818334Speter
1989117404Skangenopinit$(build_exeext) : genopinit.o $(HOST_RTL) $(HOST_SUPPORT) \
1990117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
199118334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
1992117404Skan	 genopinit.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
1993117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
199418334Speter
199590081Sobriengenopinit.o : genopinit.c $(RTL_H) $(HCONFIG_H) \
199690081Sobrien  $(SYSTEM_H) errors.h gensupport.h
199790081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genopinit.c $(OUTPUT_OPTION)
199818334Speter
1999117404Skangenrecog$(build_exeext) : genrecog.o $(HOST_RTL) $(HOST_SUPPORT) \
2000117404Skan    $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
200118334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2002117404Skan	 genrecog.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
2003117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
200418334Speter
200590081Sobriengenrecog.o : genrecog.c $(RTL_H) $(HCONFIG_H) \
200690081Sobrien  $(SYSTEM_H) errors.h gensupport.h
200790081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genrecog.c $(OUTPUT_OPTION)
200818334Speter
2009117404Skangenextract$(build_exeext) : genextract.o $(HOST_RTL) $(HOST_SUPPORT) \
2010117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
201118334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2012117404Skan	 genextract.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
2013117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
201418334Speter
201590081Sobriengenextract.o : genextract.c $(RTL_H) $(HCONFIG_H) \
201690081Sobrien  $(SYSTEM_H) insn-config.h errors.h gensupport.h
201790081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genextract.c $(OUTPUT_OPTION)
201818334Speter
2019117404Skangenpeep$(build_exeext) : genpeep.o $(HOST_RTL) $(HOST_SUPPORT) \
2020117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
202118334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2022117404Skan	 genpeep.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
2023117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
202418334Speter
202590081Sobriengenpeep.o : genpeep.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h
202690081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpeep.c $(OUTPUT_OPTION)
202718334Speter
2028117404Skangenattr$(build_exeext) : genattr.o $(HOST_RTL) $(HOST_SUPPORT) \
2029117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
203018334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2031117404Skan	 genattr.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
2032117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
203318334Speter
203490081Sobriengenattr.o : genattr.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h gensupport.h
203590081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattr.c $(OUTPUT_OPTION)
203618334Speter
2037117404Skangenattrtab$(build_exeext) : genattrtab.o genautomata.o \
2038117404Skan  $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) $(HOST_ERRORS) $(HOST_VARRAY) \
2039117404Skan  $(HOST_LIBDEPS)
204018334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2041117404Skan	 genattrtab.o genautomata.o \
2042117404Skan	 $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) $(HOST_ERRORS) \
2043117404Skan	 $(HOST_VARRAY) $(HOST_LIBS) -lm
204418334Speter
204590081Sobriengenattrtab.o : genattrtab.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \
2046117404Skan  $(SYSTEM_H) errors.h $(GGC_H) gensupport.h genattrtab.h
204790081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattrtab.c $(OUTPUT_OPTION)
204850448Sobrien
2049117404Skangenautomata.o : genautomata.c $(RTL_H) $(OBSTACK_H) $(HCONFIG_H) \
2050117404Skan  $(SYSTEM_H) errors.h varray.h genattrtab.h $(HASHTAB_H)
2051117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genautomata.c $(OUTPUT_OPTION)
2052117404Skan
2053117404Skangenoutput$(build_exeext) : genoutput.o $(HOST_RTL) $(HOST_SUPPORT) \
2054117404Skan  $(HOST_PRINT) $(HOST_ERRORS) $(HOST_LIBDEPS)
205550448Sobrien	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2056117404Skan	 genoutput.o $(HOST_RTL) $(HOST_SUPPORT) $(HOST_PRINT) \
2057117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
205890081Sobrien
205990081Sobriengenoutput.o : genoutput.c $(RTL_H) $(HCONFIG_H) \
206090081Sobrien  $(SYSTEM_H) errors.h gensupport.h
206190081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genoutput.c $(OUTPUT_OPTION)
206290081Sobrien
206390081Sobriengengenrtl$(build_exeext) : gengenrtl.o $(HOST_LIBDEPS)
206490081Sobrien	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
206550448Sobrien	 gengenrtl.o $(HOST_LIBS)
206650448Sobrien
206790081Sobriengengenrtl.o : gengenrtl.c $(RTL_BASE_H) $(HCONFIG_H) $(SYSTEM_H) real.h
206890081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gengenrtl.c $(OUTPUT_OPTION)
206950448Sobrien
207090081Sobriengenpreds$(build_exeext) : genpreds.o $(HOST_LIBDEPS)
207190081Sobrien	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
207290081Sobrien	 genpreds.o $(HOST_LIBS)
207390081Sobrien
207490081Sobriengenpreds.o : genpreds.c $(RTL_BASE_H) $(HCONFIG_H) $(SYSTEM_H)
207590081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpreds.c $(OUTPUT_OPTION)
207690081Sobrien
2077117404Skangengtype$(build_exeext) : gengtype.o gengtype-lex.o gengtype-yacc.o \
2078117404Skan  $(HOST_LIBDEPS)
2079117404Skan	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2080117404Skan	 gengtype.o gengtype-lex.o gengtype-yacc.o $(HOST_LIBS)
2081117404Skan
2082117404Skangengtype.o : gengtype.c gengtype.h $(HCONFIG_H) $(SYSTEM_H) real.h rtl.def \
2083117404Skan  gtyp-gen.h
2084117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
2085117404Skan	  $(srcdir)/gengtype.c $(OUTPUT_OPTION)
2086117404Skan
2087117404Skangengtype-lex.o : $(srcdir)/gengtype-lex.c gengtype.h $(srcdir)/gengtype-yacc.c \
2088117404Skan  $(HCONFIG_H) $(SYSTEM_H)
2089117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
2090117404Skan	  $(srcdir)/gengtype-lex.c $(OUTPUT_OPTION)
2091117404Skan
2092117404Skangengtype-yacc.o : $(srcdir)/gengtype-yacc.c gengtype.h $(HCONFIG_H) $(SYSTEM_H)
2093117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
2094117404Skan	  $(srcdir)/gengtype-yacc.c $(OUTPUT_OPTION)
2095117404Skan
2096117404Skan# The sed command works around a bug in flex-2.5.4.
2097117404Skan$(srcdir)/gengtype-lex.c : $(srcdir)/gengtype-lex.l
2098117404Skan	cd $(srcdir) && \
2099117404Skan	$(FLEX) $(FLEXFLAGS) -t -o$@ gengtype-lex.l | \
2100117404Skan	  sed 's/^\(char msg\[\];\)/yyconst \1/' > g-$$$$ ; \
2101117404Skan	if test $$? -eq 0 ; then \
2102117404Skan	  mv -f g-$$$$ gengtype-lex.c ; \
2103117404Skan	else \
2104117404Skan	  rm -f g-$$$$.* ; \
2105117404Skan	  false ; \
2106117404Skan	fi
2107117404Skan
2108117404Skan$(srcdir)/gengtype-yacc.c: $(srcdir)/gengtype-yacc.y
2109117404Skan	(cd $(srcdir) && \
2110117404Skan	 $(BISON) $(BISONFLAGS) -d -o gengtype-yacc.c gengtype-yacc.y || \
2111117404Skan	 ( rm -f $@ && false ) )
2112117404Skan
2113117404Skangenconditions$(build_exeext) : genconditions.o $(HOST_EARLY_SUPPORT) \
2114117404Skan  $(HOST_RTL) $(HOST_ERRORS) $(HOST_LIBDEPS)
2115117404Skan	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
2116117404Skan	 genconditions.o $(HOST_EARLY_SUPPORT) $(HOST_RTL) \
2117117404Skan	    $(HOST_ERRORS) $(HOST_LIBS)
2118117404Skan
2119117404Skangenconditions.o : genconditions.c $(RTL_H) $(HCONFIG_H) $(SYSTEM_H) errors.h
2120117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
2121117404Skan		$(srcdir)/genconditions.c $(OUTPUT_OPTION)
2122117404Skan
212350448Sobrien#
212418334Speter# Compile the libraries to be used by gen*.
212518334Speter# If we are not cross-building, gen* use the same .o's that cc1 will use,
2126117404Skan# and BUILD_PREFIX_1 is `loser-', just to ensure these rules don't conflict
212790081Sobrien# with the rules for rtl.o, etc.
2128117404Skan$(BUILD_PREFIX_1)rtl.o: $(srcdir)/rtl.c $(HCONFIG_H) $(SYSTEM_H) $(RTL_H) \
212990081Sobrien  real.h $(GGC_H) errors.h
2130117404Skan	rm -f $(BUILD_PREFIX)rtl.c
2131117404Skan	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/rtl.c > $(BUILD_PREFIX)rtl.c
2132117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)rtl.c $(OUTPUT_OPTION)
213318334Speter
2134117404Skanprint-rtl1.o: $(srcdir)/print-rtl.c $(HCONFIG_H) \
213590081Sobrien  $(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H)
2136117404Skan	rm -f print-rtl1.c
2137117404Skan	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/print-rtl.c > print-rtl1.c
2138117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) print-rtl1.c $(OUTPUT_OPTION)
213918334Speter
2140117404Skan$(BUILD_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(HCONFIG_H) $(SYSTEM_H) \
2141117404Skan  $(RTL_H) flags.h $(BASIC_BLOCK_H) $(REGS_H) $(GGC_H)
2142117404Skan	rm -f $(BUILD_PREFIX)bitmap.c
2143117404Skan	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(BUILD_PREFIX)bitmap.c
2144117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)bitmap.c $(OUTPUT_OPTION)
214550448Sobrien
2146117404Skan$(BUILD_PREFIX_1)errors.o: errors.c $(HCONFIG_H) $(SYSTEM_H) errors.h
2147117404Skan	rm -f $(BUILD_PREFIX)errors.c
2148117404Skan	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/errors.c > $(BUILD_PREFIX)errors.c
2149117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)errors.c $(OUTPUT_OPTION)
215018334Speter
2151117404Skan$(BUILD_PREFIX_1)varray.o: varray.c $(HCONFIG_H) $(SYSTEM_H) varray.h \
2152117404Skan  $(RTL_H) $(GGC_H) $(TREE_H) bitmap.h errors.h
2153117404Skan	rm -f $(BUILD_PREFIX)varray.c
2154117404Skan	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/varray.c > \
2155117404Skan		$(BUILD_PREFIX)varray.c
2156117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
2157117404Skan		$(BUILD_PREFIX)varray.c $(OUTPUT_OPTION)
215818334Speter
2159117404Skan$(BUILD_PREFIX_1)ggc-none.o: ggc-none.c $(HCONFIG_H) $(SYSTEM_H) $(GGC_H)
2160117404Skan	rm -f $(BUILD_PREFIX)ggc-none.c
2161117404Skan	sed -e 's/config[.]h/hconfig.h/' $(srcdir)/ggc-none.c > $(BUILD_PREFIX)ggc-none.c
2162117404Skan	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(BUILD_PREFIX)ggc-none.c $(OUTPUT_OPTION)
2163117404Skan
216450448Sobrien#
216552298Sobrien# Remake internationalization support.
216690081Sobrienintl.o: intl.c $(CONFIG_H) system.h intl.h Makefile
216752298Sobrien	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
216852298Sobrien	  -DLOCALEDIR=\"$(localedir)\" \
216990081Sobrien	  -c $(srcdir)/intl.c $(OUTPUT_OPTION)
217052298Sobrien
217190081Sobrien$(top_builddir)/intl/libintl.a: intl.all
217252298Sobrien
217390081Sobrienintl.all intl.install intl.uninstall \
217452298Sobrien  intl.mostlyclean intl.clean intl.distclean intl.maintainer-clean:
217552298Sobrien	@for d in $(INTL_SUBDIRS); do \
217652298Sobrien	  target=`expr $@ : 'intl.\(.*\)'` && \
217752298Sobrien	  echo "(cd $$d && $(MAKE) $$target)" && \
217852298Sobrien	  (cd $$d && AWK='$(AWK)' $(MAKE) $(SUBDIR_FLAGS_TO_PASS) $$target); \
217990081Sobrien	  if [ $$? -eq 0 ] ; then true ; else exit 1 ; fi ; \
218052298Sobrien	done
218152298Sobrien
218290081Sobrien# intl.all and intl.install need config.h to exist, and the files it includes.
218390081Sobrien# (FIXME: intl/*.c shouldn't need to see insn-foo.h!)
218490081Sobrienintl.all intl.install: config.h insn-flags.h insn-constants.h
218590081Sobrien
218690081Sobrien# Make-lang.in should add dependencies of po-generated on any generated
218790081Sobrien# files which need to be scanned by gettext (usually Yacc-generated parsers).
2188117404Skanpo-generated: c-parse.c
218990081Sobrien
219052298Sobrien#
219118334Speter# Remake cpp and protoize.
219218334Speter
219390081SobrienPREPROCESSOR_DEFINES = \
219490081Sobrien  -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
219590081Sobrien  -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
219690081Sobrien  -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_alias)\" \
219790081Sobrien  -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
219890081Sobrien  -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
219990081Sobrien  -DCROSS_INCLUDE_DIR=\"$(gcc_tooldir)/sys-include\" \
220090081Sobrien  -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\"
220118334Speter
2202117404SkanLIBCPP_OBJS =	cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o cpptrad.o \
2203117404Skan		cpphash.o cpperror.o cppinit.o cppdefault.o cppmain.o \
2204117404Skan		hashtable.o line-map.o mkdeps.o prefix.o mbchar.o
220518334Speter
220690081SobrienLIBCPP_DEPS =	$(CPPLIB_H) cpphash.h line-map.h hashtable.h intl.h \
220790081Sobrien		$(OBSTACK_H) $(SYSTEM_H)
220818334Speter
220990081Sobrien# Most of the other archives built/used by this makefile are for
221090081Sobrien# targets.  This one is strictly for the host.
221152298Sobrienlibcpp.a: $(LIBCPP_OBJS)
221290081Sobrien	-rm -rf libcpp.a
221352298Sobrien	$(AR) $(AR_FLAGS) libcpp.a $(LIBCPP_OBJS)
221490081Sobrien	-$(RANLIB) libcpp.a
221550448Sobrien
2216117404Skancppmain.o:  cppmain.c  $(CONFIG_H) $(LIBCPP_DEPS)
221752298Sobrien
221890081Sobriencpperror.o: cpperror.c $(CONFIG_H) $(LIBCPP_DEPS)
221990081Sobriencppexp.o:   cppexp.c   $(CONFIG_H) $(LIBCPP_DEPS)
222090081Sobriencpplex.o:   cpplex.c   $(CONFIG_H) $(LIBCPP_DEPS) mbchar.h
222190081Sobriencppmacro.o: cppmacro.c $(CONFIG_H) $(LIBCPP_DEPS)
222290081Sobriencpplib.o:   cpplib.c   $(CONFIG_H) $(LIBCPP_DEPS)
222390081Sobriencpphash.o:  cpphash.c  $(CONFIG_H) $(LIBCPP_DEPS)
2224117404Skancpptrad.o:  cpptrad.c  $(CONFIG_H) $(LIBCPP_DEPS)
222590081Sobriencppfiles.o: cppfiles.c $(CONFIG_H) $(LIBCPP_DEPS) $(SPLAY_TREE_H) mkdeps.h
222690081Sobriencppinit.o:  cppinit.c  $(CONFIG_H) $(LIBCPP_DEPS) cppdefault.h \
2227117404Skan		mkdeps.h prefix.h
222852298Sobrien
222990081Sobriencppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) cppdefault.h Makefile
223018334Speter	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
223190081Sobrien	  $(PREPROCESSOR_DEFINES) \
223290081Sobrien	  -c $(srcdir)/cppdefault.c $(OUTPUT_OPTION)
223318334Speter
223490081Sobrienmkdeps.o: mkdeps.c $(CONFIG_H) $(SYSTEM_H) mkdeps.h
223590081Sobrien
223618334Speter# Note for the stamp targets, we run the program `true' instead of
223718334Speter# having an empty command (nothing following the semicolon).
223818334Speter
223950448Sobrienproto: config.status protoize$(exeext) unprotoize$(exeext) SYSCALLS.c.X
224018334Speter
224196273SobrienPROTO_OBJS = intl.o version.o cppdefault.o
224218334Speter
224352298Sobrienprotoize$(exeext): protoize.o $(PROTO_OBJS) $(LIBDEPS)
224452298Sobrien	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ protoize.o $(PROTO_OBJS) $(LIBS)
224518334Speter
224652298Sobrienunprotoize$(exeext): unprotoize.o $(PROTO_OBJS) $(LIBDEPS)
224752298Sobrien	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ unprotoize.o $(PROTO_OBJS) $(LIBS)
224852298Sobrien
224990081Sobrienprotoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) $(SYSTEM_H) \
225090081Sobrien   Makefile version.h
225190081Sobrien	(SHLIB_LINK='$(SHLIB_LINK)' \
225290081Sobrien	SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \
225318334Speter	$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
225496273Sobrien	  $(DRIVER_DEFINES) \
225590081Sobrien	  $(srcdir)/protoize.c $(OUTPUT_OPTION))
225650448Sobrien
225796273Sobrienunprotoize.o: protoize.c $(srcdir)/../include/getopt.h \
225890081Sobrien   $(CONFIG_H) $(SYSTEM_H) Makefile version.h
225990081Sobrien	(SHLIB_LINK='$(SHLIB_LINK)' \
226090081Sobrien	SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \
226196273Sobrien	$(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
226296273Sobrien	  $(DRIVER_DEFINES) \
226396273Sobrien	  $(srcdir)/protoize.c $(OUTPUT_OPTION))
226418334Speter
226518334Speter# This info describes the target machine, so compile with GCC just built.
226618334SpeterSYSCALLS.c.X: $(srcdir)/sys-types.h $(srcdir)/sys-protos.h $(GCC_PASSES) \
226718334Speter   stmp-int-hdrs
226818334Speter	-rm -f SYSCALLS.c tmp-SYSCALLS.s
226990081Sobrien	sed -e s/TARGET_GETGROUPS_T/$(TARGET_GETGROUPS_T)/ \
227090081Sobrien	  $(srcdir)/sys-types.h $(srcdir)/sys-protos.h > SYSCALLS.c
227118334Speter	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
227218334Speter	  -aux-info $@ -S -o tmp-SYSCALLS.s SYSCALLS.c
227318334Speter	-rm -f SYSCALLS.c tmp-SYSCALLS.s
227418334Speter
227518334Speter
227618334Spetertest-protoize-simple: ./protoize ./unprotoize $(GCC_PASSES)
227718334Speter	-rm -f tmp-proto.[cso]
227818334Speter	cp $(srcdir)/protoize.c tmp-proto.c
227918334Speter	chmod u+w tmp-proto.c
228018334Speter	./protoize -N -B ./ -x getopt.h -c "-B./ -Wall -Wwrite-strings \
228190081Sobrien	  $(GCC_CFLAGS) $(INCLUDES) \
228218334Speter	  -DGCC_INCLUDE_DIR=0 \
228318334Speter	  -DGPLUSPLUS_INCLUDE_DIR=0 \
228418334Speter	  -DCROSS_INCLUDE_DIR=0 \
228518334Speter	  -DTOOL_INCLUDE_DIR=0 \
228690081Sobrien	  -DSTANDARD_EXEC_PREFIX=0 \
228790081Sobrien	  -DDEFAULT_TARGET_MACHINE=0 \
228890081Sobrien	  -DDEFAULT_TARGET_VERSION=0" tmp-proto.c
228918334Speter	@echo '**********' Expect 400 lines of differences.
229018334Speter	-diff $(srcdir)/protoize.c tmp-proto.c > tmp-proto.diff
229118334Speter	-wc -l tmp-proto.diff
229218334Speter	./unprotoize -N -x getopt.h -c "-B./ -Wall -Wwrite-strings \
229390081Sobrien	  $(GCC_CFLAGS) $(INCLUDES) \
229418334Speter	  -DGCC_INCLUDE_DIR=0 \
229518334Speter	  -DGPLUSPLUS_INCLUDE_DIR=0 \
229618334Speter	  -DCROSS_INCLUDE_DIR=0 \
229718334Speter	  -DTOOL_INCLUDE_DIR=0 \
229890081Sobrien	  -DSTANDARD_EXEC_PREFIX=0 \
229990081Sobrien	  -DDEFAULT_TARGET_MACHINE=0 \
230090081Sobrien	  -DDEFAULT_TARGET_VERSION=0" tmp-proto.c
230118334Speter	@echo Expect zero differences.
230218334Speter	diff $(srcdir)/protoize.c tmp-proto.c | cat
230318334Speter	-rm -f tmp-proto.[cs] tmp-proto$(objext)
230450448Sobrien
230590081Sobriengcov.o: gcov.c gcov-io.h intl.h $(SYSTEM_H) $(CONFIG_H)
230650448Sobrien
230750448Sobrien# Only one of 'gcov' or 'gcov.exe' is actually built, depending
230850448Sobrien# upon whether $(exeext) is empty or not.
230990081SobrienGCOV_OBJS = gcov.o intl.o version.o
231052298Sobriengcov$(exeext): $(GCOV_OBJS) $(LIBDEPS)
231152298Sobrien	$(CC) $(ALL_CFLAGS) $(LDFLAGS) $(GCOV_OBJS) $(LIBS) -o $@
231250448Sobrien#
231318334Speter# Build the include directory.  The stamp files are stmp-* rather than
231450448Sobrien# s-* so that mostlyclean does not force the include directory to
231518334Speter# be rebuilt.
231618334Speter
2317117404Skan# Build the include directory
231890081Sobrienstmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h
231918334Speter# Copy in the headers provided with gcc.
232018334Speter# The sed command gets just the last file name component;
232118334Speter# this is necessary because VPATH could add a dirname.
232218334Speter# Using basename would be simpler, but some systems don't have it.
232350448Sobrien# The touch command is here to workaround an AIX/Linux NFS bug.
232490081Sobrien	-if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
232518334Speter	for file in .. $(USER_H); do \
232618334Speter	  if [ X$$file != X.. ]; then \
232718334Speter	    realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
232890081Sobrien	    $(STAMP) include/$$realfile; \
232950448Sobrien	    rm -f include/$$realfile; \
233050448Sobrien	    cp $$file include; \
233150448Sobrien	    chmod a+r include/$$realfile; \
233218334Speter	  fi; \
233318334Speter	done
233418334Speter	rm -f include/limits.h
233518334Speter	cp xlimits.h include/limits.h
233618334Speter	chmod a+r include/limits.h
233718334Speter# Install the README
233818334Speter	rm -f include/README
233918334Speter	cp $(srcdir)/README-fixinc include/README
234018334Speter	chmod a+r include/README
234190081Sobrien	$(STAMP) $@
234218334Speter
234390081Sobrien# fixinc.sh depends on this, not on specs directly.
234490081Sobrien# The idea is to make sure specs gets built, but not rerun fixinc.sh
234590081Sobrien# after each stage just because specs' mtime has changed.
234690081Sobrienspecs.ready: specs
234790081Sobrien	-if [ -f specs.ready ] ; then \
234890081Sobrien		true; \
234990081Sobrien	else \
235090081Sobrien		$(STAMP) specs.ready; \
235190081Sobrien	fi
235218334Speter
235352298SobrienFIXINCSRCDIR=$(srcdir)/fixinc
235452298Sobrienfixinc.sh: $(FIXINCSRCDIR)/mkfixinc.sh $(FIXINCSRCDIR)/fixincl.c \
235552298Sobrien	$(FIXINCSRCDIR)/procopen.c $(FIXINCSRCDIR)/gnu-regex.c \
235652298Sobrien	$(FIXINCSRCDIR)/server.c $(FIXINCSRCDIR)/gnu-regex.h \
235790081Sobrien	$(FIXINCSRCDIR)/server.h $(FIXINCSRCDIR)/inclhack.def specs.ready
2358117404Skan	(MAKE="$(MAKE)"; srcdir=`cd $(srcdir)/fixinc && ${PWD_COMMAND}` ; \
235990081Sobrien	CC="$(HOST_CC)"; CFLAGS="$(HOST_CFLAGS)"; LDFLAGS="$(HOST_LDFLAGS)"; \
236090081Sobrien	WARN_CFLAGS="$(WARN_CFLAGS)"; \
236190081Sobrien	export MAKE srcdir CC CFLAGS LDFLAGS WARN_CFLAGS; cd ./fixinc && \
236290081Sobrien	$(SHELL) $${srcdir}/mkfixinc.sh $(build_canonical) $(target))
236350448Sobrien
236418334Speter# Build fixed copies of system files.
236552298Sobrienstmp-fixinc: fixinc.sh gsyslimits.h
236652298Sobrien	rm -rf include; mkdir include
236790081Sobrien	-chmod a+rx include
2368117404Skan	(TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \
236990081Sobrien	SHELL='$(SHELL)' ;\
237090081Sobrien	export TARGET_MACHINE srcdir SHELL ; \
2371117404Skan	$(SHELL) ./fixinc.sh `${PWD_COMMAND}`/include $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS); \
237290081Sobrien	rm -f include/syslimits.h; \
237318334Speter	if [ -f include/limits.h ]; then \
237418334Speter	  mv include/limits.h include/syslimits.h; \
237518334Speter	else \
237618334Speter	  cp $(srcdir)/gsyslimits.h include/syslimits.h; \
237790081Sobrien	fi; \
237890081Sobrien	chmod a+r include/syslimits.h)
237990081Sobrien# If $(SYSTEM_HEADER_DIR) is $(build_tooldir)/sys-include, and
238052298Sobrien# that directory exists, then make sure that $(libsubdir) exists.
238190081Sobrien# This is because cpp is compiled to find $(gcc_tooldir)/include via
238252298Sobrien# $(libsubdir)/$(unlibsubdir), which will only work if $(libsubdir)
238352298Sobrien# exists.
238490081Sobrien# ??? Better would be to use -isystem $(build_tooldir)/sys-include,
238590081Sobrien# but fixincludes does not take such arguments.
238690081Sobrien	if [ "$(SYSTEM_HEADER_DIR)" = "$(build_tooldir)/sys-include" ] \
238790081Sobrien	   && [ -d $(build_tooldir)/sys-include ]; then \
238852298Sobrien	  if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi; \
238952298Sobrien	  if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib; fi; \
239052298Sobrien	  if [ -d $(libdir)/gcc-lib/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; fi; \
239152298Sobrien	  if [ -d $(libdir)/gcc-lib/$(target_alias)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias)/$(version) ; fi; \
239252298Sobrien	else true; fi
239390081Sobrien	$(STAMP) stmp-fixinc
239452298Sobrien
239518334Speter# Files related to the fixproto script.
239690081Sobrien# gen-protos and fix-header are compiled with HOST_CC, but they are only
239790081Sobrien# used in native and host-x-target builds, so it's safe to link them with
239890081Sobrien# libiberty.a.
239918334Speter
240018334Speterdeduced.h: $(GCC_PASSES) $(srcdir)/scan-types.sh stmp-int-hdrs
240150448Sobrien	if [ -d $(SYSTEM_HEADER_DIR) ]; \
240250448Sobrien	then \
240390081Sobrien	  CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -isystem include -isystem ${SYSTEM_HEADER_DIR}"; \
240418334Speter	  export CC; \
240550448Sobrien	  $(SHELL) $(srcdir)/scan-types.sh "$(srcdir)" >tmp-deduced.h; \
240650448Sobrien	  mv tmp-deduced.h deduced.h; \
240750448Sobrien	else \
240890081Sobrien	  $(STAMP) deduced.h; \
240950448Sobrien	fi
241018334Speter
241190081SobrienGEN_PROTOS_OBJS = gen-protos.o scan.o
241290081Sobriengen-protos$(build_exeext): $(GEN_PROTOS_OBJS)
241390081Sobrien	${HOST_CC} $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
241452298Sobrien	  $(GEN_PROTOS_OBJS) $(HOST_LIBS)
241518334Speter
241690081Sobriengen-protos.o: gen-protos.c scan.h $(HCONFIG_H) $(SYSTEM_H)
241790081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gen-protos.c $(OUTPUT_OPTION)
241818334Speter
241990081Sobrienscan.o: scan.c scan.h $(HCONFIG_H) $(SYSTEM_H)
242090081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan.c $(OUTPUT_OPTION)
242118334Speter
242290081Sobrienxsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos$(build_exeext) Makefile
242390081Sobrien	sed -e s/TARGET_GETGROUPS_T/$(TARGET_GETGROUPS_T)/ \
242490081Sobrien	  deduced.h $(srcdir)/sys-protos.h > tmp-fixtmp.c
242518334Speter	mv tmp-fixtmp.c fixtmp.c
242618334Speter	$(GCC_FOR_TARGET) fixtmp.c -w -U__SIZE_TYPE__ -U__PTRDIFF_TYPE__ -U__WCHAR_TYPE__ -E \
242718334Speter	  | sed -e 's/	/ /g' -e 's/ *(/ (/g' -e 's/ [ ]*/ /g' -e 's/( )/()/' \
2428117404Skan	  | $(RUN_GEN) ./gen-protos >xsys-protos.hT
242918334Speter	mv xsys-protos.hT xsys-protos.h
243018334Speter	rm -rf fixtmp.c
243118334Speter
243290081Sobrien# This is nominally a 'build' program, but it's run only when host==build,
243390081Sobrien# so we can (indeed, must) use $(LIBDEPS) and $(LIBS).
243490081Sobrienfix-header$(build_exeext): fix-header.o scan-decls.o scan.o xsys-protos.h \
243590081Sobrien           $(LIBDEPS) libcpp.a
243618334Speter	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ fix-header.o \
243790081Sobrien	   scan-decls.o scan.o libcpp.a $(LIBS)
243818334Speter
243990081Sobrienfix-header.o: fix-header.c $(OBSTACK_H) scan.h \
244090081Sobrien	xsys-protos.h $(HCONFIG_H) $(SYSTEM_H) $(CPPLIB_H)
244190081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/fix-header.c $(OUTPUT_OPTION)
244218334Speter
244390081Sobrienscan-decls.o: scan-decls.c scan.h $(CPPLIB_H) $(HCONFIG_H) $(SYSTEM_H)
244490081Sobrien	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan-decls.c $(OUTPUT_OPTION)
244518334Speter
244618334Speter# stmp-fixproto depends on this, not on fix-header directly.
244718334Speter# The idea is to make sure fix-header gets built,
244818334Speter# but not rerun fixproto after each stage
244918334Speter# just because fix-header's mtime has changed.
245090081Sobrienfixhdr.ready: fix-header$(build_exeext)
245118334Speter	-if [ -f fixhdr.ready ] ; then \
245218334Speter		true; \
245318334Speter	else \
245490081Sobrien		$(STAMP) fixhdr.ready; \
245518334Speter	fi
245618334Speter
245790081Sobrien# stmp-int-headers is to make sure fixincludes has already finished.
245818334Speter# The if statement is so that we don't run fixproto a second time
245918334Speter# if it has already been run on the files in `include'.
246090081Sobrienstmp-fixproto: fixhdr.ready fixproto stmp-int-hdrs
246190081Sobrien	if [ -f include/fixed ] ; then true; \
246218334Speter	else \
246318334Speter	  : This line works around a 'make' bug in BSDI 1.1.; \
246418334Speter	  FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"; export FIXPROTO_DEFINES; \
246552298Sobrien	  mkinstalldirs="$(SHELL) $(srcdir)/mkinstalldirs"; \
246652298Sobrien	    export mkinstalldirs; \
246750448Sobrien	  if [ -d $(SYSTEM_HEADER_DIR) ] ; then \
246850448Sobrien	    $(SHELL) ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR); \
246990081Sobrien	    if [ $$? -eq 0 ] ; then true ; else exit 1 ; fi ; \
247050448Sobrien	  else true; fi; \
247190081Sobrien	  $(STAMP) include/fixed; \
247218334Speter	fi
247390081Sobrien	$(STAMP) stmp-fixproto
247450448Sobrien#
247518334Speter# Remake the info files.
247618334Speter
247790081Sobriendocdir = $(srcdir)/doc
247818334Speter
247990081Sobriendoc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug
2480117404Skaninfo: $(docdir)/cpp.info $(docdir)/gcc.info $(docdir)/gccint.info $(docdir)/gccinstall.info lang.info $(docdir)/cppinternals.info
248118334Speter
2482117404SkanTEXI_CPP_FILES = $(docdir)/cpp.texi $(docdir)/include/fdl.texi \
248396273Sobrien  $(docdir)/cppenv.texi $(docdir)/cppopts.texi
248418334Speter
2485117404SkanTEXI_GCC_FILES = $(docdir)/gcc.texi $(docdir)/include/gcc-common.texi \
248690081Sobrien	 $(docdir)/frontends.texi $(docdir)/standards.texi \
248790081Sobrien	 $(docdir)/invoke.texi $(docdir)/extend.texi $(docdir)/md.texi \
248890081Sobrien	 $(docdir)/objc.texi $(docdir)/gcov.texi $(docdir)/trouble.texi \
248990081Sobrien	 $(docdir)/bugreport.texi $(docdir)/service.texi \
2490117404Skan	 $(docdir)/contribute.texi $(docdir)/compat.texi \
249190081Sobrien	 $(docdir)/include/funding.texi $(docdir)/gnu.texi \
249290081Sobrien	 $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \
249396273Sobrien	 $(docdir)/contrib.texi $(docdir)/cppenv.texi $(docdir)/cppopts.texi
249418334Speter
2495117404SkanTEXI_GCCINT_FILES = $(docdir)/gccint.texi \
249690081Sobrien	 $(docdir)/include/gcc-common.texi $(docdir)/contribute.texi \
249790081Sobrien	 $(docdir)/makefile.texi $(docdir)/configterms.texi \
249890081Sobrien	 $(docdir)/portability.texi $(docdir)/interface.texi \
249990081Sobrien	 $(docdir)/passes.texi $(docdir)/c-tree.texi \
250090081Sobrien	 $(docdir)/rtl.texi $(docdir)/md.texi $(docdir)/tm.texi \
250190081Sobrien	 $(docdir)/hostconfig.texi $(docdir)/fragments.texi \
250290081Sobrien	 $(docdir)/configfiles.texi $(docdir)/collect2.texi \
250390081Sobrien	 $(docdir)/headerdirs.texi $(docdir)/include/funding.texi \
250490081Sobrien	 $(docdir)/gnu.texi $(docdir)/include/gpl.texi \
250590081Sobrien	 $(docdir)/include/fdl.texi $(docdir)/contrib.texi \
2506117404Skan	 $(docdir)/languages.texi $(docdir)/sourcebuild.texi \
2507117404Skan	 $(docdir)/gty.texi
2508117404Skan
2509117404SkanTEXI_GCCINSTALL_FILES = $(docdir)/install.texi $(docdir)/install-old.texi \
2510117404Skan	 $(docdir)/include/fdl.texi
2511117404Skan
2512117404SkanTEXI_CPPINT_FILES = $(docdir)/cppinternals.texi
2513117404Skan
2514117404Skan$(docdir)/cpp.info: $(TEXI_CPP_FILES)
2515117404Skan	cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cpp.info doc/cpp.texi
2516117404Skan
2517117404Skan$(docdir)/gcc.info: $(TEXI_GCC_FILES)
2518117404Skan	cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gcc.info doc/gcc.texi
2519117404Skan
2520117404Skan$(docdir)/gccint.info: $(TEXI_GCCINT_FILES)
252190081Sobrien	cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gccint.info doc/gccint.texi
252290081Sobrien
2523117404Skan$(docdir)/gccinstall.info: $(TEXI_GCCINSTALL_FILES)
2524117404Skan	cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/gccinstall.info doc/install.texi
2525117404Skan
2526117404Skan$(docdir)/cppinternals.info: $(TEXI_CPPINT_FILES)
252790081Sobrien	cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -I doc -I doc/include -o doc/cppinternals.info \
252890081Sobrien		doc/cppinternals.texi
252990081Sobrien
2530117404Skandvi: gcc.dvi gccint.dvi gccinstall.dvi cpp.dvi lang.dvi cppinternals.dvi
253190081Sobrien
253218334Speter# This works with GNU Make's default rule.
2533117404Skancpp.dvi: $(TEXI_CPP_FILES)
253490081Sobrien	$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cpp.texi
253518334Speter
2536117404Skangcc.dvi: $(TEXI_GCC_FILES)
253790081Sobrien	$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gcc.texi
253818334Speter
2539117404Skangccint.dvi: $(TEXI_GCCINT_FILES)
254090081Sobrien	$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/gccint.texi
254150448Sobrien
2542117404Skangccinstall.dvi: $(TEXI_GCCINSTALL_FILES)
2543117404Skan	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
2544117404Skan	$(TEXI2DVI) -I $$s/doc -I $$s/doc/include -o $@ $$s/doc/install.texi
2545117404Skan
2546117404Skancppinternals.dvi: $(TEXI_CPPINT_FILES)
254790081Sobrien	$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi
254890081Sobrien
254990081Sobriengenerated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 \
255090081Sobrien	 $(docdir)/gfdl.7 $(docdir)/gpl.7 $(docdir)/fsf-funding.7 \
255190081Sobrien	 lang.generated-manpages
255290081Sobrien
255390081Sobrien$(docdir)/gcov.1: $(docdir)/gcov.texi
255490081Sobrien	$(STAMP) $(docdir)/gcov.1
255596273Sobrien	-$(TEXI2POD) $(docdir)/gcov.texi > gcov.pod
255690081Sobrien	-($(POD2MAN) --section=1 gcov.pod > $(docdir)/gcov.1.T$$$$ && \
255790081Sobrien		mv -f $(docdir)/gcov.1.T$$$$ $(docdir)/gcov.1) || \
255890081Sobrien		(rm -f $(docdir)/gcov.1.T$$$$ && exit 1)
255990081Sobrien	-rm -f gcov.pod
256090081Sobrien
256196273Sobrien$(docdir)/cpp.1: $(docdir)/cpp.texi $(docdir)/cppenv.texi \
256296273Sobrien  $(docdir)/cppopts.texi
256390081Sobrien	$(STAMP) $(docdir)/cpp.1
256496273Sobrien	-$(TEXI2POD) $(docdir)/cpp.texi > cpp.pod
256590081Sobrien	-($(POD2MAN) --section=1 cpp.pod > $(docdir)/cpp.1.T$$$$ && \
256690081Sobrien		mv -f $(docdir)/cpp.1.T$$$$ $(docdir)/cpp.1) || \
256790081Sobrien		(rm -f $(docdir)/cpp.1.T$$$$ && exit 1)
256890081Sobrien	-rm -f cpp.pod
256990081Sobrien
257096273Sobrien$(docdir)/gcc.1: $(docdir)/invoke.texi $(docdir)/cppenv.texi \
257196273Sobrien  $(docdir)/cppopts.texi
257290081Sobrien	$(STAMP) $(docdir)/gcc.1
257396273Sobrien	-$(TEXI2POD) $(docdir)/invoke.texi > gcc.pod
257490081Sobrien	-($(POD2MAN) --section=1 gcc.pod > $(docdir)/gcc.1.T$$$$ && \
257590081Sobrien		mv -f $(docdir)/gcc.1.T$$$$ $(docdir)/gcc.1) || \
257690081Sobrien		(rm -f $(docdir)/gcc.1.T$$$$ && exit 1)
257790081Sobrien	-rm -f gcc.pod
257890081Sobrien
257990081Sobrien$(docdir)/gfdl.7: $(docdir)/include/fdl.texi
258090081Sobrien	$(STAMP) $(docdir)/gfdl.7
258196273Sobrien	-$(TEXI2POD) $(docdir)/include/fdl.texi > gfdl.pod
258290081Sobrien	-($(POD2MAN) --section=7 gfdl.pod > $(docdir)/gfdl.7.T$$$$ && \
258390081Sobrien		mv -f $(docdir)/gfdl.7.T$$$$ $(docdir)/gfdl.7) || \
258490081Sobrien		(rm -f $(docdir)/gfdl.7.T$$$$ && exit 1)
258590081Sobrien	-rm -f gfdl.pod
258690081Sobrien
258790081Sobrien$(docdir)/gpl.7: $(docdir)/include/gpl.texi
258890081Sobrien	$(STAMP) $(docdir)/gpl.7
258996273Sobrien	-$(TEXI2POD) $(docdir)/include/gpl.texi > gpl.pod
259090081Sobrien	-($(POD2MAN) --section=7 gpl.pod > $(docdir)/gpl.7.T$$$$ && \
259190081Sobrien		mv -f $(docdir)/gpl.7.T$$$$ $(docdir)/gpl.7) || \
259290081Sobrien		(rm -f $(docdir)/gpl.7.T$$$$ && exit 1)
259390081Sobrien	-rm -f gpl.pod
259490081Sobrien
259590081Sobrien$(docdir)/fsf-funding.7: $(docdir)/include/funding.texi
259690081Sobrien	$(STAMP) $(docdir)/fsf-funding.7
259796273Sobrien	-$(TEXI2POD) $(docdir)/include/funding.texi > fsf-funding.pod
259890081Sobrien	-($(POD2MAN) --section=7 fsf-funding.pod \
259990081Sobrien		> $(docdir)/fsf-funding.7.T$$$$ && \
260090081Sobrien	    mv -f $(docdir)/fsf-funding.7.T$$$$ $(docdir)/fsf-funding.7) || \
260190081Sobrien	    (rm -f $(docdir)/fsf-funding.7.T$$$$ && exit 1)
260290081Sobrien	-rm -f fsf-funding.pod
260390081Sobrien
260450448Sobrien#
260518334Speter# Deletion of files made during compilation.
260618334Speter# There are four levels of this:
260718334Speter#   `mostlyclean', `clean', `distclean' and `maintainer-clean'.
260818334Speter# `mostlyclean' is useful while working on a particular type of machine.
260918334Speter# It deletes most, but not all, of the files made by compilation.
261018334Speter# It does not delete libgcc.a or its parts, so it won't have to be recompiled.
261118334Speter# `clean' deletes everything made by running `make all'.
261218334Speter# `distclean' also deletes the files made by config.
261318334Speter# `maintainer-clean' also deletes everything that could be regenerated
261450448Sobrien# automatically, except for `configure'.
261550448Sobrien# We remove as much from the language subdirectories as we can
261618334Speter# (less duplicated code).
261718334Speter
261890081SobrienINTL_MOSTLYCLEAN = intl.mostlyclean
261990081Sobrienmostlyclean: $(INTL_MOSTLYCLEAN) lang.mostlyclean
262018334Speter	-rm -f $(STAGESTUFF)
2621117404Skan	-rm -f *$(coverageexts)
262290081Sobrien	-rm -rf libgcc
262318334Speter# Delete the temporary source copies for cross compilation.
2624117404Skan	-rm -f $(BUILD_PREFIX_1)rtl.c $(BUILD_PREFIX_1)print-rtl.c
2625117404Skan	-rm -f $(BUILD_PREFIX_1)bitmap.c $(BUILD_PREFIX_1)errors.c
2626117404Skan	-rm -f $(BUILD_PREFIX_1)ggc-none.c
262718334Speter# Delete the temp files made in the course of building libgcc.a.
262890081Sobrien	-rm -f xlimits.h
262950448Sobrien# Delete other built files.
2630117404Skan	-rm -f xsys-protos.hT
2631117404Skan	-rm -f specs.h options.h gencheck.h
263250448Sobrien# Delete the stamp and temporary files.
263350448Sobrien	-rm -f s-* tmp-* stamp-* stmp-*
263418334Speter	-rm -f */stamp-* */tmp-*
263518334Speter# Delete debugging dump files.
263690081Sobrien	-rm -f *.[0-9][0-9].* */*.[0-9][0-9].*
263718334Speter# Delete some files made during installation.
2638117404Skan	-rm -f specs SYSCALLS.c.X SYSCALLS.c
263990081Sobrien	-rm -f collect collect2 mips-tfile mips-tdump
264018334Speter# Delete files generated for fixproto
264190081Sobrien	-rm -rf fix-header$(build_exeext) xsys-protos.h deduced.h tmp-deduced.h \
264290081Sobrien	  gen-protos$(build_exeext) fixproto.list fixtmp.* fixhdr.ready
264390081Sobrien# Delete files generated for fixincl
264490081Sobrien	-rm -rf fixincl fixinc.sh specs.ready
264590081Sobrien	(cd fixinc && $(MAKE) clean)
264618334Speter# Delete unwanted output files from TeX.
264718334Speter	-rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg
264818334Speter	-rm -f */*.toc */*.log */*.vr */*.fn */*.cp */*.tp */*.ky */*.pg
264918334Speter# Delete sorted indices we don't actually use.
265018334Speter	-rm -f gcc.vrs gcc.kys gcc.tps gcc.pgs gcc.fns
265118334Speter# Delete core dumps.
265218334Speter	-rm -f core */core
2653117404Skan# Delete file generated for gengtype.c
2654117404Skan	-rm -f gtyp-gen.h
2655117404Skan# Delete files generated by gengtype.c
2656117404Skan	-rm -f gtype-*
2657117404Skan	-rm -f gt-*
265818334Speter
265918334Speter# Delete all files made by compilation
266018334Speter# that don't exist in the distribution.
266190081SobrienINTL_CLEAN = intl.clean
266290081Sobrienclean: mostlyclean $(INTL_CLEAN) lang.clean
266390081Sobrien	-rm -f libgcc.a libgcc_eh.a libgcc_s$(SHLIB_EXT) libgcc_s$(SHLIB_EXT).1
266490081Sobrien	-rm -f config.h tconfig.h hconfig.h tm_p.h
266590081Sobrien	-rm -f cs-*
266690081Sobrien	-rm -rf libgcc
266718334Speter	-rm -f *.dvi
266818334Speter	-rm -f */*.dvi
266918334Speter# Delete the include directory.
267050448Sobrien	-rm -rf include
267118334Speter# Delete files used by the "multilib" facility (including libgcc subdirs).
267218334Speter	-rm -f multilib.h tmpmultilib*
267318334Speter	-if [ "x$(MULTILIB_DIRNAMES)" != x ] ; then \
267418334Speter	  rm -rf $(MULTILIB_DIRNAMES); \
267518334Speter	else if [ "x$(MULTILIB_OPTIONS)" != x ] ; then \
267618334Speter	  rm -rf `echo $(MULTILIB_OPTIONS) | sed -e 's/\// /g'`; \
267718334Speter	fi ; fi
267850448Sobrien	-rm -fr stage1 stage2 stage3 stage4
267990081Sobrien# Delete stamps of bootstrap stages
268090081Sobrien	-rm -f stage?_*
268190081Sobrien	-rm -f clean?_*
268290081Sobrien	-rm -f stage_last
268318334Speter
268418334Speter# Delete all files that users would normally create
268518334Speter# while building and installing GCC.
268652298SobrienINTL_DISTCLEAN = intl.distclean
268752298Sobriendistclean: clean $(INTL_DISTCLEAN) lang.distclean
268890081Sobrien	-rm -f auto-host.h auto-build.h
268990081Sobrien	-rm -f cstamp-h
269050448Sobrien	-rm -f config.status config.run config.cache config.bak
269150448Sobrien	-rm -f Make-lang Make-hooks Make-host Make-target
2692117404Skan	-rm -f Makefile *.oaux
269350448Sobrien	-rm -f gthr-default.h
269418334Speter	-rm -f */stage1 */stage2 */stage3 */stage4 */include
269518334Speter	-rm -f c-parse.output
269618334Speter	-rm -f *.asm
269750448Sobrien	-rm -f site.exp site.bak testsuite/site.exp testsuite/site.bak
2698117404Skan	-rm -f testsuite/*.log testsuite/*.sum
2699117404Skan	-cd testsuite && rm -f x *.x *.x? *.exe *.rpo *.o *.s *.S *.c
2700117404Skan	-cd testsuite && rm -f *.out *.gcov *.bb *.bbg
2701117404Skan	-rm -rf ${QMTEST_DIR} stamp-qmtest
270252298Sobrien	-rm -f intl/libintl.h libintl.h
270390081Sobrien	-rm -f cxxmain.c
2704117404Skan	-rm -f mklibgcc mkheaders gccbug .gdbinit configargs.h
270590081Sobrien	-rm -f gcov.pod
270690081Sobrien	-rm -f fixinc/Makefile
2707117404Skan# Delete po/*.gmo only if we are not building in the source directory.
2708117404Skan	-if [ ! -f po/exgettext ]; then rm -f po/*.gmo; fi
2709117404Skan	-rmdir ada cp f java objc fixinc intl po testsuite 2>/dev/null
271018334Speter
271118334Speter# Delete anything likely to be found in the source directory
271218334Speter# that shouldn't be in the distribution.
271318334Speterextraclean: distclean lang.extraclean
271418334Speter	-rm -rf =* ./"#"* *~* config/=* config/"#"* config/*~*
271518334Speter	-rm -f patch* *.orig *.rej config/patch* config/*.orig config/*.rej
271618334Speter	-rm -f config/*/=* config/*/"#"* config/*/*~*
271718334Speter	-rm -f config/*/*.orig config/*/*.rej
271818334Speter	-rm -f *.dvi *.ps *.oaux *.d *.[zZ] *.gz
271918334Speter	-rm -f *.tar *.xtar *diff *.diff.* *.tar.* *.xtar.* *diffs
272018334Speter	-rm -f *lose config/*lose config/*/*lose
272150448Sobrien	-rm -f *.s *.s[0-9] *.i config/ChangeLog
272252298Sobrien	-rm -f y.tab.c yacc.*
272318334Speter	-rm -f */=* */"#"* */*~*
272418334Speter	-rm -f */patch* */*.orig */*.rej
272518334Speter	-rm -f */*.dvi */*.oaux */*.d */*.[zZ] */*.gz
272618334Speter	-rm -f */*.tar */*.xtar */*diff */*.diff.* */*.tar.* */*.xtar.* */*diffs
272718334Speter	-rm -f */*lose */*.s */*.s[0-9] */*.i
272818334Speter
272950448Sobrien# Get rid of every file that's generated from some other file, except for `configure'.
273018334Speter# Most of these files ARE PRESENT in the GCC distribution.
273190081Sobrien# We define INTL_DISTCLEAN, INTL_CLEAN & INTL_MOSTLYCLEAN to be empty in the
273290081Sobrien# submake, so that we don't descend into intl after its makefile has been
273390081Sobrien# removed.
273450448Sobrienmaintainer-clean:
273550448Sobrien	@echo 'This command is intended for maintainers to use; it'
273650448Sobrien	@echo 'deletes files that may need special tools to rebuild.'
273790081Sobrien	$(MAKE) INTL_DISTCLEAN= INTL_CLEAN= INTL_MOSTLYCLEAN= \
273890081Sobrien		intl.maintainer-clean lang.maintainer-clean distclean
273990081Sobrien	-rm -f c-parse.y c-parse.c c-parse.output TAGS
274090081Sobrien	-rm -f cpp.??s cpp.*aux
274190081Sobrien	-rm -f gcc.??s gcc.*aux
274290081Sobrien	-rm -f $(docdir)/cpp.info* $(docdir)/gcc.info* $(docdir)/gccint.info*
274390081Sobrien	-rm -f $(docdir)/cppinternals.info*
274490081Sobrien	-rm -f $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1
274590081Sobrien	-rm -f $(docdir)/fsf-funding.7 $(docdir)/gfdl.7 $(docdir)/gpl.7
274650448Sobrien#
274718334Speter# Entry points `install' and `uninstall'.
274818334Speter# Also use `install-collect2' to install collect2 when the config files don't.
274918334Speter
275018334Speter# Copy the compiler files into directories where they will be run.
275118334Speter# Install the driver last so that the window when things are
275218334Speter# broken is small.
275390081Sobrieninstall: install-common $(INSTALL_HEADERS) $(INSTALL_LIBGCC) \
2754117404Skan    install-cpp install-man install-info intl.install install-@POSUB@ \
275590081Sobrien    lang.install-normal install-driver
275618334Speter
275750448Sobrien# Handle cpp installation.
275870638Sobrieninstall-cpp: cpp$(exeext)
275990081Sobrien	-if [ -f gcc-cross$(exeext) ] ; then \
2760110621Skan	  rm -f $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext); \
2761110621Skan	  $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext); \
276290081Sobrien	  if [ x$(cpp_install_dir) != x ]; then \
2763110621Skan	    rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
2764110621Skan	    $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
276590081Sobrien	  else true; fi; \
276690081Sobrien	else \
2767110621Skan	  rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext); \
2768110621Skan	  $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext); \
276990081Sobrien	  if [ x$(cpp_install_dir) != x ]; then \
2770110621Skan	    rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
2771110621Skan	    $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
277290081Sobrien	  else true; fi; \
277390081Sobrien	fi
277450448Sobrien
277550448Sobrien# Create the installation directories.
2776110621Skan# $(libdir)/gcc-lib/include isn't currently searched by cpp.
277750448Sobrieninstalldirs:
2778110621Skan	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(libsubdir)
2779110621Skan	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(bindir)
2780110621Skan	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(includedir)
2781110621Skan	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(infodir)
2782110621Skan	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(slibdir)
2783110621Skan	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(man1dir)
2784110621Skan	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(man7dir)
278518334Speter
278618334Speter# Install the compiler executables built during cross compilation.
278790081Sobrieninstall-common: native $(EXTRA_PARTS) lang.install-common
278818334Speter	for file in $(COMPILERS); do \
278918334Speter	  if [ -f $$file ] ; then \
2790110621Skan	    rm -f $(DESTDIR)$(libsubdir)/$$file; \
2791110621Skan	    $(INSTALL_PROGRAM) $$file $(DESTDIR)$(libsubdir)/$$file; \
279218334Speter	  else true; \
279318334Speter	  fi; \
279418334Speter	done
279518334Speter	for file in $(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(USE_COLLECT2) ..; do \
279618334Speter	  if [ x"$$file" != x.. ]; then \
2797110621Skan	    rm -f $(DESTDIR)$(libsubdir)/$$file; \
2798110621Skan	    $(INSTALL_PROGRAM) $$file $(DESTDIR)$(libsubdir)/$$file; \
279918334Speter	  else true; fi; \
280018334Speter	done
280118334Speter	for file in $(EXTRA_PARTS) ..; do \
280218334Speter	  if [ x"$$file" != x.. ]; then \
2803110621Skan	    rm -f $(DESTDIR)$(libsubdir)/$$file; \
2804110621Skan	    $(INSTALL_DATA) $$file $(DESTDIR)$(libsubdir)/$$file; \
2805110621Skan	    chmod a-x $(DESTDIR)$(libsubdir)/$$file; \
280618334Speter	  else true; fi; \
280718334Speter	done
280818334Speter# Don't mess with specs if it doesn't exist yet.
280918334Speter	-if [ -f specs ] ; then \
2810110621Skan	  rm -f $(DESTDIR)$(libsubdir)/specs; \
2811110621Skan	  $(INSTALL_DATA) specs $(DESTDIR)$(libsubdir)/specs; \
2812110621Skan	  chmod a-x $(DESTDIR)$(libsubdir)/specs; \
281318334Speter	fi
281418334Speter# Install protoize if it was compiled.
281518334Speter	-if [ -f protoize$(exeext) ]; \
281618334Speter	then \
281750448Sobrien	    if [ -f gcc-cross$(exeext) ] ; then \
2818110621Skan		rm -f $(DESTDIR)$(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
2819110621Skan		$(INSTALL_PROGRAM) protoize$(exeext) $(DESTDIR)$(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
2820110621Skan		rm -f $(DESTDIR)$(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
2821110621Skan		$(INSTALL_PROGRAM) unprotoize$(exeext) $(DESTDIR)$(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
282250448Sobrien	    else \
2823110621Skan		rm -f $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
2824110621Skan		$(INSTALL_PROGRAM) protoize$(exeext) $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
2825110621Skan		rm -f $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
2826110621Skan		$(INSTALL_PROGRAM) unprotoize$(exeext) $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
282750448Sobrien	    fi ; \
2828110621Skan	    rm -f $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
2829110621Skan	    $(INSTALL_DATA) SYSCALLS.c.X $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
2830110621Skan	    chmod a-x $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
283118334Speter	fi
283250448Sobrien# Install gcov if it was compiled.
283350448Sobrien	-if [ -f gcov$(exeext) ]; \
283450448Sobrien	then \
2835110621Skan	    rm -f $(DESTDIR)$(bindir)/gcov$(exeext); \
2836110621Skan	    $(INSTALL_PROGRAM) gcov$(exeext) $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \
283750448Sobrien	fi
2838110621Skan	$(INSTALL_SCRIPT) gccbug $(DESTDIR)$(bindir)/$(GCCBUG_INSTALL_NAME)
283918334Speter
2840117404Skan# Install the driver program as $(target_alias)-gcc, 
2841117404Skan# $(target-alias)-gcc-$(version)
284252298Sobrien# and also as either gcc (if native) or $(gcc_tooldir)/bin/gcc.
284390081Sobrieninstall-driver: installdirs xgcc$(exeext)
284418334Speter	-if [ -f gcc-cross$(exeext) ] ; then \
2845110621Skan	  rm -f $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext); \
2846110621Skan	  $(INSTALL_PROGRAM) gcc-cross$(exeext) $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext); \
2847117404Skan	  rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-$(version); \
2848117404Skan	  ( cd $(DESTDIR)$(bindir) && \
2849117404Skan	    $(LN) $(GCC_CROSS_NAME)$(exeext) $(target_alias)-gcc-$(version) ); \
2850110621Skan	  if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \
2851110621Skan	    rm -f $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \
2852110621Skan	    $(INSTALL_PROGRAM) gcc-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \
285318334Speter	  else true; fi; \
285418334Speter	else \
2855110621Skan	  rm -f $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
2856110621Skan	  $(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
2857117404Skan	  rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-$(version); \
2858110621Skan	  ( cd $(DESTDIR)$(bindir) && \
2859117404Skan	    $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_alias)-gcc-$(version) ); \
2860117404Skan	  rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-tmp$(exeext); \
2861117404Skan	  ( cd $(DESTDIR)$(bindir) && \
2862117404Skan	    $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_alias)-gcc-tmp$(exeext) && \
2863117404Skan	    mv -f $(target_alias)-gcc-tmp$(exeext) $(GCC_TARGET_INSTALL_NAME)$(exeext) ); \
286418334Speter	fi
286518334Speter
286618334Speter# Install the info files.
286750448Sobrien# $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
286850448Sobrien# to do the install.
286950448Sobrieninstall-info: doc installdirs lang.install-info
2870110621Skan	-rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
2871110621Skan	-rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
287290081Sobrien	if [ -f $(docdir)/gcc.info ]; then \
287390081Sobrien	  for f in $(docdir)/cpp.info* $(docdir)/gcc.info* \
287490081Sobrien		$(docdir)/cppinternals.info* $(docdir)/gccint.info*; do \
287590081Sobrien	    realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
2876110621Skan	    $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$realfile; \
287790081Sobrien	  done; \
287890081Sobrien	else true; fi
287950448Sobrien	-if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
2880110621Skan	  if [ -f $(DESTDIR)$(infodir)/dir ] ; then \
288190081Sobrien	    for f in cpp.info gcc.info gccint.info cppinternals.info; do \
2882110621Skan		if [ -f $(DESTDIR)$(infodir)/$$f ]; then \
2883110621Skan		  install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/$$f; \
288490081Sobrien		else true; fi; \
288550448Sobrien	    done; \
288650448Sobrien	  else true; fi; \
288750448Sobrien	else true; fi;
2888110621Skan	-chmod a-x $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
2889110621Skan	-chmod a-x $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
289018334Speter
289118334Speter# Install the man pages.
289290081Sobrieninstall-man: installdirs $(GENERATED_MANPAGES) lang.install-man
289350448Sobrien	-if [ -f gcc-cross$(exeext) ] ; then \
2894110621Skan	  rm -f $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
2895110621Skan	  $(INSTALL_DATA) $(docdir)/gcc.1 $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
2896110621Skan	  chmod a-x $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
289718334Speter	else \
2898110621Skan	  rm -f $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
2899110621Skan	  $(INSTALL_DATA) $(docdir)/gcc.1 $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
2900110621Skan	  chmod a-x $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
290118334Speter	fi
2902110621Skan	-rm -f $(DESTDIR)$(man1dir)/cpp$(man1ext)
2903110621Skan	-$(INSTALL_DATA) $(docdir)/cpp.1 $(DESTDIR)$(man1dir)/cpp$(man1ext)
2904110621Skan	-chmod a-x $(DESTDIR)$(man1dir)/cpp$(man1ext)
2905110621Skan	-rm -f $(DESTDIR)$(man1dir)/gcov$(man1ext)
2906110621Skan	-$(INSTALL_DATA) $(docdir)/gcov.1 $(DESTDIR)$(man1dir)/gcov$(man1ext)
2907110621Skan	-chmod a-x $(DESTDIR)$(man1dir)/gcov$(man1ext)
2908110621Skan	-rm -f $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
2909110621Skan	-$(INSTALL_DATA) $(docdir)/fsf-funding.7 $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
2910110621Skan	-chmod a-x $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
2911110621Skan	-rm -f $(DESTDIR)$(man7dir)/gfdl$(man7ext)
2912110621Skan	-$(INSTALL_DATA) $(docdir)/gfdl.7 $(DESTDIR)$(man7dir)/gfdl$(man7ext)
2913110621Skan	-chmod a-x $(DESTDIR)$(man7dir)/gfdl$(man7ext)
2914110621Skan	-rm -f $(DESTDIR)$(man7dir)/gpl$(man7ext)
2915110621Skan	-$(INSTALL_DATA) $(docdir)/gpl.7 $(DESTDIR)$(man7dir)/gpl$(man7ext)
2916110621Skan	-chmod a-x $(DESTDIR)$(man7dir)/gpl$(man7ext)
291718334Speter
291818334Speter# Install the library.
291990081Sobrieninstall-libgcc: libgcc.mk libgcc.a installdirs
292090081Sobrien	if $(RANLIB_TEST_FOR_TARGET); then \
292190081Sobrien	  r_f_t=$(RANLIB_FOR_TARGET); \
292290081Sobrien	else \
292390081Sobrien	  r_f_t=: ; \
292490081Sobrien	fi; \
292590081Sobrien	$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
2926117404Skan	  BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
292790081Sobrien	  AR_FOR_TARGET="$(AR_FOR_TARGET)" \
292890081Sobrien	  AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
292990081Sobrien	  AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
293090081Sobrien	  CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \
293190081Sobrien	  RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \
293290081Sobrien	  NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \
293390081Sobrien	  LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \
293490081Sobrien	  INCLUDES="$(INCLUDES)" \
293590081Sobrien	  CONFIG_H="$(TCONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \
293690081Sobrien	  LIB1ASMSRC='$(LIB1ASMSRC)' \
293790081Sobrien	  MAKEOVERRIDES= \
293890081Sobrien	  INSTALL_DATA="$(INSTALL_DATA)" \
293990081Sobrien	  RANLIB_FOR_TARGET="$$r_f_t" \
2940110621Skan	  DESTDIR="$(DESTDIR)" \
294190081Sobrien	  libsubdir="$(libsubdir)" \
294290081Sobrien	  slibdir="$(slibdir)" \
294390081Sobrien	  -f libgcc.mk install
294418334Speter
294518334Speter# Install multiple versions of libgcc.a.
294650448Sobrieninstall-multilib: stmp-multilib installdirs
294790081Sobrien	if $(RANLIB_TEST_FOR_TARGET); then \
294890081Sobrien	  r_f_t=$(RANLIB_FOR_TARGET); \
294990081Sobrien	else \
295090081Sobrien	  r_f_t=: ; \
295190081Sobrien	fi; \
295290081Sobrien	$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
2953117404Skan	  BUILD_PREFIX="$(BUILD_PREFIX)" BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
295490081Sobrien	  AR_FOR_TARGET="$(AR_FOR_TARGET)" \
295590081Sobrien	  AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
295690081Sobrien	  AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
295790081Sobrien	  CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \
295890081Sobrien	  RANLIB_TEST_FOR_TARGET="$(RANLIB_TEST_FOR_TARGET)" \
295990081Sobrien	  NM_FOR_TARGET="$(NM_FOR_TARGET)" AWK="$(AWK)" \
296090081Sobrien	  LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" \
296190081Sobrien	  INCLUDES="$(INCLUDES)" \
296290081Sobrien	  CONFIG_H="$(CONFIG_H)" MACHMODE_H="$(MACHMODE_H)" \
296390081Sobrien	  LIB1ASMSRC='$(LIB1ASMSRC)' \
296490081Sobrien	  MAKEOVERRIDES= \
296590081Sobrien	  INSTALL_DATA="$(INSTALL_DATA)" \
296690081Sobrien	  RANLIB_FOR_TARGET="$$r_f_t" \
2967110621Skan	  DESTDIR="$(DESTDIR)" \
296890081Sobrien	  libsubdir="$(libsubdir)" \
296990081Sobrien	  slibdir="$(slibdir)" \
297090081Sobrien	  -f libgcc.mk install
297118334Speter
297218334Speter# Install all the header files built in the include subdirectory.
297390081Sobrieninstall-headers: $(INSTALL_HEADERS_DIR)
297418334Speter# Fix symlinks to absolute paths in the installed include directory to
297518334Speter# point to the installed directory, not the build directory.
297650448Sobrien# Don't need to use LN_S here since we really do need ln -s and no substitutes.
2977110621Skan	-files=`cd $(DESTDIR)$(libsubdir)/include; find . -type l -print 2>/dev/null`; \
297818334Speter	if [ $$? -eq 0 ]; then \
2979117404Skan	  dir=`cd include; ${PWD_COMMAND}`; \
298018334Speter	  for i in $$files; do \
2981110621Skan	    dest=`ls -ld $(DESTDIR)$(libsubdir)/include/$$i | sed -n 's/.*-> //p'`; \
298218334Speter	    if expr "$$dest" : "$$dir.*" > /dev/null; then \
2983110621Skan	      rm -f $(DESTDIR)$(libsubdir)/include/$$i; \
2984110621Skan	      ln -s `echo $$i | sed "s|/[^/]*|/..|g" | sed 's|/..$$||'``echo "$$dest" | sed "s|$$dir||"` $(DESTDIR)$(libsubdir)/include/$$i; \
298518334Speter	    fi; \
298618334Speter	  done; \
298718334Speter	fi
298818334Speter
298918334Speter# Create or recreate the gcc private include file directory.
299050448Sobrieninstall-include-dir: installdirs
2991110621Skan	-rm -rf $(DESTDIR)$(libsubdir)/include
2992110621Skan	mkdir $(DESTDIR)$(libsubdir)/include
2993110621Skan	-chmod a+rx $(DESTDIR)$(libsubdir)/include
299418334Speter
299518334Speter# Install the include directory using tar.
299690081Sobrieninstall-headers-tar: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
299752298Sobrien# We use `pwd`/include instead of just include to problems with CDPATH
299852298Sobrien# Unless a full pathname is provided, some shells would print the new CWD,
299952298Sobrien# found in CDPATH, corrupting the output.  We could just redirect the
300052298Sobrien# output of `cd', but some shells lose on redirection within `()'s
3001117404Skan	(cd `${PWD_COMMAND}`/include ; \
3002110621Skan	 tar -cf - .; exit 0) | (cd $(DESTDIR)$(libsubdir)/include; tar xpf - )
300318334Speter# /bin/sh on some systems returns the status of the first tar,
300418334Speter# and that can lose with GNU tar which always writes a full block.
300518334Speter# So use `exit 0' to ignore its exit status.
300618334Speter
300718334Speter# Install the include directory using cpio.
300890081Sobrieninstall-headers-cpio: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
300952298Sobrien# See discussion about the use of `pwd` above
3010117404Skan	cd `${PWD_COMMAND}`/include ; \
3011110621Skan	find . -print | cpio -pdum $(DESTDIR)$(libsubdir)/include
301218334Speter
301390081Sobrien# Install the include directory using cp.
301490081Sobrieninstall-headers-cp: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
3015110621Skan	cp -p -r include $(DESTDIR)$(libsubdir)
301618334Speter
3017117404Skanitoolsdir = $(libsubdir)/install-tools
3018117404Skan# Don't install the headers.  Instead, install appropriate scripts
3019117404Skan# and supporting files for fixincludes to be run later.
3020117404Skaninstall-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir \
3021117404Skan    mkheaders xlimits.h
3022117404Skan	-rm -rf $(DESTDIR)$(itoolsdir)
3023117404Skan	$(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$(itoolsdir)/include
3024117404Skan	for file in $(USER_H); do \
3025117404Skan	  realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
3026117404Skan	  $(INSTALL_DATA) $$file \
3027117404Skan	    $(DESTDIR)$(itoolsdir)/include/$$realfile ; \
3028117404Skan	done
3029117404Skan	$(INSTALL_DATA) xlimits.h $(DESTDIR)$(itoolsdir)/include/limits.h
3030117404Skan	if [ x$(STMP_FIXINC) != x ] ; then \
3031117404Skan	  $(INSTALL_DATA) $(srcdir)/README-fixinc \
3032117404Skan	    $(DESTDIR)$(itoolsdir)/include/README ; \
3033117404Skan	  $(INSTALL_PROGRAM) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \
3034117404Skan	  $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \
3035117404Skan	  $(INSTALL_DATA) $(srcdir)/gsyslimits.h $(DESTDIR)$(itoolsdir)/gsyslimits.h ; \
3036117404Skan	else :; fi
3037117404Skan	if [ x$(STMP_FIXPROTO) != x ] ; then \
3038117404Skan	  $(INSTALL_PROGRAM) $(srcdir)/mkinstalldirs \
3039117404Skan		$(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
3040117404Skan	  $(INSTALL_PROGRAM) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \
3041117404Skan	  $(INSTALL_PROGRAM) fix-header$(build_exeext) \
3042117404Skan		$(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
3043117404Skan	else :; fi
3044117404Skan	$(INSTALL_PROGRAM) mkheaders $(DESTDIR)$(itoolsdir)/mkheaders
3045117404Skan	echo 'SYSTEM_HEADER_DIR="$(SYSTEM_HEADER_DIR)"' \
3046117404Skan		> $(DESTDIR)$(itoolsdir)/mkheaders.conf
3047117404Skan	echo 'OTHER_FIXINCLUDES_DIRS="$(OTHER_FIXINCLUDES_DIRS)"' \
3048117404Skan		>> $(DESTDIR)$(itoolsdir)/mkheaders.conf
3049117404Skan	echo 'FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"' \
3050117404Skan		>> $(DESTDIR)$(itoolsdir)/mkheaders.conf
3051117404Skan	echo 'STMP_FIXPROTO="$(STMP_FIXPROTO)"' >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
3052117404Skan	echo 'STMP_FIXINC="$(STMP_FIXINC)"' >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
3053117404Skan
305450448Sobrien# Use this target to install the program `collect2' under the name `collect2'.
305550448Sobrieninstall-collect2: collect2 installdirs
3056110621Skan	$(INSTALL_PROGRAM) collect2$(exeext) $(DESTDIR)$(libsubdir)/collect2$(exeext)
305718334Speter# Install the driver program as $(libsubdir)/gcc for collect2.
3058110621Skan	$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(libsubdir)/gcc$(exeext)
305918334Speter
306018334Speter# Cancel installation by deleting the installed files.
3061117404Skanuninstall: intl.uninstall lang.uninstall
3062110621Skan	-rm -rf $(DESTDIR)$(libsubdir)
3063110621Skan	-rm -rf $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext)
3064110621Skan	-rm -rf $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext)
3065117404Skan	-rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext)
3066117404Skan	-rm -f $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext)
3067117404Skan	-if [ x$(cpp_install_dir) != x ]; then \
3068117404Skan	  rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
3069117404Skan	  rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
3070117404Skan	else true; fi
3071110621Skan	-rm -rf $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext)
3072110621Skan	-rm -rf $(DESTDIR)$(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext)
3073110621Skan	-rm -rf $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext)
3074110621Skan	-rm -rf $(DESTDIR)$(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext)
3075110621Skan	-rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext)
3076110621Skan	-rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
3077110621Skan	-rm -rf $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext)
3078110621Skan	-rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext)
3079110621Skan	-rm -rf $(DESTDIR)$(man1dir)/protoize$(man1ext)
3080110621Skan	-rm -rf $(DESTDIR)$(man1dir)/unprotoize$(man1ext)
3081110621Skan	-rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
3082110621Skan	-rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
308350448Sobrien#
308490081Sobrien# These targets are for the dejagnu testsuites. The file site.exp
308550448Sobrien# contains global variables that all the testsuites will use.
308650448Sobrien
308750448Sobrien# Set to $(target_alias)/ for cross.
308850448Sobrientarget_subdir = @target_subdir@
308950448Sobrien
309050448Sobriensite.exp: ./config.status Makefile
309150448Sobrien	@echo "Making a new config file..."
309250448Sobrien	-@rm -f ./tmp?
309390081Sobrien	@$(STAMP) site.exp
309450448Sobrien	-@mv site.exp site.bak
309550448Sobrien	@echo "## these variables are automatically generated by make ##" > ./tmp0
309650448Sobrien	@echo "# Do not edit here. If you wish to override these values" >> ./tmp0
309750448Sobrien	@echo "# add them to the last section" >> ./tmp0
3098117404Skan	@echo "set rootme \"`${PWD_COMMAND}`\"" >> ./tmp0
3099117404Skan	@echo "set srcdir \"`cd ${srcdir}; ${PWD_COMMAND}`\"" >> ./tmp0
310050448Sobrien	@echo "set host_triplet $(host_canonical)" >> ./tmp0
310150448Sobrien	@echo "set build_triplet $(build_canonical)" >> ./tmp0
310250448Sobrien	@echo "set target_triplet $(target)" >> ./tmp0
310350448Sobrien	@echo "set target_alias $(target_alias)" >> ./tmp0
310450448Sobrien# CFLAGS is set even though it's empty to show we reserve the right to set it.
310550448Sobrien	@echo "set CFLAGS \"\"" >> ./tmp0
310650448Sobrien	@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
310790081Sobrien	@echo "set TESTING_IN_BUILD_TREE 1" >> ./tmp0
310890081Sobrien	@echo "set HAVE_LIBSTDCXX_V3 1" >> ./tmp0
310950448Sobrien# If newlib has been configured, we need to pass -B to gcc so it can find
311050448Sobrien# newlib's crt0.o if it exists.  This will cause a "path prefix not used"
311150448Sobrien# message if it doesn't, but the testsuite is supposed to ignore the message -
311250448Sobrien# it's too difficult to tell when to and when not to pass -B (not all targets
311350448Sobrien# have crt0's).  We could only add the -B if ../newlib/crt0.o exists, but that
311450448Sobrien# seems like too selective a test.
311550448Sobrien# ??? Another way to solve this might be to rely on linker scripts.  Then
311650448Sobrien# theoretically the -B won't be needed.
311750448Sobrien# We also need to pass -L ../ld so that the linker can find ldscripts.
311850448Sobrien	@if [ -d $(objdir)/../$(target_subdir)newlib ] ; then \
311950448Sobrien	  echo "set newlib_cflags \"-I$(objdir)/../$(target_subdir)newlib/targ-include -I\$$srcdir/../newlib/libc/include\"" >> ./tmp0; \
312050448Sobrien	  echo "set newlib_ldflags \"-B$(objdir)/../$(target_subdir)newlib/\"" >> ./tmp0; \
312150448Sobrien	  echo "append CFLAGS \" \$$newlib_cflags\"" >> ./tmp0; \
312250448Sobrien	  echo "append CXXFLAGS \" \$$newlib_cflags\"" >> ./tmp0; \
312350448Sobrien	  echo "append LDFLAGS \" \$$newlib_ldflags\"" >> ./tmp0; \
312450448Sobrien	else true; \
312550448Sobrien	fi
312650448Sobrien	@if [ -d $(objdir)/../ld ] ; then \
312750448Sobrien	  echo "append LDFLAGS \" -L$(objdir)/../ld\"" >> ./tmp0; \
312850448Sobrien	else true; \
312950448Sobrien	fi
313050448Sobrien	echo "set tmpdir $(objdir)/testsuite" >> ./tmp0
313150448Sobrien	@echo "set srcdir \"\$${srcdir}/testsuite\"" >> ./tmp0
3132117404Skan	@if [ "X$(ALT_CXX_UNDER_TEST)" != "X" ] ; then \
3133117404Skan	  echo "set ALT_CXX_UNDER_TEST $(ALT_CXX_UNDER_TEST)" >> ./tmp0; \
3134117404Skan	else true; \
3135117404Skan	fi
3136117404Skan	@if [ "X$(COMPAT_OPTIONS)" != "X" ] ; then \
3137117404Skan	  echo "set COMPAT_OPTIONS $(COMPAT_OPTIONS)" >> ./tmp0; \
3138117404Skan	else true; \
3139117404Skan	fi
314050448Sobrien	@echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0
314150448Sobrien	@cat ./tmp0 > site.exp
314250448Sobrien	@cat site.bak | sed \
314350448Sobrien		-e '1,/^## All variables above are.*##/ d' >> site.exp
314450448Sobrien	-@rm -f ./tmp?
314550448Sobrien
3146117404SkanCHECK_TARGETS = check-gcc @check_languages@
314750448Sobrien
314890081Sobriencheck-c++ : check-g++
314990081Sobriencheck-f77 : check-g77
315090081Sobriencheck-java :
315190081Sobrien
315250448Sobriencheck: $(CHECK_TARGETS)
315350448Sobrien
315490081Sobrien# The idea is to parallelize testing of multilibs, for example:
315590081Sobrien#   make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
315690081Sobrien# will run 3 concurrent sessions of check-gcc, eventually testing
315790081Sobrien# all 10 combinations.  GNU make is required, as is a shell that expands
315890081Sobrien# alternations within braces.
315990081Sobriencheck-gcc//% check-g++//% check-g77//% check-objc//%: site.exp
316090081Sobrien	target=`echo "$@" | sed 's,//.*,,'`; \
316190081Sobrien	variant=`echo "$@" | sed 's,^[^/]*//,,'`; \
316290081Sobrien	vardots=`echo "$$variant" | sed 's,/,.,g'`; \
316390081Sobrien	$(MAKE) TESTSUITEDIR="testsuite.$$vardots" \
316490081Sobrien	  RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \
316590081Sobrien	  "$$target"
316650448Sobrien
316790081SobrienTESTSUITEDIR = testsuite
316890081Sobrien
316990081Sobrien$(TESTSUITEDIR)/site.exp: site.exp
317090081Sobrien	test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR)
317190081Sobrien	-rm -f $@
317290081Sobrien	sed '/set tmpdir/ s|testsuite|$(TESTSUITEDIR)|' < site.exp > $@
317390081Sobrien
317490081Sobriencheck-g++: $(TESTSUITEDIR)/site.exp
3175117404Skan	-(rootme=`${PWD_COMMAND}`; export rootme; \
3176117404Skan	srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
317790081Sobrien	cd $(TESTSUITEDIR); \
317850448Sobrien	EXPECT=${EXPECT} ; export EXPECT ; \
317950448Sobrien	if [ -f $${rootme}/../expect/expect ] ; then  \
3180117404Skan	   TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
318150448Sobrien	    export TCL_LIBRARY ; fi ; \
318290081Sobrien	$(RUNTEST) --tool g++ $(RUNTESTFLAGS))
318350448Sobrien
318490081Sobriencheck-gcc: $(TESTSUITEDIR)/site.exp
3185117404Skan	-(rootme=`${PWD_COMMAND}`; export rootme; \
3186117404Skan	srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
318790081Sobrien	cd $(TESTSUITEDIR); \
318850448Sobrien	EXPECT=${EXPECT} ; export EXPECT ; \
318950448Sobrien	if [ -f $${rootme}/../expect/expect ] ; then  \
3190117404Skan	   TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
319150448Sobrien	   export TCL_LIBRARY ; fi ; \
319290081Sobrien	$(RUNTEST) --tool gcc $(RUNTESTFLAGS))
319350448Sobrien
319490081Sobriencheck-g77: $(TESTSUITEDIR)/site.exp
3195117404Skan	-(rootme=`${PWD_COMMAND}`; export rootme; \
3196117404Skan	srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
319790081Sobrien	cd $(TESTSUITEDIR); \
319850448Sobrien	EXPECT=${EXPECT} ; export EXPECT ; \
319950448Sobrien	if [ -f $${rootme}/../expect/expect ] ; then  \
3200117404Skan	   TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
320150448Sobrien	   export TCL_LIBRARY ; fi ; \
320290081Sobrien	$(RUNTEST) --tool g77 $(RUNTESTFLAGS))
320350448Sobrien
320490081Sobriencheck-objc: $(TESTSUITEDIR)/site.exp
3205117404Skan	-(rootme=`${PWD_COMMAND}`; export rootme; \
3206117404Skan	srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
320790081Sobrien	cd $(TESTSUITEDIR); \
320890081Sobrien	EXPECT=${EXPECT} ; export EXPECT ; \
320990081Sobrien	if [ -f $${rootme}/../expect/expect ] ; then  \
3210117404Skan	   TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
321190081Sobrien	    export TCL_LIBRARY ; fi ; \
321290081Sobrien	$(RUNTEST) --tool objc $(RUNTESTFLAGS))
321390081Sobrien
321490081Sobriencheck-consistency: testsuite/site.exp
3215117404Skan	-rootme=`${PWD_COMMAND}`; export rootme; \
3216117404Skan	srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
321752298Sobrien	cd testsuite; \
321852298Sobrien	EXPECT=${EXPECT} ; export EXPECT ; \
321952298Sobrien	if [ -f $${rootme}/../expect/expect ] ; then  \
3220117404Skan	   TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
322190081Sobrien	   export TCL_LIBRARY ; fi ; \
322290081Sobrien	$(RUNTEST) --tool consistency $(RUNTESTFLAGS)
322352298Sobrien
3224117404Skan# QMTest targets
3225117404Skan
3226117404Skan# The path to qmtest.
3227117404SkanQMTEST_PATH=qmtest
3228117404Skan
3229117404Skan# The flags to pass to qmtest.
3230117404SkanQMTESTFLAGS=
3231117404Skan
3232117404Skan# The flags to pass to "qmtest run".
3233117404SkanQMTESTRUNFLAGS=
3234117404Skan
3235117404Skan# The command to use to invoke qmtest.
3236117404SkanQMTEST=${QMTEST_PATH} ${QMTESTFLAGS}
3237117404Skan
3238117404Skan# The tests (or suites) to run.
3239117404SkanQMTEST_GPP_TESTS=gpp
3240117404Skan
3241117404Skan# The subdirectory of the OBJDIR that will be used to store the QMTest
3242117404Skan# test database configuration and that will be used for temporary
3243117404Skan# scratch space during QMTest's execution.
3244117404SkanQMTEST_DIR=qmtestsuite
3245117404Skan
3246117404Skan# Create the QMTest database configuration.
3247117404Skan${QMTEST_DIR} stamp-qmtest:
3248117404Skan	debug_options=""; \
3249117404Skan	    ${STAMP} empty.C; \
3250117404Skan	    for option in \
3251117404Skan	        -gdwarf-2 -gstabs -gstabs+ -gxcoff -gxcoff+ -gcoff; do \
3252117404Skan		(./cc1plus -q $${option} empty.C 2>&1 | \
3253117404Skan		     grep "unknown or unsupported -g option" > /dev/null) || \
3254117404Skan		debug_options="$${debug_options}$${option} "; done; \
3255117404Skan	    ${QMTEST} -D ${QMTEST_DIR} create-tdb \
3256117404Skan	        -c gcc_database.GCCDatabase \
3257117404Skan	        -a GCCDatabase.testsuite_root=`cd ${srcdir}/testsuite && pwd` \
3258117404Skan	        -a GCCDatabase.debug_options="$${debug_options}"
3259117404Skan	rm -f empty.C empty.s
3260117404Skan	$(STAMP) stamp-qmtest
3261117404Skan
3262117404Skan# Create the QMTest context file.
3263117404Skan${QMTEST_DIR}/context: stamp-qmtest
3264117404Skan	echo "GCCTest.flags=-B${objdir}" >> $@
3265117404Skan	echo "GCCTest.objdir=${objdir}/.." >> $@
3266117404Skan	echo "GCCTest.host=${host_canonical}" >> $@
3267117404Skan	echo "GCCTest.target=${target}" >> $@
3268117404Skan	echo "GCCTest.gcov=${objdir}/gcov" >> $@
3269117404Skan	echo "GPPTest.gpp=${objdir}/g++" >> $@
3270117404Skan	echo "DGTest.demangler=${objdir}/c++filt" >> $@
3271117404Skan
3272117404Skan# Run the G++ testsuite using QMTest.
3273117404Skanqmtest-g++: ${QMTEST_DIR}/context ${QMTEST_DIR}/gpp-expected.qmr
3274117404Skan	cd ${QMTEST_DIR} && ${QMTEST} run ${QMTESTRUNFLAGS} -C context \
3275117404Skan	   -o gpp.qmr -O gpp-expected.qmr \
3276117404Skan	   ${QMTEST_GPP_TESTS}
3277117404Skan
3278117404Skan# Use the QMTest GUI.
3279117404Skanqmtest-gui: ${QMTEST_DIR}/context
3280117404Skan	cd ${QMTEST_DIR} && ${QMTEST} gui -C context
3281117404Skan
3282117404Skan# Build the set of expected G++ failures.
3283117404Skan${QMTEST_DIR}/gpp-expected.qmr: ${QMTEST_DIR}/context
3284117404Skan	echo "Determining expected results..."
3285117404Skan	cd ${QMTEST_DIR} && ${QMTEST} run ${QMTESTRUNFLAGS} -C context \
3286117404Skan           -c "GCCTest.generate_xfails=1" -o gpp-expected.qmr \
3287117404Skan	   ${QMTEST_GPP_TESTS} \
3288117404Skan	   > /dev/null
3289117404Skan
3290117404Skan.PHONY: qmtest-g++
3291117404Skan
3292117404Skan# Run Paranoia on real.c.
3293117404Skan
3294117404Skanparanoia.o: $(srcdir)/../contrib/paranoia.cc $(CONFIG_H) $(SYSTEM_H) \
3295117404Skan  real.h $(TREE_H)
3296117404Skan	g++ -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
3297117404Skan
3298117404Skanparanoia: paranoia.o real.o $(LIBIBERTY)
3299117404Skan	g++ -o $@ paranoia.o real.o $(LIBIBERTY)
3300117404Skan
330118334Speter# These exist for maintenance purposes.
330218334Speter
330318334Speter# Update the tags table.
330418334SpeterTAGS: force
330590081Sobrien	(cd $(srcdir);							\
330650448Sobrien	mkdir tmp-tags;							\
330790081Sobrien	mv -f c-parse.[ch] =*.[chy] tmp-tags;				\
330818334Speter	etags *.y *.h *.c;						\
330950448Sobrien	mv tmp-tags/* .;						\
331090081Sobrien	rmdir tmp-tags)
331118334Speter
331290081Sobrien# A list of files to be destroyed during "lean" builds.
331390081SobrienVOL_FILES=`echo $(BACKEND) $(OBJS) $(C_OBJS) $(LIBCPP_OBJS) *.c *.h gen*`
331418334Speter
331590081Sobrien# Flags to pass to stage2 and later recursive makes.  Note that the
331690081Sobrien# WARN_CFLAGS setting can't be to the expansion of GCC_WARN_CFLAGS in
331790081Sobrien# the context of the stage_x rule.
331890081SobrienSTAGE2_FLAGS_TO_PASS = \
3319117404Skan	ADAC="\$$(CC)" \
332090081Sobrien	CFLAGS="$(BOOT_CFLAGS)" \
332190081Sobrien	LDFLAGS="$(BOOT_LDFLAGS)" \
332290081Sobrien	WARN_CFLAGS="\$$(GCC_WARN_CFLAGS)" \
332390081Sobrien	STRICT_WARN="$(STRICT2_WARN)" \
332490081Sobrien	libdir=$(libdir) \
332590081Sobrien	LANGUAGES="$(LANGUAGES)" \
332690081Sobrien	MAKEOVERRIDES= \
332790081Sobrien	OUTPUT_OPTION="-o \$$@"
332818334Speter
332990081Sobrien# Only build the C compiler for stage1, because that is the only one that
333090081Sobrien# we can guarantee will build with the native compiler, and also it is the
333190081Sobrien# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
333290081Sobrien# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
333390081Sobrien# overrideable (for a bootstrap build stage1 also builds gcc.info).
333490081Sobrienstage1_build:
333590081Sobrien	$(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" \
333690081Sobrien		CFLAGS="$(STAGE1_CFLAGS)" MAKEINFO="$(MAKEINFO)" \
3337117404Skan		MAKEINFOFLAGS="$(MAKEINFOFLAGS)" COVERAGE_FLAGS=
333890081Sobrien	$(STAMP) stage1_build
333990081Sobrien	echo stage1_build > stage_last
334018334Speter
334190081Sobrienstage1_copy: stage1_build
334290081Sobrien	$(MAKE) stage1
334390081Sobrien	$(STAMP) stage1_copy
334490081Sobrien	echo stage2_build > stage_last
334518334Speter
334690081Sobrienstage2_build: stage1_copy
3347117404Skan	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \
334890081Sobrien		 STAGE_PREFIX=stage1/ \
334990081Sobrien		 $(STAGE2_FLAGS_TO_PASS)
335090081Sobrien	$(STAMP) stage2_build
335190081Sobrien	echo stage2_build > stage_last
335218334Speter
335390081Sobrienstage2_copy: stage2_build
335490081Sobrien	$(MAKE) stage2
335590081Sobrien	$(STAMP) stage2_copy
335690081Sobrien	echo stage3_build > stage_last
335718334Speter
335890081Sobrienstage3_build: stage2_copy
3359117404Skan	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" \
336090081Sobrien		 STAGE_PREFIX=stage2/ \
336190081Sobrien		 $(STAGE2_FLAGS_TO_PASS)
336290081Sobrien	$(STAMP) stage3_build
336390081Sobrien	echo stage3_build > stage_last
336452298Sobrien
336590081Sobrien# For bootstrap4:
336690081Sobrienstage3_copy: stage3_build
336790081Sobrien	$(MAKE) stage3
336890081Sobrien	$(STAMP) stage3_copy
336990081Sobrien	echo stage4_build > stage_last
337018334Speter
337190081Sobrienstage4_build: stage3_copy
3372117404Skan	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" \
337390081Sobrien		 STAGE_PREFIX=stage3/ \
337490081Sobrien		 $(STAGE2_FLAGS_TO_PASS)
337590081Sobrien	$(STAMP) stage4_build
337690081Sobrien	echo stage4_build > stage_last
337718334Speter
337890081Sobrien# Additional steps for *-lean targets:
337990081Sobrienclean_s1: stage1_copy
338090081Sobrien	-(cd stage1 && rm -f $(VOL_FILES))
338190081Sobrien	$(STAMP) clean_s1
338218334Speter
338390081Sobrienclean_s2: stage2_copy
338490081Sobrien	-rm -rf stage1
338590081Sobrien	$(STAMP) clean_s2
338618334Speter
338790081Sobrien# The various entry points for bootstrapping.
338850448Sobrien
338990081Sobrienbootstrap: stage3_build
339090081Sobrien	@echo
339190081Sobrien	@echo Bootstrap complete - make \"quickstrap\" to redo last build,
339290081Sobrien	@echo \"restage1\" through \"restage3\" to rebuild specific stages,
3393117404Skan	@echo \"restrap\" to redo the bootstrap from stage1, or
3394117404Skan	@echo \"cleanstrap\" to redo the bootstrap from scratch.
339590081Sobrien
339690081Sobrienbootstrap-lean : clean_s1 clean_s2 stage3_build
339790081Sobrien	@echo
339890081Sobrien	@echo Bootstrap complete - make \"quickstrap\" to redo last build,
339990081Sobrien	@echo or \"cleanstrap\" to redo the bootstrap from scratch.
340090081Sobrien
340190081Sobrienbootstrap2: bootstrap
340290081Sobrien
340390081Sobrienbootstrap2-lean : bootstrap-lean
340490081Sobrien
340590081Sobrienbootstrap3 bootstrap3-lean: bootstrap
340690081Sobrien
340790081Sobrienbootstrap4 bootstrap4-lean: stage4_build
340890081Sobrien
340990081Sobrienunstage1 unstage2 unstage3 unstage4:
341090081Sobrien	-set -vx; stage=`echo $@ | sed -e 's/un//'`; \
341190081Sobrien	rm -f $$stage/as$(exeext); \
341290081Sobrien	rm -f $$stage/ld$(exeext); \
341390081Sobrien	rm -f $$stage/collect-ld$(exeext); \
341490081Sobrien	if test -d $$stage; then \
341590081Sobrien	  mv $$stage/* . 2>/dev/null; \
341690081Sobrien	  for i in `cd $$stage; echo *` ; do \
341790081Sobrien	    if test -d $$stage/$$i; then \
341890081Sobrien	      mv $$stage/$$i/* $$i/. 2>/dev/null; \
341990081Sobrien	    else \
342090081Sobrien	      mv $$stage/$$i .; \
342190081Sobrien	    fi; \
342290081Sobrien	  done \
342390081Sobrien	fi ; \
342490081Sobrien	rm -f $${stage}_build $${stage}_copy ;\
342590081Sobrien	echo $${stage}_build > stage_last
342690081Sobrien
342790081Sobrienrestage1: unstage1
342890081Sobrien	$(MAKE) stage1_build
342990081Sobrien
343090081Sobrienrestage2: unstage2
343190081Sobrien	$(MAKE) LANGUAGES="$(LANGUAGES)" stage2_build
343290081Sobrien
343390081Sobrienrestage3: unstage3
343490081Sobrien	$(MAKE) LANGUAGES="$(LANGUAGES)" stage3_build
343590081Sobrien
343690081Sobrienrestage4: unstage4
343790081Sobrien	$(MAKE) LANGUAGES="$(LANGUAGES)" stage4_build
343890081Sobrien
343990081Sobrienbubblestrap:
344090081Sobrien	if test -f stage3_build; then true; else \
344190081Sobrien	  echo; echo You must \"make bootstrap\" first.; \
344290081Sobrien	  exit 1; \
344390081Sobrien	fi
344490081Sobrien	for i in stage3 \
344590081Sobrien		unstage1 stage1_build stage1_copy \
344690081Sobrien		unstage2 stage2_build stage2_copy \
344790081Sobrien		unstage3 stage3_build ; \
344890081Sobrien	do \
344990081Sobrien	  $(MAKE) LANGUAGES="$(LANGUAGES)" $$i || exit 1 ; \
345090081Sobrien	done
345190081Sobrien
345290081Sobrienquickstrap:
345390081Sobrien	if test -f stage_last ; then \
345490081Sobrien	  LAST=`cat stage_last`; rm $$LAST; $(MAKE) LANGUAGES="$(LANGUAGES)" $$LAST; \
345590081Sobrien	else \
345690081Sobrien	  $(MAKE) stage1_build; \
345790081Sobrien	fi
345890081Sobrien
345990081Sobriencleanstrap:
346090081Sobrien	-$(MAKE) clean
346190081Sobrien	$(MAKE) LANGUAGES="$(LANGUAGES)" bootstrap
346290081Sobrien
3463117404Skanunstrap:
3464117404Skan	-rm -rf stage[234]*
3465117404Skan	$(MAKE) unstage1
3466117404Skan
3467117404Skan# Differs from cleanstrap in that it starts from the earlier stage1 build,
3468117404Skan# not from scratch.
3469117404Skanrestrap:
3470117404Skan	$(MAKE) unstrap
3471117404Skan	$(MAKE) LANGUAGES="$(LANGUAGES)" bootstrap
3472117404Skan
347318334Speter# Compare the object files in the current directory with those in the
347418334Speter# stage2 directory.
347518334Speter
347618334Speter# ./ avoids bug in some versions of tail.
347750448Sobriencompare compare3 compare4 compare-lean compare3-lean compare4-lean: force
347850448Sobrien	-rm -f .bad_compare
347950448Sobrien	case "$@" in compare | compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
348018334Speter	for file in *$(objext); do \
348118334Speter	  tail +16c ./$$file > tmp-foo1; \
348250448Sobrien	  tail +16c stage$$stage/$$file > tmp-foo2 \
348350448Sobrien	    && (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
348418334Speter	done
348550448Sobrien	case "$@" in compare | compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
348652298Sobrien	for dir in tmp-foo intl $(SUBDIRS); do \
348718334Speter	  if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
348818334Speter	    for file in $$dir/*$(objext); do \
348952298Sobrien	      tail +16c ./$$file > tmp-foo1; \
349052298Sobrien	      tail +16c stage$$stage/$$file > tmp-foo2 \
349152298Sobrien	        && (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
349218334Speter	    done; \
349352298Sobrien	  else true; fi; \
349418334Speter	done
349518334Speter	-rm -f tmp-foo*
349650448Sobrien	case "$@" in compare | compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
349750448Sobrien	if [ -f .bad_compare ]; then \
349850448Sobrien	  echo "Bootstrap comparison failure!"; \
349950448Sobrien	  cat .bad_compare; \
350050448Sobrien	  exit 1; \
350150448Sobrien	else \
350250448Sobrien	  case "$@" in \
350350448Sobrien	    *-lean ) rm -rf stage$$stage ;; \
350450448Sobrien	    *) ;; \
350550448Sobrien	  esac; true; \
350650448Sobrien	fi
350718334Speter
350818334Speter# Compare the object files in the current directory with those in the
350918334Speter# stage2 directory.  Use gnu cmp (diffutils v2.4 or later) to avoid
351018334Speter# running tail and the overhead of twice copying each object file.
3511117404Skan# An exit status of 1 is precisely the result we're looking for (other
3512117404Skan# values mean other problems).
351350448Sobriengnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4-lean: force
351450448Sobrien	-rm -f .bad_compare
351550448Sobrien	case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
351618334Speter	for file in *$(objext); do \
3517117404Skan	  cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1; \
3518117404Skan	  test $$? -eq 1 && echo $$file differs >> .bad_compare || true; \
351918334Speter	done
352050448Sobrien	case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
352152298Sobrien	for dir in tmp-foo intl $(SUBDIRS); do \
352218334Speter	  if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
352318334Speter	    for file in $$dir/*$(objext); do \
3524117404Skan	      cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1; \
3525117404Skan	      test $$? -eq 1 && echo $$file differs >> .bad_compare || true; \
352618334Speter	    done; \
352752298Sobrien	  else true; fi; \
352818334Speter	done
352950448Sobrien	case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
353050448Sobrien	if [ -f .bad_compare ]; then \
353150448Sobrien	  echo "Bootstrap comparison failure!"; \
353250448Sobrien	  cat .bad_compare; \
353350448Sobrien	  exit 1; \
353450448Sobrien	else \
353550448Sobrien	  case "$@" in \
353650448Sobrien	    *-lean ) rm -rf stage$$stage ;; \
353750448Sobrien	  esac; true; \
353850448Sobrien	fi
353918334Speter
354018334Speter# Copy the object files from a particular stage into a subdirectory.
354118334Speterstage1-start:
354218334Speter	-if [ -d stage1 ] ; then true ; else mkdir stage1 ; fi
354390081Sobrien	$(MAKE) -f libgcc.mk libgcc-stage-start stage=stage1
354452298Sobrien	-for dir in intl $(SUBDIRS) ; \
354518334Speter	 do \
354618334Speter	   if [ -d stage1/$$dir ] ; then true ; else mkdir stage1/$$dir ; fi ; \
354718334Speter	 done
354818334Speter	-mv $(STAGESTUFF) stage1
354952298Sobrien	-mv intl/*$(objext) stage1/intl
355018334Speter# Copy as/ld if they exist to stage dir, so that running xgcc from the stage
355118334Speter# dir will work properly.
355290081Sobrien	-if [ -f as$(exeext) ] ; then (cd stage1 && $(LN_S) ../as$(exeext) .) ; else true ; fi
355390081Sobrien	-if [ -f ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
355490081Sobrien	-if [ -f collect-ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
355590081Sobrien	-rm -f stage1/libgcc.a stage1/libgcc_eh.a
355618334Speter	-cp libgcc.a stage1
355752298Sobrien	-if $(RANLIB_TEST_FOR_TARGET) ; then \
355852298Sobrien	  $(RANLIB_FOR_TARGET) stage1/libgcc.a; \
355952298Sobrien	else true; fi
356090081Sobrien	-if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage1; \
356190081Sobrien	  if $(RANLIB_TEST_FOR_TARGET) ; then \
356290081Sobrien	   $(RANLIB_FOR_TARGET) stage1/libgcc_eh.a; \
356390081Sobrien	  else true; fi; fi
356450448Sobrien	-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
356550448Sobrien	  cp stage1/$${f} . ; \
356650448Sobrien	else true; \
356750448Sobrien	fi; done
356818334Speterstage1: force stage1-start lang.stage1
356918334Speter
357018334Speterstage2-start:
357118334Speter	-if [ -d stage2 ] ; then true ; else mkdir stage2 ; fi
357290081Sobrien	$(MAKE) -f libgcc.mk libgcc-stage-start stage=stage2
357352298Sobrien	-for dir in intl $(SUBDIRS) ; \
357418334Speter	 do \
357518334Speter	   if [ -d stage2/$$dir ] ; then true ; else mkdir stage2/$$dir ; fi ; \
357618334Speter	 done
357718334Speter	-mv $(STAGESTUFF) stage2
357852298Sobrien	-mv intl/*$(objext) stage2/intl
357918334Speter# Copy as/ld if they exist to stage dir, so that running xgcc from the stage
358018334Speter# dir will work properly.
358190081Sobrien	-if [ -f as$(exeext) ] ; then (cd stage2 && $(LN_S) ../as$(exeext) .) ; else true ; fi
358290081Sobrien	-if [ -f ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
358390081Sobrien	-if [ -f collect-ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
358490081Sobrien	-rm -f stage2/libgcc.a stage2/libgcc_eh.a
358518334Speter	-cp libgcc.a stage2
358652298Sobrien	-if $(RANLIB_TEST_FOR_TARGET) ; then \
358752298Sobrien	  $(RANLIB_FOR_TARGET) stage2/libgcc.a; \
358852298Sobrien	else true; fi
358990081Sobrien	-if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage2; \
359090081Sobrien	  if $(RANLIB_TEST_FOR_TARGET) ; then \
359190081Sobrien	   $(RANLIB_FOR_TARGET) stage2/libgcc_eh.a; \
359290081Sobrien	  else true; fi; fi
359350448Sobrien	-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
359450448Sobrien	  cp stage2/$${f} . ; \
359550448Sobrien	else true; \
359650448Sobrien	fi; done
359718334Speterstage2: force stage2-start lang.stage2
359818334Speter
359918334Speterstage3-start:
360018334Speter	-if [ -d stage3 ] ; then true ; else mkdir stage3 ; fi
360190081Sobrien	$(MAKE) -f libgcc.mk libgcc-stage-start stage=stage3
360252298Sobrien	-for dir in intl $(SUBDIRS) ; \
360318334Speter	 do \
360418334Speter	   if [ -d stage3/$$dir ] ; then true ; else mkdir stage3/$$dir ; fi ; \
360518334Speter	 done
360618334Speter	-mv $(STAGESTUFF) stage3
360752298Sobrien	-mv intl/*$(objext) stage3/intl
360818334Speter# Copy as/ld if they exist to stage dir, so that running xgcc from the stage
360918334Speter# dir will work properly.
361090081Sobrien	-if [ -f as$(exeext) ] ; then (cd stage3 && $(LN_S) ../as$(exeext) .) ; else true ; fi
361190081Sobrien	-if [ -f ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
361290081Sobrien	-if [ -f collect-ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
361390081Sobrien	-rm -f stage3/libgcc.a stage3/libgcc_eh.a
361418334Speter	-cp libgcc.a stage3
361552298Sobrien	-if $(RANLIB_TEST_FOR_TARGET) ; then \
361652298Sobrien	  $(RANLIB_FOR_TARGET) stage3/libgcc.a; \
361752298Sobrien	else true; fi
361890081Sobrien	-if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage3; \
361990081Sobrien	  if $(RANLIB_TEST_FOR_TARGET) ; then \
362090081Sobrien	   $(RANLIB_FOR_TARGET) stage3/libgcc_eh.a; \
362190081Sobrien	  else true; fi; fi
362250448Sobrien	-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
362350448Sobrien	  cp stage3/$${f} . ; \
362450448Sobrien	else true; \
362550448Sobrien	fi; done
362618334Speterstage3: force stage3-start lang.stage3
362718334Speter
362818334Speterstage4-start:
362918334Speter	-if [ -d stage4 ] ; then true ; else mkdir stage4 ; fi
363090081Sobrien	$(MAKE) -f libgcc.mk libgcc-stage-start stage=stage4
363152298Sobrien	-for dir in intl $(SUBDIRS) ; \
363218334Speter	 do \
363318334Speter	   if [ -d stage4/$$dir ] ; then true ; else mkdir stage4/$$dir ; fi ; \
363418334Speter	 done
363518334Speter	-mv $(STAGESTUFF) stage4
363652298Sobrien	-mv intl/*$(objext) stage4/intl
363718334Speter# Copy as/ld if they exist to stage dir, so that running xgcc from the stage
363818334Speter# dir will work properly.
363990081Sobrien	-if [ -f as$(exeext) ] ; then (cd stage4 && $(LN_S) ../as$(exeext) .) ; else true ; fi
364090081Sobrien	-if [ -f ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../ld$(exeext) .) ; else true ; fi
364190081Sobrien	-if [ -f collect-ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi
364290081Sobrien	-rm -f stage4/libgcc.a stage4/libgcc_eh.a
364318334Speter	-cp libgcc.a stage4
364452298Sobrien	-if $(RANLIB_TEST_FOR_TARGET) ; then \
364552298Sobrien	  $(RANLIB_FOR_TARGET) stage4/libgcc.a; \
364652298Sobrien	else true; fi
364790081Sobrien	-if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage4; \
364890081Sobrien	  if $(RANLIB_TEST_FOR_TARGET) ; then \
364990081Sobrien	   $(RANLIB_FOR_TARGET) stage4/libgcc_eh.a; \
365090081Sobrien	  else true; fi; fi
365150448Sobrien	-for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
365250448Sobrien	  cp stage4/$${f} . ; \
365350448Sobrien	else true; \
365450448Sobrien	fi; done
365518334Speterstage4: force stage4-start lang.stage4
365618334Speter
365718334Speter# Copy just the executable files from a particular stage into a subdirectory,
365818334Speter# and delete the object files.  Use this if you're just verifying a version
365918334Speter# that is pretty sure to work, and you are short of disk space.
366018334Speterrisky-stage1: stage1
366190081Sobrien	-$(MAKE) clean
366218334Speter
366318334Speterrisky-stage2: stage2
366490081Sobrien	-$(MAKE) clean
366518334Speter
366618334Speterrisky-stage3: stage3
366790081Sobrien	-$(MAKE) clean
366818334Speter
366918334Speterrisky-stage4: stage4
367090081Sobrien	-$(MAKE) clean
367118334Speter
367218334Speter#In GNU Make, ignore whether `stage*' exists.
367318334Speter.PHONY: stage1 stage2 stage3 stage4 clean maintainer-clean TAGS bootstrap
367418334Speter.PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4
367518334Speter
367618334Speterforce:
367750448Sobrien
367890081Sobrien# Rules for generating translated message descriptions.
367990081Sobrien# Disabled by autoconf if the tools are not available.
368090081Sobrien
368190081SobrienXGETTEXT = @XGETTEXT@
368290081SobrienGMSGFMT = @GMSGFMT@
368390081SobrienMSGMERGE = msgmerge
368490081Sobrien
368590081SobrienPACKAGE = @PACKAGE@
368690081SobrienCATALOGS = @CATALOGS@
368790081Sobrien
3688117404Skan.PHONY: build- install- build-po install-po update-po
368990081Sobrien
369090081Sobrien# Dummy rules to deal with dependencies produced by use of
369190081Sobrien# "build-@POSUB@" and "install-@POSUB@" above, when NLS is disabled.
369290081Sobrienbuild-: ; @true
369390081Sobrieninstall-: ; @true
369490081Sobrien
369590081Sobrienbuild-po: $(CATALOGS)
369690081Sobrien
369790081Sobrien# This notation should be acceptable to all Make implementations used
369890081Sobrien# by people who are interested in updating .po files.
369990081Sobrienupdate-po: $(CATALOGS:.gmo=.pox)
370090081Sobrien
370190081Sobrien# N.B. We do not attempt to copy these into $(srcdir).  The snapshot
370290081Sobrien# script does that.
370390081Sobrien.po.gmo:
370490081Sobrien	-test -d po || mkdir po
370590081Sobrien	$(GMSGFMT) --statistics -o $@ $<
370690081Sobrien
370790081Sobrien# The new .po has to be gone over by hand, so we deposit it into
370890081Sobrien# build/po with a different extension.
370990081Sobrien# If build/po/$(PACKAGE).pot exists, use it (it was just created),
371090081Sobrien# else use the one in srcdir.
371190081Sobrien.po.pox:
371290081Sobrien	-test -d po || mkdir po
371390081Sobrien	$(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \
371490081Sobrien			then echo po/$(PACKAGE).pot; \
371590081Sobrien			else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@
371690081Sobrien
371790081Sobrien# This rule has to look for .gmo modules in both srcdir and
371890081Sobrien# the cwd, and has to check that we actually have a catalog
371990081Sobrien# for each language, in case they weren't built or included
372090081Sobrien# with the distribution.
372190081Sobrieninstall-po:
372290081Sobrien	$(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$(datadir)
372390081Sobrien	for cat in $(CATALOGS); do \
372490081Sobrien	  lang=`basename $$cat | sed 's/\.gmo$$//'`; \
372590081Sobrien	  if [ -f $$cat ]; then :; \
372690081Sobrien	  elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \
372790081Sobrien	  else continue; \
372890081Sobrien	  fi; \
372990081Sobrien	  dir=$(localedir)/$$lang/LC_MESSAGES; \
373090081Sobrien	  echo $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$$dir; \
373190081Sobrien	  $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$$dir || exit 1; \
373290081Sobrien	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
373390081Sobrien	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
373490081Sobrien	done
373590081Sobrien
373690081Sobrien# Rule for regenerating the message template (gcc.pot).
373790081Sobrien# Instead of forcing everyone to edit POTFILES.in, which proved impractical,
373890081Sobrien# this rule has no dependencies and always regenerates gcc.pot.  This is
373990081Sobrien# relatively harmless since the .po files do not directly depend on it.
374090081Sobrien# Note that exgettext has an awk script embedded in it which requires a
374190081Sobrien# fairly modern (POSIX-compliant) awk.
374290081Sobrien# The .pot file is left in the build directory.
374390081Sobrien$(PACKAGE).pot: po/$(PACKAGE).pot
374490081Sobrienpo/$(PACKAGE).pot: force
374590081Sobrien	-test -d po || mkdir po
374690081Sobrien	$(MAKE) po-generated
374790081Sobrien	AWK=$(AWK) $(SHELL) $(srcdir)/po/exgettext \
374890081Sobrien		$(XGETTEXT) $(PACKAGE) $(srcdir)
3749