* cpplib.h (CPP_AT_NAME, CPP_OBJC_STRING): New token types.
[official-gcc.git] / Makefile.tpl
blob4c3f936bc0ec9898237e2777c83082ee82eb4469
1 [+ AutoGen5 template -*- Mode: Makefile -*-
2 in
3 +]
5 # Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'.
7 # Makefile for directory with subdirs to build.
8 #   Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
9 #   1999, 2000, 2001, 2002, 2003 Free Software Foundation
11 # This file is free software; you can redistribute it and/or modify
12 # it under the terms of the GNU General Public License as published by
13 # the Free Software Foundation; either version 2 of the License, or
14 # (at your option) any later version.
15
16 # This program is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 # GNU General Public License for more details.
20
21 # You should have received a copy of the GNU General Public License
22 # along with this program; if not, write to the Free Software
23 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26 # -------------------------------
27 # Standard Autoconf-set variables
28 # -------------------------------
29 VPATH=@srcdir@
31 build_alias=@build_alias@
32 build=@build@
33 host_alias=@host_alias@
34 host=@host@
35 target_alias=@target_alias@
36 target=@target@
38 program_transform_name = @program_transform_name@
40 prefix = @prefix@
41 exec_prefix = @exec_prefix@
43 srcdir = @srcdir@
45 bindir = @bindir@
46 sbindir = @sbindir@
47 libexecdir = @libexecdir@
48 datadir = @datadir@
49 sysconfdir = @sysconfdir@
50 sharedstatedir = @sharedstatedir@
51 localstatedir = @localstatedir@
52 libdir = @libdir@
53 includedir = @includedir@
54 oldincludedir = @oldincludedir@
55 infodir = @infodir@
56 mandir = @mandir@
57 man1dir = $(mandir)/man1
58 man2dir = $(mandir)/man2
59 man3dir = $(mandir)/man3
60 man4dir = $(mandir)/man4
61 man5dir = $(mandir)/man5
62 man6dir = $(mandir)/man6
63 man7dir = $(mandir)/man7
64 man8dir = $(mandir)/man8
65 man9dir = $(mandir)/man9
67 # INSTALL_PROGRAM_ARGS is changed by configure.in to use -x for a
68 # cygwin host.
69 INSTALL_PROGRAM_ARGS =
71 INSTALL = $(SHELL) $$s/install-sh -c
72 INSTALL_PROGRAM = $(INSTALL) $(INSTALL_PROGRAM_ARGS)
73 INSTALL_SCRIPT = $(INSTALL)
74 INSTALL_DATA = $(INSTALL) -m 644
76 # -------------------------------------------------
77 # Miscellaneous non-standard autoconf-set variables
78 # -------------------------------------------------
80 links=@configlinks@
81 # The file containing GCC's version number.
82 gcc_version_trigger = @gcc_version_trigger@
83 gcc_version = @gcc_version@
85 # The gcc driver likes to know the arguments it was configured with.
86 TOPLEVEL_CONFIGURE_ARGUMENTS=@TOPLEVEL_CONFIGURE_ARGUMENTS@
88 gxx_include_dir = @gxx_include_dir@
89 libstdcxx_incdir = @libstdcxx_incdir@
91 tooldir = @tooldir@
92 build_tooldir = @build_tooldir@
94 # Directory in which the compiler finds executables, libraries, etc.
95 libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)
96 GDB_NLM_DEPS = 
98 # This is the name of the environment variable used for the path to
99 # the libraries.
100 RPATH_ENVVAR = @RPATH_ENVVAR@
102 # This is set by configure to REALLY_SET_LIB_PATH if --enable-shared
103 # was used.
104 SET_LIB_PATH = @SET_LIB_PATH@
106 # configure.in sets SET_LIB_PATH to this if --enable-shared was used.
107 # Some platforms don't like blank entries, so we remove duplicate,
108 # leading and trailing colons.
109 REALLY_SET_LIB_PATH = \
110   $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH):$(TARGET_LIB_PATH):$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR);
112 # This is the list of directories to be built for the build system.
113 BUILD_CONFIGDIRS = libiberty
114 # Build programs are put under this directory.
115 BUILD_SUBDIR = @build_subdir@
116 # This is set by the configure script to the arguments to use when configuring
117 # directories built for the build system.
118 BUILD_CONFIGARGS = @build_configargs@
120 # This is the list of directories to built for the host system.
121 SUBDIRS = @configdirs@
122 # This is set by the configure script to the arguments to use when configuring
123 # directories built for the host system.
124 HOST_CONFIGARGS = @host_configargs@
126 # This is set by the configure script to the list of directories which
127 # should be built using the target tools.
128 TARGET_CONFIGDIRS = @target_configdirs@
129 # Target libraries are put under this directory:
130 TARGET_SUBDIR = @target_subdir@
131 # This is set by the configure script to the arguments to use when configuring
132 # directories built for the target.
133 TARGET_CONFIGARGS = @target_configargs@
135 # ----------------------------------------------
136 # Programs producing files for the BUILD machine
137 # ----------------------------------------------
139 SHELL = @config_shell@
141 # pwd command to use.  Allow user to override default by setting PWDCMD in
142 # the environment to account for automounters.  The make variable must not
143 # be called PWDCMD, otherwise the value set here is passed to make
144 # subprocesses and overrides the setting from the user's environment.
145 # Don't use PWD since it is a common shell environment variable and we
146 # don't want to corrupt it.
147 PWD_COMMAND = $${PWDCMD-pwd}
149 # compilers to use to create programs which must be run in the build
150 # environment.
151 CC_FOR_BUILD = @CC_FOR_BUILD@
152 CFLAGS_FOR_BUILD = $(CFLAGS)
154 CXX_FOR_BUILD = $(CXX)
156 # Special variables passed down in EXTRA_GCC_FLAGS.  They are defined
157 # here so that they can be overridden by Makefile fragments.
158 BUILD_PREFIX = @BUILD_PREFIX@
159 BUILD_PREFIX_1 = @BUILD_PREFIX_1@
161 BISON=@BISON@
162 USUAL_BISON = `if [ -f $$r/bison/bison ] ; then \
163             echo $$r/bison/bison -L $$s/bison/ ; \
164          else \
165             echo bison ; \
166          fi`
168 DEFAULT_YACC = @DEFAULT_YACC@
169 YACC=@YACC@
170 USUAL_YACC = `if [ -f $$r/bison/bison ] ; then \
171             echo $$r/bison/bison -y -L $$s/bison/ ; \
172         elif [ -f $$r/byacc/byacc ] ; then \
173             echo $$r/byacc/byacc ; \
174         else \
175             echo ${DEFAULT_YACC} ; \
176         fi`
178 DEFAULT_LEX = @DEFAULT_LEX@
179 LEX=@LEX@
180 USUAL_LEX = `if [ -f $$r/flex/flex ] ; \
181         then echo $$r/flex/flex ; \
182         else echo ${DEFAULT_LEX} ; fi`
184 DEFAULT_M4 = @DEFAULT_M4@
185 M4 = `if [ -f $$r/m4/m4 ] ; \
186         then echo $$r/m4/m4 ; \
187         else echo ${DEFAULT_M4} ; fi`
189 # For an installed makeinfo, we require it to be from texinfo 4.2 or
190 # higher, else we use the "missing" dummy.
191 MAKEINFO=@MAKEINFO@
192 USUAL_MAKEINFO = `if [ -f $$r/texinfo/makeinfo/makeinfo ] ; \
193         then echo $$r/texinfo/makeinfo/makeinfo ; \
194         else if (makeinfo --version \
195           | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])') >/dev/null 2>&1; \
196         then echo makeinfo; else echo $$s/missing makeinfo; fi; fi`
198 # This just becomes part of the MAKEINFO definition passed down to
199 # sub-makes.  It lets flags be given on the command line while still
200 # using the makeinfo from the object tree.
201 # (Default to avoid splitting info files by setting the threshold high.)
202 MAKEINFOFLAGS = --split-size=5000000
204 EXPECT = `if [ -f $$r/expect/expect ] ; \
205         then echo $$r/expect/expect ; \
206         else echo expect ; fi`
208 RUNTEST = `if [ -f $$s/dejagnu/runtest ] ; \
209         then echo $$s/dejagnu/runtest ; \
210         else echo runtest ; fi`
212 # ---------------------------------------------
213 # Programs producing files for the HOST machine
214 # ---------------------------------------------
216 # This is the list of directories that may be needed in RPATH_ENVVAR
217 # so that programs built for the host machine work.
218 HOST_LIB_PATH = $$r/bfd:$$r/opcodes
220 AS = @AS@
222 AR = @AR@
223 AR_FLAGS = rc
225 CC = @CC@
226 CFLAGS = @CFLAGS@
227 LIBCFLAGS = $(CFLAGS)
229 CXX = @CXX@
230 CXXFLAGS = @CXXFLAGS@
231 LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
233 DLLTOOL = @DLLTOOL@
235 NM = @NM@
237 LD = @LD@
238 LDFLAGS = 
240 RANLIB = @RANLIB@
242 WINDRES = @WINDRES@
244 PICFLAG = 
246 # -----------------------------------------------
247 # Programs producing files for the TARGET machine
248 # -----------------------------------------------
250 # This is the list of directories that may be needed in RPATH_ENVVAR
251 # so that prorgams built for the target machine work.
252 TARGET_LIB_PATH = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:
254 FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@
256 AR_FOR_TARGET=@AR_FOR_TARGET@
257 USUAL_AR_FOR_TARGET = ` \
258   if [ -f $$r/binutils/ar ] ; then \
259     echo $$r/binutils/ar ; \
260   else \
261     if [ '$(host)' = '$(target)' ] ; then \
262       echo $(AR); \
263     else \
264        echo ar | sed '$(program_transform_name)' ; \
265     fi; \
266   fi`
268 AS_FOR_TARGET=@AS_FOR_TARGET@
269 USUAL_AS_FOR_TARGET = ` \
270   if [ -f $$r/gas/as-new ] ; then \
271     echo $$r/gas/as-new ; \
272   elif [ -f $$r/gcc/xgcc ]; then \
273     $(CC_FOR_TARGET) -print-prog-name=as ; \
274   else \
275     if [ '$(host)' = '$(target)' ] ; then \
276       echo $(AS); \
277     else \
278        echo as | sed '$(program_transform_name)' ; \
279     fi; \
280   fi`
282 CC_FOR_TARGET = @CC_FOR_TARGET@
283 # During gcc bootstrap, if we use some random cc for stage1 then
284 # CFLAGS will be just -g.  We want to ensure that TARGET libraries
285 # (which we know are built with gcc) are built with optimizations so
286 # prepend -O2 when setting CFLAGS_FOR_TARGET.
287 CFLAGS_FOR_TARGET = -O2 $(CFLAGS)
288 # If GCC_FOR_TARGET is not overriden on the command line, then this
289 # variable is passed down to the gcc Makefile, where it is used to
290 # build libgcc2.a.  We define it here so that it can itself be
291 # overridden on the command line.
292 GCC_FOR_TARGET=@GCC_FOR_TARGET@
293 USUAL_GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) $$r/gcc/xgcc -B$$r/gcc/ $(FLAGS_FOR_TARGET)
294 LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
296 CXX_FOR_TARGET = @CXX_FOR_TARGET@
297 RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@
298 CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
299 RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
300 CXXFLAGS_FOR_TARGET = $(CXXFLAGS)
301 LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
303 DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
304 USUAL_DLLTOOL_FOR_TARGET = ` \
305   if [ -f $$r/binutils/dlltool ] ; then \
306     echo $$r/binutils/dlltool ; \
307   else \
308     if [ '$(host)' = '$(target)' ] ; then \
309       echo $(DLLTOOL); \
310     else \
311        echo dlltool | sed '$(program_transform_name)' ; \
312     fi; \
313   fi`
315 GCJ_FOR_TARGET = @GCJ_FOR_TARGET@
317 LD_FOR_TARGET=@LD_FOR_TARGET@
318 USUAL_LD_FOR_TARGET = ` \
319   if [ -f $$r/ld/ld-new ] ; then \
320     echo $$r/ld/ld-new ; \
321   elif [ -f $$r/gcc/xgcc ]; then \
322     $(CC_FOR_TARGET) -print-prog-name=ld ; \
323   else \
324     if [ '$(host)' = '$(target)' ] ; then \
325       echo $(LD); \
326     else \
327        echo ld | sed '$(program_transform_name)' ; \
328     fi; \
329   fi`
331 LDFLAGS_FOR_TARGET = 
333 NM_FOR_TARGET=@NM_FOR_TARGET@
334 USUAL_NM_FOR_TARGET = ` \
335   if [ -f $$r/binutils/nm-new ] ; then \
336     echo $$r/binutils/nm-new ; \
337   elif [ -f $$r/gcc/xgcc ]; then \
338     $(CC_FOR_TARGET) -print-prog-name=nm ; \
339   else \
340     if [ '$(host)' = '$(target)' ] ; then \
341       echo $(NM); \
342     else \
343        echo nm | sed '$(program_transform_name)' ; \
344     fi; \
345   fi`
347 RANLIB_FOR_TARGET=@RANLIB_FOR_TARGET@
348 USUAL_RANLIB_FOR_TARGET = ` \
349   if [ -f $$r/binutils/ranlib ] ; then \
350     echo $$r/binutils/ranlib ; \
351   else \
352     if [ '$(host)' = '$(target)' ] ; then \
353       if [ x'$(RANLIB)' != x ]; then \
354          echo $(RANLIB); \
355       else \
356          echo ranlib; \
357       fi; \
358     else \
359        echo ranlib | sed '$(program_transform_name)' ; \
360     fi; \
361   fi`
363 WINDRES_FOR_TARGET=@WINDRES_FOR_TARGET@
364 USUAL_WINDRES_FOR_TARGET = ` \
365   if [ -f $$r/binutils/windres ] ; then \
366     echo $$r/binutils/windres ; \
367   else \
368     if [ '$(host)' = '$(target)' ] ; then \
369       echo $(WINDRES); \
370     else \
371        echo windres | sed '$(program_transform_name)' ; \
372     fi; \
373   fi`
375 PICFLAG_FOR_TARGET = 
377 # ------------------------------------
378 # Miscellaneous targets and flag lists
379 # ------------------------------------
381 # The first rule in the file had better be this one.  Don't put any above it.
382 # This lives here to allow makefile fragments to contain dependencies.
383 all: all.normal
384 .PHONY: all
386 #### host and target specific makefile fragments come in here.
387 @target_makefile_frag@
388 @alphaieee_frag@
389 @ospace_frag@
390 @host_makefile_frag@
393 # Flags to pass down to all sub-makes.
394 BASE_FLAGS_TO_PASS = [+ FOR flags_to_pass +]\
395         "[+flag+]=$([+flag+])" [+ ENDFOR flags_to_pass +]\
396         "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" 
398 # For any flags above that may contain shell code that varies from one
399 # target library to another.  When doing recursive invocations of the
400 # top-level Makefile, we don't want the outer make to evaluate them,
401 # so we pass these variables down unchanged.  They must not contain
402 # single nor double quotes.
403 RECURSE_FLAGS = \
404         CXX_FOR_TARGET='$(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \
405         RAW_CXX_FOR_TARGET='$(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \
407 # Flags to pass down to most sub-makes, in which we're building with
408 # the host environment.
409 EXTRA_HOST_FLAGS = \
410         'AR=$(AR)' \
411         'AS=$(AS)' \
412         'CC=$(CC)' \
413         'CXX=$(CXX)' \
414         'DLLTOOL=$(DLLTOOL)' \
415         'LD=$(LD)' \
416         'NM=$(NM)' \
417         'RANLIB=$(RANLIB)' \
418         'WINDRES=$(WINDRES)'
420 FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS)
422 # Flags that are concerned with the location of the X11 include files
423 # and library files
425 # NOTE: until the top-level is getting the values via autoconf, it only
426 # causes problems to have this top-level Makefile overriding the autoconf-set
427 # values in child directories.  Only variables that don't conflict with
428 # autoconf'ed ones should be passed by X11_FLAGS_TO_PASS for now.
430 X11_FLAGS_TO_PASS = \
431         'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \
432         'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)'
434 # Flags to pass down to makes which are built with the target environment.
435 # The double $ decreases the length of the command line; the variables
436 # are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them.
437 EXTRA_TARGET_FLAGS = \
438         'AR=$$(AR_FOR_TARGET)' \
439         'AS=$$(AS_FOR_TARGET)' \
440         'CC=$$(CC_FOR_TARGET)' \
441         'CFLAGS=$$(CFLAGS_FOR_TARGET)' \
442         'CXX=$$(CXX_FOR_TARGET)' \
443         'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
444         'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
445         'LD=$$(LD_FOR_TARGET)' \
446         'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
447         'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \
448         'NM=$$(NM_FOR_TARGET)' \
449         'RANLIB=$$(RANLIB_FOR_TARGET)' \
450         'WINDRES=$$(WINDRES_FOR_TARGET)'
452 TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)
454 # Flags to pass down to gcc.  gcc builds a library, libgcc.a, so it
455 # unfortunately needs the native compiler and the target ar and
456 # ranlib.
457 # If any variables are added here, they must be added to do-*, below.
458 # The BUILD_* variables are a special case, which are used for the gcc
459 # cross-building scheme.
460 EXTRA_GCC_FLAGS = \
461         'AR=$(AR)' \
462         'AS=$(AS)' \
463         'CC=$(CC)' \
464         'CXX=$(CXX)' \
465         'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
466         'BUILD_PREFIX=$(BUILD_PREFIX)' \
467         'BUILD_PREFIX_1=$(BUILD_PREFIX_1)' \
468         'NM=$(NM)' \
469         'RANLIB=$(RANLIB)' \
470         'WINDRES=$$(WINDRES_FOR_TARGET)' \
471         "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
472         "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
473         "`echo 'LANGUAGES=$(LANGUAGES)' | sed -e s/.*=$$/XFOO=/`" \
474         "`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s/.*=$$/XFOO=/`" \
475         "`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s/.*=$$/XFOO=/`" \
476         "`echo 'LIBGCC2_CFLAGS=$(LIBGCC2_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
477         "`echo 'LIBGCC2_DEBUG_CFLAGS=$(LIBGCC2_DEBUG_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
478         "`echo 'LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)' | sed -e s/.*=$$/XFOO=/`" \
479         "`echo 'ENQUIRE=$(ENQUIRE)' | sed -e s/.*=$$/XFOO=/`" \
480         "`echo 'STAGE1_CFLAGS=$(STAGE1_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
481         "`echo 'BOOT_CFLAGS=$(BOOT_CFLAGS)' | sed -e s/.*=$$/XFOO=/`"
483 GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS)
485 .PHONY: configure-host
486 configure-host: maybe-configure-gcc [+
487   FOR host_modules +] \
488     maybe-configure-[+module+][+
489   ENDFOR host_modules +]
490 .PHONY: configure-target
491 configure-target: [+
492   FOR target_modules +] \
493     maybe-configure-target-[+module+][+
494   ENDFOR target_modules +]
496 # The target built for a native build.
497 .PHONY: all.normal
498 all.normal: @all_build_modules@ all-host all-target
500 .PHONY: all-host
501 all-host: maybe-all-gcc [+
502   FOR host_modules +] \
503     maybe-all-[+module+][+
504   ENDFOR host_modules +]
505 .PHONY: all-target
506 all-target: [+
507   FOR target_modules +] \
508     maybe-all-target-[+module+][+
509   ENDFOR target_modules +]
511 # Do a target for all the subdirectories.  A ``make do-X'' will do a
512 # ``make X'' in all subdirectories (because, in general, there is a
513 # dependency (below) of X upon do-X, a ``make X'' will also do this,
514 # but it may do additional work as well).
515 [+ FOR recursive_targets +]
516 .PHONY: do-[+make_target+]
517 do-[+make_target+]: [+make_target+]-host [+make_target+]-target
519 .PHONY: [+make_target+]-host
520 [+make_target+]-host: maybe-[+make_target+]-gcc [+
521   FOR host_modules +] \
522     maybe-[+make_target+]-[+module+][+
523   ENDFOR host_modules +]
525 .PHONY: [+make_target+]-target
526 [+make_target+]-target: [+
527   FOR target_modules +] \
528     maybe-[+make_target+]-target-[+module+][+
529   ENDFOR target_modules +]
531 # GCC, the eternal special case
532 .PHONY: maybe-[+make_target+]-gcc [+make_target+]-gcc
533 maybe-[+make_target+]-gcc:
534 [+make_target+]-gcc: [+
535   FOR depend +]\
536     [+depend+]-gcc [+
537   ENDFOR depend +]
538         @[ -f ./gcc/Makefile ] || exit 0; \
539         r=`${PWD_COMMAND}`; export r; \
540         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
541         $(SET_LIB_PATH) \
542         for flag in $(EXTRA_GCC_FLAGS); do \
543           eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
544         done; \
545         echo "Doing [+make_target+] in gcc" ; \
546         (cd gcc && \
547           $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
548                   "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
549                   "RANLIB=$${RANLIB}" \
550                   "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
551                   [+make_target+]) \
552           || exit 1
554 # Host modules.
555 [+ FOR host_modules +]
556 .PHONY: maybe-[+make_target+]-[+module+] [+make_target+]-[+module+]
557 maybe-[+make_target+]-[+module+]:
558 [+ IF (match-value? = "missing" (get "make_target") ) +]
559 # [+module+] doesn't support [+make_target+].
560 [+make_target+]-[+module+]:
561 [+ ELSE +]
562 [+make_target+]-[+module+]: [+
563   FOR depend +]\
564     [+depend+]-[+module+] [+
565   ENDFOR depend +]
566         @[ -f ./[+module+]/Makefile ] || exit 0; \
567         r=`${PWD_COMMAND}`; export r; \
568         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
569         $(SET_LIB_PATH) \
570         for flag in $(EXTRA_HOST_FLAGS); do \
571           eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
572         done; \
573         echo "Doing [+make_target+] in [+module+]" ; \
574         (cd [+module+] && \
575           $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
576                   "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
577                   "RANLIB=$${RANLIB}" \
578                   "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
579                   [+make_target+]) \
580           || exit 1
581 [+ ENDIF +]
582 [+ ENDFOR host_modules +]
584 # Target modules.
585 [+ FOR target_modules +]
586 .PHONY: maybe-[+make_target+]-target-[+module+] [+make_target+]-target-[+module+]
587 maybe-[+make_target+]-target-[+module+]:
588 [+ IF (match-value? = "missing" (get "make_target") ) +]
589 # [+module+] doesn't support [+make_target+].
590 [+make_target+]-target-[+module+]:
591 [+ ELSE +]
592 [+make_target+]-target-[+module+]: [+
593   FOR depend +]\
594     [+depend+]-target-[+module+] [+
595   ENDFOR depend +]
596         @[ -f $(TARGET_SUBDIR)/[+module+]/Makefile ] || exit 0 ; \
597         r=`${PWD_COMMAND}`; export r; \
598         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
599         $(SET_LIB_PATH) \
600         echo "Doing [+make_target+] in $(TARGET_SUBDIR)/[+module+]" ; \
601         for flag in $(EXTRA_TARGET_FLAGS); do \
602           eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
603         done; \
604         (cd $(TARGET_SUBDIR)/[+module+] && \
605           $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
606                   "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
607                   "RANLIB=$${RANLIB}" \
608                   "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
609                   [+make_target+]) \
610           || exit 1
611 [+ ENDIF +]
612 [+ ENDFOR target_modules +]
613 [+ ENDFOR recursive_targets +]
615 # Here are the targets which correspond to the do-X targets.
617 .PHONY: info installcheck dvi install-info
618 .PHONY: clean distclean mostlyclean maintainer-clean realclean
619 .PHONY: local-clean local-distclean local-maintainer-clean
620 info: do-info
621 installcheck: do-installcheck
622 dvi: do-dvi
624 # Make sure makeinfo is built before we do a `make info', if we're
625 # in fact building texinfo.
626 do-info: maybe-all-texinfo
628 install-info: do-install-info dir.info
629         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
630         if [ -f dir.info ] ; then \
631           $(INSTALL_DATA) dir.info $(DESTDIR)$(infodir)/dir.info ; \
632         else true ; fi
634 local-clean:
635         -rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E *.log
637 local-distclean:
638         -rm -f Makefile config.status config.cache mh-frag mt-frag
639         -rm -f multilib.out multilib.tmp maybedep.tmp serdep.tmp
640         -if [ "$(TARGET_SUBDIR)" != "." ]; then \
641           rm -rf $(TARGET_SUBDIR); \
642         else true; fi
643         -rm -rf $(BUILD_SUBDIR)
644         -rm -f texinfo/po/Makefile texinfo/po/Makefile.in texinfo/info/Makefile
645         -rm -f texinfo/doc/Makefile texinfo/po/POTFILES
646         -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
647         -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
648         -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null
650 local-maintainer-clean:
651         @echo "This command is intended for maintainers to use;"
652         @echo "it deletes files that may require special tools to rebuild."
654 clean: do-clean local-clean
655 mostlyclean: do-mostlyclean local-clean
656 distclean: do-distclean local-clean local-distclean
657 maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean 
658 maintainer-clean: local-distclean
659 realclean: maintainer-clean
661 # Extra dependency for clean-target, owing to the mixed nature of gcc
662 clean-target: clean-target-libgcc
663 clean-target-libgcc:
664         test ! -d gcc/libgcc || \
665         (cd gcc/libgcc && find . -type d -print) | \
666         while read d; do rm -f gcc/$$d/libgcc.a || : ; done
667         -rm -rf gcc/libgcc
669 # Check target.
671 .PHONY: check do-check
672 check:
673         $(MAKE) do-check
675 # Only include modules actually being configured and built.
676 do-check: maybe-check-gcc [+
677   FOR host_modules +] \
678     maybe-check-[+module+][+
679   ENDFOR host_modules +][+
680   FOR target_modules +] \
681     maybe-check-target-[+module+][+
682   ENDFOR target_modules +]
684 # Automated reporting of test results.
686 warning.log: build.log
687         $(srcdir)/contrib/warn_summary build.log > $@
689 mail-report.log:
690         if test x'$(BOOT_CFLAGS)' != x''; then \
691             BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \
692         fi; \
693         $(srcdir)/contrib/test_summary -t >$@
694         chmod +x $@
695         echo If you really want to send e-mail, run ./$@ now
697 mail-report-with-warnings.log: warning.log
698         if test x'$(BOOT_CFLAGS)' != x''; then \
699             BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \
700         fi; \
701         $(srcdir)/contrib/test_summary -t -i warning.log >$@
702         chmod +x $@
703         echo If you really want to send e-mail, run ./$@ now
705 # Installation targets.
707 .PHONY: install uninstall
708 install: installdirs install-host install-target
710 .PHONY: install-host-nogcc
711 install-host-nogcc: [+
712   FOR host_modules +] \
713     maybe-install-[+module+][+
714   ENDFOR host_modules +]
716 .PHONY: install-host
717 install-host: maybe-install-gcc [+
718   FOR host_modules +] \
719     maybe-install-[+module+][+
720   ENDFOR host_modules +]
722 .PHONY: install-target
723 install-target: [+
724   FOR target_modules +] \
725     maybe-install-target-[+module+][+
726   ENDFOR target_modules +]
728 uninstall:
729         @echo "the uninstall target is not supported in this tree"
731 .PHONY: install.all
732 install.all: install-no-fixedincludes
733         @if [ -f ./gcc/Makefile ] ; then \
734                 r=`${PWD_COMMAND}` ; export r ; \
735                 $(SET_LIB_PATH) \
736                 (cd ./gcc && \
737                 $(MAKE) $(FLAGS_TO_PASS) install-headers) ; \
738         else \
739                 true ; \
740         fi
742 # install-no-fixedincludes is used because Cygnus can not distribute
743 # the fixed header files.
744 .PHONY: install-no-fixedincludes
745 install-no-fixedincludes: installdirs install-host-nogcc \
746         install-target gcc-no-fixedincludes
748 ### other supporting targets
750 MAKEDIRS= \
751         $(DESTDIR)$(prefix) \
752         $(DESTDIR)$(exec_prefix)
753 .PHONY: installdirs
754 installdirs: mkinstalldirs
755         $(SHELL) $(srcdir)/mkinstalldirs $(MAKEDIRS)
757 dir.info: do-install-info
758         if [ -f $(srcdir)/texinfo/gen-info-dir ] ; then \
759           $(srcdir)/texinfo/gen-info-dir $(DESTDIR)$(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \
760           mv -f dir.info.new dir.info ; \
761         else true ; \
762         fi
764 dist:
765         @echo "Building a full distribution of this tree isn't done"
766         @echo "via 'make dist'.  Check out the etc/ subdirectory" 
768 etags tags: TAGS
770 # Right now this just builds TAGS in each subdirectory.  emacs19 has the
771 # ability to use several tags files at once, so there is probably no need
772 # to combine them into one big TAGS file (like CVS 1.3 does).  We could
773 # (if we felt like it) have this Makefile write a piece of elisp which
774 # the user could load to tell emacs19 where all the TAGS files we just
775 # built are.
776 TAGS: do-TAGS
778 # --------------------------------------
779 # Modules which run on the build machine
780 # --------------------------------------
781 [+ FOR build_modules +]
782 .PHONY: configure-build-[+module+] maybe-configure-build-[+module+]
783 maybe-configure-build-[+module+]:
784 configure-build-[+module+]:
785         @test ! -f $(BUILD_SUBDIR)/[+module+]/Makefile || exit 0; \
786         [ -d $(BUILD_SUBDIR)/[+module+] ] || \
787           mkdir $(BUILD_SUBDIR)/[+module+];\
788         r=`${PWD_COMMAND}`; export r; \
789         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
790         AR="$(AR_FOR_BUILD)"; export AR; \
791         AS="$(AS_FOR_BUILD)"; export AS; \
792         CC="$(CC_FOR_BUILD)"; export CC; \
793         CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
794         CXX="$(CXX_FOR_BUILD)"; export CXX; \
795         CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
796         GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
797         DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
798         LD="$(LD_FOR_BUILD)"; export LD; \
799         LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \
800         NM="$(NM_FOR_BUILD)"; export NM; \
801         RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \
802         WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \
803         echo Configuring in $(BUILD_SUBDIR)/[+module+]; \
804         cd "$(BUILD_SUBDIR)/[+module+]" || exit 1; \
805         case $(srcdir) in \
806           /* | [A-Za-z]:[\\/]*) \
807             topdir=$(srcdir) ;; \
808           *) \
809             case "$(BUILD_SUBDIR)" in \
810               .) topdir="../$(srcdir)" ;; \
811               *) topdir="../../$(srcdir)" ;; \
812             esac ;; \
813         esac; \
814         if [ "$(srcdir)" = "." ] ; then \
815           if [ "$(BUILD_SUBDIR)" != "." ] ; then \
816             if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "no-such-file" ; then \
817               if [ -f Makefile ]; then \
818                 if $(MAKE) distclean; then \
819                   true; \
820                 else \
821                   exit 1; \
822                 fi; \
823               else \
824                 true; \
825               fi; \
826             else \
827               exit 1; \
828             fi; \
829           else \
830             true; \
831           fi; \
832           srcdiroption="--srcdir=."; \
833           libsrcdir="."; \
834         else \
835           srcdiroption="--srcdir=$${topdir}/[+module+]"; \
836           libsrcdir="$$s/[+module+]"; \
837         fi; \
838         rm -f no-such-file || : ; \
839         CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
840           $(BUILD_CONFIGARGS) $${srcdiroption} \
841           --with-build-subdir="$(BUILD_SUBDIR)" \
842           || exit 1
844 .PHONY: all-build-[+module+] maybe-all-build-[+module+]
845 maybe-all-build-[+module+]:
846 all-build-[+module+]: configure-build-[+module+]
847         @r=`${PWD_COMMAND}`; export r; \
848         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
849         (cd $(BUILD_SUBDIR)/[+module+] && $(MAKE) all)
850 [+ ENDFOR build_modules +]
852 # --------------------------------------
853 # Modules which run on the host machine
854 # --------------------------------------
855 [+ FOR host_modules +]
856 .PHONY: configure-[+module+] maybe-configure-[+module+]
857 maybe-configure-[+module+]:
858 configure-[+module+]:
859         @test ! -f [+module+]/Makefile || exit 0; \
860         [ -d [+module+] ] || mkdir [+module+]; \
861         r=`${PWD_COMMAND}`; export r; \
862         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
863         CC="$(CC)"; export CC; \
864         CFLAGS="$(CFLAGS)"; export CFLAGS; \
865         CXX="$(CXX)"; export CXX; \
866         CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
867         AR="$(AR)"; export AR; \
868         AS="$(AS)"; export AS; \
869         CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
870         DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
871         LD="$(LD)"; export LD; \
872         NM="$(NM)"; export NM; \
873         RANLIB="$(RANLIB)"; export RANLIB; \
874         WINDRES="$(WINDRES)"; export WINDRES; \
875         OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
876         OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
877         echo Configuring in [+module+]; \
878         cd [+module+] || exit 1; \
879         case $(srcdir) in \
880           \.) \
881             srcdiroption="--srcdir=."; \
882             libsrcdir=".";; \
883           /* | [A-Za-z]:[\\/]*) \
884             srcdiroption="--srcdir=$(srcdir)/[+module+]"; \
885             libsrcdir="$$s/[+module+]";; \
886           *) \
887             srcdiroption="--srcdir=../$(srcdir)/[+module+]"; \
888             libsrcdir="$$s/[+module+]";; \
889         esac; \
890         $(SHELL) $${libsrcdir}/configure \
891           $(HOST_CONFIGARGS) $${srcdiroption} \
892           || exit 1
894 .PHONY: all-[+module+] maybe-all-[+module+]
895 maybe-all-[+module+]:
896 all-[+module+]: configure-[+module+]
897         @r=`${PWD_COMMAND}`; export r; \
898         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
899         $(SET_LIB_PATH) \
900         (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
901           IF with_x 
902             +] $(X11_FLAGS_TO_PASS)[+ 
903           ENDIF with_x +] all)
905 .PHONY: check-[+module+] maybe-check-[+module+]
906 maybe-check-[+module+]:
907 [+ IF no_check +]
908 check-[+module+]:
909 [+ ELIF no_check_cross +]
910 # This module is only tested in a native toolchain.
911 check-[+module+]:
912         @if [ '$(host)' = '$(target)' ] ; then \
913           r=`${PWD_COMMAND}`; export r; \
914           s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
915           $(SET_LIB_PATH) \
916           (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
917             IF with_x 
918               +] $(X11_FLAGS_TO_PASS)[+ 
919             ENDIF with_x +] check); \
920         fi
921 [+ ELSE check +]
922 check-[+module+]:
923         @r=`${PWD_COMMAND}`; export r; \
924         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
925         $(SET_LIB_PATH) \
926         (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
927           IF with_x 
928             +] $(X11_FLAGS_TO_PASS)[+ 
929           ENDIF with_x +] check)
930 [+ ENDIF no_check +]
932 .PHONY: install-[+module+] maybe-install-[+module+]
933 maybe-install-[+module+]:
934 [+ IF no_install +]
935 install-[+module+]:
936 [+ ELSE install +]
937 install-[+module+]: installdirs
938         @r=`${PWD_COMMAND}`; export r; \
939         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
940         $(SET_LIB_PATH) \
941         (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
942           IF with_x 
943             +] $(X11_FLAGS_TO_PASS)[+ 
944           ENDIF with_x +] install)
945 [+ ENDIF no_install +]
946 [+ ENDFOR host_modules +]
948 # ---------------------------------------
949 # Modules which run on the target machine
950 # ---------------------------------------
951 [+ FOR target_modules +]
952 .PHONY: configure-target-[+module+] maybe-configure-target-[+module+]
953 maybe-configure-target-[+module+]:
955 # There's only one multilib.out.  Cleverer subdirs shouldn't need it copied.
956 $(TARGET_SUBDIR)/[+module+]/multilib.out: multilib.out
957         @[ -d $(TARGET_SUBDIR)/[+module+] ] || \
958           mkdir $(TARGET_SUBDIR)/[+module+]; \
959         rm -f $(TARGET_SUBDIR)/[+module+]/Makefile || : ; \
960         cp multilib.out $(TARGET_SUBDIR)/[+module+]/multilib.out
962 configure-target-[+module+]: $(TARGET_SUBDIR)/[+module+]/multilib.out
963         @test ! -f $(TARGET_SUBDIR)/[+module+]/Makefile || exit 0; \
964         [ -d $(TARGET_SUBDIR)/[+module+] ] || \
965           mkdir $(TARGET_SUBDIR)/[+module+];\
966         r=`${PWD_COMMAND}`; export r; \
967         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
968         $(SET_LIB_PATH) \
969         AR="$(AR_FOR_TARGET)"; export AR; \
970         AS="$(AS_FOR_TARGET)"; export AS; \
971         CC="$(CC_FOR_TARGET)"; export CC; \
972         CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
973         CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \[+ 
974 IF raw_cxx +]
975         CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
976         CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \[+ 
977 ELSE normal_cxx +]
978         CXX="$(CXX_FOR_TARGET)"; export CXX; \[+ 
979 ENDIF raw_cxx +]
980         CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
981         GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
982         DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
983         LD="$(LD_FOR_TARGET)"; export LD; \
984         LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
985         NM="$(NM_FOR_TARGET)"; export NM; \
986         RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
987         WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
988         echo Configuring in $(TARGET_SUBDIR)/[+module+]; \
989         cd "$(TARGET_SUBDIR)/[+module+]" || exit 1; \
990         case $(srcdir) in \
991           /* | [A-Za-z]:[\\/]*) \
992             topdir=$(srcdir) ;; \
993           *) \
994             case "$(TARGET_SUBDIR)" in \
995               .) topdir="../$(srcdir)" ;; \
996               *) topdir="../../$(srcdir)" ;; \
997             esac ;; \
998         esac; \
999         if [ "$(srcdir)" = "." ] ; then \
1000           if [ "$(TARGET_SUBDIR)" != "." ] ; then \
1001             if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "no-such-file" ; then \
1002               if [ -f Makefile ]; then \
1003                 if $(MAKE) distclean; then \
1004                   true; \
1005                 else \
1006                   exit 1; \
1007                 fi; \
1008               else \
1009                 true; \
1010               fi; \
1011             else \
1012               exit 1; \
1013             fi; \
1014           else \
1015             true; \
1016           fi; \
1017           srcdiroption="--srcdir=."; \
1018           libsrcdir="."; \
1019         else \
1020           srcdiroption="--srcdir=$${topdir}/[+module+]"; \
1021           libsrcdir="$$s/[+module+]"; \
1022         fi; \
1023         rm -f no-such-file || : ; \
1024         CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
1025           $(TARGET_CONFIGARGS) $${srcdiroption} \
1026           --with-target-subdir="$(TARGET_SUBDIR)" \
1027           || exit 1
1029 .PHONY: all-target-[+module+] maybe-all-target-[+module+]
1030 maybe-all-target-[+module+]:
1031 all-target-[+module+]: configure-target-[+module+]
1032         @r=`${PWD_COMMAND}`; export r; \
1033         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1034         $(SET_LIB_PATH) \
1035         (cd $(TARGET_SUBDIR)/[+module+] && \
1036           $(MAKE) $(TARGET_FLAGS_TO_PASS) [+
1037             IF raw_cxx 
1038           +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ 
1039             ENDIF raw_cxx 
1040           +] all)
1042 .PHONY: check-target-[+module+] maybe-check-target-[+module+]
1043 maybe-check-target-[+module+]:
1044 [+ IF no_check +]
1045 # Dummy target for uncheckable module.
1046 check-target-[+module+]:
1047 [+ ELSE check +]
1048 check-target-[+module+]:
1049         @r=`${PWD_COMMAND}`; export r; \
1050         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1051         $(SET_LIB_PATH) \
1052         (cd $(TARGET_SUBDIR)/[+module+] && \
1053           $(MAKE) $(TARGET_FLAGS_TO_PASS) [+
1054             IF raw_cxx 
1055               +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ 
1056             ENDIF raw_cxx 
1057           +] check)
1058 [+ ENDIF no_check +]
1060 .PHONY: install-target-[+module+] maybe-install-target-[+module+]
1061 maybe-install-target-[+module+]:
1062 [+ IF no_install +]
1063 # Dummy target for uninstallable.
1064 install-target-[+module+]:
1065 [+ ELSE install +]
1066 install-target-[+module+]: installdirs
1067         @r=`${PWD_COMMAND}`; export r; \
1068         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1069         $(SET_LIB_PATH) \
1070         (cd $(TARGET_SUBDIR)/[+module+] && \
1071           $(MAKE) $(TARGET_FLAGS_TO_PASS) install)
1072 [+ ENDIF no_install +]
1073 [+ ENDFOR target_modules +]
1075 # ----------
1076 # GCC module
1077 # ----------
1079 # Unfortunately, while gcc _should_ be a host module,
1080 # libgcc is a target module, and gen* programs are
1081 # build modules.  So GCC is a sort of hybrid.
1083 # gcc is the only module which uses GCC_FLAGS_TO_PASS.
1084 .PHONY: configure-gcc maybe-configure-gcc
1085 maybe-configure-gcc:
1086 configure-gcc:
1087         @test ! -f gcc/Makefile || exit 0; \
1088         [ -d gcc ] || mkdir gcc; \
1089         r=`${PWD_COMMAND}`; export r; \
1090         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1091         CC="$(CC)"; export CC; \
1092         CFLAGS="$(CFLAGS)"; export CFLAGS; \
1093         CXX="$(CXX)"; export CXX; \
1094         CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
1095         TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \
1096         AR="$(AR)"; export AR; \
1097         AS="$(AS)"; export AS; \
1098         CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
1099         DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
1100         LD="$(LD)"; export LD; \
1101         NM="$(NM)"; export NM; \
1102         RANLIB="$(RANLIB)"; export RANLIB; \
1103         WINDRES="$(WINDRES)"; export WINDRES; \
1104         OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
1105         OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
1106         echo Configuring in gcc; \
1107         cd gcc || exit 1; \
1108         case $(srcdir) in \
1109           \.) \
1110             srcdiroption="--srcdir=."; \
1111             libsrcdir=".";; \
1112           /* | [A-Za-z]:[\\/]*) \
1113             srcdiroption="--srcdir=$(srcdir)/gcc"; \
1114             libsrcdir="$$s/gcc";; \
1115           *) \
1116             srcdiroption="--srcdir=../$(srcdir)/gcc"; \
1117             libsrcdir="$$s/gcc";; \
1118         esac; \
1119         $(SHELL) $${libsrcdir}/configure \
1120           $(HOST_CONFIGARGS) $${srcdiroption} \
1121           || exit 1
1123 # Don't 'make all' in gcc if it's already been made by 'bootstrap'; that
1124 # causes trouble.  This wart will be fixed eventually by moving
1125 # the bootstrap behavior to this file.
1126 .PHONY: all-gcc maybe-all-gcc
1127 maybe-all-gcc:
1128 all-gcc: configure-gcc
1129         @if [ -f gcc/stage_last ] ; then \
1130           r=`${PWD_COMMAND}`; export r; \
1131           s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1132           $(SET_LIB_PATH) \
1133           (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) quickstrap); \
1134         else \
1135           r=`${PWD_COMMAND}`; export r; \
1136           s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1137           $(SET_LIB_PATH) \
1138           (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) all); \
1139         fi
1141 # Building GCC uses some tools for rebuilding "source" files
1142 # like texinfo, bison/byacc, etc.  So we must depend on those.
1144 # While building GCC, it may be necessary to run various target
1145 # programs like the assembler, linker, etc.  So we depend on
1146 # those too.
1148 # In theory, on an SMP all those dependencies can be resolved
1149 # in parallel.
1151 GCC_STRAP_TARGETS = bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap
1152 .PHONY: $(GCC_STRAP_TARGETS)
1153 $(GCC_STRAP_TARGETS): all-bootstrap configure-gcc
1154         @r=`${PWD_COMMAND}`; export r; \
1155         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1156         $(SET_LIB_PATH) \
1157         echo "Bootstrapping the compiler"; \
1158         cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $@
1159         @r=`${PWD_COMMAND}`; export r; \
1160         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1161         case "$@" in \
1162           *bootstrap4-lean ) \
1163             msg="Comparing stage3 and stage4 of the compiler"; \
1164             compare=compare3-lean ;; \
1165           *bootstrap4 ) \
1166             msg="Comparing stage3 and stage4 of the compiler"; \
1167             compare=compare3 ;; \
1168           *-lean ) \
1169             msg="Comparing stage2 and stage3 of the compiler"; \
1170             compare=compare-lean ;; \
1171           * ) \
1172             msg="Comparing stage2 and stage3 of the compiler"; \
1173             compare=compare ;; \
1174         esac; \
1175         $(SET_LIB_PATH) \
1176         echo "$$msg"; \
1177         cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $$compare
1178         @r=`${PWD_COMMAND}`; export r; \
1179         s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
1180         $(SET_LIB_PATH) \
1181         echo "Building runtime libraries"; \
1182         $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all
1184 profiledbootstrap: all-bootstrap configure-gcc
1185         @r=`${PWD_COMMAND}`; export r; \
1186         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1187         $(SET_LIB_PATH) \
1188         echo "Bootstrapping the compiler"; \
1189         cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) stageprofile_build
1190         @r=`${PWD_COMMAND}`; export r; \
1191         s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
1192         $(SET_LIB_PATH) \
1193         echo "Building runtime libraries and training compiler"; \
1194         $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all
1195         @r=`${PWD_COMMAND}`; export r; \
1196         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1197         $(SET_LIB_PATH) \
1198         echo "Building feedback based compiler"; \
1199         cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) stagefeedback_build
1201 .PHONY: cross
1202 cross: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
1203         @r=`${PWD_COMMAND}`; export r; \
1204         s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1205         $(SET_LIB_PATH) \
1206         echo "Building the C and C++ compiler"; \
1207         cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++"
1208         @r=`${PWD_COMMAND}`; export r; \
1209         s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
1210         $(SET_LIB_PATH) \
1211         echo "Building runtime libraries"; \
1212         $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) \
1213           LANGUAGES="c c++" all
1215 .PHONY: check-gcc maybe-check-gcc
1216 maybe-check-gcc:
1217 check-gcc:
1218         @if [ -f ./gcc/Makefile ] ; then \
1219           r=`${PWD_COMMAND}`; export r; \
1220           s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1221           $(SET_LIB_PATH) \
1222           (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check); \
1223         else \
1224           true; \
1225         fi
1227 .PHONY: check-gcc-c++
1228 check-gcc-c++:
1229         @if [ -f ./gcc/Makefile ] ; then \
1230           r=`${PWD_COMMAND}`; export r; \
1231           s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1232           $(SET_LIB_PATH) \
1233           (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); \
1234         else \
1235           true; \
1236         fi
1238 .PHONY: check-c++
1239 check-c++:
1240         $(MAKE) check-target-libstdc++-v3 check-gcc-c++
1242 .PHONY: install-gcc maybe-install-gcc
1243 maybe-install-gcc:
1244 install-gcc:
1245         @if [ -f ./gcc/Makefile ] ; then \
1246           r=`${PWD_COMMAND}`; export r; \
1247           s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
1248           $(SET_LIB_PATH) \
1249           (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
1250         else \
1251           true; \
1252         fi
1254 # Install the gcc headers files, but not the fixed include files,
1255 # which Cygnus is not allowed to distribute.  This rule is very
1256 # dependent on the workings of the gcc Makefile.in.
1257 .PHONY: gcc-no-fixedincludes
1258 gcc-no-fixedincludes:
1259         @if [ -f ./gcc/Makefile ]; then \
1260           rm -rf gcc/tmp-include; \
1261           mv gcc/include gcc/tmp-include 2>/dev/null; \
1262           mkdir gcc/include; \
1263           cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \
1264           touch gcc/stmp-fixinc gcc/include/fixed; \
1265           rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \
1266           r=`${PWD_COMMAND}`; export r; \
1267           s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
1268           $(SET_LIB_PATH) \
1269           (cd ./gcc && \
1270            $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
1271           rm -rf gcc/include; \
1272           mv gcc/tmp-include gcc/include 2>/dev/null; \
1273         else true; fi
1275 # --------------------------------------
1276 # Dependencies between different modules
1277 # --------------------------------------
1279 # There are two types of dependencies here: 'hard' dependencies, where one
1280 # module simply won't build without the other; and 'soft' dependencies, where
1281 # if the depended-on module is missing, the depending module will do without
1282 # or find a substitute somewhere (perhaps installed).  Soft dependencies
1283 # are specified by depending on a 'maybe-' target.  If you're not sure,
1284 # it's safer to use a soft dependency.
1286 # Host modules specific to gcc.
1287 # GCC needs to identify certain tools.
1288 configure-gcc: maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex
1289 all-gcc: maybe-all-libiberty maybe-all-intl maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
1290 # This is a slightly kludgy method of getting dependencies on 
1291 # all-build-libiberty correct; it would be better to build it every time.
1292 all-gcc: maybe-all-build-libiberty
1293 all-bootstrap: maybe-all-libiberty maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
1295 # Host modules specific to gdb.
1296 # GDB needs to know that the simulator is being built.
1297 configure-gdb: maybe-configure-itcl maybe-configure-tcl maybe-configure-tk maybe-configure-sim
1298 GDB_TK = @GDB_TK@
1299 all-gdb: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK)
1300 install-gdb: maybe-install-tcl maybe-install-tk maybe-install-itcl maybe-install-tix maybe-install-libgui
1301 configure-libgui: maybe-configure-tcl maybe-configure-tk
1302 all-libgui: maybe-all-tcl maybe-all-tk maybe-all-itcl
1304 # Host modules specific to binutils.
1305 configure-bfd: configure-libiberty
1306 all-bfd: maybe-all-libiberty maybe-all-intl
1307 all-binutils: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl
1308 # We put install-opcodes before install-binutils because the installed
1309 # binutils might be on PATH, and they might need the shared opcodes
1310 # library.
1311 install-binutils: maybe-install-opcodes
1312 # libopcodes depends on libbfd
1313 install-opcodes: maybe-install-bfd
1314 all-gas: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-intl
1315 all-gprof: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-intl
1316 all-ld: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-bison maybe-all-byacc maybe-all-flex maybe-all-intl
1317 all-opcodes: maybe-all-bfd maybe-all-libiberty
1319 # Other host modules in the 'src' repository.
1320 all-dejagnu: maybe-all-tcl maybe-all-expect maybe-all-tk
1321 configure-expect: maybe-configure-tcl maybe-configure-tk
1322 all-expect: maybe-all-tcl maybe-all-tk
1323 configure-itcl: maybe-configure-tcl maybe-configure-tk
1324 all-itcl: maybe-all-tcl maybe-all-tk
1325 # We put install-tcl before install-itcl because itcl wants to run a
1326 # program on installation which uses the Tcl libraries.
1327 install-itcl: maybe-install-tcl
1328 all-sid: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-tcl maybe-all-tk
1329 install-sid: maybe-install-tcl maybe-install-tk
1330 all-sim: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-readline maybe-configure-gdb
1331 configure-tk: maybe-configure-tcl
1332 all-tk: maybe-all-tcl
1333 configure-tix: maybe-configure-tcl maybe-configure-tk
1334 all-tix: maybe-all-tcl maybe-all-tk
1335 all-texinfo: maybe-all-libiberty
1337 # Other host modules.  Warning, these are not well tested.
1338 all-autoconf: maybe-all-m4 maybe-all-texinfo
1339 all-automake: maybe-all-m4 maybe-all-texinfo
1340 all-bison: maybe-all-texinfo
1341 all-diff: maybe-all-libiberty
1342 all-fastjar: maybe-all-zlib maybe-all-libiberty
1343 all-fileutils: maybe-all-libiberty
1344 all-flex: maybe-all-libiberty maybe-all-bison maybe-all-byacc
1345 all-gzip: maybe-all-libiberty
1346 all-hello: maybe-all-libiberty
1347 all-m4: maybe-all-libiberty maybe-all-texinfo
1348 all-make: maybe-all-libiberty
1349 all-patch: maybe-all-libiberty
1350 all-prms: maybe-all-libiberty
1351 all-recode: maybe-all-libiberty
1352 all-sed: maybe-all-libiberty
1353 all-send-pr: maybe-all-prms
1354 all-tar: maybe-all-libiberty
1355 all-uudecode: maybe-all-libiberty
1357 ALL_GCC = maybe-all-gcc
1358 ALL_GCC_C = $(ALL_GCC) maybe-all-target-newlib maybe-all-target-libgloss
1359 ALL_GCC_CXX = $(ALL_GCC_C) maybe-all-target-libstdc++-v3
1361 # Target modules specific to gcc.
1362 configure-target-boehm-gc: $(ALL_GCC_C) maybe-configure-target-qthreads
1363 configure-target-fastjar: maybe-configure-target-zlib
1364 all-target-fastjar: maybe-all-target-zlib maybe-all-target-libiberty
1365 configure-target-libf2c: $(ALL_GCC_C)
1366 all-target-libf2c: maybe-all-target-libiberty
1367 configure-target-libffi: $(ALL_GCC_C) 
1368 configure-target-libjava: $(ALL_GCC_C) maybe-configure-target-zlib maybe-configure-target-boehm-gc maybe-configure-target-qthreads maybe-configure-target-libffi
1369 all-target-libjava: maybe-all-fastjar maybe-all-target-zlib maybe-all-target-boehm-gc maybe-all-target-qthreads maybe-all-target-libffi
1370 configure-target-libobjc: $(ALL_GCC_C)
1371 all-target-libobjc: maybe-all-target-libiberty
1372 configure-target-libstdc++-v3: $(ALL_GCC_C)
1373 all-target-libstdc++-v3: maybe-all-target-libiberty
1374 configure-target-zlib: $(ALL_GCC_C)
1376 # Target modules in the 'src' repository.
1377 configure-target-examples: $(ALL_GCC_C)
1378 configure-target-libgloss: $(ALL_GCC)
1379 all-target-libgloss: maybe-configure-target-newlib
1380 configure-target-libiberty: $(ALL_GCC)
1381 configure-target-libtermcap: $(ALL_GCC_C)
1382 configure-target-newlib: $(ALL_GCC)
1383 configure-target-rda: $(ALL_GCC_C)
1384 configure-target-winsup: $(ALL_GCC_C)
1385 all-target-winsup: maybe-all-target-libiberty maybe-all-target-libtermcap
1387 # Other target modules.  Warning, these are not well tested.
1388 configure-target-gperf: $(ALL_GCC_CXX)
1389 all-target-gperf: maybe-all-target-libiberty maybe-all-target-libstdc++-v3
1390 configure-target-qthreads: $(ALL_GCC_C)
1392 # Dependencies of maybe-foo on foo.  These are used because, for example,
1393 # all-gcc only depends on all-gas if gas is present and being configured.
1394 @maybe_dependencies@
1396 # Serialization dependencies.  Host configures don't work well in parallel to
1397 # each other, due to contention over config.cache.  Target configures and 
1398 # build configures are similar.
1399 @serialization_dependencies@
1401 # --------------------------------
1402 # Regenerating top level configury
1403 # --------------------------------
1405 # Multilib.out tells target dirs what multilibs they should build.
1406 # There is really only one copy.  We use the 'timestamp' method to
1407 # work around various timestamp bugs on some systems.
1408 # We use move-if-change so that it's only considered updated when it
1409 # actually changes, because it has to depend on a phony target.
1410 multilib.out: maybe-all-gcc
1411         @r=`${PWD_COMMAND}`; export r; \
1412         echo "Checking multilib configuration..."; \
1413         $(CC_FOR_TARGET) --print-multi-lib > multilib.tmp 2> /dev/null ; \
1414         $(SHELL) $(srcdir)/move-if-change multilib.tmp multilib.out ; \
1416 # Rebuilding Makefile.in, using autogen.
1417 AUTOGEN = autogen
1418 $(srcdir)/Makefile.in: @MAINT@ $(srcdir)/Makefile.tpl $(srcdir)/Makefile.def
1419         cd $(srcdir) && $(AUTOGEN) Makefile.def
1421 # Rebuilding Makefile.
1422 Makefile: $(srcdir)/Makefile.in config.status
1423         CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
1425 config.status: configure $(gcc_version_trigger)
1426         $(SHELL) ./config.status --recheck
1428 # Rebuilding configure.
1429 AUTOCONF = autoconf
1430 $(srcdir)/configure: @MAINT@ $(srcdir)/configure.in $(srcdir)/config/acx.m4
1431         cd $(srcdir) && $(AUTOCONF)
1433 # ------------------------------
1434 # Special directives to GNU Make
1435 # ------------------------------
1437 # Don't pass command-line variables to submakes.
1438 .NOEXPORT:
1439 MAKEOVERRIDES=
1441 # end of Makefile.in