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